我正在编写一份标准的复杂文档(即论文),其中各章被分成不同的文件并包含在内。我正在使用biblatex
,并且我希望每章都有单独的参考书目,因此我使用refsection
自动按节分离书目范围的选项(如所述这里以及biblatex
文档中的第 3.11.3 节“多个参考书目”)。
但是我现有的文件确实不是完全像这样,并且崩溃并显示错误
! You can't use `\relax' after \advance.
<recently read> \blx@sectionciteorder@1
我使用 Kile 作为我的 IDE,根据 Kile 的说法,发生错误的文件是该.lot
文件。经过一些策略性的评论,我设法找出了问题所在:
当浮动图表(图形或表格)带有refsection
带引用的标题时,打印表格列表或图形列表(视情况而定)会导致错误。
删除refsection
即可解决问题。从标题中删除引文(使用可选参数\caption
或完全删除标题)即可解决问题。删除 LoT 或 LoF 即可解决问题。但是我怎样才能在不删除其中任何一个的情况下修复该问题?
MWE 如下:
\documentclass{book}
\usepackage[
backend=biber,
refsection=chapter,
]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{A,
title = {A title},
pages = {55--61},
journal = {{JoRS}},
author = {Author, A.N.},
date = {1990}
}
@article{B,
title = {Another title},
pages = {550--610},
journal = {{JoBS}},
author = {Other, A.N.},
date = {1995}
}
\end{filecontents}
\begin{document}
\tableofcontents
\listoftables
\chapter{One}
This is a test \textcite{A}.
\begin{table}
\centering
\caption{A table. From \textcite{A}}
\begin{tabular}{ccc}
A & B & C \\
1 & 2 & 3 \\
\end{tabular}
\end{table}
\printbibliography
\chapter{Two}
This is a test \textcite{B}.
\printbibliography
\end{document}
虽然这种情况在我看来很常见,但我在网上找不到任何与这种特定情况有关的内容。这个网站上还有一个标题很有希望的问题,但核心问题是排序问题,而不是崩溃。(它被标记为无关的事情回答我的问题)。
还有问题在 GitHub 上的 biblatex 存储库中,但它似乎根本不处理标题和 LoF/LoT 中的引用。无论如何,我尝试了发展和实验该讨论中提到的版本,并且两个版本上的问题仍然存在。