使用变音符号对字符进行排序

使用变音符号对字符进行排序

有没有一种简单的方法可以让 BibLaTeX 将“ä”排序为“ae”,将“ö”排序为“oe”,将“ü”排序为“ue”?

以下是一个例子:

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
  @article{sturm, author = {Sturm}}
  @article{stutzel, author = {Stützel}}
\end{filecontents}

\usepackage{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

Sturm 出现在 Stützel 之前,而我想要的是相反的情况。我知道我可以使用类似 的字段来处理这个问题sortkey,但我希望有一个更自动化的解决方案,可以添加到我自己的自定义样式中。

此外,如果可以根据字段有条件地完成此操作,那就太好了langid(我认为这应该是德语的默认行为),但这可能太过雄心勃勃,无论条目的语言如何,我都对这种方法感到满意。

答案1

biblatex您可以通过以下选项加载来指定这种排序样式sortlocale=de_DE_phonebook

\usepackage[sortlocale=de_DE_phonebook]{biblatex}

不过,我不确定是否可以使用语言环境针对每个条目执行此操作。您可以使用源映射来执行此操作,但这似乎是个坏主意。

答案2

最好使用与 David 的回答中相同的全局方案对所有条目进行排序。使用不同的排序规则可能会让读者感到非常困惑(您不应该指望他们知道所有被引作者母语的排序怪癖),这在简短列表中可能不会很明显,因为不同的排序规则只会影响非单词首字母,但如果两个“Ü”在参考书目中被排序在不同的末尾,因为一个是德语,一个是爱沙尼亚语,那么这可能会非常令人困惑。

但理论上,您可以限制变音符号转换为德语条目(如字段中标记的那样langid)。对于这些条目,我们自己进行“ä”->“ae”等转换,并将结果存储在字段中sortname

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{sturm, author = {Sturm}}
@book{stutzel, author = {Stützel}, langid={ngerman}}
@book{basel, author = {Basel}}
@book{bassel, author = {Baßer}, langid={ngerman}}
@book{basta, author = {Basta}}
@book{oesel, author = {Ösel}, langid={ngerman}}
@book{pinguino, author = {Pingüino}}
@book{pingufin, author = {Pingufin}}
@book{pinguzzo, author = {Pinguzzo}}
\end{filecontents}

\usepackage{biblatex}
\addbibresource{\jobname.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[foreach={author,editor,translator}]{
      \step[fieldsource=langid, match=\regexp{\A(n)?((swiss)?german|austrian)\Z}, final]
      \step[fieldsource=\regexp{$MAPLOOP}, 
            match=\regexp{(([aouAOU]\x{0308})|\x{00df})},
            final]
      \step[fieldset=sortname, origfieldval, final]
      \step[fieldsource=sortname, match=\regexp{(a|o|u|A|O|U)\x{0308}}, replace={$1e}]
      \step[fieldsource=sortname, match=\regexp{\x{00df}}, replace={ss}]
    }
  }
}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

在此处输入图片描述

注意巴塞尔的“ß”被排序为“ss”,因此它最终排在巴斯塔施图策尔的“ü”被排序为“ue”,因此它排在前面斯特姆企鹅是西班牙语,没有被触及,因此它排在企鹅人(而不是之前,好像它被转换成平格诺)。

相关内容