当同时使用 hyperref 和 fleqn 时,我在编号方程上方获得了一些额外的垂直空间。我相信这个问题是 hyperref 中的一个已知错误,并且已在
但我无法成功地将那里给出的解决方法应用于我的具体问题,这就是我需要一些帮助的地方。这是一个 MnWE:
\documentclass[fleqn]{report}
\usepackage{hyperref}
\usepackage{amsmath}
\newcommand{\question}[4]{
\par \noindent \textbf{\ignorespaces#2}
\nopagebreak[2]
\vspace{10pt}
\par \noindent \ignorespaces#3 \textit{\ignorespaces#4}
\vspace{20pt}
}
\begin{document}
\question{default}{
A question whose answer is an equation*.
}{
\begin{equation*} \frac{x}{(1-x)^2} \end{equation*}
}{}
\question{default}{
A question whose answer is an equation.
}{
\begin{equation} \frac{x}{(1-x)^2} \end{equation}
}{}
\question{default}{
A question whose answer is plain old text.
}{
The answer.
}{}
\end{document}
一些背景
我有一系列问答形式的笔记。我喜欢用一张纸盖住(打印的)笔记,然后把纸往下移,直到我只能看到问题,这样我就可以复习它们了。这时,我会试着记住答案,一旦我认为我记住了,我就会把纸往下移,让答案显现出来。
直到最近,包含此内容的 tex 文件还是有点混乱,所以我决定尝试编写上面看到的宏。如果我的宏完全错误,请告诉我,我会单独提出一个问题,说明如何正确执行此操作。
答案1
你永远不应该在显示的方程式前有段落分隔符,TeX 在这种情况下总是会出错。在这里我删除了虚假的 par,还添加了一些%
我遗漏的 par,\noindent
尽管在几乎所有情况下都不应该在 latex 中使用,
\documentclass[fleqn]{report}
\usepackage{hyperref}
\usepackage{amsmath}
\newcommand{\question}[4]{%
\par \noindent\nopagebreak[2]\textbf{\ignorespaces#2}%
\ignorespaces#3 \textit{\ignorespaces#4}%
\vspace{20pt}%
}
\begin{document}
\question{default}{
My question
}{
\begin{equation*} \frac{x}{(1-x)^2} \end{equation*}
}{}
\question{default}{
My question
}{
\begin{equation} \frac{x}{(1-x)^2} \end{equation}
}{}
\end{document}