Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将vim语法突出显示导出到latex_Vim_Latex - Fatal编程技术网

将vim语法突出显示导出到latex

将vim语法突出显示导出到latex,vim,latex,Vim,Latex,我想利用vim的语法突出显示功能突出显示latex中的代码(任何语言)(使用xcolor包)。因此,我想知道是否有可能让vim脚本导出有关缓冲区中突出显示文本的vim内部信息。显然,知道每个高亮显示实体的开始、结束和颜色就足够了。latex代码或其他语言(如html)的生成将是显而易见的。:TOhtml命令是在Vim中构建的。很明显,它生成的是HTML,而不是Latex。这个:TOhtml命令是在Vim中构建的。很明显,它生成的是HTML,而不是Latex。您可以使用我的插件:它可以使用 For

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

这个
:TOhtml
命令是在Vim中构建的。很明显,它生成的是HTML,而不是Latex。

您可以使用我的插件:它可以使用

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)
你可以使用我的插件:它可以用

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)

那么为什么不直接导出到HTML呢?将组匹配到LaTeX的正则表达式有点复杂:/您知道列表包吗?那么为什么不直接导出到HTML呢?将组与LaTeX匹配的正则表达式有点复杂:/你知道列表包吗?工作起来很有魅力。似乎只有制表器和不可破坏的空格会导致问题,但我可以先替换它们。不确定这是否符合bug报告的条件。@highscigy你是什么意思?制表符替换为空格,不保留。非中断空格不应引起问题,但除非您这样做,否则它们将按原样包括在内。如果您这样做,它们将被包括为使用SpecialKey突出显示的
。(当前:即使您设置hl=8:ErrorMsg
,这将使vim将其突出显示为
ErrorMsg
)。set list命令有助于非中断空格。可能是选项卡出现,因为我在vim中显示了它们。事实上,在输出中会出现“»”字符。@highscigue我的插件同时尊重“list”和“listchars”选项(前者仅在某种程度上:除extend和prefers之外的所有选项)。因此,如果选项卡显示为
>
,则必须关闭“列表”,添加
设置lcs=tab:\\
(即使用空格显示选项卡),在命令行上关闭插件的
列表
选项(在目标格式名称后添加
nolist
),或使用
let g:format\u IgnoreList=1
全局关闭它。默认情况下,我的插件试图使其输出尽可能接近vim显示的内容。@Highscigue一个补充:LaTeX将
>
转换为
>
,因此如果您有
选项卡:?>
-任何符号)然后formatvim可能会在没有字符的地方显示这些字符。为了防止这种情况发生,我必须将
s:texescape
更改为escape
,或者(更好)找到一种方法来禁用
>
'
。。。你知道怎么做吗(更好的是:在一个给定的块中,使除
\{}[]
之外的所有字符都不特殊)?工作起来很有魅力。似乎只有制表器和不可破坏的空格会导致问题,但我可以先替换它们。不确定这是否符合bug报告的条件。@highscigy你是什么意思?制表符替换为空格,不保留。非中断空格不应引起问题,但除非您这样做,否则它们将按原样包括在内。如果您这样做,它们将被包括为使用SpecialKey突出显示的
。(当前:即使您设置hl=8:ErrorMsg
,这将使vim将其突出显示为
ErrorMsg
)。set list命令有助于非中断空格。可能是选项卡出现,因为我在vim中显示了它们。事实上,在输出中会出现“»”字符。@highscigue我的插件同时尊重“list”和“listchars”选项(前者仅在某种程度上:除extend和prefers之外的所有选项)。因此,如果选项卡显示为
>
,则必须关闭“列表”,添加
设置lcs=tab:\\
(即使用空格显示选项卡),在命令行上关闭插件的
列表
选项(在目标格式名称后添加
nolist
),或使用
let g:format\u IgnoreList=1
全局关闭它。默认情况下,我的插件试图使其输出尽可能接近vim显示的内容。@Highscigue一个补充:LaTeX将
>
转换为
>
,因此如果您有
选项卡:?>
-任何符号)然后formatvim可能会在没有字符的地方显示这些字符。为了防止这种情况发生,我必须将
s:texescape
更改为escape
,或者(更好)找到一种方法来禁用
>
'
。。。你知道怎么做吗(更好:在一个给定的块中,使除
\{}[]
之外的所有字符都不特殊)?