如何使用 scintillua 词法分析器将 minted 或 listings 替换为 luatex?

如何使用 scintillua 词法分析器将 minted 或 listings 替换为 luatex?

闪烁是一个文本编辑器。闪烁藻为 Scintilla 添加动态 Lua LPeg 词法分析器多种语言根据文档,Scintillua可以作为库使用:

使用 Scintillua 作为 Lua 库

为了将 Scintillua 用作 Lua 库,只需将 lexers/ 目录放在 Lua 路径中(或相应地修改 Lua 的 package.path),require() 库并 load() 词法分析器,然后调用该词法分析器的 lex() 函数。以下是执行此操作的一个示例交互式 Lua 会话:

$> lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> lexer_path = '/home/mitchell/code/scintillua/lexers/?.lua'
> package.path = package.path..';'..lexer_path
> c = require('lexer').load('ansi_c')
> tokens = c:lex('int void main() { return 0; }')
> for i = 1, #tokens, 2 do print(tokens[i], tokens[i+1]) end
type    4
ansi_c_whitespace   5
type    9
ansi_c_whitespace   10
identifier  14
operator    15
operator    16
ansi_c_whitespace   17
operator    18
ansi_c_whitespace   19
keyword 25
ansi_c_whitespace   26
number  27
operator    28
ansi_c_whitespace   29
operator    30

我想知道是否可以使用这些词法分析器作为minted或的lua 替代品listings?此外,Scintillua 似乎支持代码折叠,可用于在代码结构下划线,就像我的老问题。 和 lua 之间交互的基本代码是什么TeX(catcodes 等)?

相关内容