Hyperref 在枚举环境开始时插入不需要的空间

Hyperref 在枚举环境开始时插入不需要的空间

这个问题源于我试图回答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重新定义\itemenumerate环境中的使用方式。具体来说,宏\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
    [...]

相关内容