10

To get tighter line spacing (my document's main spacing is 1.5-spacing, and I'm using memoir), I normally use a self-defined "tight list" (tightlist in the code below). This works well. However I would like the list's spacing to the text above and below to be identical to the ordinary (here: 1.5) line spacing, that is I would like the list to behave like a vertical line-like atom with respect to the rest of the document.

In the following document

\documentclass{memoir}

\OnehalfSpacing

\newenvironment{mytightlist}[3]{%
  % noticeably tighter than the memoir class's tightlist facilities
  \begin{Spacing}{1}%
  \begin{list}{#1}{%
    \setlength{\topsep}{0pt}%
    \setlength{\parskip}{0pt}%
    \setlength{\parsep}{0pt}%
    \setlength{\itemsep}{0pt}%
    \setlength{\leftmargin}{#2}%
    \setlength{\labelwidth}{#3}%
    \setlength{\labelsep}{0.5em}%
  }%
}%
{\end{list}\end{Spacing}}


\begin{document}

Text. HHHHHHHHHH

Text. HHHHHHHHHH

\begin{mytightlist}{\(\bullet\)}{1.5em}{0.5em}
\item Text. HHHHHHHHHH
\item Text. HHHHHHHHHH
\end{mytightlist}

Text. HHHHHHHHHH

Text. HHHHHHHHHH

\end{document}

the spacing within line pairs 2/3 and 4/5 is slightly less than the intended spacing, namely that found within line pairs 1/2 and 5/6. Why? How can one fix this?

Btw, I don't care about whether a list "belongs" to a paragraph around it: for me, such spacing should be uniform. ("LaTeX goes to a lot of effort to distinguish in-paragraph lists from end- or start-of-paragraph lists"; comment (quoted approximately) by David Carlisle)

Using the MySpacing environment from this answer to a related question about spacing around blocks instead of Spacing doesn't do the trick in this context.

4
  • i've processed your test file, extended it a bit to look at multi-line paragraphs, printed it out, and measured carefully. i don't see any difference in the interline or inter-paragraph spacing except within the list block. this may be a version difference; i'm still working with (the original) tex live 2012 and can supply version numbers if desired. Jun 8, 2013 at 15:52
  • @barbarabeeton Thanks for testing! In addition to compiling it on my present machine (pdfTeX, Version 3.1415926-2.4-1.40.13 (MiKTeX 2.9 64-bit)), I've pasted the code into the LaTeX-Online-Compiler V0.2 of the Martin-Luther-Universität Halle-Wittenberg. The compiler there uses pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian). I need to look at it at a large magnification level (1600% will do) to notice that lines 2&3 are about 7% closer than lines 1&2. Jun 9, 2013 at 5:58
  • What about just changing the spacing after opening the list?
    – Tobias
    Jul 4, 2013 at 5:31
  • @Tobias Good idea! This will cause an extraneous empty line, like here, but this is easily fixed by writing \end{Spacing}\vspace*{0pt}\end{list} in the environment finalization code. Unfortunately the spacing between lines 4/5 will then be (visually/roughly at least) identical to that between lines 3/4. Jul 4, 2013 at 10:53

3 Answers 3

3
+100

You're using different baselineskips and you don't take care of this aspect.

\documentclass{memoir}

\newlength{\tightlisttopsep}
\AtBeginDocument{
  \setlength{\tightlisttopsep}{-\baselineskip}
  \addtolength{\tightlisttopsep}{\fontchardp\font`j}% a descender
  \addtolength{\tightlisttopsep}{.15pt} % some overshoot
  \OnehalfSpacing
  \addtolength{\tightlisttopsep}{.7\baselineskip}% height of strut
  % Show the baselines
  \edef\myrule{\noexpand\smash{\vrule depth\the\baselineskip\kern-.4pt}}
}

\newenvironment{mytightlist}[3]{%
  % noticeably tighter than the memoir class's tightlist facilities
  \begin{Spacing}{1}%
  \begin{list}{#1}{%
    \setlength{\topsep}{\tightlisttopsep}%
    \setlength{\parskip}{0pt}%
    \setlength{\parsep}{0pt}%
    \setlength{\itemsep}{0pt}%
    \setlength{\leftmargin}{#2}%
    \setlength{\labelwidth}{#3}%
    \setlength{\labelsep}{0.5em}%
  }%
}%
{\end{list}\end{Spacing}}


\begin{document}

1. HHHHHHHHH\myrule H

2. HHHHHHHHHH\myrule

\begin{mytightlist}{\(\bullet\)}{1.5em}{0.5em}
\item 3. HHHHHHHHHH
\item 4. \myrule HHHHHHHHHH
\end{mytightlist}

5. HHHHHHHHHH

6. HHHHHHHHHH

\end{document}

This is without hope if the mytightlist is used when a different font size is in force, because the settings are made just for the standard size.

The result is surely poor typography, in my opinion.

enter image description here

9
  • How does the ideal typographic relationship of bulleted lists with paragraphs above and below look like, in your opinion? Any opinions, rambling, and detours are appreciated. Perhaps you could give an opinion for both a "uniform spacing throughout" case and a "paragraphs are required to be 1.5-spaced" case. Jul 4, 2013 at 22:04
  • @LoverofStructure Typography ≠ 1.5 spacing. And this kind of tight spacing in a sea of wide spacing is horrible. Give it more room before and below, rather than the same as normal interline spacing.
    – egreg
    Jul 4, 2013 at 22:05
  • Well, I'm definitely with you on that (as I say elsewhere), though I must admit that I now find that text with a lot of in-paragraph math can benefit from >1-spacing (not "1.5-spacing" though, which I think translates to something like a 1.3 spacing parameter in memoir). In any case, (La)TeX does a certain thing when it comes to lists in between paragraph text, and I find its default spacing too wide (this is a very strong opinion on mine). So I really am interested in what your opinion on this general situation is, assuming something like single-spacing for the main body. Jul 4, 2013 at 22:07
  • 1
    @LoverofStructure 10/15.6 is definitely too spaced. Depending on the font, 10/13 or 10/13.5 might do; 10/14 is already too much, I believe.
    – egreg
    Jul 4, 2013 at 22:09
  • And how would you embed lists in paragraph text? I'm asking about the spacing just before and after the list and the line-spacing within the list (which I think should be identical or might even be tighter)? Jul 4, 2013 at 22:10
2
+50

As to why it exists, I can't say. As to how to fix it (at least for your MWE), I add a symmetric \vspace of .049\baselineskip before and after the environment.

\documentclass{memoir}
\def\vertoffset{.049\baselineskip}

\OnehalfSpacing

\newenvironment{mytightlist}[3]{%
  % noticeably tighter than the memoir class's tightlist facilities
  \begin{Spacing}{1}%
  \begin{list}{#1}{%
    \setlength{\topsep}{0pt}%
    \setlength{\parskip}{0pt}%
    \setlength{\parsep}{0pt}%
    \setlength{\itemsep}{0pt}%
    \setlength{\leftmargin}{#2}%
    \setlength{\labelwidth}{#3}%
    \setlength{\labelsep}{0.5em}%
    \vspace{\vertoffset}%
  }%
}%
{\end{list}\vspace{\vertoffset}\end{Spacing}}


\begin{document}

Text. HHHHHHHHHH

Text. HHHHHHHHHH

\begin{mytightlist}{\(\bullet\)}{1.5em}{0.5em}
\item Text. HHHHHHHHHH
\item Text. HHHHHHHHHH
\end{mytightlist}

Text. HHHHHHHHHH

Text. HHHHHHHHHH

\end{document}
6
  • I initially thought it might have something to do with the height of the \strutbox, but I could find no obvious connection. In the end, I brute forced it. Perhaps .049\baselineskip which is 0.73494pt for this case, will jog someone's memory on a "lost" dimension. Jun 25, 2013 at 13:43
  • Did you determine the value 0.049\baselineskip manually (by trial/error/adjustment)? Jun 27, 2013 at 8:48
  • @LoverofStructure: Yes, at 2600% magnification Jul 1, 2013 at 9:44
  • Interesting how adding vertical space symmetrically seems to work. I'm also wondering what a more generally applicable solution is (one that is proven to work everywhere). Bounty well deserved! I'll reopen a larger one now. Jul 1, 2013 at 19:59
  • @LoverofStructure Thanks. I agree that the symmetrical nature of the "fix" just screams something important. But I just can't tell you what. Jul 1, 2013 at 20:02
2

Reading your question I am not sure if you want also a 1.5 within the list environment. If this matter, then the fix of Steven is not complete since spacing between normal text lines items is15pt whereas between items is only 12pt.

My attempt to fix both problems is simply change two of the \setlenghts of your macro to:

\setlength{\topsep}{.7pt}% 
\setlength{\itemsep}{3pt}%

To see how good is this fix, an easy test is that \vspace{-15pt} after some line or item must produce a perfect overlapping with the next line or item. In the next image I used some \phantom spaces in overlapping lines and red color in the whole overlapped line-item to check it better. At 400% this is the output:

MWE

The source code to test yourself:

\documentclass{memoir}
\usepackage{xcolor}
\OnehalfSpacing

\newenvironment{mytightlist}[3]{%
  % noticeably tighter than the memoir class's tightlist facilities
  \begin{Spacing}{1}%
  \begin{list}{#1}{%
    \setlength{\topsep}{.7pt}% .1ex
    \setlength{\parskip}{0pt}%
    \setlength{\parsep}{0pt}%
    \setlength{\itemsep}{3pt}%
    \setlength{\leftmargin}{#2}%
    \setlength{\labelwidth}{#3}%
    \setlength{\labelsep}{0.5em}%
  }%
}%
{\end{list}\end{Spacing}}


\begin{document}


Text. {\color{red}HHHHHHHHHH (1-2 li\vspace{-15pt}}

Text. HHHHHHHHHH \phantom{(1-2 li}ne)

Text. HHHHHHHHHH (3 line)

Text. {\color{red}HHHHHHHHHH (4-1 line \vspace{-15pt}}

\begin{mytightlist}{\(\bullet\)}{1.5em}{.5em}
\item Text. HHHHHHHHHH  \phantom{(4-1 line}item) 
\item Text. HHHHHHHHHH (2 item) 
\item {\color{red}Text. HHHHHHHHHH (3-4 it}\vspace{-15pt}
\item Text. HHHHHHHHHH \phantom{(3-4 it}em) 
\item Text. HHHHHHHHHH (5 item)
\item {\color{red}Text. HHHHHHHHHH (6-1 item\vspace{-15pt}}
\end{mytightlist}

Text. HHHHHHHHHH \phantom{(6-5 item}line)

Text. HHHHHHHHHH (6 line)

Text. {\color{red}HHHHHHHHHH (7-8 li\vspace{-15pt}}

Text. HHHHHHHHHH \phantom{(7-8 li}ne)

\end{document}
1
  • Within the list I want single spacing, but thanks for your contribution and approach! Jul 8, 2013 at 22:34

You must log in to answer this question.

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