我想知道在有符号和下标的情况下如何正确使用\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}}