In common with the standard article
class, memoir
only sets up a full set of size parameters for some of the available sizes. If you switch to \tiny
for example the list parameters are not changed so the list gets the prevailing settings, which are the ones for normalsize here as all the changes are in local groups, but if you switch from \footnotesize
to \tiny
you would get the footnotesize settings in the tiny list.
Some aspects are tied to the font size, such as the linespacing and bullet etc, but the spacing between items and before and after lists is not specified at most font changes.
The relevant code is copied below, it is the setting (or not) of \@listi
for first level lists that is of interest here.
\ProvidesFile{mem12.clo}%
[2010/10/19 v0.4b memoir class 12pt size option]
\renewcommand{\normalsize}{%
\@setfontsize\normalsize\@xiipt{14.5}%
\abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI}
\normalsize
\newcommand{\small}{%
\@setfontsize\small\@xipt{13.6}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 9\p@ \@plus3\p@ \@minus5\p@
\parsep 4.5\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep
%% \itemindent\z@
}%
\belowdisplayskip \abovedisplayskip
}
\newcommand{\footnotesize}{%
\@setfontsize\footnotesize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 6\p@ \@plus2\p@ \@minus2\p@
\parsep 3\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep
%% \itemindent\z@
}%
\belowdisplayskip \abovedisplayskip
}
\newcommand*{\miniscule}{\@setfontsize\miniscule\@viipt{8}}
\newcommand*{\tiny}{\@setfontsize\tiny\@viiipt{9.5}}
\newcommand*{\scriptsize}{\@setfontsize\scriptsize\@ixpt\@xpt}
\newcommand*{\large}{\@setfontsize\large\@xivpt{18}}
\newcommand*{\Large}{\@setfontsize\Large\@xviipt{22}}
\newcommand*{\LARGE}{\@setfontsize\LARGE\@xxpt{25}}
\newcommand*{\huge}{\@setfontsize\huge\@xxvpt{30}}
\ifextrafontsizes
\newcommand*{\Huge}{\@setfontsize\Huge\@xxxpt{37}}
\newcommand*{\HUGE}{\@setfontsize\HUGE\@xxxvipt{45}}
\else
\let\Huge=\huge
\let\HUGE=\huge
\fi
So it's expected that some sizes handle lists more completely, however \tightlists
compounds the problem by setting list settings to 0pt
via setting for example)
\itemsepi
to 0. This means that the sizes that do not customise lists get the tight spacing, but sizes that do customize lists do not, as they do not use \itemsepi
they directly set \itemsep
.
Fortunately there appears to be a tightlist
(no s
) you can use after a size change to reset (some of) the parameters to zero. but it has to be used inside the list:
\documentclass[12pt]{memoir}
% \documentclass[12pt]{article}
\usepackage{printlen}
\newlength{\demoboxheight}
\makeatletter
\newcommand{\demo}[1]{%
\settoheight{\demoboxheight}{\fbox{\parbox{.5\textwidth}{\begin{#1}
\begin{itemize}\tightlist
\item dummy
\item dummy
\item dummy
\end{itemize}
\end{#1}
}}}
\fbox{\parbox{.5\textwidth}{\begin{#1}
\begin{itemize}\tightlist
\item font size: #1
\item height: \uselengthunit{pt}\printlength{\demoboxheight}
\item which is: \uselengthunit{mm}\printlength{\demoboxheight}
\item \texttt{\meaning\@listi}
\item \texttt{\the\itemsep}
\end{itemize}
\end{#1}
}}
}
\tightlists
% \firmlists
\begin{document}
\demo{Large}
\demo{large}
\demo{normalsize}
\demo{small}
\demo{footnotesize}
\demo{scriptsize}
\demo{tiny}
\end{document}