我正在使用biblatex
后端biber
创建按章节细分的累积书目。我的(简化)主文件(主文本) 是:
\documentclass{book}
\usepackage[refsection=chapter, backend=biber]{biblatex}
\defbibheading{bibbook}[\bibname]{\chapter{#1}}
\defbibheading{subbib}[\refname\space\chaptername\space%
\ref*{refsection:\therefsection}]{%
\setcounter{secnumdepth}{0}%
\section{#1}}
\addbibresource{biblatex-examples.bib}
\usepackage{hyperref}
\includeonly{bar}
\begin{document}
\mainmatter
\include{foo}
\include{bar}
\backmatter
\printbibheading[heading=bibbook]
\bibbysection[heading=subbib]
\end{document}
foo.tex是:
\chapter{Foo}
\label{cha:foo}
\nocite{cms}
和巴氏是:
\chapter{Bar}
\ref{cha:foo}
\nocite{glashow}
根据这个回答使用的好处\include
是
“文件名开头会有一个 filename.aux 文件,其中包含所有计数器值,如页码和章节号等。这样,文件可以单独编译,但仍具有正确的页码和章节号等。此类部分辅助文件由主辅助文件读取”。
我希望refsection
计数器的行为方式相同。但是,使用时\includeonly{some chapter}
我收到以下警告:
LaTeX Warning: Label `refsection:01' multiply defined.
LaTeX Warning: There were multiply-defined labels.
如果我删除该includeonly
命令,警告就会消失,但是有没有办法在使用该includeonly
命令时避免出现该警告?显然,消除警告的唯一方法是在每次编译后删除章节的辅助文件(而不是主文件)。但是这样计数器值就会丢失。
我知道这只是一个警告,而不是错误,也不会成为最终(完整)文档中的问题。但是我想了解为什么会出现这个警告,并尽可能消除它。
编辑:在悬赏结束之前,我想澄清的是,我可以告诉我的文本编辑器 (vim) 不要显示警告。正如我之前所说,我真正想知道的是,当使用 include 的优点之一是它存储计数器值时,为什么会出现警告。
答案1
根据我的测试,从一个干净的目录(没有 .aux 文件)开始,它可以很好地与 配合使用\includeonly
。如果您foo.aux
在创建它的上一次运行中(大概没有\includeonly
)挂起,然后尝试使用 运行\includeonly
,这似乎会拾取并读取 ,foo.aux
其中包含与 中相同的计数器,这才是问题所在bar.aux
。这是有道理的,因为当您有效地仅bar.aux
通过使用包括时\includeonly
,这将获得计数器“01”,但如果您同时包括两者,则会出现这种情况。如果您在具有不同设置的运行之间foo.aux
不删除文件,则很自然地会发生冲突,因为您周围有旧文件。.aux
\includeonly
.aux