10

I am trying to make LaTeX put no additional space between theorem and proof. Here is my code:

\newtheorem*{pr3}{Theorem}
\begin{pr3}
   foo                                             
\end{pr3}
\begin{proof}[Proof:]
   bar
\end{proof}

Is there a way to do that only with amsthm/amsmath and how? I wanted to renewenvironment proof, however I couldn't find what is the best way to do that. So it would be great if someone can tell me where I can find such information (that could also be considered answer to the first question).

Werner
  • 603,163

2 Answers2

10

You probably don't want to remove the space after the proof, so the way should be

\makeatletter
\renewenvironment{proof}[1][\proofname]{\par
  \vspace{-\topsep}% remove the space after the theorem
  \pushQED{\qed}%
  \normalfont
  \topsep0pt \partopsep0pt % no space before
  \trivlist
  \item[\hskip\labelsep
        \itshape
    #1\@addpunct{.}]\ignorespaces
}{%
  \popQED\endtrivlist\@endpefalse
  \addvspace{6pt plus 6pt} % some space after
}
\makeatother

However a proof environment not preceded by a theorem will be typeset wrongly.

egreg
  • 1,121,712
  • I didn't want to use negative vspace however as it is not constant like in the other answer, I think that this will do. Thanks. – Ivaylo Petrov Aug 14 '12 at 12:44
1

You could put a negative vertical space between theorem and proof, like so:

\newtheorem*{pr3}{Theorem}
\begin{pr3}
   foo                                             
\end{pr3}
\vspace{-1.5em}
\begin{proof}[Proof:]
   bar
\end{proof}

and you could wrap all into a new command \theoremproof{theorem body}{proof body}.

K3---rnc
  • 111