texlive 更新后,Literaturverzeichnis 更改为 Literatur

texlive 更新后,Literaturverzeichnis 更改为 Literatur

在我编辑的一本德语书中,我最近更新了 texlive 安装(从 ubuntu-eoan 默认到 ubuntu-focal 默认),导致 PDF 中的参考书目标题从“Literaturverzeichnis”更改为“Literatur”。在此更改期间,我根本没有触碰过我的 LaTeX 文件,所以,您知道哪个包可能导致了此更改吗?我有很多;下面显示一个选项。它是这样开始的:

\documentclass[deutsch,envcountsame,envcountsect,vecarrow]{svmono}% v5.6, local file, somewhat hacked (as the original version has bugs), and lying in my local directory
% ... lots of junk here ...
\usepackage[russian,greek,USenglish,british,french,norsk,dutch,latin,german,ngerman]{babel}
% ... more junk ...
\usepackage[backend=biber,style=alphabetic,sortcites=true,maxnames=99,useprefix=true,dateabbrev=true,autolang=other]{biblatex}
% ... more junk ...
\usepackage[unicode,pdftitle={My Book Title},hidelinks,pdfauthor={Author list}]{hyperref}
% ... more junk ...
\usepackage[ngerman]{cleveref}
% ... junk continues ...

文件 svmono.cls 最初取自https://www.springer.com/gp/authors-editors/book-authors-editors/resources-guidelines/book-manuscript-guidelines/manuscript-preparation/5636点击 LaTeX 模板 > 专著。

答案1

这是一个非常模糊的问题。

理论上,负责这一任务的代码几乎可以隐藏在任何地方。

实际上,并没有很多软件包尝试biblatex以一种应该在这里有所作为的方式进行交互。事实上,我并没有积极意识到任何该包将尝试按照您描述的方式操纵参考书目标题。

bibliography“Literaturverzeichnis” 是和referencesbibstring的全称german.lbx。“Literatur” 是简称。(简单看一下 GitHub 上的“指责”,就会发现至少八年来情况一直如此。

biblatex一个合理的解释是,您将 bibstring 的长形式转换为短形式(由选项控制abbreviate)。


Literatur有个想法:当你在svmono.cls(2009/12/17 v5.5 可从以下网址获得)中搜索时https://www.springer.com/birkhauser/mathematics?SGWID=0-40292-2-122598-0;我从你的链接中简单看了一下svmono.clsv5.6,它在结构上与这个问题相同)你会发现

\def\switcht@deutsch{\svlanginfo
 \def\abstractname{Zusammenfassung}%
 \def\ackname{Danksagung}%
 \def\andname{und}%
 \def\lastandname{ und}%
 \def\appendixname{Anhang}%
 \def\bibname{Literaturverzeichnis}%
 \def\chaptername{Kapitel}%
 \def\claimname{Behauptung}%
 \def\conjecturename{Hypothese}%
 \def\contentsname{Inhaltsverzeichnis}%
 \def\corollaryname{Korollar}%
%\def\definitionname{Definition}%
 \def\emailname{E-mail}%
 \def\examplename{Beispiel}%
 \def\exercisename{\"Ubung}%
 \def\figurename{Abb.}%
 \def\forewordname{Geleitwort}%
 \def\keywordname{{\bf Schl\"usselw\"orter:}}%
 \def\indexname{Sachverzeichnis}%
%\def\lemmaname{Lemma}%
 \def\contriblistname{Mitarbeiter}%
 \def\listfigurename{Abbildungsverzeichnis}%
 \def\listtablename{Tabellenverzeichnis}%
 \def\mailname{{\it Correspondence to\/}:}%
 \def\noteaddname{Nachtrag}%
 \def\notename{Anmerkung}%
 \def\partname{Teil}%
 \def\prefacename{Vorwort}%
%\def\problemname{Problem}%
 \def\proofname{Beweis}%
 \def\propertyname{Eigenschaft}%
%\def\propositionname{Proposition}%
 \def\questionname{Frage}%
 \def\refname{Literaturverzeichnis}%
 \def\remarkname{Anmerkung}%
 \def\seename{siehe}%
 \def\solutionname{L\"osung}%
 \def\subclassname{{\it Subject Classifications\/}:}%
 \def\tablename{Tabelle}%
%\def\theoremname{Theorem}%
}

具体来说,这个宏定义了和\refname\bibname扩展为Literaturverzeichnis

\switcht@deutsch再次被提及

\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}%
\@ifpackageloaded{babel}{%
\@ifundefined{extrasamerican}{}{\addto\extrasamerican{\switcht@albion}}%
\@ifundefined{extrasaustralian}{}{\addto\extrasaustralian{\switcht@albion}}%
\@ifundefined{extrasbritish}{}{\addto\extrasbritish{\switcht@albion}}%
\@ifundefined{extrascanadian}{}{\addto\extrascanadian{\switcht@albion}}%
\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}%
\@ifundefined{extrasnewzealand}{}{\addto\extrasnewzealand{\switcht@albion}}%
\@ifundefined{extrasUKenglish}{}{\addto\extrasUKenglish{\switcht@albion}}%
\@ifundefined{extrasUSenglish}{}{\addto\extrasUSenglish{\switcht@albion}}%
\@ifundefined{captionsfrench}{}{\addto\captionsfrench{\switcht@francais}}%
\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}%
\@ifundefined{extrasngerman}{}{\addto\extrasngerman{\switcht@deutsch}}%
}{\switcht@@therlang}%
}

因此,svmono将此定义附加到\extrasgerman钩子\extrasngerman中(如果可用)\AtBeginDocument

biblatex使用\refname\bibname排版参考书目标题。但biblatex也会尝试用自己的书目字符串填充\refname和。这通过最终以的代码完成(如果您的文档语言是)。这就是最近更改的原因。在 v3.14 中,实现此目的的代码在钩子中执行。在旧版本中,它使用钩子。有关详细信息,请参阅\bibname\extrasngermanngermanbiblatex\AtBeginDocument\AtEndPreamblehttps://github.com/plk/biblatex/commit/d12f8a045ab5dc1d768b6b6bbd5e65968fb9b699。由于\AtBeginDocument钩子是按照其填充的顺序执行的,这意味着biblatexv3.14 的语言定义被添加到\extrasngerman之后svmono。在旧版本中,biblatex使用\AtEndPreamble biblatex的 定义会进入 svmono的。

这意味着在旧版本中 和biblatex的定义占\bibname优势,而在新版本中 的版本占优势。这就是你现在得到“Literatur”的原因:如果没有其他人修改 ,它就会一直给你。\refnamesvmonobiblatex biblatexbiblatex\extrasngerman


由于biblatex现在已完全控制了参考书目标题,如果你想要坚持使用“Literaturverzeichnis”的方法,abbreviate=true,那么可能就是添加

\DefineBibliographyStrings{german}{%
  bibliography     = {Literaturverzeichnis},
  references       = {Literaturverzeichnis},
}

到你的序言(加载后biblatex)。

相关内容