我cases
从 amsmath.sty 复制了代码,并尝试将其包装\lbrace
在宏中,然后添加一个\left.
以使其编译。这当然会丢失大小信息,因此括号的大小不正确:
使用可调整大小但也可包裹在宏中的括号的一般步骤是什么?
笔记:
TeX.SE 上的一些答案使用了
\newcases
frommathtools
,但这似乎没有记录在mathtools
手册中。不确定这是否会让事情变得更容易。示例包括:
可能的解决方案:
- 如果找不到通用解决方案,则可以选择通过可选参数手动指定括号的大小。
- 我尝试将案例的内容排版成
\savebox
但遇到了困难,因为右侧有对齐点。
代码:
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{xcolor}
%% https://tex.stackexchange.com/questions/85033/colored-symbols
\newcommand*{\mathcolor}{}
\def\mathcolor#1#{\mathcoloraux{#1}}
\newcommand*{\mathcoloraux}[3]{%
\protect\leavevmode
\begingroup
\color#1{#2}#3%
\endgroup
}
\makeatletter%
\renewenvironment{cases}{% From amsmath.sty
\matrix@check\cases\env@cases
}{%
\endarray\right.%
}
\def\env@cases{%
\let\@ifnextchar\new@ifnextchar
%\left\lbrace% <--- How do I replace this,
\left.\hyperlink{sec:cases}{\mathcolor{red}{\lbrace}}% <-- with something like this, but get the right size
\def\arraystretch{1.2}%
\array{@{}l@{\quad}l@{}}%
}
\makeatother
\begin{document}
\section{Cases Environment}\label{sec:cases}
The \verb|cases| environment is used for \dots.
\clearpage
\section{Piecewise Defined Function}
\[
f(x) =
\begin{cases}
1 & x < 0 \\
0 & x = 0 \\
-1 & x > 0.
\end{cases}
\]
\end{document}
答案1
你可以尝试调整你的解决方案如何为分隔符着色,它基于收集材料并将其用于\vphantom
。该amsmath
包有方便的\collect@body
帮助,但您还需要使用\ifnum0
Knuth 的技巧,如https://tex.stackexchange.com/a/319031/15925align
以避免在、gather
或array
基于 s 构建的类似构造中使用时出现分组问题halign
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{xcolor}
\newcommand{\BracKern}{\kern-\nulldelimiterspace}
\makeatletter
\newcommand{\@Brach}[2]{%
%left bracket with hyperlink
\mathopen{\hyperlink{sec:cases}{\color{red}\left#1\vphantom{#2}\BracKern\right.}}
#2% content
}
\renewenvironment{cases}{% From amsmath.sty
{\ifnum0=`}\fi\matrix@check\cases\collect@body\env@cases}%
{\ifnum0=`{\fi}}
\def\env@cases#1{%
\@Brach{\lbrace}%
{\let\@ifnextchar\new@ifnextchar
\def\arraystretch{1.2}%
\array{@{}l@{\quad}l@{}}%
#1
\endarray}%
}
\makeatother
\begin{document}
\section{Cases Environment}\label{sec:cases}
The \verb|cases| environment is used for \dots.
\clearpage
\section{Piecewise Defined Function}
\begin{equation*}
f(x) =
\begin{cases}
1 & x < 0, \\
0 & x = 0, \\
-1 & x > 0.
\end{cases}
\end{equation*}
\begin{align*}
g(x) &= e^x,\\
f(x) &=
\begin{cases}
1 & x < 0, \\
0 & x = 0, \\
-1 & x > 0,
\end{cases}\\
h(x) &= x^2.
\end{align*}
\end{document}
答案2
我使用原始命令,为括号添加颜色\color{red}\left\lbrace\normalcolor
,向后移动一个空格,在该空格上创建超链接\hyperlink{sec:cases}{\hspace{-1em}\ }
,然后向前移动\hspace{1em}
。它似乎有效。
\expandafter\newif\csname ifGin@setpagesize\endcsname
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{xcolor}
%% http://tex.stackexchange.com/questions/85033/colored-symbols
\newcommand*{\mathcolor}{}
\def\mathcolor#1#{\mathcoloraux{#1}}
\newcommand*{\mathcoloraux}[3]{%
\protect\leavevmode
\begingroup
\color#1{#2}#3%
\endgroup
}
\makeatletter%
\renewenvironment{cases}{% From amsmath.sty
\matrix@check\cases\env@cases
}{%
\endarray\right.%
}
\def\env@cases{%
\let\@ifnextchar\new@ifnextchar
\color{red}\left\lbrace% <--- How do I replace this,
\normalcolor
\hyperlink{sec:cases}{\hspace{-1em}\ }\hspace{1em}% <-- with something like this, but get the right size
\def\arraystretch{1.2}%
\array{@{}l@{\quad}l@{}}%
}
\makeatother
\begin{document}
\section{Cases Environment}\label{sec:cases}
The \verb|cases| environment is used for \dots.
\clearpage
\section{Piecewise Defined Function}
\begin{align*}
\exp(x) &= e^x\\
f(x) &=
{\begin{cases}
1 & x < 0, \\
-1 & x > 0,
\end{cases}} \\
g(x) &= x^2.
\end{align*}
\begin{align*}
\exp(x) &= e^x\\
f(x) &=
{\begin{cases}
1 & x < 0, \\
0 & x = 0, \\
0 & x = 0, \\
0 & x = 0, \\
-1 & x > 0,
\end{cases}} \\
g(x) &= x^2.
\end{align*}
\end{document}
答案3
Andrew Swann 的解决方案是我模糊地想到的第二个解决方案(当然,模糊的直觉是一回事,将其转化为工作代码又是另一回事!),然而,我的第一个想法是尝试在 TeX 原始命令级别实现所需的行为。这个答案的目的只是提供一种如何实现这一目标的概念证明:在我看来,Andrew 的策略仍然是最好的。当然,实际的实现取决于所使用的排版引擎,但原理(IE,在数学列表中正确放置“whatsit”节点)在所有引擎中应该保持不变。不过,以下内容特别指的是 pdfTeX。
众所周知,在构建数学列表后,TeX 会根据附录 G 中详述的规则将其转换为水平列表。TeXbook。在此转换中,边界项(生成的节点类型
\left\{
)最终会转换为一个简单的框,因此我们实际上想要实现的是,此框被正确地括在适当的\pdfstartlink
和\pdfendlink
节点之间。这个想法是,了解第 26 章中解释的数学列表构造的确切规则,以及 TeX 在将数学列表转换为水平列表时如何打乱顺序的细节,人们可以设计出正确的命令序列,最终在正确的位置产生正确的节点。
但是,有一个小问题:\left<delim><math mode material>\right<delim>
构造总是会产生一个内部原子(第 292 页),其原子核包含<math mode material>
,在从数学列表转换为水平列表的过程中,该原子总是被封装在一个额外的装箱级别中(第 443 页,规则 7,以及第 445 页,规则 17,第一句)。这意味着,仅仅将一个\pdfstartlink
节点放在它前面\left\{
,将一个\pdfendlink
节点放在它后面是行不通的,因为这两个节点最终处于不同的装箱级别。一个简单的实验证实了这一点:
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\newcommand*{\ShowLists}{%
\begingroup
\showboxbreadth = 1000
\showboxdepth = 10
\tracingonline = 1
\showlists
\endgroup
}
\begin{document}
Very simple:
\(
\special{Comment: B}
\left(
\special{Comment: E}
xyz
\right)
\ShowLists
\).\ShowLists
\end{document}
第一个\ShowLists
显示数学列表,如下所示:
### math mode entered at line 22
\special{Comment: B}
\mathinner
.\left"28300
.\special{Comment: E}
.\mathord
..\fam1 x
.\mathord
..\fam1 y
.\mathord
..\fam1 z
.\right"29301
第二个显示了上述结果的水平列表:
### horizontal mode entered at line 21
\hbox(0.0+0.0)x15.0
\T1/cmr/m/n/10 V
\kern-0.83313
\T1/cmr/m/n/10 e
\T1/cmr/m/n/10 r
\T1/cmr/m/n/10 y
\glue 3.33252 plus 1.66626 minus 1.11084
\T1/cmr/m/n/10 s
\T1/cmr/m/n/10 i
\T1/cmr/m/n/10 m
\T1/cmr/m/n/10 p
\T1/cmr/m/n/10 l
\T1/cmr/m/n/10 e
\T1/cmr/m/n/10 :
\glue 4.44336 plus 3.33252 minus 0.55542
\mathon
\special{Comment: B}
\hbox(7.5+2.5)x23.84497
.\hbox(7.5+2.5)x3.8889
..\OT1/cmr/m/n/10 (
.\special{Comment: E}
.\OML/cmm/m/it/10 x
.\OML/cmm/m/it/10 y
.\kern0.35878
.\OML/cmm/m/it/10 z
.\kern0.4398
.\hbox(7.5+2.5)x3.8889
..\OT1/cmr/m/n/10 )
\mathoff
\T1/cmr/m/n/10 .
spacefactor 3000
我们看到,正如上面所说,两人\special
最终处于不同的拳击水平,这并不好。
但是 (pdf-)e-TeX 也有\middle
。现在,我必须承认,我不知道有任何文档来源可以像附录 G 一样精确地参考 e-TeX 中的数学列表转换细节TeXbook适用于 TeX(当然,非常欢迎提出建议);但我们始终可以进行实验。一个几乎不言而喻的想法如下:
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\newcommand*{\ShowLists}{%
\begingroup
\showboxbreadth = 1000
\showboxdepth = 10
\tracingonline = 1
\showlists
\endgroup
}
\begin{document}
Still pretty simple:
\(
\left. \kern -\nulldelimiterspace
\special{Comment: B}
\middle(
\special{Comment: E}
xyz
\right)
\ShowLists
\).\ShowLists
\end{document}
最终的水平列表是
### horizontal mode entered at line 21
\hbox(0.0+0.0)x15.0
\T1/cmr/m/n/10 S
\T1/cmr/m/n/10 t
\T1/cmr/m/n/10 i
\T1/cmr/m/n/10 l
\T1/cmr/m/n/10 l
\glue 3.33252 plus 1.66626 minus 1.11084
\T1/cmr/m/n/10 p
\T1/cmr/m/n/10 r
\T1/cmr/m/n/10 e
\T1/cmr/m/n/10 t
\T1/cmr/m/n/10 t
\kern-0.27771
\T1/cmr/m/n/10 y
\glue 3.33252 plus 1.66626 minus 1.11084
\T1/cmr/m/n/10 s
\T1/cmr/m/n/10 i
\T1/cmr/m/n/10 m
\T1/cmr/m/n/10 p
\T1/cmr/m/n/10 l
\T1/cmr/m/n/10 e
\T1/cmr/m/n/10 :
\glue 4.44336 plus 3.33252 minus 0.55542
\mathon
\hbox(7.5+2.5)x23.84497
.\hbox(0.0+0.0)x1.2, shifted -2.5
.\kern -1.2
.\special{Comment: B}
.\hbox(7.5+2.5)x3.8889
..\OT1/cmr/m/n/10 (
.\special{Comment: E}
.\OML/cmm/m/it/10 x
.\OML/cmm/m/it/10 y
.\kern0.35878
.\OML/cmm/m/it/10 z
.\kern0.4398
.\hbox(7.5+2.5)x3.8889
..\OT1/cmr/m/n/10 )
\mathoff
\T1/cmr/m/n/10 .
spacefactor 3000
这次我们确实成功了:两个“whatsit”节点处于同一级别,并将包含括号的框括起来。
我们现在准备提供我们所承诺的概念证明:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\makeatletter
\newcommand*\hyperleft[3]{%
\left. \kern -\nulldelimiterspace
\pdfstartlink attr{#2} user{#3}
\middle #1%
\pdfendlink
}
% We prefer to keep the original "cases":
\newenvironment*{hypercases}{% From amsmath.sty
% \matrix@check\cases % obviously not needed in our case
\env@hyper@cases
}{%
\endarray\right.%
}
\newcommand*\env@hyper@cases{%
\let\@ifnextchar\new@ifnextchar
\hyperleft\lbrace
% the following two lines are obviously just a stub:
{/Border[0 0 1]/H/I/C[0 1 1]}%
{/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.tug.org/)>>}%
\def\arraystretch{1.2}%
\array{@{}l@{\quad}l@{}}%
}
\makeatother
\begin{document}
\section{Piecewise Defined Function}
Two examples follow, so that you can compare results.
The first one uses the \texttt{cases} environment:
\[
f(x) =
\begin{cases}
1 & x < 0 \\
0 & x = 0 \\
-1 & x > 0.
\end{cases}
\]
The second one uses the \texttt{hypercases} environment:
\[
f(x) =
\begin{hypercases}
1 & x < 0 \\
0 & x = 0 \\
-1 & x > 0.
\end{hypercases}
\]
\end{document}
当然,还需要进一步的研究来使其成为可用的形式。
添加
我浏览了一下该hperref
包的代码,似乎我在评论中提到的“粗略破解”应该可以按预期工作,尽管需要改进。
这个想法是使用本答案第一部分中显示的方法,但使用hyperref
提供链接创建的常规命令将\pdfstartlink
和\pdfendlink
节点传递到正确的位置,将生成低级 PDF 语法的所有负担放在hyperref
包本身上。作为初步估计,可以尝试使用
\left. \kern -\nulldelimiterspace
\href{http://www.tug.org/}{\middle\lbrace}
(用于网页链接)并希望这将把\middle
节点封闭在适当的“whatsit”节点之间(其确切类型取决于驱动程序),如上所示,当数学列表转换为水平列表时,它将出现在正确的位置。不幸的是,这不起作用。
原因是hyperref
包将链接的文本包含在几个组中,这显然会干扰构造\left. ... \middle\lbrace ... \right.
。这就是我们的“粗暴黑客”介入的地方:我们在前面添加尽可能\middle\lbrace
多的\endgroup
标记,以便返回到\left
组级别,并在其后附加相同数量的标记。检查包和驱动程序的\begingroup
代码表明,这不会破坏和节点的正确放置,而且它确实似乎有效。但请注意,它hyperref
hpdftex
\pdfstartlink
\pdfendlink
将要破坏任何依赖于\aftergroup
在链接末端传递“whatsit”节点的机制;特别是,该colorlinks
选项将不是使用我们的链接(见下文)。
必须退出的组数不仅取决于用于生成链接的命令(例如,\href{...}{...}
与\hyperref[...]{...}
),但也取决于其他因素,原则上取决于所使用的驱动程序;例如,在命令的情况下\href
,它可能取决于所引用的 URL 的类型(例如,http:
与file:
…… run:
)。因此,最好的策略是动态地确定这个数字,要么通过 要么\currentgrouplevel
通过\currentgrouptype
:在下面显示的代码中,我们选择了第二个测试。如果它们不一致,也可以同时执行测试并发出错误消息。
实际上,上面概述的想法可以应用于更一般的情况。在下面的代码中,我们定义了以下四个命令:
\leftLinkToLabel<delim>{<label>}
排版<delim>
为可变大小的左分隔符,它是指向文档中标有 的位置的链接\label{<label>}
。\rightLinkToLabel<delim>{<label>}
执行相同操作,但使用右分隔符。\leftLinkToURL<delim>{<URL>}
排版<delim>
为可变大小的左分隔符,作为指向的链接<URL>
。\rightLinkToURL<delim>{<URL>}
执行相同操作,但使用右分隔符。
当然,这个集合并不详尽,但很容易扩展它(例如,提供\middle...
上述命令的变体)。完成此操作后,我们使用\leftLinkTo...
来实现两个\cases
类似环境,我们希望它们能够表现出所需的行为。不幸的是,我们不能\newcases
这样做,因为我们的新环境带有一个参数。
以下是代码:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{hyperref}
\makeatletter
% Common syntax: #1 = delimiter, #2 = link.
\newcommand*\leftLinkToLabel[2]{%
\@left@delimiter@wrapper{#1}{\hyperref[#2]}%
}
\newcommand*\rightLinkToLabel[2]{%
\@right@delimiter@wrapper{#1}{\hyperref[#2]}%
}
\newcommand*\leftLinkToURL[2]{%
\@left@delimiter@wrapper{#1}{\href{#2}}%
}
\newcommand*\rightLinkToURL[2]{%
\@right@delimiter@wrapper{#1}{\href{#2}}%
}
\newcommand*\@left@delimiter@wrapper[2]{%
\left. \kern -\nulldelimiterspace
\@general@link@helper{#1}{#2}%
}
\newcommand*\@right@delimiter@wrapper[2]{%
\@general@link@helper{#1}{#2}%
\kern -\nulldelimiterspace \right.
}
\@ifdefinable\@restore@groups@at@end@of@link{} % just check that we can use it
\newcommand*\@exit@to@leftright@group{%
\ifnum \currentgrouptype=\sixt@@n \else
% \typeout{Exiting group level \number\currentgrouplevel.}%
\endgroup
\xdef\@restore@groups@at@end@of@link{%
\@restore@groups@at@end@of@link
\begingroup
}%
\expandafter\@exit@to@leftright@group
\fi
}
\newcommand*\@general@link@helper[2]{%
\global\let \@restore@groups@at@end@of@link \@empty
#2{% #2 is either "\hyperref[...]" or "\href{...}"
\@exit@to@leftright@group
\middle #1%
\@restore@groups@at@end@of@link
}%
}
\newenvironment*{linkToLabelCases}{% From amsmath.sty
% \matrix@check\cases % obviously not needed in our case
\env@hyper@cases\leftLinkToLabel
}{%
\endarray\right.%
}
\newenvironment*{linkToURLCases}{% From amsmath.sty
% \matrix@check\cases % obviously not needed in our case
\env@hyper@cases\leftLinkToURL
}{%
\endarray\right.%
}
\newcommand*\env@hyper@cases[2]{%
\let\@ifnextchar\new@ifnextchar
#1\lbrace{#2}%
\def\arraystretch{1.2}%
\array{@{}l@{\quad}l@{}}%
}
\makeatother
\begin{document}
\section{Target}
\label{S:Target}
This is the target of our links.
\newpage
\section{Links}
\label{S:Links}
Some examples of links follow.
A simple bracket:
\begin{align*}
\left[xyz\right] &= \left[xyz\right] \\
\leftLinkToLabel[{S:Target}xyz\right]
&= \left[xyz\rightLinkToLabel]{S:Target}
\end{align*}
Now with fractions:
\begin{align*}
\left\{\frac{x}{y}\right\} &= \left\{\frac{x}{y}\right\} \\
\leftLinkToLabel\{{S:Target}\frac{x}{y}\right\}
&= \left\{\frac{x}{y}\rightLinkToLabel\}{S:Target}
\end{align*}
Now with matrices:
\begin{align*}
\left(
\begin{matrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{matrix}
\right) &= \left(
\begin{matrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{matrix}
\right) \\
\leftLinkToLabel({S:Target}
\begin{matrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{matrix}
\right) &= \left(
\begin{matrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{matrix}
\rightLinkToLabel){S:Target}
\end{align*}
Again with matrices, but this time linking to a URL\@:
\begin{align*}
\left(
\begin{matrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{matrix}
\right) &= \left(
\begin{matrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{matrix}
\right) \\
\leftLinkToURL({http://www.tug.org/}
\begin{matrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{matrix}
\right) &= \left(
\begin{matrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{matrix}
\rightLinkToURL){http://www.tug.org/}
\end{align*}
\section{Piecewise defined function}
\label{S:Piece}
No link at all:
\[
f(x) = \begin{cases}
1 & x < 0 \\
0 & x = 0 \\
-1 & x > 0
\end{cases}
\]
Linking to a label:
\[
f(x) = \begin{linkToLabelCases}{S:Target}
1 & x < 0 \\
0 & x = 0 \\
-1 & x > 0
\end{linkToLabelCases}
\]
Linking to a URL\@:
\[
f(x) = \begin{linkToURLCases}{http://www.tug.org/}
1 & x < 0 \\
0 & x = 0 \\
-1 & x > 0
\end{linkToURLCases}
\]
% \showboxbreadth = 1000
% \showboxdepth = 10
% \showlists
\end{document}
linkToURLCases
您可以取消注释末尾附近的诊断命令,以检查节点是否排列正确。例如,以下是与环境括号(最后一个)相关的列表的摘录:
\hbox(24.09993+19.09991)x89.71133, shifted 127.64433, display
.\OML/cmm/m/it/10 f
.\kern1.0764
.\OT1/cmr/m/n/10 (
.\OML/cmm/m/it/10 x
.\OT1/cmr/m/n/10 )
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\OT1/cmr/m/n/10 =
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\hbox(24.09993+19.09991)x56.91278
..\hbox(0.0+0.0)x1.2, shifted -2.5
..\kern -1.2
..\pdfstartlink(*+*)x* attr{/Border[0 0 1]/H/I/C[0 1 1]} action user{/Subtype/L
ink/A<</Type/Action/S/URI/URI(http://www.tug.org/)>>}
..\vbox(0.0+42.00043)x8.8889, shifted -23.50021
...\hbox(0.0+9.00009)x8.8889
....\OMX/cmex/m/n/10 8
...\hbox(0.0+3.00003)x8.8889
....\OMX/cmex/m/n/10 >
...\hbox(0.0+18.00018)x8.8889
....\OMX/cmex/m/n/10 <
...\hbox(0.0+3.00003)x8.8889
....\OMX/cmex/m/n/10 >
...\hbox(0.0+9.00009)x8.8889
....\OMX/cmex/m/n/10 :
..\pdfendlink
..\vbox(24.09993+19.09991)x46.82388
如果您想要 DVI 输出,您可以检查我们的解决方案是否(或多或少)hypertex
也适用于该驱动程序。如果您指定该驱动程序并使用latex
而不是使用进行编译,则会获得以下相应的跟踪pdflatex
:
\hbox(24.09993+19.09991)x89.71133, shifted 127.64433, display
.\OML/cmm/m/it/10 f
.\kern1.0764
.\OT1/cmr/m/n/10 (
.\OML/cmm/m/it/10 x
.\OT1/cmr/m/n/10 )
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\OT1/cmr/m/n/10 =
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\hbox(24.09993+19.09991)x56.91278
..\hbox(0.0+0.0)x1.2, shifted -2.5
..\kern -1.2
..\special{html:<a href="http://www.tug.org/">}
..\vbox(0.0+42.00043)x8.8889, shifted -23.50021
...\hbox(0.0+9.00009)x8.8889
....\OMX/cmex/m/n/10 8
...\hbox(0.0+3.00003)x8.8889
....\OMX/cmex/m/n/10 >
...\hbox(0.0+18.00018)x8.8889
....\OMX/cmex/m/n/10 <
...\hbox(0.0+3.00003)x8.8889
....\OMX/cmex/m/n/10 >
...\hbox(0.0+9.00009)x8.8889
....\OMX/cmex/m/n/10 :
..\special{html:</a>}
..\vbox(24.09993+19.09991)x46.82388
另一方面,如上所述,该colorlinks
选项将不会按预期工作,并且以下跟踪(使用获得pdflatex
)显示了发生的情况:
\hbox(24.09993+19.09991)x89.71133, shifted 127.64433, display
.\OML/cmm/m/it/10 f
.\kern1.0764
.\OT1/cmr/m/n/10 (
.\OML/cmm/m/it/10 x
.\OT1/cmr/m/n/10 )
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\OT1/cmr/m/n/10 =
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\hbox(24.09993+19.09991)x56.91278
..\hbox(0.0+0.0)x1.2, shifted -2.5
..\kern -1.2
..\pdfstartlink(*+*)x* attr{/Border[0 0 0]/H/I/C[0 1 1]} action user{/Subtype/L
ink/A<</Type/Action/S/URI/URI(http://www.tug.org/)>>}
..\pdfcolorstack 0 push {0 1 0 0 k 0 1 0 0 K}
..\pdfcolorstack 0 pop
..\vbox(0.0+42.00043)x8.8889, shifted -23.50021
...\hbox(0.0+9.00009)x8.8889
....\OMX/cmex/m/n/10 8
...\hbox(0.0+3.00003)x8.8889
....\OMX/cmex/m/n/10 >
...\hbox(0.0+18.00018)x8.8889
....\OMX/cmex/m/n/10 <
...\hbox(0.0+3.00003)x8.8889
....\OMX/cmex/m/n/10 >
...\hbox(0.0+9.00009)x8.8889
....\OMX/cmex/m/n/10 :
..\pdfendlink
..\vbox(24.09993+19.09991)x46.82388
如您所见,\pdfcolorstack 0 pop
节点过早交付,因此链接没有任何颜色;但是,由于节点\pdfendlink
位于正确的位置,因此链接仍然处于活动状态。