![我们可以有带有外文字母的有序 bibtex/natbib 书目吗?](https://linux22.com/image/433977/%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E6%9C%89%E5%B8%A6%E6%9C%89%E5%A4%96%E6%96%87%E5%AD%97%E6%AF%8D%E7%9A%84%E6%9C%89%E5%BA%8F%20bibtex%2Fnatbib%20%E4%B9%A6%E7%9B%AE%E5%90%97%EF%BC%9F.png)
假设你有一个用 bibtex/natbib 编写的参考书目,其中包含作者姓名,例如也使用斯堪的纳维亚字母,例如艾奎斯特,伊索,厄德高,厄斯特隆德和安德森。
有没有办法让这些词语出现在参考书目中所需的位置?
如果想要编写国际文本,其中参考书目符合字母表或字母表所指定的规则,则此功能可能很有用。
答案1
BibTeX 只能对 ASCII 字符进行排序。这就是为什么非 ASCII 字符通常必须使用 LaTeX 宏进行“转义”的原因之一,如如何在参考书目中书写“ä”及其他变音符号和重音字母?(另一个原因是 BibTeX 无法生成非 ASCII 字符的首字母。)
大多数 BibTeX 会purify$
在使用排序键进行排序之前对其进行样式化。这purify$
会将一些特殊控制序列转换为字母,同时忽略所有其他控制序列,然后删除所有非字母数字字符。
被替换的控制序列如下所示,所有其他序列(如\relax
)均被删除。
控制序列 | 替代品 |
---|---|
\i |
我 |
\j |
杰 |
\oe /\OE |
俄亥俄 |
\ae /\AE |
艾伊 |
\aa |
A |
\o |
o |
\l |
升 |
\ss |
党卫军 |
这意味着{\AE}lk
排序为aelk
,但是{\AA}lk
和{\"A}lk
全部Alk
排序为alk
。
由此产生的排序顺序通常适用于英语出版物,但可能不适用于其他语言。
有这样的项目
- BibTeX8,可以处理 8 位编码(现在 UTF-8 已成为事实上的标准,这可能不是你想要的),以及
- BibTeXu 可以处理 Unicode,但是该项目似乎缺乏文档记录,并且至少我无法让 BibTeXu 按照瑞典语或丹麦语传统进行排序。
如果您想要 Unicode 支持和基于语言环境的排序,目前在 LaTeX 世界中,最好的选择是使用biblatex
Biber。使用biblatex
Biber,您可以在输入中直接使用 Unicode,并且排序遵循 Unicode 规则。
在以下 MWE 中,排序顺序遵循所选文档语言的 Unicode 排序规则。可以使用该选项强制使用与主文档语言不同的特定排序顺序sortlocale
。
\documentclass[swedish]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@book{aalk,
author = {Anne Ålk},
title = {A Theory on Brontosauruses},
year = {1970},
publisher = {Monthy \& Co.},
location = {London},
}
@book{alk,
author = {Anne Alk},
title = {A Theory on Brontosauruses},
year = {1971},
publisher = {Monthy \& Co.},
location = {London},
}
@book{aelk,
author = {Anne Ælk},
title = {A Theory on Brontosauruses},
year = {1972},
publisher = {Monthy \& Co.},
location = {London},
}
@book{aedlk,
author = {Anne Älk},
title = {A Theory on Brontosauruses},
year = {1973},
publisher = {Monthy \& Co.},
location = {London},
}
@book{blk,
author = {Anne Blk},
title = {A Theory on Brontosauruses},
year = {1973},
publisher = {Monthy \& Co.},
location = {London},
}
@book{nlk,
author = {Anne Nlk},
title = {A Theory on Brontosauruses},
year = {1975},
publisher = {Monthy \& Co.},
location = {London},
}
@book{olk,
author = {Anne Olk},
title = {A Theory on Brontosauruses},
year = {1975},
publisher = {Monthy \& Co.},
location = {London},
}
@book{oelk,
author = {Anne Ølk},
title = {A Theory on Brontosauruses},
year = {1975},
publisher = {Monthy \& Co.},
location = {London},
}
@book{oedlk,
author = {Anne Ölk},
title = {A Theory on Brontosauruses},
year = {1975},
publisher = {Monthy \& Co.},
location = {London},
}
@book{plk,
author = {Anne Plk},
title = {A Theory on Brontosauruses},
year = {1975},
publisher = {Monthy \& Co.},
location = {London},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}