latex和listing:突出显示代码的某些部分

时间:2010-05-05 09:07:40

标签: latex

我正在使用Latex和listings包在文档中显示一些C ++代码(带语法高亮显示)。

我需要突出显示代码的某些部分。这个特定的亮点与语法高亮无关,它只是我想强调的代码的一些部分,以便读者可以专注于它。

我希望我可以创建一些变量名称,例如,以粗体显示,并在黄色背景上显示。这是我用MSWord做的事情我想用Latex重现(当然,不是红色和绿色下划线):

http://img210.imageshack.us/img210/5302/coden.png

我还没有找到使用listings包的方法。有可能吗?

3 个答案:

答案 0 :(得分:10)

不幸的是@Konrad's approach完全逃脱了listings格式化。如果突出显示的文本包含任何计划关键字,则listings包不会突出显示这些关键字,因为它们位于非突出显示的行上。理想情况可能是使用\highlight{\lstinline{...}},但似乎无法在\lstinline环境中嵌套listings宏。

TeX StackExchange网站有essentially the same questionnice answer based on the tikz packagefurther refinement thereof。它会覆盖突出显示,同时仍让listings自动设置突出显示的文本格式。

基于tikz的整个方法took on a life of its own,最终导致good, robust solution。这是目前最着名的(对我而言)突出显示所选listings行同时保持自动语法突出显示的方法。它实际上也适用于在给定页面上的任何位置之间划出亮点。

答案 1 :(得分:6)

您可以在listings区域内启用任意LaTeX命令:

\begin{listings}[escapeinside=\{\}]
{\highlight{Colonnes[3] = 9}}
\end{listings}

\highlight是您的突出显示宏(您需要自己编写)。有关详细信息,请参阅清单文档,第4.14节(“转义到LaTeX”)。请注意,您现在需要转义代码中每隔一次出现的特殊字符 - 因此对于C ++代码,{}可能是一个糟糕的选择。

答案 2 :(得分:4)

在C或C ++代码中,我认为字符`可以自由地成为转义字符。

lstset {
...
escapeinside=\`\`,
...
}

然后,您可以像

一样使用它
\begin{lstlisting}
const_cast<T>(`\it{exception}`)
\end{lstlisting}

单词exception然后变为 exception 。 BTW,字符`是Markdown格式 代码的字符,因此很容易在C或C ++中使用它,如代码清单。