符号作为词汇表条目指示符?

符号作为词汇表条目指示符?

关于我即将写的书,我正在思考另一个主题,我认为这个主题值得单独写一个主题。

由于本书将是一本传统的纸质书,而不是电子书,因此我希望标记文中任何在词汇表中解释的技术术语,以便读者知道书末有进一步解释。当然,标记应以不显眼的方式进行,以免破坏得体的文本布局。

使用不同的文本样式(如斜体、粗体、不同字体等)不是一种选择,因为它们已经用于其他突出显示目的。因此,我想到了一些要标记的技术术语旁边的符号,例如\leftpointright术语后面的 或上标的\diamond

我如何通过该包具体实现这一点glossaries

答案1

我认为\defglsentryfmt有一种方法来定义prefixgls 条目,如文中所示。

由于正在设计一本“经典”的纸质书,hyperref因此不需要,并且不会出现难看的分离链接。

\documentclass{article}

\usepackage{blindtext}
\usepackage{glossaries}

\makeglossaries
\newglossaryentry{foo}{%
  name={Foo},
  description={Foo is the Foo, nothing more}
}

\defglsentryfmt{$\rightarrow$\glsname{\glslabel}}

\begin{document}
\blindtext

\gls{foo}

\blindtext

\printglossaries

\end{document}

答案2

有多种不同的方法可以更改用于显示glossaries包定义的术语的格式。这取决于您想要影响哪些命令。

让我们从具有三种词汇表类型的 MWE 开始:main(默认)acronymssymbols

\documentclass{article}

\usepackage[symbols,acronyms]{glossaries}

\makeglossaries

\newglossaryentry{matrix}{name={matrix},plural={matrices},
 description={rectangular array of quantities}}

\newglossaryentry{M}{type=symbols,name={\ensuremath{\boldsymbol{M}}},sort=M,
 description={a \gls{matrix}}}

\newacronym{filo}{FILO}{first in last out}

\begin{document}
A \gls{matrix}, denoted \gls{M}. Lots of \glspl{matrix}.
\Glspl{matrix} are a rectangular array of quantities.
No indexing, linking, formatting: \glsentrytext{matrix}.
The identity \gls{matrix}['s] diagonal consists of ones.

First use: \gls{filo}. Next use: \gls{filo}.
Full form: \acrfull{filo}.

\printglossaries
\end{document}

得出的结果为:

文件图像

形式中的命令\glsentry...(例如\glsentrytext)只是扩展为相应键的值,没有任何格式化或索引等。

\gls类似命令 \gls、、、、、和\Gls的默认格式均由 控制,但可以使用 覆盖特定词汇表的格式,但对此格式的任何更改都必须应用各种测试来\GLS确定调用命令以及这是否是第一次使用该条目。(请参阅第\glspl\Glspl\GLSpl\glsdisp\glsentryfmt\defglsentryfmt6.3 更改链接文本的格式用户手册。)\glsgenentryfmt如果只需要进行少量修改,可以使用一个方便的命令来处理通用术语。如果您想更改缩写的格式,有多种不同的方法。

\glstext类似命令例如\glstext\glsname不使用这种特殊的显示格式,因为要显示的文本是定义条目时相应键提供的文本(可能包含通过最后一个可选参数插入的任何文本,如\glstext{matrix}['s])。因此,对的任何更改\glsentryfmt或使用\defglsentryfmt都不会对这些命令的显示方式产生任何影响。

\gls-like 和\glstext-like 命令都会\glstextformat用其参数换行。显示此命令中的更改如何修改文档的最简单方法是添加一些颜色:

\documentclass{article}

\usepackage{color}
\usepackage[symbols,acronyms]{glossaries}

\renewcommand{\glstextformat}[1]{\textcolor{blue}{#1}}

\makeglossaries

\newglossaryentry{matrix}{name={matrix},plural={matrices},
 description={rectangular array of quantities}}

\newglossaryentry{M}{type=symbols,name={\ensuremath{\boldsymbol{M}}},sort=M,
 description={a \gls{matrix}}}

\newacronym{filo}{FILO}{first in last out}

\begin{document}
A \gls{matrix}, denoted \gls{M}. Lots of \glspl{matrix}.
\Glspl{matrix} are a rectangular array of quantities.
No indexing, linking, formatting: \glsentrytext{matrix}.
The identity \gls{matrix}['s] diagonal consists of ones.

First use: \gls{filo}. Next use: \gls{filo}.
Full form: \acrfull{filo}.

\printglossaries
\end{document}

得出的结果为:

文件图像

请注意,并\glsentrytext{matrix}没有改变,词汇表中的名称也没有改变(除了\gls{matrix}在条目描述中出现的实例M)。

因此,如果您希望每次使用\gls-like 或-like 命令时都有一个指示器,您只需根据\glstext需要重新定义即可。\glstextformat

如果您只想更改某些类型的条目或某些类型的命令的格式,这会变得稍微复杂一些。如果您只想更改类似命令的格式\gls,您可以重新定义\glsentryfmt或使用\defglsentryfmt特定的词汇表。

让我们首先尝试重新定义\glsentryfmt以插入前缀符号:

\documentclass{article}

\usepackage{color}
\usepackage[symbols,acronyms]{glossaries}

\renewcommand{\glstextformat}[1]{\textcolor{blue}{#1}}
\renewcommand{\glsentryfmt}{$\rightarrow$\glsgenentryfmt}

\makeglossaries

\newglossaryentry{matrix}{name={matrix},plural={matrices},
 description={rectangular array of quantities}}

\newglossaryentry{M}{type=symbols,name={\ensuremath{\boldsymbol{M}}},sort=M,
 description={a \gls{matrix}}}

\newacronym{filo}{FILO}{first in last out}

\begin{document}
A \gls{matrix}, denoted \gls{M}. Lots of \glspl{matrix}.
\Glspl{matrix} are a rectangular array of quantities.
No indexing, linking, formatting: \glsentrytext{matrix}.
The identity \gls{matrix}['s] diagonal consists of ones.

First use: \gls{filo}. Next use: \gls{filo}.
Full form: \acrfull{filo}.

\printglossaries
\end{document}

得出的结果为:

文件图像

请注意,前缀不会出现在首字母缩略词中,因为缩写机制已acronym使用 覆盖了词汇表的格式\defglsentryfmt,因此\glsentryfmt不用于该词汇表中的条目。

现在假设我删除了acronym包选项,以便使用定义的条目\newacronym放在main词汇表中,而不是有单独的列表:

\documentclass{article}

\usepackage{color}
\usepackage[symbols]{glossaries}

\renewcommand{\glstextformat}[1]{\textcolor{blue}{#1}}
\renewcommand{\glsentryfmt}{$\rightarrow$\glsgenentryfmt}

\makeglossaries

\newglossaryentry{matrix}{name={matrix},plural={matrices},
 description={rectangular array of quantities}}

\newglossaryentry{M}{type=symbols,name={\ensuremath{\boldsymbol{M}}},sort=M,
 description={a \gls{matrix}}}

\newacronym{filo}{FILO}{first in last out}

\begin{document}
A \gls{matrix}, denoted \gls{M}. Lots of \glspl{matrix}.
\Glspl{matrix} are a rectangular array of quantities.
No indexing, linking, formatting: \glsentrytext{matrix}.
The identity \gls{matrix}['s] diagonal consists of ones.

First use: \gls{filo}. Next use: \gls{filo}.
Full form: \acrfull{filo}.

\printglossaries
\end{document}

文档现在如下所示:

文件图像

现在唯一带前缀的条目是词汇表M中的条目symbols。这是因为\newacronym已再次触发\defglsentryfmt与其条目关联的词汇表,该词汇表现在是main词汇表。

可以通过在 之后添加另一个 来覆盖此\defglsentryfmtby的使用,我已在下面完成此操作。我还添加了(这是一个使用字段提供的文本的类似命令)。\newacronym\defglsentryfmt\newacronym\glsname{filo}\glstextname

\documentclass{article}

\usepackage{color}
\usepackage[symbols]{glossaries}

\renewcommand{\glstextformat}[1]{\textcolor{blue}{#1}}
\renewcommand{\glsentryfmt}{$\rightarrow$\glsgenentryfmt}

\makeglossaries

\newglossaryentry{matrix}{name={matrix},plural={matrices},
 description={rectangular array of quantities}}

\newglossaryentry{M}{type=symbols,name={\ensuremath{\boldsymbol{M}}},sort=M,
 description={a \gls{matrix}}}

\newacronym{filo}{FILO}{first in last out}

\defglsentryfmt{\glsentryfmt}

\begin{document}
A \gls{matrix}, denoted \gls{M}. Lots of \glspl{matrix}.
\Glspl{matrix} are a rectangular array of quantities.
No indexing, linking, formatting: \glsentrytext{matrix}.
The identity \gls{matrix}['s] diagonal consists of ones.

First use: \gls{filo}. Next use: \gls{filo}.
Full form: \acrfull{filo}.
Name: \glsname{filo}.

\printglossaries
\end{document}

现在产生:

文件图像

这并没有使用前缀,而是令人困惑的是,在长格式前面和短格式前面都\glsname使用了两次前缀。\acrfull

设置首字母缩略词样式使用\setacronymstyle会删除两个前缀,\acrfull但使用会破坏首字母缩略词样式,该样式依赖于缩写和非缩写\defglsentryfmt使用的条目格式:\glsgenacfmt\glsgenentryfmt

\documentclass{article}

\usepackage{color}
\usepackage[symbols]{glossaries}

\renewcommand{\glstextformat}[1]{\textcolor{blue}{#1}}
\renewcommand{\glsentryfmt}{$\rightarrow$\glsgenentryfmt}

\makeglossaries

\setacronymstyle{long-short}

\newglossaryentry{matrix}{name={matrix},plural={matrices},
 description={rectangular array of quantities}}

\newglossaryentry{M}{type=symbols,name={\ensuremath{\boldsymbol{M}}},sort=M,
 description={a \gls{matrix}}}

\newacronym{filo}{FILO}{first in last out}

\defglsentryfmt{\glsentryfmt}

\begin{document}
A \gls{matrix}, denoted \gls{M}. Lots of \glspl{matrix}.
\Glspl{matrix} are a rectangular array of quantities.
No indexing, linking, formatting: \glsentrytext{matrix}.
The identity \gls{matrix}['s] diagonal consists of ones.

First use: \gls{filo}. Next use: \gls{filo}.
Full form: \acrfull{filo}.
Name: \glsname{filo}.

\printglossaries
\end{document}

文件图像

相反,条目格式必须检查缩写,可以使用以下方法完成\ifglshasshort

\renewcommand{\glsentryfmt}{%
 $\rightarrow$\ifglshasshort{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}}

此次修改产生:

文件图像

\glsname这纠正了缩写的第一次使用,但由于该命令不受\glsentryfmt(或) 的管辖,因此前面仍然没有前缀\defglsentryfmt

您可以引入一些变化。例如,只在常规术语(而不是缩写)前加上前缀:

\renewcommand{\glsentryfmt}{%
 \ifglshasshort{\glslabel}{\glsgenacfmt}{$\rightarrow$\glsgenentryfmt}}

或者仅在第一次使用时使用前缀:

\renewcommand{\glsentryfmt}{%
 \ifglshasshort{\glslabel}
 {\glsgenacfmt}% abbreviation
 {\ifglsused{\glslabel}{}{$\rightarrow$}\glsgenentryfmt}% regular term
}

还有更多的灵活性glossaries-extra包中可以对条目进行分类,并可以根据类别或类别的属性进行细微调整。(请参阅这个例子来自glossaries-extra画廊

当重新定义\glsentryfmt或使用时,重要的是要记住不要破坏由和执行的确定调用命令( ,等)\defglsentryfmt的检查。\gls\glspl\glsgenentryfmt\glsgenacfmt

例如,以下修改会破坏文档:

\renewcommand{\glsentryfmt}{$\rightarrow$\glsentryname{\glslabel}}

得出的结果为:

文件图像

复数形式\glspl{matrix}已呈现为单数。 中的大小写变化\Glspl{matrix}已丢失(以及简化为单数形式)。 的可选参数中插入的材料\gls{matrix}['s]已丢失。 缩写在第一次使用时不再显示长格式。 使用\glsname而不是会使情况变得更糟,因为它嵌套了和\glsentryname使用的相当复杂的内部命令,并且任何添加到文档的人都可能遇到嵌套超链接引起的问题。\gls\glsnamehyperref

相关内容