혼합인원 색인과 인용저자 색인을 갖고 싶습니다. 등장하는 작가오직인용문의 경우 색인에서 이탤릭체로 표시해야 합니다. 다른 사람(및 본문에도 나오는 저자)은 정상입니다.
\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}
그러나 이제는 인용될 뿐만 아니라 색인의 텍스트에서 수동으로 색인을 생성한 저자가 두 번 나타납니다(Jordan Peter).
어떻게 병합하고 이름과 성을 모두 이탤릭체로 만들 수 있나요?
해결책 (?):
마지막으로 명령을 재정의하여 작동하게 했습니다 \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는 텍스트와 인용에 모두 표시되기 때문에 이탤릭체로 표시되지 않습니다). 아마도 좀 더 우아한 해결책이 있을까요?