我得到了错误
! 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