\gls 对符号和下标的预期用途

\gls 对符号和下标的预期用途

我想知道在有符号和下标的情况下如何正确使用\gls或使用包词汇表。例如,如果没有词汇表,我只会写

F_{trac}

或者在文中使用

$F_{trac}$

使用词汇表,我定义了力的符号(sym:F)和牵引力的下标(sub:trac),并写下来

\gls{sym:F}[_{\gls{sub:trac}}]

或者在文中使用

$\gls{sym:F}[_{\gls{sub:trac}}]$

我甚至不能省去$$这里的 ,因为我要单独使用 ,它们在定义中被 包围\ensuremath{}。如果需要两个或更多下标,我会使用

\gls{sym:F}[_{\gls{sub:trac},\gls{sub:max}}]

另外,如果我们定义一个

\gls{sym:F_trac}

没有办法再添加了\gls{sub:max}吗?

相当简短的形式

v_k

变成

\gls{sym:v}[_{\gls{sub:k}}]

我的观点是:

该包的预期使用方式是怎样的?

答案1

手册(第 6.1 节)指出:

不要在 ⟨insert⟩ 参数中使用任何 \gls-like 或 \glstext-like 命令。

(其中 ⟨insert⟩ 指的是最后一个可选参数),因此它不适用于 形式\gls{sym:v}[_{\gls{sub:k}}]。主要原因是它会导致嵌套链接(如果使用 )。嵌套链接的问题在FAQ 条目hyperref中提到glossaries为什么我不应该在 \section、\chapter、\caption 等中使用 \gls 之类的命令?但可以使用以下 MWE 来证明:

\documentclass[12pt]{article}

\usepackage[colorlinks]{hyperref}

\begin{document}

Targets: \hypertarget{k}{$k$}, \hypertarget{v}{$v$}.

Links: $\hyperlink{v}{v}_{\hyperlink{k}{k}}$.
$\hyperlink{v}{v_{\hyperlink{k}{k}}}$.

No links: $v_k$

\end{document} 

输出图像

第一种情况$\hyperlink{v}{v}_{\hyperlink{k}{k}}$类似于\gls{v}_{\gls{k}}。这里有两个单独的超链接,但 v 与其下标之间的间距比无链接版本略宽。

第二种情况$\hyperlink{v}{v_{\hyperlink{k}{k}}}$类似于\gls{v}[_{\gls{k}}]。这在 v 和其下标之间有更好的间距,但现在有一个嵌套的超链接。如果您单击 k,它可能会带您到目标k( \hypertarget{k}{$k$}) 或它可能带您到v目标 ( \hypertarget{v}{$v$}),具体取决于您的 PDF 查看器。

(无论哪种情况,您都需要使用pdflatex而不是latex使超链接下标显示正确的大小。)

回到glossaries,用法实际上取决于将每个符号放在超链接中的重要性。如果它们都需要超链接,那么最好只执行\gls{k}_{\gls{v}}。如果您乐意k_v只超链接到 的条目,那么k您可以执行$\gls{k}[_{\glsentrytext{v}}]$,这样 k 和 v 之间的间距会更好:

\documentclass[12pt]{article}

\usepackage[colorlinks]{hyperref}
\usepackage{glossaries}

\makeglossaries

\newglossaryentry{k}{name={k},description={}}
\newglossaryentry{v}{name={v},description={}}

\begin{document}

$\gls{k}_{\gls{v}}$

$\gls{k}[_{\glsentrytext{v}}]$

\printglossaries

\end{document} 

请记住,如果输入命令太麻烦,您可以定义一个命令。例如:

\newcommand*{\gsub}[2]{\gls{#1}[_{\glsentrytext{#2}}]}
\newcommand*{\gsubs}[3]{\gls{#1}[_{\glsentrytext{#2},\glsentrytext{#3}}]}

现在您只需执行\gsub{v}{k}或即可\gsubs{v}{k}{j}。这不会将下标条目添加到词汇表中,但可以通过调整定义来实现:

\newcommand*{\gsub}[2]{\gls{#1}[_{\glsentrytext{#2}}]\glsadd{#2}}
\newcommand*{\gsubs}[3]{\gls{#1}[_{\glsentrytext{#2},\glsentrytext{#3}}]\glsadd{#2}\glsadd{#3}}

相关内容