我正在大量使用这个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}