编译失败,显示“!缺少 \endcsname 插入。”

编译失败,显示“!缺少 \endcsname 插入。”

嗨,我遇到了一个奇怪的问题。我定义了一个新命令来在文档中打印 Linux 命令行:

\documentclass[12pt,a4paper]{article}
\usepackage{listings}
\newcommand{\shellcmd}[1]
{
  \begin{lstlisting}
    {#1}
  \end{lstlisting}
}

\begin{document}
\shellcmd{gdb \textit{program core}}
\end{document}

如果我不使用自己定义的命令,而是使用,\begin...\end那么它会编译。但是,如果我使用该命令,那么我会得到:

! Missing \endcsname inserted.
<to be read again> 
                   \protect 
l.11 \shellcmd{gdb \textit{program core}}

不确定如何解决这个问题。我在网上没有看到过类似的问题。

答案1

乳胶未知因为它的错误消息透明,所以这个问题与实际问题无关。事实上,问题在于环境lstlisting是一种“逐字”文本的形式,在用作输入时需要特别小心。这是最后一个上一个问题(实际上,我发现了好几个;这个问题似乎和你的类似),原因是这样的环境需要其内容是“原始的”并且之前没有被 TeX 扫描过。正如 egreg 在他的评论中所建议的,你应该使用\lstinline;但是,出于同样的原因,它也不能被埋在另一个宏中。直接使用它而不是\shellcmd

相关内容