我正在使用Latex和listings
包在文档中显示一些C ++代码(带语法高亮显示)。
我需要突出显示代码的某些部分。这个特定的亮点与语法高亮无关,它只是我想强调的代码的一些部分,以便读者可以专注于它。
我希望我可以创建一些变量名称,例如,以粗体显示,并在黄色背景上显示。这是我用MSWord做的事情我想用Latex重现(当然,不是红色和绿色下划线):
http://img210.imageshack.us/img210/5302/coden.png
我还没有找到使用listings
包的方法。有可能吗?
答案 0 :(得分:10)
不幸的是@Konrad's approach完全逃脱了listings
格式化。如果突出显示的文本包含任何计划关键字,则listings
包不会突出显示这些关键字,因为它们位于非突出显示的行上。理想情况可能是使用\highlight{\lstinline{...}}
,但似乎无法在\lstinline
环境中嵌套listings
宏。
TeX StackExchange网站有essentially the same question,nice answer based on the tikz package和further 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 ++中使用它,如代码清单。