3

I'm using Memoir and \abnormalparskip{<length>}.

Every time I start a new \begin{quote}, the space between paragraphs gets smaller and smaller until it's basically gone.

Here is a minimal test case:

\documentclass{memoir}

\setlength{\parindent}{0em}
\abnormalparskip{1em}

\begin{document}

This is a a normal paragraph. It will space correctly from the next.

This is the second paragraph to show how it is spaced correctly.

\begin{quote}

  This is the first paragraph in a quote. It is not spaced right.

  This paragraph is spaced smaller than the one before it.

  \begin{quote}

    This is yet another paragraph.

    Now you can see the spacing is gone.

  \end{quote}

\end{quote}

\end{document}

Which results in this:

results

How do get it so that the paragraph skip is consistently the same size?

  • 2
    That's by design. quote is a list, and nested lists have smaller \parsep (which is used as \parskip in the list). You would have to redefine the \@listi, \@listii etc commands to change this. Or reset \parskip inside the quote enviroment. – Ulrike Fischer Jun 17 '15 at 16:43
3

As Ulrike Fischer mentions in her comment, one option is to change \parskip inside the list internally used by quote; for consistency's sake, the same modification will be required for the quotation environment. The following example code shows the necessary redefinitions:

\documentclass{memoir}

\setlength{\parindent}{0em}
\newlength\myparskip
\setlength\myparskip{1em}
\abnormalparskip{\myparskip}

\makeatletter
\renewenvironment{quote}%
  {\list{}{\rightmargin\leftmargin}%
  \parskip=\myparskip\item[]}%
  {\endlist}
\renewenvironment{quotation}%
  {\list{}{\listparindent 1.5em%
    \itemindent    \listparindent
    \rightmargin   \leftmargin
    \parsep        \z@ \@plus\p@}%
    \parskip=\myparskip\item[]}%
  {\endlist}
\makeatother


\begin{document}

This is a a normal paragraph. It will space correctly from the next.

This is the second paragraph to show how it is spaced correctly.

\begin{quote}

  This is the first paragraph in a quote. It will space correctly from the next.

  This is the second paragraph to show how it is spaced correctly.

  \begin{quote}

    This is another paragraph in a quote. It will space correctly from the next.

    This is the second paragraph to show how it is spaced correctly.

    \begin{quote}

      This is yet another paragraph in a quote. It will space correctly from the next.

      This is the second paragraph to show how it is spaced correctly.

    \end{quote}
  \end{quote}
\end{quote}

\end{document}

The result:

enter image description here

| improve this answer | |
1

As it can be deduced from the name given to \abnormalparskip, the author of the memoir class doesn't like documents with a nonzero \parskip. And I heartily agree with him.

If you want your document to be as ugly as possible (and possibly uglier), here's how you can do.

\documentclass{memoir}

\setlength{\parindent}{0em}
\abnormalparskip{1em}

\makeatletter
\renewcommand*{\list}[2]{%
  \ifnum \@listdepth >5\relax
    \@toodeep
  \else
    \global\advance\@listdepth\@ne
  \fi
  \rightmargin\z@
  \listparindent\everylistparindent
  \itemindent\z@
  \csname @list\romannumeral\the\@listdepth\endcsname
  \def\@itemlabel{#1}%
  \let\makelabel\@mklab
  \@nmbrlistfalse
  #2\relax
  \@trivlist
  \ifm@mnzpskip
    \parsep=\parskip
  \else
    \parskip\parsep
  \fi
  \parindent\listparindent
  \advance\linewidth -\rightmargin
  \advance\linewidth -\leftmargin
  \advance\@totalleftmargin \leftmargin
  \parshape \@ne \@totalleftmargin \linewidth
  \ignorespaces}
\makeatother


\begin{document}

This is a a normal paragraph. It will space correctly from the next.

This is the second paragraph to show how it is spaced correctly.

\begin{quote}

  This is the first paragraph in a quote. It is not spaced right.

  This paragraph is spaced smaller than the one before it.

  \begin{quote}

    This is yet another paragraph.

    Now you can see the spacing is gone.

  \end{quote}

\end{quote}

\end{document}

enter image description here

Instead of fully copying the definition of \list and modifying it, a quicker patch is possible.

\documentclass{memoir}
\usepackage{etoolbox}

\setlength{\parindent}{0em}
\abnormalparskip{1em}

\makeatletter
\patchcmd{\list}
 {\parskip\parsep}
 {\ifm@mnzpskip\parsep\parskip\else\parskip\parsep\fi}
 {}{}
\makeatother


\begin{document}

This is a a normal paragraph. It will space correctly from the next.

This is the second paragraph to show how it is spaced correctly.

\begin{quote}

  This is the first paragraph in a quote. It is not spaced right.

  This paragraph is spaced smaller than the one before it.

  \begin{quote}

    This is yet another paragraph.

    Now you can see the spacing is gone.

  \end{quote}

\end{quote}

\end{document}
| improve this answer | |
  • I've read the documentation on \abnormalparskip and while I agree in most contexts, it works well in my current context. That said, your solution seems not as clean as the other one here. – sdegutis Jun 17 '15 at 19:42
  • @sdegutis To the contrary: it preserves the \parskip in every environment based on \list, not just quote or quotation. – egreg Jun 17 '15 at 19:43
  • Oh that's neat. Although I only use quote. – sdegutis Jun 17 '15 at 19:48
  • I like your patch, it seems cleaner. – sdegutis Jun 17 '15 at 20:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.