\@item 的参数有一个额外的 }

\@item 的参数有一个额外的 }

我得到了错误

! Argument of \@item has an extra }.
<inserted text> 
                \par 
l.135 \emph{class} \bfcode{C}}

翻译由狮身人面像文档系统。

我已设法将其简化为以下独立的示例:

\documentclass{article}

\usepackage{hyperref}

\newcommand{\pysigline}[1]{\item[#1]\nopagebreak}

\newenvironment{fulllineitems}{
  \begin{list}{}{\labelwidth \leftmargin \labelsep 0pt
                 \rightmargin 0pt \topsep -\parskip \partopsep \parskip
                 \itemsep -\parsep}
}{\end{list}}

\begin{document}

\begin{fulllineitems}
\pysigline{\phantomsection\label{index:project0class_c}\item[] template \textless{}typename T\textgreater{}
\emph{class} \bfcode{C}}
Test class. 
\end{fulllineitems}

\end{document}

如您所见,“{”和“}”是平衡的。

这个错误是什么意思?我该如何修复它?

答案1

LaTeX 可选参数以第一个结束](除非它在{}组内)。不是匹配[ ](除非你使用提供的声明xparse),因此

... \item[...\foo[] ...]  zzz

的论点\item不是...\foo[] ...,但是...\foo[事情出了问题。

\pysigline将其参数放在可选参数中,因此使用

\pysigline{{...}}

隐藏[]

或者更好的是(如果您有权访问实际情况中的定义)修复定义以{}在所有情况下添加额外内容:

\newcommand{\pysigline}[1]{\item[{#1}]\nopagebreak}
                                 %  %

]现在,参数中的杂散\pysigline受到保护,不会终止内部的可选参数\item

相关内容