每次引用词汇表条目时如何自动添加索引条目?

每次引用词汇表条目时如何自动添加索引条目?

我正在大量使用这个glossaries包,并且我创建了一个我称之为类型的自定义词汇表concepts

我正在尝试想出一个既链接到concepts词汇表又链接到我的索引的命令。我已经看到了一些快速而粗暴的方式来做到这一点\ac(我可以使用相同的方法来实现\gls),但我希望看到一种更强大的方法——一种影响整个\gls命令系列的方法(例如\glspl\Gls等等)。

是否可以在不单独更新每个命令的情况下执行此操作,以避免重复代码,或者这是否是此任务所必需的?

我还希望整个词汇表参考集链接到\name词汇表条目的关键字,以避免词汇表条目冗余。以下内容应链接到相同的词汇表条目 ( star),应全部显示为索引中单个条目的唯一匹配项,但应根据使用的词汇表参考命令显示不同的文本。也就是说,我希望它们属于同一个索引条目,而不是一个名为“star”的索引条目,另一个名为“Stars”,还有一个名为“stellar”的索引条目。(这有意义吗?)

\mygls{star} should look like ``star'' and link to the glossary entry {star} and index entry {Star}. 
\myGls{star} should look like ``Star''. 
\myglspl{star} should look like ``stars''. 
\myGlspl{star} should look like ``Stars''. 
\myglslink{star}{stellar} should look like ``stellar''.

我认识到这个疑问在本质上与其他疑问相似,但也有一些不同之处,这些不同使得我的问题独一无二:

  • 我需要对文档文本中的所有词汇表引用执行此操作 - 而不仅仅是链接到词汇表条目本身的单个索引条目。(比较这个问题
  • 我想要的不仅仅是\gls重载:它还应该重载其他词汇表参考命令。(与以下解决方案相比这个问题
  • 我想对特定词汇表的词汇表条目执行此操作 - 而不仅仅是默认的首字母缩略词词汇表。(比较这个问题

提前致谢!

答案1

鉴于这个问题已经开放了几个月,也许你已经解决了你的问题,但我已经编写了一些宏来解决几乎相同的问题,所以我想分享它们。

此类问题的其他解决方案是使用label(或,如您所要求的)name键来创建索引。但是,有时您几乎肯定会希望索引条目与文本形式不同,例如,如果您希望子项类似于\index{category!subcategory}

但是,我们可以利用词汇表条目提供的额外键,并将我们想要索引的表单存储在那里。首先,我为新键定义一个命令。这只是为了方便。它映射到预定义的键上user1

\newcommand*{\indexkey}{user1}

然后我创建一个扩展词汇表条目命令。它的行为几乎完全一样,\newglossaryentry只是你可以省略name键(在这种情况下它将默认为)label。默认情况下,它还将定义\indexkey字段为label。如果我们想让它成为其他任何东西,我们只需在定义中包含索引文本:

\newcommand{\xglossaryentry}[2]{%
  \newglossaryentry{#1}{%
  name={#1},%
  \indexkey={#1},#2}%
}

然后我们创建命令来同时创建注释和索引条目。我知道您问过有关更新gls-series 命令的问题,但我认为这不是最好的方法。我发现我偶尔需要未索引的词汇表引用,所以我只是定义了新命令。要替换基本命令\gls,我们得到以下内容:

\newcommand{\xgls}[2][]{\index{\glsentryuseri{#2}}\gls[#1]{#2}}

当您需要索引词汇表参考时,请调用此版本。它将适当扩展 \indexkey 字符串,以便makeidx正确处理它。否则,只需使用普通的\gls

所有其他命令的定义都类似。(请参阅下面的 MWE。)

以下是创建新首字母缩略词条目的等效定义。在这里,如果您想自定义索引,则需要将其作为选项传递:

\newcommand{\xacronymentry}[4][]{%
  \newacronym[\indexkey={#2},#1]{#2}{#3}{#4}%
}

要获取自定义词汇表中的词汇表条目,您无需做太多其他事情。只需在调用之前定义词汇表,然后为相关词汇表条目\makeglossaries添加一个键即可。type

最后,您的示例列表包含一个派生相关形式(形容词 stellar)。如果您有最新版本的glossaries,则可以使用\glsaddkey定义自定义形式(及其相关的大写变体),以便词汇表可以显示名词,并且您可以根据需要在文本中生成形容词。

下面是一个 MWE 来说明一切(经过编辑以纳入 Nicola 的建议):

\documentclass{article}
\usepackage{makeidx}
\usepackage{glossaries}

\makeindex

\newglossary{concept}{cps}{cpo}{Concepts}

\makeglossaries

\newcommand*{\indexkey}{user1}

\newcommand{\xglossaryentry}[2]{%
  \newglossaryentry{#1}{%
  name={#1},%
  \indexkey={#1},#2}%
}
\newcommand{\xacronymentry}[4][]{%
  \newacronym[\indexkey={#2},#1]{#2}{#3}{#4}%
}

\newcommand{\xgls}[2][]{\index{\glsentryuseri{#2}}\gls[#1]{#2}}
\newcommand{\xglspl}[2][]{\index{\glsentryuseri{#2}}\glspl[#1]{#2}}
\newcommand{\xGls}[2][]{\index{\glsentryuseri{#2}}\Gls[#1]{#2}}
\newcommand{\xGLS}[2][]{\index{\glsentryuseri{#2}}\GLS[#1]{#2}}
\newcommand{\xGlspl}[2][]{\index{\glsentryuseri{#2}}\Glspl[#1]{#2}}
\newcommand{\xGLSpl}[2][]{\index{\glsentryuseri{#2}}\GLSpl[#1]{#2}}

\glsaddkey*
 {adjform}
 {\glsentrytext{\glslabel}}% default value
 {\glsentryadj}% command analogous to \glsentrytext
 {\Glsentryadj}% command analogous to \Glsentrytext
 {\glsadj}% command analogous to \glstext
 {\Glsadj}% command analogous to \Glstext
 {\GLSadj}% command analogous to \GLStext

\newcommand{\xglsadj}[2][]{\index{\glsentryuseri{#2}}\glsadj[#1]{#2}}

\xglossaryentry{basic}
{
  name={basic entry},
  plural={basic entries},
  description={Here is a sample glossary entry},
  \indexkey={entry!\emph{basic}|textbf}
}

\xglossaryentry{star}
{
  type={concept},
  description={A bit, hot, glowing thingy},
  \indexkey={Star},
  adjform={stellar}
}

\xacronymentry{IBU}{IBU}{International Bitterness Units}
\xacronymentry[\indexkey={standard reference method}]{SRM}{SRM}{Standard Reference Mehtod}

\begin{document}

Ordinary form: \xgls{basic}.
Plural form: \xglspl{basic}.
Initial capital: \xGls{basic}.
Initial capital plural: \xGlspl{basic}.
All caps: \xGLS{basic}.
All caps plural: \xGLSpl{basic}

Illustrating your \emph{\xgls{star}} examples.

Twinkle, twinkle, little \xgls{star}.
Plural: \xglspl{star}.
Initial capital: \xGls{star}.
Initial capital plural: \xGlspl{star}.
All caps: \xGLS{star}
All caps plural: \xGLS{star}

Now for the adjective forms: \glsadj{star}, \Glsadj{star}, \GLSadj{star}.

The \xgls{SRM} measures the color of beer.

Flying Monkeys Alpha Fornication has an insanely high \xgls{IBU}.

\clearpage

Another reference to \xgls{basic}.

Imperial stouts have \xglspl{SRM} over 40.

Second reference to \xgls{IBU}.

\printglossaries

\printindex

\end{document}

相关内容