Quero ter um índice de pessoas mistas e um índice de autores de obras citadas. Autores que aparecemapenasnas citações devem estar em itálico no índice. Outras pessoas (e autores que aparecem também no texto principal) são normais.
\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}
Existem alguns problemas. Primeiro - não consigo colocar o primeiro nome em itálico.
{\itshape\namepartfamily\normalfont}
coloca o sobrenome em itálico, mas {\itshape\namepartgiven\normalfont}
leva a erros. A única maneira de colocar ambos em itálico é
{\itshape\namepartfamily}
{\namepartgiven}
{\normalfont\namepartprefix}
Mas agora o autor que não é apenas citado, mas também indexado manualmente a partir do texto no índice aparece duas vezes (Jordan Peter).
Como posso mesclá-los e colocar o nome e o sobrenome em itálico?
Solução (?):
Finalmente consegui resolver redefinindo \mkbibindexname
o 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 solução funciona (Greenwild Dirk está em itálico porque aparece apenas na citação, Smith Joe não está em itálico porque aparece apenas no texto principal, Jordan Peter não está em itálico porque aparece tanto no texto quanto na citação). Talvez haja alguma solução mais elegante?