0

I am setting a document in 2 columns via the multicol-package. It is a newspaper-like document.

How can I force LaTeX to–ideally–remove as much extra-added vertical rubber space, which is used to make "consistent" looking line breaks and vertical spacing between paragraphs on one page?

All the while that spacing might look alright and good for that one section, it seems to be noticeably different in other sections. This is somewhat... meh. Not the best look, honestly.

So far I only found this code:

\everypar=\expandafter{\the\everypar\loosness=-1}
\linepenalty=1000

(Note: I am aware that it is literally impossible sometimes unless I were to use floats, but they are super tricky–if not impossible–to use in multicol-environments... I think (based on reading threads right here on TeX.sx. So I would just like to try something else regardless.)

MWE

\documentclass[
11pt,
a4paper,
false-,
]
{scrartcl}

\usepackage{ lmodern, multicol, blindtext, mdframed, }

\usepackage[svgnames]{xcolor}

\usepackage[T1]{fontenc} \usepackage[utf8]{inputenc}

\listfiles

\begin{document} \begin{center}\huge Title stuff \end{center}

\begin{multicols*}{2} \section{Word}

There really are some words. And then some. AAaaaa bbbb cccc.

Now here is something interesting: {asdf}.

\blindtext[1]

\begin{center} \rule{\columnwidth}{10pt} \end{center}

Some words to form a sentence. There really are some words. And then some.

%\addvspace{2ex}% There really are some words. And then some.

\begin{center}\color{DarkBlue} \rule{\columnwidth}{10pt} \end{center}

\blindtext[1]

\everypar=\expandafter{\the\everypar\loosness=-1} \linepenalty=1000

\begin{center} \fbox{ \begin{minipage}[t]{0.5\columnwidth} 1 - Some stuff. Words and such. There really are some words. And then some.

There really are some words. And then some. \end{minipage} } \end{center}

\blindtext[1]

\begin{center} \fbox{ \begin{minipage}[t]{0.5\columnwidth} 2 - Some stuff. Words and such. %There really are some words. %And then some.

There really are some words. And then some. \end{minipage} } \end{center}

\blindtext[1]

\end{multicols*} \end{document}

Screenshots of MWE

enter image description here

enter image description here

henry
  • 6,594
  • 1
    Hi! Not sure what you want to change. center environment adds vertical spaces, maybe you can try to use \par{\centering "whatever"\par} instead? – Rmano Apr 05 '21 at 18:16
  • 1
    Try \raggedbottom. The default\flushbottommakes all pages/columns end at the same vertical position on the typeset page by adjusting the vertical space between paragraphs, etc.\raggedbottom` makes no changes to the vertical spacing. – Peter Wilson Apr 05 '21 at 18:59
  • 2
    what do you want \everypar=\expandafter{\the\everypar\loosness=-1} to do??? it is ... unusual code but it affects line breaking not the inter-paragraph space taht is the subject of your question. – David Carlisle Apr 05 '21 at 21:46
  • @DavidCarlisle I hoped it would help. – henry Apr 05 '21 at 22:01
  • 1
    it has no effect on inter-paragraph space at all – David Carlisle Apr 05 '21 at 22:10
  • Sometimes it's more effective to add a line to a paragraph to optimize the number of lines in a column. In that case, \looseness=1 is what you want, not -1. This is very hard (if not nearly impossible) to decide automatically. – barbara beeton Apr 06 '21 at 01:42

1 Answers1

1

As far as I can tell you are mainly asking about space above and below center which is \partopsep if it is between paragraphs or \topsep otherwise. Setting this to 0pt produces

enter image description here

\documentclass[
11pt,
a4paper,
%%%% ? false-,
]
{scrartcl}

\setlength\partopsep{0pt} \setlength\topsep{0pt}

\usepackage{ lmodern, multicol, blindtext, mdframed, }

\usepackage[svgnames]{xcolor}

\usepackage[T1]{fontenc} % not needed unless your latex is old \usepackage[utf8]{inputenc}

\listfiles

\begin{document} \begin{center}\huge Title stuff \end{center}

\begin{multicols*}{2} \section{Word}

There really are some words. And then some. AAaaaa bbbb cccc.

Now here is something interesting: {asdf}.

\blindtext[1]

\begin{center} \rule{\columnwidth}{10pt} \end{center}

Some words to form a sentence. There really are some words. And then some.

%\addvspace{2ex}% There really are some words. And then some.

\begin{center}\color{DarkBlue} \rule{\columnwidth}{10pt} \end{center}

\blindtext[1]

% commented out as it is too weird %\everypar=\expandafter{\the\everypar\loosness=-1} %\linepenalty=1000

\begin{center} \fbox{ \begin{minipage}[t]{0.5\columnwidth} 1 - Some stuff. Words and such. There really are some words. And then some.

There really are some words. And then some. \end{minipage} } \end{center}

\blindtext[1]

\begin{center} \fbox{ \begin{minipage}[t]{0.5\columnwidth} 2 - Some stuff. Words and such. %There really are some words. %And then some.

There really are some words. And then some. \end{minipage} } \end{center}

\blindtext[1]

\end{multicols*} \end{document}

David Carlisle
  • 757,742
  • Not only this particular environment. The global document option was missing parskip= before the false-. Sorry about that. I think I should delete my question and try to rework it. The underlying issue (not really a "problem" per se) is real, it's just... I can't for the life of me figure out how to create an MWE which reproduces some kind of magical vertical rubber spacing between paragraphs. I do not use setstretch. There is \singlespacing right before \begin{document}. Hm. – henry Apr 05 '21 at 22:13
  • @henry if you have stretchy space between paragraphs (and flushbottom in effect) the paragraph space will stretch if the page is short and that will be because there is a large unbreakbale box at the top of the next page. – David Carlisle Apr 05 '21 at 22:16