我该如何将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}
我在beamer演示文稿中使用相同的技术,只是使用\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}
emphstyle=\textbf
对我不起作用,而例如emphstyle=\color{red}
就可以。看来 lstlisting 真的不想让我弄乱字体 :( - fredoverflow\bfseries
代替\textbf
。 - High Performance Mark