我正在尝试定义一个包含制表符环境的命令。但是,当我尝试使用 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。