Solução (?):

Solução (?):

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}

índice

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

Como posso mesclá-los e colocar o nome e o sobrenome em itálico?

Solução (?):

Finalmente consegui resolver redefinindo \mkbibindexnameo 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:

um bom

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?

informação relacionada