表格内包含行号的列表

表格内包含行号的列表

我在基于 ( 的)环境中排版了很多列表 (使用包listings) 。这很有效,但是当我将选项传递给列表时,它就中断了:arraytabularnumbers=

\documentclass{article}

\usepackage{listings}
\usepackage{array}

\begin{document}

\begin{tabular}{p{8cm}}
  % The following works if you remove the numbers=left option
  \begin{lstlisting}[language=C,basicstyle=\ttfamily, numbers=left, gobble=4]
    int main(){
      printf("Hello, Bug\n");
    }
  \end{lstlisting}
\end{tabular}

\end{document}

失败并显示错误消息:

Runaway definition?
#1\\left\unskip \relax \@endpbox \hskip \col@sep 
! Forbidden control sequence found while scanning definition of \lst@temp.
<inserted text> 
            }
l.9 ...sicstyle=\ttfamily, numbers=left, gobble=4]

知道是什么原因导致了这个问题吗?

是否有可能的解决方法(除了外部装箱或回退到\lstinputlisting)?

答案1

该问题似乎可以通过将lstlisting环境放在括号中来解决:

\begin{tabular}{p{8cm}}
  {\begin{lstlisting}[language=C,basicstyle=\ttfamily, numbers=left, gobble=4]
    int main(){
      printf("Hello, Bug\n");
    }
  \end{lstlisting}}
\end{tabular}

似乎没有括号的宏列表走得“太远”,并尝试查看完成表格单元格的内部标记(TeXbook 称之为\endtemplate,但它实际上无法以任何方式写入文档中)。线索确实是“发现禁止的控制序列”消息。

相关内容