# Proper way of vertical spacing before/after environments

I am trying to typeset my thesis. I have to put predefined vertical space before and after some specific environments like equation and table. Since there are many instances of these environments I do not want to put space manually. I also do not want to define a new environment like

\newenvironment{equ$$}{$$\vspace{1cm}$$}{$$\vspace{15mm}}


I think the above approach is ugly. I think I have to redefine the environments but

\renewenvironment{equation$$}{$$\vspace{1cm}$$}{$$\vspace{15mm}}


does not work. What is the best way of setting space before and after some specific environments?

UPDATE

I found a solution.

-
your redefinition does not work because you're nesting the environment you're redefining into its definition (equation)... besides both examples have the same definition... –  henrique Jul 7 '11 at 23:18
@henrique If I can find a way to shut down or suspend recursion, my problem will be solved. I think that this is a very basic problem but I cannot find any solution. And yes both examples have the same definition because that is what I want to accomplish. –  memin Jul 7 '11 at 23:46
I don't know if I understand what you mean by that... I suggest you check your class file to see how the equation environment is defined and then redefine it to add space (actually, the first approach seems ok). You can't define an environment that relies on itself. –  henrique Jul 8 '11 at 1:10
I am not experienced on these kind of modifications so I did not want to delve deeper into the code. I solved the problem for now using \let and \renewenvironemnt. But I will keep your approach in my mind for future reference. –  memin Jul 8 '11 at 2:03
Instead of an explicit \vspace{1cm} normally you should use one of the three standard LaTeX macros \smallskip, \medskip and \bigskip (or multiple of them). They are designed to fit the font size. However, I see that you are required to add a specific amount. In that case you shouldn't wonder when the result doesn't look good. –  Martin Scharrer Jul 8 '11 at 7:37

Try

\setlength{\abovedisplayskip}{1cm}
\setlength{\belowdisplayskip}{1cm}


You have to place these inside the document, i.e. after \begin{document} and before \end{document}.

You may further refer to http://www.eng.cam.ac.uk/help/tpl/textprocessing/squeeze.html

-
Thank you for the answer, but this can be only used for the equation and its float equivalent \abovecaptionskip seems to be modifying caption space. I generated a solution using the approach at the bottom of the same page. However, I cannot post the answer right now because of the time limitation. –  memin Jul 8 '11 at 1:58
I find that this works fine before \begin{document} as well. –  Andrew Mao Jan 31 '14 at 20:35

I find a solution to the problem. Now I am using the following code:

\let\oldequation=\equation
\let\endoldequation=\endequation
\renewenvironment{equation}{\vspace{1cm}\begin{oldequation}}{\end{oldequation}\vspace{15mm}}


It is still ugly but it does the job and there are still equation environments present in the document. This also works for tables. However this code does not work if I remove the second line. I do not understand why it does not.

-
The reason the second line is needed is that your \begin{oldequation}...\end{oldequation} expands to roughly \oldequation...\endoldequation. The first two lines define thes two commands. –  Andrew Swann May 15 at 9:30