列表和标签相结合

列表和标签相结合

我正在尝试定义一个包含制表符环境的命令。但是,当我尝试使用 listings 包中的 \lstinline 命令时,如果我使用反斜杠,它会产生“不正确的字母常数”错误。

当执行相同的代码而不包含在我定义的命令中时,它可以正常工作。此外,\lstinline 命令在没有反斜杠的命令中也可以工作。

为什么会出现这种情况?我该如何解决它,以便我可以将制表环境放在我定义的命令中,并且仍然使用带有反斜杠的 \lstinline?

\documentclass[10pt,a5paper]{book}

\usepackage{listings}

\newcommand\TabVerb[1]{\begin{tabbing}#1\end{tabbing}}

\begin{document}

\TabVerb{\lstinline|\Hello|}

\end{document}

供参考,以下命令使用相同的文档前言可以正常工作。

\begin{tabbing}\lstinline|\Hello|\end{tabbing}

\TabVerb{\lstinline|Hello|}

答案1

Troy 提供的方法有效(不确定如何将他的评论标记为答案以给予他信任)。只需用另一个反斜杠转义反斜杠即可:

\TabVerb{\lstinline|\\Hello|}

或者,将 cprotect 包与命令 \cMakeRobust 一起使用,以防止到处出现许多反斜杠。(只需将以下内容放在命令定义之后)

\cMakeRobust\TabVerb

请注意,如果 \verb 优于 \lstinline,则使用 cprotect 包和 \cMakeRobust 还允许在命令中使用 \verb。

相关内容