6

Firstly I'm very sorry because this question was in fact answered already. I only have a question to the following answer and I'm not allowed to comment there directly: https://tex.stackexchange.com/a/24197/73704

I liked this response and Leo's small example worked perfectly. Unfortunately, the document I use is quite big and has already a parskip defined (it should stay in there).

I adjusted his example to fit my scenario and the problem becomes visible: there is a vertical space after "foo".

\documentclass{article}

\parskip1.5ex plus0.5ex minus0.5ex

\newenvironment{tightcenter}{%
  \setlength\topsep{0pt}
  \setlength\parskip{0pt}
  \begin{center}
}{%
  \end{center}
}

\begin{document}
text text text text text text text text text text text text text text text text text text text text text text text text
\begin{tightcenter}
foo
\end{tightcenter}
text text text text text text text text text text text text text text text text text text text text text text text text

\end{document}

Does anybody know why this problem appears and how it can be solved?

Bryan Elrod
  • 123
  • 1
  • 7
  • 2
    Welcome to TeX-SX! In fact asking a new question is exactly how it should be done, so no worries. We don't have follow-up commenting in the answers area usually so this is much better for a specific focus. – percusse Mar 07 '15 at 13:33

2 Answers2

5

Maybe something like this though I'm not sure it is the best solution.

The center environment adds vertical space, whereas \centering does not. TeX reads a newline as a space so the newline after the end of the environment causes the next line to look partially indented as a space is added. Commenting the newline avoids this issue.

\documentclass{article}

\parskip1.5ex plus0.5ex minus0.5ex

\newenvironment{tightcenter}{%
  \setlength\topsep{0pt}%
  \setlength\parskip{0pt}%
  \par\centering}{\par\noindent\ignorespacesafterend}

\begin{document}
  text text text text text text text text text text text text text text text text text text text text text text text text
  \begin{tightcenter}
    foo
  \end{tightcenter}
  text text text text text text text text text text text text text text text text text text text text text text text text
\end{document}

centred line

EDIT Avoid need for % signs thanks to karlkoeller's suggestion.

cfr
  • 198,882
1

This is a nice example why \parskip should not be touched. ;-)

Let's abuse display math mode.

\documentclass{article}

\newlength{\normalparskip}
\AtBeginDocument{%
  \setlength{\normalparskip}{1.5ex plus0.5ex minus0.5ex}%
  \setlength{\parskip}{\normalparskip}%
}

\newenvironment{tightcenter}{%
  \setlength\abovedisplayskip{0pt}
  \setlength\abovedisplayshortskip{0pt}
  \setlength\belowdisplayskip{0pt}
  \setlength\belowdisplayshortskip{0pt}
  $$
  \begin{minipage}[t]{\textwidth}\centering
}{%
  \unskip\strut\par
  \end{minipage}
  $$
}

\begin{document}

text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text
\begin{tightcenter}
foo\\
foo
\end{tightcenter}
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text

text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
\end{document}

enter image description here

egreg
  • 1,121,712