BibLaTeX:按非拉丁字符的字母顺序排序(Ś)

BibLaTeX:按非拉丁字符的字母顺序排序(Ś)

Biblatex 索引对拉丁名称非常有效。但是当作者有外国名字(Łukasiewicz)时,Ł 字母会更改为,\IeC {\L}并且makeindex无法很好地对其进行排序。在波兰语中,它应该放在 L 之后和 M 之前(AĄ...CĆ...EĘ...LŁ...NŃ...OÓ...SŚ...ZŹŻ)。

使用以下方法进行标题索引不存在此问题:

   \DeclareIndexFieldFormat{indextitle}{\index[tit]{#1}}

(据我所知,该问题与有关\protected@edef\newbibmacro*

可能在其他语言中有人会遇到类似的问题,并且知道如何将解决方案放入idx文件中

\indexentry {Łukasiewicz|hyperpage}{123}

以下是源的一个小例子a.tex

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[OT4]{fontenc}
\usepackage{filecontents}
\usepackage[style=authortitle-icomp,indexing=true,,backend=biber]{biblatex}
\DeclareIndexFieldFormat{indextitle}{\index[tit]{#1}}
\bibliography{a}
\usepackage{index}
\newindex{default}{idx}{ind}{Index}
\newindex{tit}{tdx}{tnd}{Titles}
\begin{document}
\begin{filecontents}{\jobname.bib}
@Book{Xauthor,
  author = {Śauthor},
  title = {Śauthor's Book}
}
@Book{Sauthor,
  author = {Sauthor},
  title = {Sauthor's Book}
}
@Book{Tauthor,
  author = {Tauthor},
  title = {Tauthor's Book}
}
\end{filecontents}
\section*{Polish sort order ...SŚT...}
\nocite{*}
\printbibliography
\printindex[default]
\printindex[tit]
\end{document}

和小脚本

export LANG=pl_PL.utf8
latex a
biber a
latex a
makeindex -L a.idx -o a.ind
makeindex -L a.tdx -o a.tnd
latex a
xdvi a.dvi

a.idx我们有问题的:\indexentry {\IeC {\'S}author}{1} 中a.tdx我们有正确的:\indexentry {Śauthor's Book}{1} 因此我们在biber(参考文献)和标题中获得了正确的顺序,但在索引中是错误的(Śauthor 在 Sauthor 之前)。

答案1

使用以下序言来运行你的文档,xelatex而不是latex使用以下序言:

\documentclass{article}
%\usepackage[utf8]{inputenc}
%\usepackage[OT4]{fontenc}
\usepackage{fontspec}
...

xelatex完全支持 utf8。使用xindy代替可能也是个好主意makeindex。您可以尝试:

texindy -L polish a.idx
texindy -L polish a.tdx -o a.tnd

看一下文档xindy,它比makeindex

相关内容