带框的多行方程上方有额外空格

带框的多行方程上方有额外空格

其实这个问题并不新鲜。早在 2007 年就有人提出过这个问题德克萨斯, 和已回答同时。

但是,我无法应用答案中提到的补丁,因此我决定在这里提问。考虑以下代码:

\documentclass{article}
\usepackage{amsmath,amssymb}

\begin{document}
\fbox{\begin{minipage}{6cm}
\begin{align*}
    &H(x) \colon \\
    &\qquad \textnormal{Select a random $|x|$-bit prime $q$.} \\
    &\qquad \textnormal{Let } r \in_R \mathbb{Z}^*_q \\
    &\qquad \textnormal{Output } \langle r, r^{h(x)} \bmod q \rangle
\end{align*}
\end{minipage}}
\end{document}

它会产生类似这样的结果:

输出多一行

如你所见,H(x)上方有一个额外的空行。

我怎样才能将其删除?

答案1

使用empheq包裹

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{empheq}
\begin{document}
\begin{empheq}[box=\fbox]{align*}
    &H(x) \colon \\
    &\qquad \textnormal{Select a random $|x|$-bit prime $q$.} \\
    &\qquad \textnormal{Let } r \in_R \mathbb{Z}^*_q \\
    &\qquad \textnormal{Output } \langle r, r^{h(x)} \bmod q \rangle
\end{empheq}
\end{document}

导致

在此处输入图片描述

你甚至可以用

\begin{empheq}[box=\colorbox{yellow}]{align*}

在此处输入图片描述

答案2

设置:\abovedisplayskip0pt

\documentclass{article}
\usepackage{amsmath,amssymb}

\begin{document}

\fbox{\begin{minipage}{6cm}
\setlength\abovedisplayskip{0pt}
\begin{align*}
    &H(x) \colon \\
    &\qquad \textnormal{Select a random $|x|$-bit prime $q$.} \\
    &\qquad \textnormal{Let } r \in_R \mathbb{Z}^*_q \\
    &\qquad \textnormal{Output } \langle r, r^{h(x)} \bmod q \rangle
\end{align*}
\end{minipage}}

\end{document}

答案3

不要用align这个,这是tabular

\fbox{\renewcommand{\arraystretch}{1.2}
  \begin{tabular}{l@{}l}
  \makebox[2em][l]{$H(x)$:}\\
  & Select a random $|x|$-bit prime $q$. \\
  & Let $r \in_R \mathbb{Z}^*_q$ \\
  & Output $\langle r, r^{h(x)} \bmod q \rangle$
  \end{tabular}}

你甚至不需要猜测对齐的宽度。

相关内容