当使用 apa 样式和 biblatex 时,大写变音符号(如 Ö)总是以小写形式打印,开头除外。使用默认的 biblatex 样式可以正常工作。我该如何解决这个问题?
例子
\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents}{test.bib}
@incollection{Brosse.1995,
author = {Br{\"o}sse, Ulrich},
title = {{\"{O}}konomisches {V}erhalten als bester {W}eg zu einer nachhaltigen {U}mweltverbesserung},
booktitle = {{\"{O}}konomie contra {\"{O}}kologie?},
year = {1995}
}
\end{filecontents}
\usepackage[ngerman]{babel}
\usepackage[backend=biber,sorting=nyt,style=apa]{biblatex} % this does not work
\DeclareLanguageMapping{ngerman}{ngerman-apa}
%\usepackage[backend=biber,sorting=nyt]{biblatex} % this works
\bibliography{test}
\begin{document}
\cite{Brosse.1995}
\printbibliography
\end{document}
答案1
更新
自从写下这个答案以来,有些事情发生了变化。
总结
在当前的 TeX 系统中,您只需要一对花括号即可保护以 开头的单词不Ö
发生大小写变化。(就像带有 US-ASCII 字符的单词一样。)
完整答案
新版本biblatex-apa
使用语言敏感\MakeSentenceCase*
宏,该宏仅在有意义时尝试应用句子大小写。 仅\MakeSentenceCase*
在检测到当前语言为英语(或用 声明的其他语言\DeclareCaseLangs
)时才应用句子大小写。 为了检测语言,宏会考虑langid
条目的字段.bib
以及当前活动的语言。
这意味着在主要语言为德语的示例中,不应用句子大小写。
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\begin{filecontents}{\jobname.bib}
@book{elch,
author = {Anne Elch},
title = {Eine Theorie über Brontosaurusse},
year = {1972},
publisher = {Monthy \& Co.},
location = {London},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{elch}
\printbibliography
\end{document}
但即使在英语文档中,对于外语源的句子大小写也可以“关闭”,因为如果您在字段中指定语言,这对它来说是没有意义的langid
。
\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\begin{filecontents}{\jobname.bib}
@book{elch,
author = {Anne Elch},
title = {Eine Theorie über Brontosaurusse},
year = {1972},
publisher = {Monthy \& Co.},
location = {London},
langid = {ngerman},
}
@book{elk,
author = {Anne Elk},
title = {A Theory on {Brontosauruses}},
year = {1972},
publisher = {Monthy \& Co.},
location = {London},
langid = {british},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{elch,elk}
\printbibliography
\end{document}
如果您确实不想对英文标题使用句子大小写,那么您可以使用 完全禁用它\DeclareFieldFormat{apacase}{#1}
。
\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\DeclareFieldFormat{apacase}{#1}
\begin{filecontents}{\jobname.bib}
@book{elch,
author = {Anne Elch},
title = {Eine Theorie über Brontosaurusse},
year = {1972},
publisher = {Monthy \& Co.},
location = {London},
langid = {ngerman},
}
@book{elk,
author = {Anne Elk},
title = {A Theory on {Brontosauruses}},
year = {1972},
publisher = {Monthy \& Co.},
location = {London},
langid = {british},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{elch,elk}
\printbibliography
\end{document}
所有这些意味着问题的条目应该输入为
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\begin{filecontents}{\jobname.bib}
@incollection{Brosse.1995,
author = {Brösse, Ulrich},
title = {Ökonomisches Verhalten als bester Weg zu einer nachhaltigen Umweltverbesserung},
booktitle = {Ökonomie contra Ökologie?},
year = {1995},
langid = {german},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite{sigfridsson,Brosse.1995}
\printbibliography
\end{document}
(尽管在这种情况下langid = {german},
可以删除,因为主文档语言已经是ngerman
)。
例如,如果你发现自己必须保护Ö
英语标题中以 开头的单词,
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\begin{filecontents}{\jobname.bib}
@book{elk,
author = {Änne Elk},
title = {The {Öresund}},
year = {1972},
publisher = {Monthy \& Co.},
location = {London},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite{sigfridsson,elk}
\printbibliography
\end{document}
如果您使用的是最新的 TeX 安装,并且您的文档采用 UTF-8(自 2018 年 4 月起的 LaTeX 标准编码)编码,则一对括号就足够了,这样您就能使用新的expl3
大小写更改代码。
旧的biblatex
大小写转换代码对于非 ASCII 字符及其保护有一些特殊之处。新expl3
代码更加可预测。
答案过时了
下面显示的一些代码已过时。此处给出的提示对于 的当前版本不再有用biblatex
。答案的这一部分是为了历史意义而保留的,但与新文档无关。
如果您用德语写作 - 或者不太喜欢句子大小写(在英语中,即句子首字母大写,仅此而已) - 您可能希望在\DeclareFieldFormat{apacase}{#1}
序言中“关闭”转换。
如果您只是偶尔使用德语条目,或者更喜欢使用英语句子大小写,那么除了极少数例外,您可以采取保护标题的某些部分不被转换的方法。
对于变音符号和花括号,“越多越好”似乎是游戏的名称。您总共需要三对大括号可以保护单个\"O
或Ö
。但是,最好将整个单词(而不仅仅是第一个字母)括在大括号中,以便 LaTeX 实现正确的字距调整(参见第 181 页)。biblatex
文档),那么两双就够了。
在以下条目中,前两个“Ökologie”将按title
预期呈现,而后两个则不会;该subtitle
字段将被正确呈现。
@book{umlaut,
author = {Ulf Martin Laut},
title = {Alle {{Ökologie}} ist {{\"Okologie}}, aber {Ökologie} ist {\"Okologie} wird nichts},
subtitle = {Einzelne {Buchstaben} sind noch grässlicher: {{{\"O}}}kologie {{{Ö}}}kologie!},
year = {1995}
}
数学家协会
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,sorting=nyt,style=apa]{biblatex}
\DeclareLanguageMapping{ngerman}{ngerman-apa}
\begin{filecontents}{\jobname.bib}
@book{umlaut,
author = {Ulf Martin Laut},
title = {Alle {{Ökologie}} ist {{\"Okologie}}, aber {Ökologie} ist {\"Okologie} wird nichts},
subtitle = {Einzelne {Buchstaben} sind noch grässlicher: {{{\"O}}}kologie {{{Ö}}}kologie!},
year = {1995}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
给出