如何在校样末尾画一条水平线?我使用\begin{proof}....\end{proof}
。
我使用的amsthm
包没有经过任何修改。
答案1
您可以修补\endproof
(环境的结束宏proof
)以自动插入水平线。以下修补程序通过以下方式提供:etoolbox
:
\documentclass{article}
\usepackage{amsthm,etoolbox}% http://ctan.org/pkg/{amsthm,etoolbox}
\patchcmd{\endproof}% <cmd>
{\endtrivlist}% <search>
{\endtrivlist\par\nobreak\vspace*{\dimexpr-\baselineskip-\parskip}\nobreak\noindent\hrulefill}% <replace>
{}{}% <succes><failure>
\begin{document}
\begin{proof}
Here is a proof.
\end{proof}
\end{document}
补丁程序删除了结束后的垂直跳过proof
,并\nobreak
与水平线(\hrulefill
)一起插入,以便它们不会被分页符分隔。
答案2
这是另一个选项,这次使用thmtools
包作为前端amsthm
:
\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{lipsum}% just to generate text for the example
\let\proof\relax
\let\endproof\relax
\declaretheoremstyle[
spaceabove=6pt, spacebelow=6pt,
numbered=no,
headfont=\normalfont\itshape,
notefont=\mdseries, notebraces={(}{)},
bodyfont=\normalfont,
postheadspace=1em,
prefoothook=\vspace*{\dimexpr-\baselineskip+\topsep\relax}\endgraf\nobreak\noindent\hrulefill
]{mystyle}
\declaretheorem[style=mystyle]{proof}
\begin{document}
\begin{proof}
\lipsum*[2]
\end{proof}
\end{document}
答案3
例如:
\documentclass{article}
\begin{document}
\def\qed{\hrulefill}
\newtheorem{theorem}{Theorem}
\begin{theorem}
2+2=4.
\qed
\end{theorem}
\end{document}