用 ConTeXt 排版语法高亮的代码

0

ConTeXt 社区有一个 t-vim 模块,它能够将 vim 编辑器中的代码语法高亮结果转化为 ConTeXt 排版语句。这意味着,凭借 vim 与 t-vim,顿时可让 ConTeXt 在这方面鸟枪换炮。因为 ConTeXt 内置的语法高亮功能目前太孱弱了,即使是嵌入了 Lua 解释器的 MkIV,也需要用户自行去写语法解析脚本。既然有 vim 所提供的 500 多种语法高亮配置,何必再在 ConTeXt 中重新发明轮子呢?所以,应该安装 t-vim 模块。

安装 t-vim 模块的方法非常简单,即:

$ first-setup.sh --modules="t-filter,t-vim"

如果不懂我在说什么,但是又想知道我在说什么,那么应该阅读『睦邻友好的 ConTeXt Standalone』。

当然,你的系统中必须实现安装了 vim。如果不知道 vim 是什么,可能你不是程序猿吧?我纳闷,为啥没有 emacs 爱好者为 ConTeXt 写一个 t-emacs 模块呢?

t-vim 模块的基本用法见下面的示例:

\usemodule[vim]
\definevimtyping[C][syntax=c]
\definevimtyping[python][syntax=python]

\starttext

\startC
#include <stdio.h>

int main(void)
{
        printf("Hello World!\n");
        
        return 0;
}
\stopC

\blank\hrule\blank

\startpython
def m_tex_name(m):
    m_string="\def\Male{"
    if len(m)==2:
        m_string += "\def\Male{%s\\\ \quad\\\%s\\\\"%(m[0],m[1])
    else:
        for w in m:
            m_string += "%s\\\\"%(w)
    m_string += "\;\\\先\\\生}\n"
    return m_string
\stoppython

\stoptext

在我这里得到的结果为:

t-vim-语法高亮

有关 t-vim 的更多用法,请参考 vim.txt 文件。在开启了 ConTeXt MkIV 运行环境后,可使用 luatools 命令搜索 vim.txt 的路径:

$ luatools vim.txt

如果觉得我的文章对你有用,请随意赞赏

你可能感兴趣的

views63 · 2015-09-30

如果在win下用 TeXworks 运行提示
system > callbacks > not registering frozen 'find_format_file'
………………
fonts > 'fallback modern-designsize rm 12pt' is loaded
t-filter > cached output file '1-temp-RUBY-0.vimout' missing. Rerunning filter
t-filter > file '1-temp-RUBY-0.vimout' cannot be found
t-filter > current filter : RUBY
t-filter > base file : 1-temp-RUBY-0
t-filter > input file : 1-temp-RUBY-0.tmp
t-filter > output file : 1-temp-RUBY-0.vimout
……
最终结果 pdf 里面就显示了 [[output file missing
是因为环境变量问题导致的。在命令行窗口先运行 setuptex.bat ,然后使用 context filename 编译即可。如何在 TeXWorks 中使用,还没找到方法。

回复

garfileo 作者 · 2015-09-30

遇到 [[output file missing 什么的,再编译一次就没问题了。

回复

views63 · 2015-09-30

用 TeXworks 编译几次都没用。它调用 vim -u NONE -e -s -C -n -c * 的时候不能生成 vimout 文件。我得写个类似你那个 ctx 的批处理才可以。

回复

garfileo 作者 · 2015-09-30

windows 里不是有 setuptex.bat 脚本么?
TeXworks 是给那些看见命令行、 emacs 或 vim 就打哆嗦的新手用的

回复

views63 · 2015-09-30

写个 ctx.bat 里面写上
call tex\setuptex.bat
context %1 %2
然后在 TeXworks 里面设置
name=ConTeXt MkIV
program=D:/context/ctx.bat
arguments=$synctexoption, $fullname
showPdf=true
注:路径根据自己的实际情况修改
然后再用 TeXworks 编译即可

回复

views63 · 2015-09-30

嗯,就是需要先运行 setuptex.bat 然后就可以了。半年多来写 C#,VS 用多了,emacs 都生疏了……

回复

garfileo 作者 · 2015-09-30

t-vim 需要借助 kpse 来搜索它提供的一个 vim 脚本的路径,而 TeXworks 只知道 context 在哪里,但是它并未设置 PATH 变量,所以它就不知道 kpse 工具在哪了,因此也就找不到那个 vim 脚本。

回复

views63 · 2015-09-30

嗯,最后发现我上面那样做还是有问题。TeXworks 里面调用的程序环境变量不是继承下去的。好吧,放弃 TeXworks !

回复

载入中...