我使用下面的 texcode 将代码包含到我的文档中
\begin{minipage}{.48\textwidth}
\centering
\lstinputlisting[numbers=left,xleftmargin=2em,frame=single,framexleftmargin=2em, breaklines]{codesamples/example2.py}
\caption{Modified \soc\ for R, R' \label{R'}}
\end{minipage}
我想突出显示输出中的某些行。可以吗?
答案1
您可以使用该包lstlinebgrd
扩展了包listings
。
这里有一个简单的例子,重点突出第三行:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{example.tex}
\documentclass{article}
\begin{document}
Hello World!
\end{document}
\end{filecontents*}
\usepackage{listings}
\usepackage{lstlinebgrd}
\begin{document}
\begin{minipage}{.48\textwidth}
\centering
\lstinputlisting[numbers=left,xleftmargin=2em,frame=single,framexleftmargin=2em, breaklines,
linebackgroundcolor={\ifnum\value{lstnumber}=3\color{green}\fi}]{example.tex}
\end{minipage}
\end{document}
更新
为了指定突出显示的行,我在下面的示例中提供了一个宏\lstcolorlines
,该宏可用作选项的参数linebackgroundcolor
。该函数使用用户界面和提供的模块\lstcolorlines
定义。命令的语法是:xparse
clist
expl3
\lstcolorlines[optional argument: color]{mandatory argumente: line numbers}
例如:
\documentclass{article}
\usepackage{expl3,xparse}
\ExplSyntaxOn
\NewDocumentCommand \lstcolorlines { O{green} m }
{
\clist_if_in:nVT { #2 } { \the\value{lstnumber} }{ \color{#1} }
}
\ExplSyntaxOff
\usepackage{filecontents}
\begin{filecontents*}{example.tex}
\documentclass{article}
\begin{document}
Hello World!
Hello World!
Hello World!
\verb+1+
\end{document}
\end{filecontents*}
\usepackage{listings}
\usepackage{lstlinebgrd}
\begin{document}
\begin{minipage}{.48\textwidth}
\centering
\lstinputlisting[numbers=left,xleftmargin=2em,frame=single,framexleftmargin=2em, breaklines,
linebackgroundcolor={\lstcolorlines{2,9}}]{example.tex}
\end{minipage}
\begin{minipage}{.48\textwidth}
\centering
\lstinputlisting[numbers=left,xleftmargin=2em,frame=single,framexleftmargin=2em, breaklines,
linebackgroundcolor={\lstcolorlines[yellow]{2,10}}]{example.tex}
\end{minipage}
\end{document}
答案2
Marco 已经指出了 Martin Scharrer 的lstlinebgrd
包,我个人就是用这个包来做这个用途的。但是,这个包还是比较新的,如果你想要或者需要避免使用其他包,你也可以“手动”做这件事(就像我过去做的那样)。
这个想法是将列表分为三个步骤:(1) 突出显示行之前的部分,(2) 突出显示的行,以及 (3) 其余部分。对于 (2),您还可以使用以下命令设置背景颜色backgroundcolor=<color command>
:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{example.c}
int main() {
printf("Hello World!\n");
return 0;
}
\end{filecontents*}
\usepackage{xcolor,listings}
\begin{document}
\fbox{
\begin{minipage}{.48\textwidth}
\centering
\lstset{numbers=left,xleftmargin=2em,breaklines,language=C, aboveskip=0pt,belowskip=0pt}
\lstinputlisting[lastline=1]{example.c}
\lstinputlisting[backgroundcolor=\color{orange!30},firstline=2,lastline=2, firstnumber=2]{example.c}
\lstinputlisting[firstline=3, firstnumber=3]{example.c}
\end{minipage}
}
\end{document}