我知道,如果一个定理的证明以诸如align*
或 之类的显示的数学环境结束align
,那么,为了将 QED 墓碑放置在该环境的最后一行(而不是放置在其自身的下一行),\qedhere
必须将其放置在该环境中。
但是,如果该环境至少包含一个标签,墓碑就会被放置得太靠左了。我怎样才能让墓碑与右侧齐平?(添加&
或\hfill
无效。)MWE:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{amsthm} % for \proof & \qedhere
\newtheorem{thm}{Theorem}
\begin{document}
\begin{thm} Theorem-statement.
\begin{proof}
\begin{align*}
a&=b\tag{by some earlier result}\\
&=c\\
&=d\qedhere
\end{align*}
\end{proof}
\end{thm}
\end{document}
答案1
在编号或标记环境中发出的命令\qedhere
实际上不起作用(我认为这与其他缺陷有关,\qedhere
例如align* 环境中的 \qedhere 导致 QED 符号位置错误)。
这是一个 hack:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{amsthm} % for \proof & \qedhere
\usepackage{showframe} % just for showing the bounding box
\newtheorem{thm}{Theorem}
\makeatletter
\newcommand{\altqedhere}{%
\ifmeasuring@\else\sbox0{\popQED}\fi
\tag*{\qedsymbol}%
}
\makeatother
\begin{document}
\begin{thm}
Theorem-statement.
\end{thm}
\begin{proof}
\begin{align*}
a&=b\tag{by some earlier result}\\
&=c\\
&=d\qedhere
\end{align*}
\end{proof}
\begin{proof}
\begin{align*}
a&=b\tag{by some earlier result}\\
&=c\\
&=d\altqedhere
\end{align*}
\end{proof}
\end{document}
注意proof
应该是外部环境thm
。
由于\popQED
里面有一个未使用的盒子,我们amsthm
以为墓碑已经被使用过了。