我想利用vim的语法突出显示功能突出乳胶中的代码(任何语言)(使用xcolor包)。因此,我想知道是否有可能让vim脚本导出有关缓冲区中突出显示文本的vim内部信息。显然,知道每个突出显示的实体的开始,结束和颜色就足够了。乳胶代码或其他语言(如html)的生成将是显而易见的。
答案 0 :(得分:3)
您可以使用我的formatvim插件:它可以使用
导出为latex-xcolor格式Format format latex-xcolor
。如果你对结果不满意(它完全未经测试,我几乎从未使用过这个选项)随意发送补丁,可以看到格式规范的字典here,创建自己的格式所需的一切都是在documentation。
注意:如果您需要导出到任何其他语言,您只需要根据我的插件为其编写规范。这是一个将latex-xcolor-clone
格式添加到我的插件的代码:
scriptencoding utf-8
execute frawor#Setup('0.0', {'plugin/format': '3.0'})
let s:texescape=
\'substitute('.
\ 'substitute(@@@, ''\v[\\\[\]{}&$_\^%#]'', '.
\ '''\=''''\char''''.char2nr(submatch(0))."{}"'', '.
\ '"g"),'.
\'" ", ''\\enskip{}'', "g")'
let s:texstylestart=
\'((@inverse@)?'.
\ '(''\colorbox[HTML]{''.'.
\ '((@fgcolor@!=#"")?'.
\ '(toupper(@fgcolor@[1:])):'.
\ '(toupper(@_fgcolor@[1:])))."}{".'.
\ '''\textcolor[HTML]{''.'.
\ '((@bgcolor@!=#"")?'.
\ '(toupper(@bgcolor@[1:])):'.
\ '(toupper(@_bgcolor@[1:])))."}{"):'.
\ '(((@bgcolor@!=#"")?'.
\ '(''\colorbox[HTML]{''.toupper(@bgcolor@[1:])."}{"):'.
\ '("")).'.
\ '''\textcolor[HTML]{''.'.
\ '((@fgcolor@!=#"")?'.
\ '(toupper(@fgcolor@[1:])):'.
\ '(toupper(@_fgcolor@[1:])))."}{"))'
let s:texstyleend=
\'repeat("}", '.
\ '((@inverse@)?'.
\ '(2):'.
\ '((@bgcolor@!=#"")+1)))'
let s:format={
\'begin': '\documentclass[a4paper,12pt]{article}'.
\ '\usepackage[utf8]{inputenc}'.
\ '\usepackage[HTML]{xcolor}'.
\ '\pagecolor[HTML]{%''toupper(@_bgcolor@[1:])''%}'.
\ '\color[HTML]{%''toupper(@_fgcolor@[1:])''%}'.
\ '\begin{document}{\ttfamily\noindent',
\'line': '%>'.s:texstylestart.".".
\ s:texescape.".".
\ s:texstyleend,
\'lineend': '\\',
\'end': '}\end{document}',
\'strescape': s:texescape,
\}
call s:_f.format.add('latex-xcolor-clone', s:format)
答案 1 :(得分:0)
:TOhtml
命令是在Vim中构建的。很明显,它会生成HTML,而不是Latex。