2

why command \cite{} using imakeidx with splitindex option and biblatex with indexing=cite option causes

Package imakeidx Warning: Undefined index file `split' on input line 33.

After compiling my source file (split.tex) I somehow have two .idx files: split-persons.idx:

\indexentry{Smith, Joe}{1}
\indexentry{Greenwild, Dirk}{1}
\indexentry{Jordan, Peter}{1}
\indexentry{Jordan, Peter}{1}

and split.idx:

\indexentry[persons]{Smith, Joe}{1}
\indexentry[persons]{Greenwild, Dirk}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[persons]{Jordan, Peter}{1}

MWE:

\documentclass{article}
\usepackage[backend=biber,natbib=true,indexing=cite]{biblatex} %for digital version 
\bibliography{\jobname}
\usepackage[truexindy,splitindex]{imakeidx}
\makeindex[name=persons,program=truexindy,options=-M texindy]
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{book1,
    author  = "Greenwild, Dirk",
    title   = "Yellow pages",
    year    = "1998",
}
@book{book2,
    author    = "Jordan, Peter",
    title     = "Math in the world",
    year      = "1996",
}
\end{filecontents}

\DeclareIndexNameFormat{default}{%
  \usebibmacro{index:name}
    {\index[persons]}
    {\namepartfamily}
    {\namepartgiven}
    {\namepartprefix}
    {\namepartsuffix}}

\begin{document}

Foo\index[persons]{Smith, Joe}.
Foo\cite{book1}. Jordan\index[persons]{Jordan, Peter} foo\cite{book2}.

\printindex[persons]
\end{document}

UPDATE:

If I add fake command \makeindex[] the warning disappears. Now I get also two .idx files after compilation. split-persons.idx is identical like before but split.idx now contains not only person records but also book titles records which goes to main index. That is the problem I think. Content of the split.idx now:

\indexentry[persons]{Smith, Joe}{1}
\indexentry[persons]{Greenwild, Dirk}{1}
\indexentry[split]{Yellow pages@\emph  {Yellow pages}}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[split]{Math in the world@\emph  {Math in the world}}{1}
  • How do you compile your file, i.e. which commands do you run in which order? Can you please remove all auxiliary files and then re-run these steps and describe what you do and what happens. – moewe Aug 2 '18 at 9:45
  • xelatex.exe -shell-escape -synctex=1 -interaction=nonstopmode "split".tex for two times, then biber.exe ""C:\Users\andzejc\Desktop\testsplitindex\split" and two more times xelatex.exe -shell-escape -synctex=1 -interaction=nonstopmode "split".tex. After each command I have Process exited normally – andc Aug 2 '18 at 9:49
  • 1
    Mhhh, I'm no index expert, but I assume that the involved indexing packages somehow assume that there is a generic index (i.e. one that is not called with an optional argument in \index). The MWE only defines a persons index and so the generic index is empty, leading to the warnings. I guess you can ignore these. – moewe Aug 2 '18 at 10:06
  • Yes, if I add to my code the fake command \makeindex[] this warning disappears. BTW there is absolutely no problem when just calling Foo\index[persons]{Smith, Joe}. The problem is only with Foo\cite{book1 and indexing=cite option enabled. – andc Aug 2 '18 at 10:16
2

If I add \makeindex, the generated .idx file is

\indexentry[persons]{Smith, Joe}{1}
\indexentry[persons]{Greenwild, Dirk}{1}
\indexentry[andc]{Yellow pages@\emph  {Yellow pages}}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[andc]{Math in the world@\emph  {Math in the world}}{1}

which means that biblatex adds also index entries for the titles. This is the reason for the warning: without \makeindex, there are tries to write in the default index file which can't succeed, because it is not defined.

Either fix it on the biblatex side or just add \makeindex.

Please, be aware that the preferred declaration for biblatex is

\addbibresource{<filename>.bib}

rather than \bibliography{<filename>} (note that .bib must the added in the preferred declaration style).

| improve this answer | |
  • "Either fix it on the biblatex side or just add \makeindex." The second variant is clear. But how to implement your first suggestion "fix it on the biblatex side"? I think it is somewhat related to this ant this. – andc Aug 2 '18 at 12:52
  • 1
    @andc That warrants a new question, I guess. – egreg Aug 2 '18 at 13:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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