Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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).

share|improve this question
    
Please provide a minimal example. –  Marco Daniel Jul 9 '11 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 '11 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 '11 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). –  eipi10 Jul 10 '11 at 9:47
add comment

1 Answer

up vote 5 down vote accepted

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

share|improve this answer
    
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. –  eipi10 Jul 11 '11 at 7:06
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.