如何以粗体设置 lstlisting 的某些部分?
\begin{lstlisting}[escapechar=@]
fun(foo, bar, @\textbf{baz}@ );
\end{lstlisting}
这可以编译,但 baz 没有以粗体显示:(我错过了什么?
您的基本方法应该是告诉列出要强调的单词。一个简单的方法是这样的:
\lstset{emph={baz},emphstyle=\textbf}
当然,baz
无论何时发生都会强调。但这比尝试将标记放入您的列表本身更好,您不(应该)想要这样做,因为您(应该)想要使用列表来格式化一段未修改的代码。特别是如果您包含源文件而不是键入代码片段。
一旦掌握了基础知识,请查看文档,了解如何为关键字和标识符设置样式,以及如何为您选择的语言修改内置的关键字列表。
你的解决方案是正确的。但是,标准的 LaTeX 等宽字体没有粗体版本,因此在环境\textbf
中不做任何事情。lstlisting
根据macfreek.nl,您可以执行以下操作来重新声明粗体版本:
\DeclareFontShape{OT1}{cmtt}{bx}{n}{<5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88>cmttb10}{}
我已经测试了以下示例,它可以按您的意愿工作:
\documentclass{article}
\usepackage{listings}
\DeclareFontShape{OT1}{cmtt}{bx}{n}{<5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88>cmttb10}{}
\lstset{language=C, basicstyle=\ttfamily}
\begin{document}
\begin{lstlisting}[escapechar=@]
fun(foo, bar, @\textbf{baz}@ );
\end{lstlisting}
\end{document}
我使用相同的技术,\color{red}
而不是\textbf
向投影仪演示的观众提示两个几乎相同的代码列表之间的差异。
我在http://www.mrunix.de/forums/archive/index.php/t-42976.html下找到了答案
\lstset{moredelim=[is][\bfseries]{[*}{*]}}
\begin{lstlisting}
bla bla bla
blupp
[*wichtiger hervorzuhebender text*]
weiter im text
\end{lstlisting}