哪个是 LuaTeX 最好的编辑器?

哪个是 LuaTeX 最好的编辑器?

许多 (La)TeX 编辑器都支持 LuaTeX 引擎。但是,哪一个编辑器对编写 LuaTeX 的支持最好?哪个编辑器或插件支持 Lua 和 (La)TeX 的语法高亮和自动完成等功能?

以 LaTeX 为中心的 IDE 的常见有用功能(例如集成查看器、正向和反向搜索、结构浏览器和拼写检查)仍然很重要,尽管还补充了一些 Lua 语法支持。

答案1

Vim 支持在一种语言中嵌入另一种语言的语法高亮。我用它来支持ConTeXt 区域中的 MP 和 Lua 语法突出显示。基本技巧是定义语法区域,如下所示:

unlet b:current_syntax
syn include @LUA syntax/lua.vim

syn region luatex matchgroup=contextIdentifier
      \ start='\\startluacode'
      \ end='\\stopluacode'
      \ contains=@LUA

然后\startluacode...里面的所有内容\stopluacode都会有 Lua 语法高亮。下面是我的一个模块的代码截图(并不是说 lua 注释和环境os.remove中的函数\startluacode有语法高亮)

在此处输入图片描述

为了完整起见,这里有一个截图,显示了 tex 文件中突出显示的 Metapost 代码

在此处输入图片描述

相同的想法也适用于 LaTeX,如下所示:

unlet b:current_syntax
syn include @LUA syntax/lua.vim

syn region luatexSnip matchgroup=Snip
    \ start='\\begin{\z(luacode\|luacode*\)}'
    \ end='\\end{\z1}'
    \ contains=@LUA

syn region luatexSnip matchgroup=Snip
    \ start='\\\(directlua\|luadirect\){'
    \ end='}'
    \ contains=@LUA


highlight link Snip SpecialComment

Vim 也支持自动完成功能,但我不使用该功能,所以我不知道是否可以实现依赖于语言的自动完成功能。

其他要求,如向前/向后搜索、拼写检查、结构浏览器,都很简单,但即便如此,vim 也不是所谓的 IDE。

答案2

Emacs 还为 Lua 和 LaTeX 提供了语法高亮功能。我不知道 *.tex 文件中的 lua 块是否有类似“嵌入式语法高亮”的功能。通常,您可以通过将文件打开到间接缓冲区来实现这一点:在基本缓冲区中,您可以获得 LaTeX 高亮,在间接缓冲区中,您可以将主要模式更改为 lua 模式。

但是:至少对我来说,这还不能与 lua 模式一起使用。与将模式更改为 lua 模式无关,Emacs 仍在间接缓冲区中突出显示 LaTeX 关键字。

带有 AucTEX 的 Emacs 非常适合 LaTeX,但 lua 模式就没那么方便了。

亚历山大

答案3

无论如何,Aditya 的答案对我来说不起作用。我使用 LaTeX,这可能是原因。无论如何,受您的回答启发,我通过将以下内容放入“tex.vim”ft 插件文件中,使它适用于 LuaLaTeX。

autocmd BufWinEnter * if exists("b:current_syntax") && b:current_syntax == "tex"
autocmd BufWinEnter * unlet b:current_syntax
autocmd BufWinEnter * syntax include @TEX syntax/tex.vim
autocmd BufWinEnter * unlet b:current_syntax
autocmd BufWinEnter * syntax include @LUA syntax/lua.vim
autocmd BufWinEnter * syntax region luatex matchgroup=Snip start="%--beginlua--" end="%--endlua--" containedin=@TEX contains=@LUA
autocmd BufWinEnter * syntax region luatex matchgroup=Snip start="--beginlua--" end="--endlua--" containedin=@TEX contains=@LUA
autocmd BufWinEnter * highlight link Snip SpecialComment
autocmd BufWinEnter * let b:current_syntax="luatex"
autocmd BufWinEnter * endif

autocmd BufWinEnter只需将这些代码放入文件中即可after/syntax/tex.vim。但在我的例子中,这会导致一些问题并导致 vim 停止运行。因此我使用au在文件加载过程的最后执行它们。

完成这些操作后,所有标有 和 的--beginlua--代码--endlua--都会高亮显示为 lua 代码。可以使用%\directlualuaexec中允许行注释但不允许 lua 行注释的版本。以及中TeX不带 的版本,等等。%\begin{luacode}

答案4

我非常喜欢Sublime Text。他的多光标编辑功能简直太棒了(我知道现在其他编辑器也有这个功能,但它是第一个)。它可以根据上下文在同一文档中显示不同的高亮。但我不知道是否有人为 Lua(La)TeX 创建了设置。

相关内容