biblatex apa 样式和大写变音符号的问题

biblatex apa 样式和大写变音符号的问题

当使用 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}

Elch,A.(1972 年)。关于雷龙的一种理论。蒙西公司

但即使在英语文档中,对于外语源的句子大小写也可以“关闭”,因为如果您在字段中指定语言,这对它来说是没有意义的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}

Elch,A.(1972 年)。关于雷龙的一种理论。 Monthy & Co.Elk, A.(1972 年)。关于雷龙的理论。蒙西公司

如果您确实不想对英文标题使用句子大小写,那么您可以使用 完全禁用它\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}

Elch,A.(1972 年)。关于雷龙的一种理论。 Monthy & Co.Elk, A.(1972 年)。关于雷龙的理论。蒙西公司

所有这些意味着问题的条目应该输入为

\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}

Brösse,U.(1995 年)。经济学行为作为获得持续环境效益的最佳途径。生态经济学与生态学?

(尽管在这种情况下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}

埃尔克,Ä。 (1972年)。厄勒海峡。蒙西公司

如果您使用的是最新的 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}

给出 在此处输入图片描述

相关内容