这个问题源于我试图回答enumitem 上的垂直间距。最初,我可以回答 OP 的问题,但后来 OP 提到,如果hyperref
使用该包,问题会再次出现。
以下是 MWE:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\noindent
Hello
\fbox{%
\begin{minipage}[t]{9cm}
\begin{enumerate}
\item the first item
\item the second item
\item the third item
\end{enumerate}
\end{minipage}}
\end{document}
导致:
预期发生以下情况时:
通过注释掉使用调用,可以轻松从 MWE 中获得hyperref
。
在对内容进行了一些操作之后hyperref
,问题似乎在于如何hyperref
重新定义\item
在enumerate
环境中的使用方式。具体来说,宏\hyper@refstepcounter
似乎是问题的根源,因为通过将其重新定义为
\def\hyper@refstepcounter#1{\relax}
消除了不需要的额外垂直空间。
的定义\hyper@refstepcounter
是
\def\hyper@refstepcounter#1{%
\edef\This@name{#1}%
\ifx\This@name\name@of@eq
\@ifundefined{theHequation}{%
\make@stripped@name{\theequation}%
\let\theHequation\newname
}{}%
\fi
\HyCnt@ProvideTheHCounter{#1}%
\hyper@makecurrent{#1}%
\ifmeasuring@
\else
\Hy@raisedlink{%
%-->
\hyper@anchorstart{\@currentHref}\hyper@anchorend
}%
\fi
}
如果您注释掉下面这一行%-->
,多余的垂直间距就会消失。
凸起的链接似乎是问题所在,从本质上来说,这是不是个 bug,因为它本质上抵消了如何minipage
消除的影响\addvspace
?或者有什么技巧可以解决这个问题(除了注释掉这一行)?
编辑
解决这个问题的一个选择似乎是写
\let\ifmeasuring@\iftrue
(或者不那么激烈)
\measuring@true
调用hyperref
包之后。但是,我不太确定凸起的链接在这里应该实现什么。我这样做可能会抛出太多东西吗?或者可能amsmath
只是稍后覆盖它---这似乎不太可能,因为\measuring@false
它只在组内调用。
答案1
两个需求相互冲突:hyperref
锚点必须放置在项目编号上方,这样单击超链接时将显示该项目,而不是将视图放置在其下方。另一方面,这会在垂直列表 ( minipage
) 中引入一个元素,该元素设置了与预期不同的参考点。
以下是针对这一特殊情况的解决方法:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\noindent
Hello\rlap{\kern-2cm\vrule height 0pt depth 0.2pt width 11cm}
\raisebox{\baselineskip}{\fbox{%
\begin{minipage}[t]{9cm}
\begin{enumerate}
\item The duplicate ratio of $2a:3b$ is $4a^2:9b^2$.
\item The subduplicate ratio of $49:25$ is $7:5$.
\item The triplicate ratio of $2x:1$ is $8x^3:1$.
\end{enumerate}
\end{minipage}}}
\end{document}
用于\rlap
绘制显示基线的规则。
如果不需要第一个项目的超链接,可以使用
\noindent
Hello\rlap{\kern-2cm\vrule height 0pt depth 0.2pt width 11cm}
\fbox{%
\begin{minipage}[t]{9cm}
\begin{enumerate}
\begin{NoHyper}
\item The duplicate ratio of $2a:3b$ is $4a^2:9b^2$.
\end{NoHyper}
\item The subduplicate ratio of $49:25$ is $7:5$.
\item The triplicate ratio of $2x:1$ is $8x^3:1$.
\end{enumerate}
\end{minipage}}
产生相同的结果。
答案2
使用
\begin{minipage}[t]{9cm}\vspace{0pt}% define a line for vertical positioning
\begin{enumerate}
\item the first item
[...]