我使用 LaTeX 的 listings-package 来格式化文档中的源代码。我可以使用 listings 包的 emph-option 来强调关键字:
\lstset{
emph={nerv},
emphstyle={\color{red}\textbf}
}
\begin{lstlisting}[
frame=trBL,
caption={R-Code (test).},
label={code:R_allee}
]
# comment
square <- function(x) {
x^2
}
nerv = "Str ing "
x <- c(1:100)
y <- square(x)
\end{lstlisting}
这使得源代码中的“nerv”变成粗体和红色。但是,我想使用以下方法突出显示字符串“Str ing”中的“ing”:
\lstset{
emph={ing},
emphstyle={\color{red}\textbf}
}
不幸的是,这不起作用。我不知道该如何解决这个问题。
你们有人有主意吗?
答案1
我理解这可能是一个没有实际意义的问题,因为你只提供了一个最小的例子。但是,我还假设突出显示ing
中的字符串"Str ing "
可能仅限于代码中的特定实例。为此,无需定义一个样式全球的整个列表。您可以立即逃脱列表环境(产生当地的更改),并通过设置mathescape=true
标志使用标准 LaTeX 排版一些内容:
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\begin{document}
\lstset{
emph={ing},
emphstyle={\color{red}\textit}
}
\begin{lstlisting}[
frame=trBL,mathescape=true,
caption={R-Code (test).},
label={code:R_allee}
]
# comment
square <- function(x) {
x^2
}
nerv = "Str $\color{blue}\textbf{ing}$ "
burn ing = hot
x <- c(1:100)
y <- square(x)
\end{lstlisting}
\end{document}
另一个很好的例子是:Lstlistings:在显示模式下获得漂亮的方程式
答案2
今天我偶然发现了一个类似的问题,并找到了这个相当老问题的另一个解决方案。该listings
包允许我们定义分隔符,包仍将在其中处理关键字和其他内容。来自文档listings
:
您甚至可以让包检测内容内的关键字、注释、字符串和其他分隔符。
\lstset{moredelim=*[s][\itshape]{/*}{*/}}
修饰符*
也适用于字符串定义,因此我们可以定义自己的字符串,其中仍然允许使用关键字:
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\begin{document}
\lstset{
emph={ing},
emphstyle={\color{red}\textit},
morestring=*[b]" % the quote may be escaped by a _b_ackslash
}
\begin{lstlisting}[
frame=trBL,mathescape=true,
caption={R-Code (test).},
label={code:R_allee}
]
# comment
square <- function(x) {
x^2
}
nerv = "Str ing"
burn ing = hot
x <- c(1:100)
y <- square(x)
\end{lstlisting}
\end{document}
但请注意,“ing”仍然必须是它自己的标识符。