在定理环境论证中引用

在定理环境论证中引用

当我尝试以这种方式引用一本书时

\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也会出现同样的问题。作为一种解决方法,您可以将 命令括在双括号中,例如changemarginnonumberplainempty\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]}

相关内容