0

我想利用 vim 的语法高亮功能来高亮乳胶中的代码(任何语言)(使用 xcolor 包)。因此,我想知道是否可以让 vim 脚本导出有关缓冲区中突出显示文本的 vim 内部信息。显然,知道每个突出显示的实体的开始、结束和颜色就足够了。乳胶代码或其他语言(如 html)的生成将是显而易见的。

4

2 回答 2

3

你可以使用我的formatvim插件:它可以导出为 latex-xcolor 格式

Format format latex-xcolor

. 如果您对结果不满意(它完全未经测试,我几乎从未使用过此选项),请随时发送补丁,可以在此处查看带有格式规范的字典,创建自己的格式所需的一切都在文档中。

注意:如果您需要导出到任何其他语言,您只需要根据我的插件为其编写规范即可。这是一个将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)
于 2012-06-30T16:39:33.323 回答
0

:TOhtml命令内置在 Vim 中。很明显,它生成的是 HTML,而不是 Latex。

于 2012-06-30T15:29:40.023 回答