此错误仅出现在 Overleaf(普通在线版本)中,因此要么我的本地编辑器(TeXstudio)没有报告此错误,要么与编辑器有关。如果有人遇到同样的问题,我有一个修复程序可以分享,但我很想知道发生这种情况的原因以及如何正确避免它。
问题\cite
在标题中使用可选参数theorem
会破坏引用功能,即显示引用关键字,但不生成参考书目项。更准确地说,使用\cite{thekey}
不会引起问题,但\cite[the location]{thekey}
会引起问题。
当前肮脏的修复将整个标题放在花括号内。
最小工作示例文件bibi.bib
:
@misc{alexander,
title = {Alexandrov Geometry: Foundations},
author = {Alexander, Stephanie and Kapovitch, Vitali and Petrunin, Anton},
year = {2022},
}
@article{altarovici,
title = {A General {{Hamilton-Jacobi}} Framework for Non-Linear State-Constrained Control Problems},
author = {Altarovici, Albert and Bokanowski, Olivier and Zidani, Hasnaa},
year = {2013},
}
main.tex 文件:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{bibi.bib}
\newtheorem{mydef}{Definition}
\begin{document}
Outside of the title arguments, no problem to cite \cite{alexander},
and no problem either to precise the location as in \cite[Theorem 5]{alexander}.
However, environments are not behaving the same.
\begin{mydef}[A first def \cite[Definition 16]{altarovici}]
This definition title fails.
\end{mydef}
\begin{mydef}[{A second def \cite[Definition 7]{alexander}}]
This definition title does not.
\end{mydef}
\printbibliography
\end{document}
使用 overleaf 在线输出:
答案1
的论点mydef
是A first def \cite[Definition 16
,因此当使用该论点时,\cite
论点不会被封闭。
使用
\begin{mydef}[{A first def \cite[Definition 16]{altarovici}}]
用额外的支撑组来隐藏内部[]
这与 Overleaf 无关,适用于由经典 LaTeX2e 构造(例如)定义的所有可选参数。由()构造(例如)\newcommand
定义的版本与嵌套构造匹配。ltcmd
xparse
\NewDocumentCommand
[]