在arXiv上使用LaTeX进行Lua语法高亮。

我有一个 LaTeX 文件需要包含 Lua 代码片段(仅用于显示而非执行),所以我使用了 minted 包。它要求在运行 LaTeX 时使用 latex -shell-escape 标志。

我正在尝试将 PDF 提交到 arXiv。该网站要求提交为 .tex.sty.bbl 文件,他们会自动从 LaTeX 编译为 PDF。当我尝试提交到 arXiv 时,我了解到他们没有办法激活 -shell-escape 标志。

因此,我想知道是否有任何方法可以在 LaTeX 中突出显示 Lua 代码,而不需要 -shell-escape 标志。我尝试过 listings 包,但我无法在我的 Ubuntu 计算机上为 Lua 运行它。

点赞
用户49985
用户49985

好的,所以 lhf 提供了一个不错的解决方案,建议使用 GNU source-hightlight 包。 我基本上从 latex 文件中取出每个 lua 代码片段,将其放入适当命名的 [snippet].lua 文件中,并对其运行以下命令以生成 [snippet]-lua.tex 文件:

source-highlight -s lua -f latex -i [snippet].lua -o [snippet]-lua.tex

然后使用以下方式将每个这样的文件包含到主 latex 文件中:

\input{[snippet]-lua}

结果并不像 minted 包的那样好,但我已经厌倦了试图说服 arXiv 管理员支持 minted...

2015-11-24 21:13:04
用户914686
用户914686

你可以使用 listings 来内嵌任何你想要的样式。它预定义的 Lua 语言中已经有所有的关键字和相关样式,所以你可以根据你的需要来改变它:

enter image description here

\documentclass{article}

\usepackage{listings,xcolor}

\lstdefinestyle{lua}{
  language=[5.1]Lua,
  basicstyle=\ttfamily,
  keywordstyle=\color{magenta},
  stringstyle=\color{blue},
  commentstyle=\color{black!50}
}

\begin{document}

\begin{lstlisting}[style=lua]
-- defines a factorial function
    function fact (n)
      if n == 0 then
        return 1
      else
        return n * fact(n-1)
      end
    end

    print("enter a number:")
    a = io.read("*number")        -- read a number
    print(fact(a))
\end{lstlisting}

\end{document}
2015-11-25 01:43:49