BibTeX 排序的奇怪问题

BibTeX 排序的奇怪问题

我知道在 BibTeX 中必须避免使用变音符,并且我正在使用{\"a},事实上我使用 BibDesk 并且它生成了正确的 LaTeX 代码。排序适用于小字符,但我有一个以 Ö 开头的名字。虽然我使用{{\.I}nci {\"O}zkarag{\"o}z},但该项目排在所有以 O 开头的作者之后。我该怎么办?

除此之外,Ø 应该排在最后,但却排在 O 的中间。

编辑:我想要按德语排序,也就是说,Ö 应该按 Oe 排序,而不是 O。Ø 排序是丹麦语。

答案1

{\"O}当 BibTex 看到类似或的序列时{\O},出于排序目的,这些特殊字符简化为O。因此,任务是诱使 BibTex 认为第一个例子看起来像Oe,而第二个例子应该看起来像ZZZZZO。为此,我们引入了两个宏,\donothing\printsecond

{\donothing{text}}在最终的参考书目中不会显示任何内容,但“文本”将被考虑用于排序,因此{\"O}{\donothing{e}}将打印为“Ö”,并排序为“Oe”。

{\printsecond{foo}{bar}}将打印“bar”,并排序为“foobar”。

例子:

\documentclass{article}

\usepackage{filecontents}

\begin{filecontents}{SM.bib}
  @misc{a, author={{\printsecond{ZZZZZ}{\O}}stersund, A}, title={a}, year=1000}
  @misc{b, author={{\"O\donothing{e}}zkarag{\"o}z, {\.I}nci}, title={b}, year=1001}
  @misc{c, author={Oezl, A}, title={c}, year=1002}
  @misc{d, author={Oezj, A}, title={d}, year=1003}
  @misc{e, author={Ofa, A}, title={e}, year=1004}
  @misc{f, author={Zzz, A}, title={f}, year=1005}
\end{filecontents}


\begin{document}
\nocite{*}

\providecommand*{\donothing}[1]{}
\providecommand*{\printsecond}[2]{#2}


\bibliographystyle{plain} % works
% \bibliographystyle{alpha} % works ...
% \bibliographystyle{apalike} % works
\bibliography{SM}
\end{document}

使用该plain样式,这些条目的排序键为:zzzzzzostersund1000、oezkaragoz1001、oezl1002、oezj1003、ofa1004、zzz1005,这给出了正确的顺序: 引用输出为普通格式

使用该alpha样式,条目按标签排序,标签由作者姓名的三个字母和单个作者参考文献的年份的最后两位数字组成。因此,排序键为:zzzzzost1000、oezk1001、oez1002、oez1003、ofa1004、zzz1005。您可以在此处看到,即使在生成排序键时提取了多个普通字符,BibTeX 也会将特殊字符视为一个字符。因此输出为: 引用带 alpha 的输出

并且确实“Oez03”<“Özk01”,因为 oez1003 < oezk1001,因为 1 < k。如果您希望反过来,则必须将 Özk01 缩短为 Öz01,这可以在数据库中通过将第二个条目更改为来实现

@misc{b, author={{\"O}{\donothing{e}}zkarag{\"o}z, {\.I}nci}, title={b}, year=1001}

(请注意,“不可见的” e 现在是其自身的特殊字符,并且被视为特殊字符,因为它跳出了第一个特殊字符。)

引用带有 alpha 的输出,以及 Ö 的较短标签

相关内容