请考虑以下文档:
\documentclass{minimal}
\usepackage{biblatex}
\newsavebox{\foobox}
\newcommand{\doofoo}[1]{
\ifdefined\donewithfoo
\else
\begin{lrbox}{\foobox}
\begin{refcontext}
\begin{refsection}[#1]
foo
\end{refsection}
\end{refcontext}
\end{lrbox}
\fi
\usebox\foobox
\global\def\donewithfoo{}
}
\begin{filecontents}{bar.bib}
\end{filecontents}
\begin{document}
\doofoo{bar}
\doofoo{bar}
\end{document}
我们就叫它吧mydoc.tex
。
这是一个更复杂的文档的最小示例,涉及“人工”嵌入的部分参考书目(提出的想法这里并用于我维护的文档类中这里,但我希望这与这个问题无关)。
我使用以下方式编译此文档:xelatex mydoc
。以前编译没问题,但使用最近的 TeXLive 版本(肯定是 2023,也许是 2022?2021?我不知道),我得到:
LaTeX Warning: Label `refsection:1' multiply defined.
aux 文件包含:
\relax
\abx@aux@refcontext{nty/global//global/global}
\abx@aux@refcontext{nty/global//global/global}
\abx@aux@refsection{1}{1}
\newlabel{refsection:1}{{}{1}{}{}{}}
\newlabel{refsection:1}{{}{1}{}{}{}}
\abx@aux@read@bbl@mdfivesum{nobblfile}
\gdef \@abspage@last{1}
无论如何,我的问题是:
- XeLaTeX 或者 biblatex 发生了什么变化,现在会触发创建两个相同的标签(之前,它们要么没有被创建,要么只创建了一个,或者它们有不同的标签)?
- 我该怎么做才能保留基本相同的文档,但确保标签不同?