当我尝试以这种方式引用一本书时
\begin{theorem}[\cite[p.~90]{bibitem}]
Theorem body.
\end{theorem}
由于多次使用[
和,我遇到了错误]
。在定理论证中可以这样引用吗?如果可以在不重新定义\cite
命令的情况下做到这一点,那就太好了。
答案1
如果您需要传递]
可选参数,只需将参数括在图中括号中:
\begin{theorem}[{\cite[p.~90]{bibitem}}]
Theorem body.
\end{theorem}
如果没有这个,那么\cite[p.~90
(直到第一个的所有内容]
)将作为参数传递,而剩余的文本将在之后进行排版。
答案2
Andrey Vihrov 的回答完美地解决了 OP,我只想添加一个小注释(不太适合放在评论中):使用包ntheorem
和\theoremstyle{plain}
命令时,将引用括在括号中是不够的。这基本上是由于定理样式的实现,如下所示:
\newtheoremstyle{plain}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ (##3)\theorem@separator]}
命令\cite
将成为##3
参数。如果\cite
命令带有可选参数(如 OP 中所示),这会干扰括号。 、、和theorem 样式\item
也会出现同样的问题。作为一种解决方法,您可以将 命令括在双括号中,例如change
margin
nonumberplain
empty
\cite
\begin{theorem}[{{\cite[p.~90]{bibitem}}}]
Theorem body.
\end{theorem}
或者您可以考虑重新定义将参数括在括号中的样式##3
。例如,您可以使用以下方式重新定义普通样式
\renewtheoremstyle{plain}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ ({##3})\theorem@separator]}