列表标题内的动词

列表标题内的动词

我尝试这样做:

\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}

(该答案也作为示例包含在包文档中)

相关内容