创建带有参考资料的人员索引

创建带有参考资料的人员索引

我想创建一个人员索引。我使用了 nameauth 包,并且正在研究回忆录类。我没有完全获得我想要的结果。我也尝试过摆弄词汇表和 imakeidx,但说实话,我不太擅长定制。

我正在尝试做的事情:

  • 正向引用索引中的名称,最好使用像我的 MWE 中那样的简单命令。nameauth 包缺少正向引用,但它确实可以进行正确的反向引用。
  • 仅用于索引的描述字段。最好是生命日期包括在名称的第一次出现中,但不在其余描述中。在我的 MWE 中,我试图通过将其放在“词缀”部分来规避该问题,但这当然不能令人满意。
  • 在我的 MWE 中,使用名称命令后存在空格问题。我该如何解决这个问题?
  • 最后,我希望在索引的描述中包含超链接,即

我现在拥有的 MWE:

    \documentclass[a4paper,oneside]{memoir}
    \usepackage{geometry}

    \usepackage{nameauth}
    \usepackage[hidelinks]{hyperref} % For hyperlinks in the PDF

    \makeindex
    \begin{document}
    \pagestyle{plain}

    \begin{nameauth}
    \< Bosscha     & Johannes  & Bosscha, Jr. (1831-1911)  & >
    \< BosschaSr   & Johannes  & Bosscha, Sr. (1784-1874)  & >
    \< Someone     & Mister    & Someone, (1812-1911) & >
    \end{nameauth}

    \chapter{test}
    And I want to test \Bosscha, or either is it \BosschaSr. So the second 
    time it is called we get: \Bosscha and \BosschaSr. Another test is
    \Someone and \Name[Mister]{Someone2}{ (1812-1911), and some text}.
    Lastly, I could try a manual \href{www.google.nl}{\Bosscha (1831-1911)},
    although I'm not sure this is a solution to my problem.

    \printindex
    \end{document}

我想要实现的目标:

文中第一次出现 [小型大写]:

Johannes van Bosscha Jr. (1831-1911) 出生于等。

这是正确的。我想将后面出现的改为小写:

小范博查在晚年做了这样那样的事情。

在索引中:

Bosscha,Johannes van,Jr.(1831-1911),人物描述,第 1、3、5 页。

在哪里某处我里面有一个超链接。

nameauth 部分已经具备了我需要的有关排序和反向引用的功能,但我缺乏编辑索引中描述和超引用部分的自由,并且没有前向引用。我该如何解决这个问题?

答案1

acro下面是使用和(为了方便)包的示例imakeidxacro需要为每个包设置一个非常详细的首字母缩写词,因为您需要所有的花哨功能,但该包提供了许多可定制的功能。

\documentclass{memoir}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex
\usepackage{acro}
\acsetup{
  first-style=long, page-style=plain, index,
  activate-trailing-tokens = {dot}
}
\usepackage{hyperref}

\DeclareAcronym{bosscha}{
  % Appearance in text
  short =     {Van Bosscha Jr\acdot},
  long =      {Johannes van Bosscha Jr\acdot},
  long-post = {\space (1831--1911)},
  first-long-format = {\scshape},
  short-plural = , long-plural = ,
  % Appearance in \printacronyms
  extra =     {(1831--1911)},
  sort =      {Van Bosscha, Johannes, Jr.},
  list =      {\href{www.google.com}{Van Bosscha, Johannes, Jr}},
  % Appearance in index
  index =     {\href{www.google.com}{Van Bosscha, Johannes, Jr.} (1831--1911)},
}

\DeclareAcronym{bosschasr}{
  short =     {Van Bosscha Sr\acdot},
  long =      {Maior van Bosscha Sr\acdot},
  long-post = {\space (1700--1831)},
  first-long-format = {\scshape},
  extra =     {(1700--1831)},
  sort =      {Van Bosscha, Maior, Sr},
  list =      {\href{www.yahoo.com}{Van Bosscha, Johannes, Sr}},
  index =     {\href{www.yahoo.com}{Van Bosscha, Johannes, Sr.} (1700--1831)},
}

\begin{document}

\chapter{Test}
And I want to test \ac{bosscha}, or either is it \ac{bosschasr}. So
the second time it is called we get: \ac{bosscha} and \ac{bosschasr}.
% Another test is \Someone and \Name[Mister]{Someone2}{ (1812-1911),
% and some text}.  Lastly, I could try a manual
% \href{www.google.nl}{\Bosscha (1831-1911)}, although I'm not sure
% this is a solution to my problem.

\clearpage

And I want to test \ac{bosscha}, or either is it \ac{bosschasr}. So
the second time it is called we get: \ac{bosscha} and \ac{bosschasr}.

\printacronyms[name=Persons of Interest]

\printindex

\end{document}

这里我包含了\printacronyms命令,以便您可以将其与索引输出进行比较。(请注意,作者acro并不认为索引是一个有用的功能,如果您喜欢此选项并注意到任何问题,请发送电子邮件。)

答案2

截至 2017 年 4 月,nameauth 包将满足您要求的大部分功能,超链接除外。恐怕此功能要等到未来了。

为了简单起见,我没有像后续材料所建议的那样将名称设置为“Van Bosscha”。有几种不同的方法可以做到这一点,具体取决于语言需求,正如软件包文档所建议的那样。美国英语将助词放在姓氏中,例如\noexpand\textSC{\noexpand\AltCaps{v}an Bosscha}。其他上下文将助词分开,要么放在 FNN 字段中,要么放在备用名称字段中,具体取决于索引中想要的内容。我坚持使用下面 MWE 的修改版本,它大致显示了目前可以从 nameauth 3.2 中期待的内容:

\documentclass[a4paper,oneside]{memoir}
\usepackage{geometry}

\usepackage[altformat]{nameauth}

\PretagName[Johannes]{\noexpand\textSC{Bosscha},\noexpand\textSC{Jr.}}
  {Bosscha, Johannes, Jr.}
\PretagName[Johannes]{\noexpand\textSC{Bosscha},\noexpand\textSC{Sr.}}
  {Bosscha, Johannes, Sr.}

\NameAddInfo[Johannes]{\noexpand\textSC{Bosscha},\noexpand\textSC{Jr.}}
  {(1831--1911)}
\NameAddInfo[Johannes]{\noexpand\textSC{Bosscha},\noexpand\textSC{Sr.}}
  {(1784--1874)}

\TagName[Johannes]{\noexpand\textSC{Bosscha},\noexpand\textSC{Jr.}}
  { (1831--1911)}
\TagName[Johannes]{\noexpand\textSC{Bosscha},\noexpand\textSC{Sr.}}
  { (1784--1874)}

\makeatletter % I should put the nonbreaking space below in the pkg docs
\renewcommand*\NamesFormat[1]{\begingroup%
\protected@edef\temp{\endgroup{#1~%
\noexpand\NameQueryInfo[\unexpanded\expandafter{\the\@nameauth@toksa}]
{\unexpanded\expandafter{\the\@nameauth@toksb}}
[\unexpanded\expandafter{\the\@nameauth@toksc}]}}\temp}
\makeatother

\renewcommand*\MainNameHook{\AltOn}

\begin{nameauth}
\< Bosscha   & Johannes & \noexpand\textSC{Bosscha},\noexpand\textSC{Jr.} & >
\< BosschaSr & Johannes & \noexpand\textSC{Bosscha},\noexpand\textSC{Sr.} & >
\end{nameauth}

\makeindex
\begin{document}
\AltFormatActive*
\pagestyle{plain}

\chapter{test}

I want to test \Bosscha, or either is it \BosschaSr{}.

We actually have to frustrate the punctuation detection
when adding a text tag here. I will explain this in the
docs for the next version.

The second time it is called we get: \Bosscha\ and \BosschaSr.
Again \KeepAffix\LBosscha\ and \LBosschaSr.
We can force the formatting via \ForceName\Bosscha\ and
\ForceName\BosschaSr, which is not the same as
\ForgetThis\Bosscha\ and \ForgetThis\BosschaSr{}.

\printindex
\end{document}

相关内容