Biblatex 正在归零 Bob!Biblatex 是否与标题、回忆录等不兼容?

Biblatex 正在归零 Bob!Biblatex 是否与标题、回忆录等不兼容?

考虑以下最小工作示例(MWE):

\documentclass{article}
\usepackage{xparse,titling}
\NewDocumentCommand\makethis {  } {%
  {\LARGE\theauthor\bigskip\par}
}
\author{Bob}
\usepackage[backend=biber]{biblatex}
\bibliography{biblatex-examples}
\begin{document}
\makethis
\end{document}

我原本以为这会将单个单词Bob\LARGE字母形式排版,但结果却并非如此。事实上,它呈现的结果如下:

归零鲍勃

[请注意,如果没有xparse,我会给你一个 NMWE(非工作最小示例)而不是 MWE,因为替换\NewDocumentCommand\newcommand会导致编译错误,而不是零成功。]

或者考虑使用 Memoir 的这个 MWE:

\documentclass{memoir}
\author{Bob}
\usepackage[backend=biber]{biblatex}
\bibliography{biblatex-examples}
\begin{document}
\theauthor
\end{document}

再次,Bob 被 Biblatex 归零:

归零鲍勃

删除加载 Biblatex 的行可以解决问题,指定\author{Bob} 加载 Biblatex 而不是

当 Bob 被定义时加载 Biblatex,\theauthor正如我所料,解析为Bob

> \theauthor=macro:
->Bob.
l.100 \show\theauthor

然而,当 Bob 被定义时加载 Biblatex,\theauthor解析方式有所不同:

> \theauthor=macro:
->\@arabic \c@author .
l.100 \show\theauthor

现在我可以通过其他方式轻松保护 Bob 不被归零。更令人担忧的是,Biblatex 似乎正在与titling、Memoir 和类似的包/类竞争\theauthor,我认为 Biblatex 使用名为 的计数器author,而其竞争对手则定义\theauthor来保留传递给 的值\author

如何最好地解决这种不兼容性?我猜这与以下代码有关biblatex_.sty

\def\do#1{%
  \newcounter{#1}%
  \newcounter{saved#1}%
  \appto\abx@dobooleans{\do{more#1}}}

\abx@donames
\abx@dornames
\abx@dolists

这可能 ?? 与定义布尔值以进行条件处理有关,例如\ifauthor。但如果是这样,这似乎相当危险地依赖于缺少任何类型的包前缀的宏名称,并且很可能被无意中覆盖或无意中覆盖其他内容。

同样,考虑到用于排版计数器,titling使用和\theauthor\thetitle总是\thedate让我感到不妥\the...。但是,当希望保留 和 的值而不使用 时,一些类和包已经使用了这种\author约定\title一段\date时间\maketitle

grep对中第一级子目录的初步分析tex/latex/表明,该问题可能还会影响几个论文类别,、、、、等uspatent。但是,由于我对其中大多数都不熟悉,因此我无法立即判断该问题是否会在它们的情况下产生任何症状,也没有进一步进行调查。seminardroit-frltugboatametsocabntex2

答案1

我对从数据模型派生的所有此类“裸”计数器进行了保存/恢复。据我所知,这似乎不会产生任何影响 - 所有测试文档都会生成相同的输出。问题比\theauthor默认数据模型生成的输出更大\thetitle。DEV 版本 3.4 已修复此问题。

相关内容