9

Biblatex indexing works very well with latin names. But when an author has foreign name (Łukasiewicz) the Ł letter is changed to \IeC {\L} and makeindex is not able to sort it well. In Polish it should be placed after L and before M (AĄ...CĆ...EĘ...LŁ...NŃ...OÓ...SŚ...ZŹŻ).

The problem does not exist with titles indexing using:

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

(As far as I understand the problem is related with \protected@edef in \newbibmacro*).

Probably in other languages someone can have similar problem and knows the solution how to put in the idx file

\indexentry {Łukasiewicz|hyperpage}{123}

Here is a small example of a.tex source:

\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}

and the small script

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

In the a.idx we have problematic: \indexentry {\IeC {\'S}author}{1} in a.tdx we have correct: \indexentry {Śauthor's Book}{1} so we get correct order in biber (References) and Titles but wrong in Index (Śauthor is before Sauthor).

4
  • Please provide a minimal example. Jul 9, 2011 at 10:30
  • Please consider changing your question title to something more specific like "BibLaTeX: sorting alphabetically with non-latin characters (Ł)". Here's some information on minimal working examples (MWE). And sorry we're all just discussing your question on a meta level, I personally don't use BibLaTeX, so I can't help you out, but I'm sure somebody will take on this question soon.
    – doncherry
    Jul 9, 2011 at 13:19
  • 2
    The title refers to biblatex, while the problem seems to be with the index. Makeindex is not able to work with extended character sets; you should consider xindy, for that purpose.
    – egreg
    Jul 9, 2011 at 22:29
  • In this example we can see that makeindex is working well with utf8 and locales. The problem is that biblatex is generating two types of \indexentry: one correct for titles (utf8) and the second using IeC {...} for names which creates problems. Because the general utf8 biber and makeindex behavior is correct, the problem is rather with biblatex which is inconsistent in this subject (generates two types of \indexentry).
    – zeta0
    Jul 10, 2011 at 9:47

1 Answer 1

5

run your document with xelatex instead of latex with the following preamble:

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

xelatex has full utf8 support. It may also be a good idea to use xindy instead of makeindex. You can try:

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

have a look into the dpocumentation of xindy, it has a better language support than makeindex

2
  • Thank you. xelatex works well with makeindex (strange - texindy does not sort well with these commands; it loads latin2 module). Other problem with xelatex is that now I get ** WARNING ** Failed to convert input string to UTF16... for \foreignlanguage{greek}{\textgreek{#1}} classical greek; but on the pdf everything is OK.
    – zeta0
    Jul 11, 2011 at 7:06
  • @zeta0 You can try this approach: tex.stackexchange.com/a/406943/113926 Dec 20, 2017 at 1:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .