4

I have 2 columns of text, with most text in regular size, and few paragraphs in smaller size. I'd like to have the line spacing (roughly) uniform - that every line in the left size will match a line at the right size, even if they're at different sizes.

See this screenshot: screenshot

The first 4 red markers match lines of same text size, and the line spacing is such that the lines are proportional.

However, with next red markers, we see the lines start to get far away.

It can be improved by adding \linespread{1.2} (not exact value) before the paragraph, and returning to regular linespread after - but I don't like this solution. There must be a better way...

Here's my code:

\documentclass{book}

\usepackage{parskip}
\usepackage{multicol}

\newcommand{\bigA}[1]{\textbf{\large{#1}}}
\newcommand{\regularA}[1]{\normalsize{#1}}
\newcommand{\smallA}[1]{\small{#1}}

\newcommand{\bigB}[1]{\textbf{\normalsize{#1}}}
\newcommand{\regularB}[1]{\small{#1}}
\newcommand{\smallB}[1]{\footnotesize{#1}}

\begin{document}
\begin{multicols}{2}

% base paragraph, almost all others are copy-pase of this
\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

% Here's the smaller paragraph
\bigB{Lorem} \regularB{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallB{Mauris dapibus pulvinar ornare.}

% from now on, back to `base'
\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\end{multicols}

\end{document}

EDIT

If I understand correctly, the line spacing is proportional to the text size, so a paragraph with smaller text size would get smaller line spacing. I want a paragraph with small text size to get bigger line spacing, so it would match up with the 'regular' paragraphs.

In other words, if a 'regular' paragraph (normal size) of n lines takes x cm, I would like also a 'small text size' paragraph of n lines to take x cm.

3
  • When you change font sizes, you typically also change line spacing. Please tell us what your preferred line spacing would look like?
    – Mico
    Commented Apr 1, 2016 at 6:46
  • @Mico, I've answered your question in my edit now
    – Zvika
    Commented Apr 1, 2016 at 7:23
  • Thanks. I've posted an answer that shows how to make the line spacing independent of the font size.
    – Mico
    Commented Apr 1, 2016 at 7:36

1 Answer 1

4

When one changes font sizes, one usually also changes the line spacing in order to achieve a roughly uniform "average greyness" of the text material. Since that's not what you want here, you need to provide custom versions of \large, \normalsize, \small, and \footnotesize which keep the line spacing constant. In the code below, macros named \mylarge, \mynormalsize, \mysmall, and \myfootnotesize are set up for this purpose. Their common property is the use of a baselineskip of 12pt; feel free to change this value to suit your purposes.

For good measure, you will probably also want to provide the instruction \raggedcolumns after \begin{multicols}{2}.

\documentclass{book}  
\usepackage{parskip,multicol}

\newcommand\mylarge{\fontsize{12}{12}\selectfont}
\newcommand\mynormalsize{\fontsize{10}{12}\selectfont}
\newcommand\mysmall{\fontsize{9}{12}\selectfont}
\newcommand\myfootnotesize{\fontsize{8}{12}\selectfont}

\newcommand{\bigA}[1]{\textbf{\mylarge #1}}
\newcommand{\regularA}[1]{\mynormalsize #1}
\newcommand{\smallA}[1]{\mysmall #1}

\newcommand{\bigB}[1]{\textbf{\mynormalsize #1}}
\newcommand{\regularB}[1]{\mysmall #1}
\newcommand{\smallB}[1]{\myfootnotesize #1}

\begin{document}
\begin{multicols}{2}
\raggedcolumns

% base paragraph, almost all others are copy-pase of this
\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

% Here's the smaller paragraph
\bigB{Lorem} \regularB{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallB{Mauris dapibus pulvinar ornare.}

% from now on, back to `base'
\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}

\bigA{Lorem} \regularA{ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt. Mauris dapibus pulvinar ornare.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius nisl sed enim consectetur, eu tempor libero cursus. Nulla at enim nunc. Duis vitae nibh erat. Nulla facilisi. Nunc eget ornare velit. Ut porta sed libero non tincidunt.} \smallA{Mauris dapibus pulvinar ornare.}
\end{multicols}

\end{document} 
1
  • in case the larger \bigA glyph at the top of a page causes the baselines to start out uneven from the top, the approach in this answer Consolidating start of page might be helpful. Commented Apr 1, 2016 at 16:31

You must log in to answer this question.

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