我尝试这样做:
\begin{lstlisting}[language=Perl,caption={text {\verb+myverb+} some more text}]
...
\end{lstlisting}
但它给了我类似的东西:
Undefined control sequence ... some more
如何verb
在我的标题中添加一行字?
答案1
\verb
是 LaTeX 中非常特殊的命令,其特殊性在于它可能不会出现在另一个命令的参数中。在您的示例中,它位于可选参数中,\begin{lstlisting}
这是不允许的(因为非常有充分理由)。
实际上,\verb
只有当需要 (La)TeX 的特殊字符时才需要:# $ % ^ & { } _ \
。当不需要这些字符时,可以使用 ,\texttt{myverb material}
其结果与 相同\verb
。
但是,这并不能解决通过 grep 查找所有文件的问题\verb
。你可以这样做
\protected\def\psverb#1{\def\innerpsverb##1#1{\texttt{##1}}
例子就变成了
\documentclass{article}
\usepackage{listings}
\protected\def\psverb#1{\def\innerpsverb##1#1{\texttt{##1}}\innerpsverb}
\begin{document}
\begin{lstlisting}[language=Perl,caption={text {\psverb+myverb+} some more text}]
...
\end{lstlisting}
\end{document}
查找\verb
或者 \psverb
应该相当容易。
答案2
不需要任何新命令的另一种选择是使用\lstinline
:
\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[language=Perl,caption={text {\lstinline[basicstyle=\ttfamily]+myverb+} some more text}]
...
\end{lstlisting}
\end{document}
答案3
使用我的新cprotectinside
包:
%! TEX program = lualatex
\documentclass{article}
\usepackage{listings}
\usepackage{cprotectinside}
\begin{document}
\cprotectinside{*}{
\begin{lstlisting}[language=Perl,caption={text *\verb+myverb+* some more text}]
code code
code code
\end{lstlisting}
}
\end{document}
(该答案也作为示例包含在包文档中)