我试图找出德语引号和babel
快捷方式的一个奇怪问题。我已经问了另一个问题(使用 biblatex/biber 进行德语引述biblatex
),但这是真正重要的 MWE。处理语言设置的 和"`
标题字段的第一个位置之间似乎存在一些奇怪的交互。在我的书中,我遇到了这样一种情况,如果标题字段以 开头,则德语简写不起作用"`
。我首先注意到这个问题是因为它将整个标题大写。我现在可以在以下示例中重现此问题:
\documentclass{article}
\usepackage[ngerman,main=english]{babel}
\useshorthands*{"}
\addto\extrasenglish{\languageshorthands{ngerman}}
\begin{filecontents}{ref.bib}
@article{Wegener85a,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {"`Er bekommt widersprochen"' -- Argumente Test/""Test für die Existenz eines Dativpassivs im Deutschen},
Volume = {96},
langid = {ngerman},
Year = {1985}}
@article{Wegener86,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {\glqq Er bekommt widersprochen"' -- Argumente Test/""Test für die Existenz eines Dativpassivs im Deutschen},
Volume = {96},
langid = {ngerman},
Year = {1986}}
@article{Wegener87,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {{"`Er bekommt widersprochen"' -- Argumente Test/""Test für die Existenz eines Dativpassivs im Deutschen}},
Volume = {96},
Year = {1987}}
@article{Wegener88,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {{Test "`Er bekommt widersprochen"' -- Argumente Test/""Test für die Existenz eines Dativpassivs im Deutschen}},
Volume = {96},
Year = {1988}}
\end{filecontents}
\usepackage{bibentry}
\usepackage[
style=langsci-unified,
% autolang=langname,
backend=biber,
]{biblatex}
\addbibresource{ref.bib}
\begin{document}
Test"=Sequenz "`Ergative"' Verben
\nocite{*}
\printbibliography
\end{document}
如果未设置语言 ID,且引号字符位于标题字段的第一个位置,则文本将大写。如果我在开头添加内容,则一切恢复正常。
答案1
您遇到了biblatex
句子大小写 () 实现的特殊之处\MakeSentenceCase
以及它对大小写变化的括号保护。biblatex
模拟(在 LaTeX 端)BibTeX 使用的大小写变化change.case$
。biblatex
的版本在很大程度上复制了 BibTeX 的行为,但由于它的实现,存在一些差异(其中最重要的记录在手册biblatex
,第 253-255 页,版本 3.14,参见https://github.com/plk/biblatex/issues/871)。
让我们看看下面这个更系统的例子
\documentclass{article}
\usepackage[ngerman,main=english]{babel}
\useshorthands*{"}
\addto\extrasenglish{\languageshorthands{ngerman}}
\begin{filecontents}{\jobname.bib}
@article{Wegener85,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {"`Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen},
Volume = {96},
Year = {1985},
}
@article{Wegener86,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {{"`Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen}},
Volume = {96},
Year = {1986},
}
@article{Wegener87,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {{{"`Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen}}},
Volume = {96},
Year = {1987},
}
@article{Wegener95,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {\glqq Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen},
Volume = {96},
Year = {1995},
}
@article{Wegener96,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {{\glqq Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen}},
Volume = {96},
Year = {1996},
}
@article{Wegener97,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {{{\glqq Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen}}},
Volume = {96},
Year = {1997},
}
@article{Wegener05,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {Test "`Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen},
Volume = {96},
Year = {2005},
}
@article{Wegener06,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {{Test "`Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen}},
Volume = {96},
Year = {2006},
}
@article{Wegener07,
Author = {Heide Wegener},
Journal = {Linguistische Berichte},
Pages = {127--139},
Title = {{{Test "`Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen}}},
Volume = {96},
Year = {2007},
}
\end{filecontents}
\usepackage[
style=langsci-unified,
% autolang=langname,
backend=biber,
]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
Test"=Sequenz "`Ergative"' Verben
\nocite{*}
\printbibliography
\end{document}
在我们开始讨论结果之前,请注意,一般来说不是title
一个好主意是,用一对花括号以所见即所得的方式保护整个字段
title = {{Title That Remains Unchanged}},
在英语(以及其他使用句子大小写的语言)中,您只应保护那些需要大小写保护的单词。如果您的标题是不需要句子大小写的外语,则应使用 来说明biblatex
这一点langid
。(条目中有langid = {ngerman},
或langid = {german},
没有大小写变化。)
也就是说,如果我们必须保护标题的第一个词,我们就会面临同样的根本问题。
解决了这个问题后,首先请注意"
和的\glqq
行为类似。这是故意的。如果"
处于活动状态(通常是因为它是babel
简写),它将触发与中的控制序列相同的行为\MakeSentenceCase
。我猜这主要是为了能够将"A
和\"A
(对于)视为相同。(用于确保将活动视为宏的Ä
方法可能会破坏如果用作“普通字符”而不是其简写容量。)biblatex
"
"
这里的主要问题是biblatex
BibTeX 的句子大小写功能将以控制序列开头的括号组(在括号级别 0)视为单个字符。{\"A}
也就是说{\relax Foo}
被视为单个字符。该函数允许 BibTeX 正确地构建带有重音字符的名字首字母。它也是“多字母首字母”技巧的基础(请参阅BibTeX:将名字缩写为 2 个或 3 个字母(而不是 1 个))。
这种“以控制序列开头的括号组是单个字符”的行为只有在biblatex
括号组位于字符串开头时才会成为问题。与 BibTeX 的大小写转换器不同,biblatex
的大小写转换器明确将字符串的第一个字符大写。如果字符串以以控制序列开头的括号组开头,则整个组将大写为一个字符。因此{\"a}
变成{\"A}
(好)并{\relax Foo}
变成{\relax FOO}
(嗯......)。
在
Title = {{\glqq Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen}},
这全部的title 被视为单个字符。由于它是字符串中的第一个字符,因此将其全部大写。所以我们得到全大写。
这就是biblatex
文档试图解释的
其参数的首字母用 大写
\MakeUppercase
。这与 BibTeX 的 不同change.case$
,后者不会触及其参数的首字母。请注意,以控制序列开头的一对括号将被视为一个字符以进行大写处理。这意味着,用一对括号保护的命令的整个参数都将大写。
对于您来说,有一个简单的方法可以解决这个困境:如果您最终会得到一个以控制序列开头的单括号组,请使用双括号。
Title = {{{\glqq Er bekommt widersprochen"'
-- Argumente Test/""Test
für die Existenz eines Dativpassivs im Deutschen}}},
将使用双花括号进行大小写保护作为一般规则是很诱人的,但我会尽量抵制这种诱惑。
请注意,的下一个版本biblatex
将基于expl3
不再表现出这种行为的代码提供一个新的大小写更改函数,并且总体上更加健壮。请参阅https://github.com/plk/biblatex/issues/960和https://github.com/plk/biblatex/pull/1005了解背景和更多细节。特别是,可以使用一种不同的大小写保护机制,这种机制不依赖于花括号,因为花括号的含义在 BibTeX 中过于繁重。