继续下标中的 \gls 大小太正常,运行一个循环,latex
然后makeglossaries
直到稳定
\documentclass{article}
\usepackage{amssymb}
\usepackage[hidelinks]{hyperref}
\usepackage{glossaries-extra}%%% glossaries-extra internally loads glossaries, and glossaries according to its documentation should be loaded after hyperref.
\makeglossaries
\newglossaryentry{nonnegativeNat}{name={$\mathbb{N}$}, text={\mathbb{N}}, description={The set of nonnegative integers.}}
\newcommand{\nonnegativeNat}{\gls{nonnegativeNat}}
\begin{document}
\[\nonnegativeNat\]
\clearpage
\[\mathbb{N}^{\nonnegativeNat}\]
\clearpage
\[\mathbb{N}^{\mathbb{N}^{\nonnegativeNat}}\]
\clearpage
\printglossaries
\end{document}
产量
在 DVI 文件的第二页和第三页上,运行后dvips
,
在 Postscript 文件的第二页和第三页上。
显然,上标和上上标的正常大小是不好的,所以我们遵循http://tex.stackexchange.com/a/399707并使解决方案适应主要引擎:
\documentclass{article}
\usepackage{amssymb}
\usepackage[hidelinks]{hyperref}
\usepackage{glossaries-extra}%%% glossaries-extra internally loads glossaries, and glossaries according to its documentation should be loaded after hyperref.
\makeglossaries
\newglossaryentry{nonnegativeNat}{name={$\mathbb{N}$}, text={\mathbb{N}}, description={The set of nonnegative integers.}}
\ifTUTeX%%% xelatex and lualatex produce PDF only
\newcommand{\nonnegativeNat}{\gls{nonnegativeNat}}
\else
\ifpdf%%% for pdflatex
\newcommand{\nonnegativeNat}{\gls{nonnegativeNat}}
\else%%% for latex
\newcommand{\nonnegativeNat}{%
\mathchoice%
{\gls{nonnegativeNat}}%
{\gls{nonnegativeNat}}%
{\text{$\gls{nonnegativeNat}$}}%%% or {\gls*{nonnegativeNat}} if we can tolerate the absense of the links but still want the page number
{\text{$\gls{nonnegativeNat}$}}%%% or {\gls*{nonnegativeNat}} if we can tolerate the absense of the links but still want the page number
}
\fi
\fi
\begin{document}
\[\nonnegativeNat\]
\clearpage
\[\mathbb{N}^{\nonnegativeNat}\]
\clearpage
\[\mathbb{N}^{\mathbb{N}^{\nonnegativeNat}}\]
\clearpage
\printglossaries
\end{document}
结果似乎不错(除了蓝色和下划线,我们不愿意容忍它们出现在 DVI 文件中,因为我们仅使用 DVI 输出进行调试):
在 DVI 文件的第二页和第三页上,运行后dvips
,
在 Postscript 文件的第二页和第三页上。
本质上,通过嵌套条件语句的解决方案对于用户来说似乎有点麻烦,而对于包来说却相当简单。是否可以简化此解决方案以获得相同的效果?如果可以,如何简化?为什么尚未在 hyperref 与 glossaries-extra 的组合中实现此解决方案(或等效解决方案)? 是否存在潜在问题\text{$…$}
? 是否存在潜在问题(除了我们会丢失和\gls*{…}
中的超链接,即下标、上标、双下标和双上标中的超链接)?是否已经有一个命令可以自动执行我们的大条件语句?我们不想重新发明轮子。\scriptstyle
\scriptscriptstyle
答案1
我个人认为上标中的词汇表条目和链接都非常奇怪,为了找到真正的解决方案,我会寻找禁用选项\gls
和那里的链接。
除此之外:在 dvips 路由上,hyperref 必须计算链接区域的大小,并且至少在编写代码时需要将内容放在一个框中。这会冻结大小,并且随着框的重复使用,排版结果在上标中太大。您可以尝试直接在数学模式下使用内容,但请注意,链接区域的大小是错误的,并且内容会被排版两次,这可能会产生副作用:
\documentclass{article}
\usepackage{amssymb}
\usepackage{hyperref}
\usepackage{etoolbox}
\makeatletter
\ifcsname pdf@rect\endcsname
\patchcmd\pdf@rect{\expandafter\box\pdf@box}{\ifmmode #1\else \expandafter\box\pdf@box \fi}{}{\fail}
\fi
\makeatother
\usepackage{glossaries-extra}%%%
\makeglossaries
\newglossaryentry{nonnegativeNat}{name={$\mathbb{N}$}, text={\mathbb{N}}, description={The set of nonnegative integers.}}
\newcommand{\nonnegativeNat}{\gls{nonnegativeNat}}
\begin{document}
{\[\nonnegativeNat\]}
%\clearpage
\[\mathbb{N}^{\nonnegativeNat}\]
%\clearpage
\[\mathbb{N}^{\mathbb{N}^{\nonnegativeNat}}\]
%\clearpage
\printglossaries
\end{document}