Kon*_*lph 185 latex syntax-highlighting pygments
我需要在LaTeX中突出显示源代码.listings对于大多数用例而言,该软件包似乎是最佳选择,对我来说,它一直是现在.
但是,现在我需要更多的灵活性.一般来说,我正在寻找的是一个真正的词法分析器.特别是,我需要(对于自己的语言定义)来定义(并突出显示!)自己的数字样式.listings不允许在代码中突出显示数字.但是,我需要生成这样的东西:

listings也无法处理字符串的任意分隔符.考虑以下有效的Ruby代码:
s = %q!this is a string.!
Run Code Online (Sandbox Code Playgroud)
在这里,!几乎可以用任何分隔符代替.
(那listings不能处理Unicode也很烦人,但这是另一个问题.)
理想情况下,我正在寻找一个扩展,listings这允许我提供更复杂的lexing规则.但除此之外,我也在寻找可行的替代方案.
其他线程建议使用可以产生LaTeX输出的Pygments.甚至有一个包 - texments- 以缓解过渡.
然而,这非常缺乏功能.特别是,我对listings样式行号,源代码行引用以及在源代码中嵌入LaTeX的可能性感兴趣(选项texcl和mathescapein listings).
例如,这里是一个源代码排版集,listings其中显示了替换程序还应提供的一些内容:
[Bit Twiddling Hacks改编的"侧身添加"]
Kon*_*lph 338
把诺曼的建议铭记于心,我已经破解了一个解决方案,该解决方案使用(修补的)Pygments突出显示并推入尽可能多的功能而不爆裂;-)
一旦我的Pygments补丁在版本1.2中发布,我也创建了一个LateX包...
minted是一个使用Pygments在LaTeX中提供顶级语法高亮的软件包.例如,它允许以下输出.

这是一个重现上述代码的最小文件(注意包含Unicode字符可能需要XeTeX)!
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{minted}
\setsansfont{Calibri}
\setmonofont{Consolas}
\begin{document}
\renewcommand{\theFancyVerbLine}{
\sffamily\textcolor[rgb]{0.5,0.5,0.5}{\scriptsize\arabic{FancyVerbLine}}}
\begin{minted}[mathescape,
linenos,
numbersep=5pt,
gobble=2,
frame=lines,
framesep=2mm]{csharp}
string title = "This is a Unicode ? in the sky"
/*
Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter
of an $n$-sided regular polygon circumscribing a
circle of diameter $d$.
*/
const double pi = 3.1415926535
\end{minted}
\end{document}
Run Code Online (Sandbox Code Playgroud)
可以使用以下命令进行排版:
xelatex -shell-escape test.tex
Run Code Online (Sandbox Code Playgroud)
(但是,铸造也与工作latex和pdflatex...)
minted.sty类似texments.sty但允许其他功能.
文档当然包括在内.
铸造由Geoffrey Poore维护.开发版本,包括最新.sty文件,可在github.com/gpoore/minted上获得,并可从那里克隆.
再一次,感谢Norman激励我制作这个包.
TeX(着名)Turing-complete,但我很确定你将不得不自己编写这个扩展.该文档清楚地表明,原始作者listings在2004年将其孤立,并且自2006年以来一直没有更新.该软件包的目的不是覆盖数字文字的格式,但您可以通过更改它来修改它.的定义\lst@ProcessDigit.如果这不起作用,您将必须详细了解"标识符样式"选项的工作原理,并且您必须为数字文字复制该机制.
我不太明白为什么你不愿意在你的工具链中引入外部工具,但是因为你是,你将不得不做额外的工作.看一下源代码之后,我希望修改listings是可能的,但我个人会选择预处理我的LaTeX.
| 归档时间: |
|
| 查看次数: |
79550 次 |
| 最近记录: |