我需要强调的源代码乳胶。包 listings 似乎是最好的选择,对大多数使用情况和对我来说就是,直到现在。

然而,现在我需要更多的灵活性。一般来说,有什么我找的是一个 真的 语法分析程序.特别是,我需要(为自己的语言的定义)的定义(和亮点!) 自己的数量的样式。 listings 不允许突出的号码。然而,我需要产生这样的事情:

Required result

listings 也无法应付的任意分隔符串。考虑下面的有效代码红宝石:

s = %q!this is a string.!

在这里, ! 可以代替几乎 任何 隔符。

(说 listings 无法处理Unicode也很令人烦恼的,但这是另一个问题。)

理想的是,我在寻找一种延伸 listings 允许我提供更多复杂的各处的规则。但是禁止的,我还在寻找可行的替代品。

其他的线 有人建议使用 Pygments 这可能产生的乳胶输出。甚至还有一个包 texments –为了便于过渡。

然而,这非常缺乏特点。特别是,我感兴趣 listings-风格行编号、来源码线参考,并可能埋乳胶源代码(选项 texclmathescapelistings).

作为一个例子,这是一个排版与源代码 listings 这表明一些事情的替换还应提供:

LaTeX listings example: Sideways addition ["横加"修改,从位摆弄黑客]

有帮助吗?

解决方案

把诺的咨询意见的心脏,我砍死在一起的一个解决方案,用于(a 修补)Pygments为突出和推动在尽可能多的功能而不破裂;-)

我们还创建了一个乳胶包装,一旦我Pygments贴被释放 1.2版

呈现 铸造

铸造 是一个一揽子使用的Pygments提供顶尖的语法突出在乳胶。例如,它可以让以下产出。

fancy LaTeX example

这里有一个小的文件复制上述代码(请注意,包括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}

这可以排版使用的以下命令:

xelatex -shell-escape test.tex

(但是 铸造 还与 latexpdflatex …)

minted.sty 工作相似 texments.sty 但是,允许附加功能。

怎么得到它

再次感谢诺为激励我产生这种软件包。

其他提示

TeX的是(著名)图灵完备的,但我敢肯定,你将不得不自己写这个扩展。该文件明确指出,listings原作者孤立它于2004年,它自2006年以来的包没有被设计来覆盖数字文字的格式尚未更新,但您可能能够通过更改对其进行修改\lst@ProcessDigit的定义。如果不工作,你必须详细地了解如何“标识样式”选项的工作,你必须复制该机器为你的数字文字。

我不明白为什么你这么不愿意引入外部工具到您的工具链,但因为你是,你必须做额外的工作。看看源代码后,我认为更改listings应该是可能的,但我个人会选择预处理我的乳胶来代替。

是哪个源代码转换为TeX和胶乳语法突出显示一个包。它可以添加自定义编程轻松语言定义。

突出显示支持100种的编程语言,并且包括50个颜色主题。设有代码重新格式化和缩进。

我没有用它来熟悉它是如何工作的,但别人,我知道说起来很顺手。如果我有机会,我会尝试一下自己,看看。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top