\cite[page]{book} 内 \caption[...]{...}

\cite[page]{book} 内 \caption[...]{...}

是否可以以某种方式将包含页面规范的引用(如)放入\cite[page]{book}图表列表相关的图表标题中,即\caption[*HERE*]{...}

我可以

\caption[\protect\cite{book}]{other text}

\caption[\protect\cite[page]{book}]{other text}

在第一次运行中产生book] other text作为标题的结果,并在第二次 LaTeX 运行中产生错误“\NAT@@cite 的参数有一个额外的}”。

我正在使用 pdfLaTeX 和 natbib。

答案1

可选参数(在括号[和 中])的扫描方式与强制参数(在花括号{和 中})的扫描方式略有不同;TeX 会计算花括号,但不会计算花括号。因此,根据您的输入,看到的可选参数是

\protect\cite[page

也就是说,从[到第一个的一切](相对于大括号)。为了避免此问题,可选参数内的括号必须用大括号“掩盖”:

\caption[{\protect\cite[page]{book}}]{other text}

这一论点不能不平衡大括号,因此在这种情况下,后面的括号page不会结束它。

相关内容