为什么 \lstinline 在表格列中不起作用?

为什么 \lstinline 在表格列中不起作用?
\documentclass[14pt]{extarticle}
\usepackage{xcolor}
\definecolor{deepblue}{rgb}{0,0,0.5}
\definecolor{deepred}{rgb}{0.6,0,0}
\definecolor{deepgreen}{rgb}{0,0.5,0}
\usepackage{listings}
\lstloadlanguages{[LaTeX]TeX}
\lstdefinestyle{listLaTeX}{
  language={[LaTeX]TeX},
  extendedchars=true,
  belowcaptionskip=5pt,
  xleftmargin=0.5cm,
  numbers=left,
  numberstyle=\scriptsize\ttfamily\bf,
  frame=single,
  breaklines=true,
  breakatwhitespace=true,
  breakindent=0pt,
  basicstyle=\small\ttfamily,
  keywordstyle=\color{deepblue}\ttfamily,
  identifierstyle=\color{deepred}\ttfamily,
  commentstyle=\color{deepgreen}\ttfamily,
  morekeywords={},
  emphstyle=\color{red},
  emph={},
  columns=fullflexible,
  showstringspaces=false
}
\begin{document}
Test -- \lstinline[style=listLaTeX]!\Huge!!

\begin{tabular}{|p{0.29\linewidth}|p{0.29\linewidth}|p{0.29\linewidth}|}
\hline
1&2&3\\
\lstinline[style=listLaTeX]!\Huge!&2&3\\%This line has an error!!!!
\hline
\end{tabular}
\end{document}

答案1

egreg 的回答对我来说不起作用,所以她是我如何做的一个例子:

    \documentclass[varwidth]{standalone}
    \usepackage {listings}
    \usepackage {xcolor}

    % Color scheme: original matlab
    \definecolor{src_none}{HTML}      {555555} % 
    \definecolor{src_comment}{HTML}   {008000} % gruen

    \lstset{language            = Matlab,
            basicstyle          = \color{src_none}\ttfamily\footnotesize,
            stringstyle         = \color{src_comment}}

    \begin{document}
      lorem \lstinline{foo = 'bar';} ipsum.\\
      \begin{tabular}{ll}
        11                        & 12\\
        \lstinline[]$bar = 'foo';$  & 22\\
      \end{tabular}

    \end{document}

请注意,我使用“$$”而不是括号“{}”,结果是:

在此处输入图片描述

答案2

\lstinline这与用于查找其参数末尾的“向前看”技术有关;它会根据您的输入找到单元格的末尾,这是 TeX 内部使用的隐式标记,在用户输入中是不合法的。

用大括号保护\lstinline解决了这个问题,因为向前查找会找到右大括号而不是非法标记\endtemplate

\begin{tabular}{|p{0.29\linewidth}|p{0.29\linewidth}|p{0.29\linewidth}|}
\hline
1 & 2 & 3\\
{\lstinline[style=listLaTeX]!\Huge!} & 2 & 3 \\
\hline
\end{tabular}

答案3

不要使用\lstinline{xxx},而要尝试\lstinline|xxx|\lstinline$xxx$

相关内容