在我编辑的一本德语书中,我最近更新了 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” 是和references
bibstring的全称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.cls
v5.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
\extrasngerman
ngerman
biblatex
\AtBeginDocument
\AtEndPreamble
https://github.com/plk/biblatex/commit/d12f8a045ab5dc1d768b6b6bbd5e65968fb9b699。由于\AtBeginDocument
钩子是按照其填充的顺序执行的,这意味着biblatex
v3.14 的语言定义被添加到\extrasngerman
之后svmono
。在旧版本中,biblatex
使用\AtEndPreamble
biblatex
的 定义会进入前 svmono
的。
这意味着在旧版本中 和biblatex
的定义占\bibname
优势,而在新版本中 的版本占优势。这就是你现在得到“Literatur”的原因:如果没有其他人修改 ,它就会一直给你。\refname
svmono
biblatex
biblatex
biblatex
\extrasngerman
由于biblatex
现在已完全控制了参考书目标题,如果你想要坚持使用“Literaturverzeichnis”的方法,abbreviate=true,
那么可能就是添加
\DefineBibliographyStrings{german}{%
bibliography = {Literaturverzeichnis},
references = {Literaturverzeichnis},
}
到你的序言(加载后biblatex
)。