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