手动添加附加数据的索引

手动添加附加数据的索引

我正在尝试在论文末尾制作一个索引,其中不仅包含提到特定术语的页码,还包括我想要手动提供的与该术语相关的另外两条信息。为了清晰起见,我可能想把所有这些都放在一个表格中,但我怀疑它不会放在一页纸上,所以我可以改为以列表形式进行。

我设想的表格如下:

语言 与论证相关的形态? 小句级形态? 页码
科普特语 不? 焦点一致 2-4, 7, 19, 31
豪萨语 是的 萃取形态 3-4, 7, 17, 22

等等。第一列是我想要基于其建立索引的键,中间两列是我需要为每个键手动提供的信息,最后一列是找到该键的页码。同样,我也可以将其作为列表来执行;也许是这样的:

  • 科普特语(2-4、7、19、31):无与参数相关的形态;焦点一致
  • 豪萨语(3-4, 7, 17, 22):论元相关形态学;提取形态学

cleveref我可以使用和手动构建这样的表格或列表\cpageref,但我必须为每种语言名称的每个实例设置一个新标签,而且我不确定它是否能正确连接页码或删除重复的页码。除此之外,我不知道如何做到这一点。

作为奖励,如果能够将某些键组合在一起就好了(例如,科普特语和豪萨语都放在一行下,第一列写有“Afroasiatic”,其他三列留空,并附加其他几个标题),但如果能省去我手动构建表格的麻烦,按字母顺序排列也是可以的。

是否有任何方便的方法可以做到这一点,或者我是否试图做一些 LaTeX 的索引机制没有设置的事情?

答案1

假设您想用这种方法代替常规索引,那么解决方案就是巧妙地处理其中的theindex\item命令的定义方式。不幸的是,默认定义并不容易解析参数\item。我正在考虑类似

{\catcode`\^^M=\active
\gdef\@idxitem#1,#2^^M{%
  ... stuff goes here careful about newlines!
}%
}

这会将索引条目#1和页码放入#2

您将希望能够在表中定义额外信息。您可以创建如下命令:

\newcommand{\languageinfo}[3]{%
   \@namedef{#1@argument}{#2}
   \@namedef{#1@clause}{#3}
}

可以这样使用:

\languageinfo{Hausa}{yes}{extraction morphology}

那么上面的定义\@idxitem可能是这样的

#1&\@nameuse{#1@argument}&\@nameuse{#1@clause}&#2\\

现在我们只需要重新定义theindex环境:

{\catcode`\^^M=\active
 \gdef\theindex{%
    \let^^M\relax % don't let bare newlines do anything
    \let\item\@idxitem
    \let\indexspace\relax
    \let\par\relax
    \chapter*{\indexname}
    \@mkboth{\MakeUppercase\indexname}%
                    {\MakeUppercase\indexname}%
    \centering
    \begin{tabular}{llll}% assuming that it fits on one line
    \textbf{language}&\textbf{argument-associated morphology?}&\textbf{clause-level morphology?}&\textbf{page numbers}\\
}}
\def\endtheindex{\end{tabular}}

如果您的索引超过一页,您可能想做一些不同的事情。

如果你想对语言进行分组,你可以利用LaTeX 索引中的\subitem和命令,例如,\subsubitem\index{Afroasiatic languages!Hausa} 您将失去易于解析的参数,\item并且宏会变得更加复杂。(实际上,您将定义\@idxitem#1^^M,然后必须解析出 中是否有逗号#1。)

以上所有用法都@用于宏名,因此命令/环境的定义应该用\makeatletter...括起来\makeatother,或者(更好)放入包中,比如说,thesisindex.sty用 加载\usepackage{thesisindex}

相关内容