19

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}\begin{equation}}{\end{equation}\vspace{15mm}}

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

\renewenvironment{equation}{\vspace{1cm}\begin{equation}}{\end{equation}\vspace{15mm}}

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

UPDATE

I found a solution.

7
  • 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
    Commented Jul 7, 2011 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
    Commented Jul 7, 2011 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
    Commented Jul 8, 2011 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
    Commented Jul 8, 2011 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. Commented Jul 8, 2011 at 7:37

2 Answers 2

16

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

2
  • 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
    Commented Jul 8, 2011 at 1:58
  • I find that this works fine before \begin{document} as well.
    – Andrew Mao
    Commented Jan 31, 2014 at 20:35
4

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.

1
  • 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. Commented May 15, 2015 at 9:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .