Решение (?):

Решение (?):

Я хочу иметь смешанный индекс лиц и индекс авторов цитируемых работ. Авторы, которые появляютсятольков цитатах должны быть выделены курсивом в индексе. Другие лица (и авторы, которые также появляются в основном тексте) являются обычными.

\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}

индекс

Есть некоторые проблемы. Во-первых, я не могу выделить курсивом имя. {\itshape\namepartfamily\normalfont}выделяет курсивом фамилию, но {\itshape\namepartgiven\normalfont}приводит к ошибкам. Единственный способ выделить курсивом оба слова —

{\itshape\namepartfamily} 
{\namepartgiven}
{\normalfont\namepartprefix} 

Но теперь автор, который не только цитируется, но и индексируется вручную из текста в индексе, появляется дважды (Джордан Питер). индекс2

Как мне объединить их и сделать имя и фамилию курсивом?

Решение (?):

Наконец, мне удалось это сделать, переопределив \mkbibindexnameкоманду:

\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

Результат:

Неплохо

Это решение работает (Greenwild Dirk выделен курсивом, потому что он появляется только в цитате, Smith Joe не выделен курсивом, потому что он появляется только в основном тексте, Jordan Peter не выделен курсивом, потому что он появляется и в тексте, и в цитате). Возможно, есть более элегантное решение?

Связанный контент