biblatex:在作者和标题下索引作品标题

biblatex:在作者和标题下索引作品标题

我尝试使用索引选项来实现一些稍微复杂的事情biblatex's。考虑以下 MWE:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
\usepackage[style=authoryear,indexing=cite]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{bib.bib}
@book{morus,
Address = {Louvain},
Author = {Morus, Thomas},
Publisher = {Nomos},
Title = {Utopia},
Year = {2014}}
}
\end{filecontents*}
\DeclareIndexNameFormat{name:title}{%
     \iffieldundef{title}
       {\usebibmacro{index:name}{\index}    
          {\namepartfamily}
          {\namepartgiven}
          {\namepartprefix}
          {\namepartsuffix}}
       {\usebibmacro{index:name:title}{\index}
          {\namepartfamily}
          {\namepartgiven}
          {\namepartprefix}
          {\namepartsuffix}}}

\newbibmacro*{cbx:index-name-title}{%
  \ifciteindex
    {\indexnames[name:title]{labelname}}
    {}}

\DeclareCiteCommand{\citetitle}
  {\usebibmacro{prenote}}
  {\usebibmacro{cbx:index-name-title}
   \printtext[bibhyperref]{\printfield[citetitle]{labeltitle}}}
  {\usebibmacro{cite:postnote}}

\usepackage[]{imakeidx}
\def\xindyopt{-C utf8 -M texindy}
\makeindex[program=truexindy,columns=1,options=\xindyopt]

\addbibresource{bib.bib}
\begin{document}
\citetitle{morus}
\printbibliography
\printindex
\end{document}

我首先定义一个\citetitle命令,将书名放入索引中。然后我利用{index:name:title}已在中定义的宏biblatex.def。这不仅仅是将书名放入索引中,而是将其作为作者名下的子项进行排序。像这样:

在此处输入图片描述

这很好,但我想要更多:我还想要书名下的索引项,然后引用其作者。因此在这种情况下,我还想要以下条目:

乌托邦,看看托马斯·莫鲁斯

我尝试通过\index{\thefield{title}|see{\printnames{author}}}\citetitle命令中插入类似的内容来做到这一点,但这不起作用,因为作者姓名在需要的时候没有得到解析。

编辑:当前的解决方案是使用以下两种构造中的任一种:

\index{\citetitle{\thefield{entrykey}}%
    |see{\citename{\thefield{entrykey}}[]{author}}}

\index{\emph{\thefield{indextitle}}%
        |see{\citename{\thefield{entrykey}}[]{author}}}

它们都还不是完美的。citetitle使用正确的格式,但没有考虑indextitle到。\thefield{indextitle}使用正确的字段,但在这里我必须对格式进行硬编码。

相关内容