Quiero tener un índice mixto de personas y un índice de autores de obras citadas. Autores que aparecensoloen las citas deben ir en cursiva en el índice. Otras personas (y autores que aparecen también en el texto principal) son normales.
\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}{%
\nameparts{#1}
\usebibmacro{index:name}
{\index[persons]}
{\itshape\namepartfamily\normalfont}
{\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}
Hay algunos problemas. Primero: no puedo poner el nombre en cursiva.
{\itshape\namepartfamily\normalfont}
pone en cursiva el apellido, pero {\itshape\namepartgiven\normalfont}
genera errores. La única forma de poner ambos en cursiva es
{\itshape\namepartfamily}
{\namepartgiven}
{\normalfont\namepartprefix}
Pero ahora el autor que no sólo es citado sino que también es indexado manualmente a partir del texto del índice aparece dos veces (Jordan Peter).
¿Cómo puedo fusionarlos y poner tanto el nombre como el apellido en cursiva?
Solución (?):
Finalmente lo hago funcionar redefiniendo \mkbibindexname
el comando:
\makeatletter
\renewcommand*{\mkbibindexname}[4]{%
\ifuseprefix
{\ifdefvoid{#3}{}{#3 }%
\@firstofone #1% remove spurious braces
\ifdefvoid{#4}{}{ #4}%
\ifdefvoid{#2}{}{, #2}%
\actualoperator
\ifdefvoid{#3}{}{\MakeCapital{#3} }%
#1%
\ifdefvoid{#4}{}{ #4}%
\ifdefvoid{#2}{}{, #2}}
{\@firstofone \textit{#1}% here added \textit
\ifdefvoid{#4}{}{ #4}%
\ifboolexpe{%
test {\ifdefvoid{#2}}
and
test {\ifdefvoid{#3}}}
{}
{\ }%removes comma between first and last name
\ifdefvoid{#2}{}{ \textit{#2}}% here added \textit
\ifdefvoid{#3}{}{ #3}}}
\makeatother
Resultado:
Esta solución funciona (Greenwild Dirk está en cursiva porque aparece solo en la cita, Smith Joe no está en cursiva porque aparece solo en el texto principal, Jordan Peter no está en cursiva porque aparece tanto en el texto como en la cita). ¿Quizás haya alguna solución más elegante?