嵌套列表的样式参数是什么?

嵌套列表的样式参数是什么?

我正在做回忆录课程,想自定义一些嵌套列表。但我不知道所有的样式参数,特别是长度。我该如何列出它们?这是一个一般性问题,但我提供了以下示例。 \leftmargin 在列表外部、外部列表内和内部列表内引用的长度是多少?

\documentclass[12pt]{memoir}
\begin{document}
$\backslash$leftmargin = \the\leftmargin
\begin{description}
  \item{Outer 1} $\backslash$leftmargin = \the\leftmargin
  \begin{description}
    \item{Inner 1} $\backslash$leftmargin = \the\leftmargin
    \item{Inner 2} $\backslash$leftmargin = \the\leftmargin
  \end{description}
\item{Outer 2} $\backslash$leftmargin = \the\leftmargin
\end{description}
$\backslash$leftmargin = \the\leftmargin
\end{document}

Output
\leftmargin = 29.3747pt
 Outer 1 \leftmargin = 29.3747pt
 Inner 1 \leftmargin = 25.84969pt
 Inner 2 \leftmargin = 25.84969pt
 Outer 2 \leftmargin = 29.3747pt
\leftmargin = 29.3747pt

答案1

相关代码memoir.cls从第4572行到第4607行:

\def\@listi{\leftmargin\leftmargini
  \parsep\parsepi
  \topsep\topsepi
  \itemsep\itemsepi}
\let\@listI\@listi
\defaultlists
\@listi

\def\@listii{\leftmargin\leftmarginii
             \labelwidth\leftmarginii
             \advance\labelwidth-\labelsep
             \topsep\topsepii
             \parsep\parsepii
             \itemsep\parsepii}

\def\@listiii{\leftmargin\leftmarginiii
              \labelwidth\leftmarginiii
              \advance\labelwidth-\labelsep
              \topsep\topsepiii
              \parsep\z@
%%%              \itemsep\topsep
%%%              \partopsep \p@ \@plus\z@ \@minus\p@
              \itemsep\itemsepiii
              \partopsep\partopsepiii}

\def\@listiv{\leftmargin\leftmarginiv
             \labelwidth\leftmarginiv
             \advance\labelwidth-\labelsep}

\def\@listv{\leftmargin\leftmarginv
            \labelwidth\leftmarginv
            \advance\labelwidth-\labelsep}

\def\@listvi{\leftmargin\leftmarginvi
             \labelwidth\leftmarginvi
             \advance\labelwidth-\labelsep}

我们看到列表是根据 定义的\leftmarginX,其中X代表表示列表嵌套级别的(小写)罗马数字。

我们mem12.clo发现

\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
}

我们看到第一级列表在大小\small和中被重新定义\footnotesize,只有这些列表才应该被排版。

参数的值在 4406 至 4421 行中确定memoir.cls

\if@twocolumn
  \setlength{\leftmargini}{2em}
\else
  \setlength{\leftmargini}{2.5em}
\fi
\leftmargin \leftmargini
\setlength{\leftmarginii}{2.2em}
\setlength{\leftmarginiii}{1.87em}
\setlength{\leftmarginiv}{1.7em}
\if@twocolumn
  \setlength{\leftmarginv}{.5em}
  \setlength{\leftmarginvi}{.5em}
\else
  \setlength{\leftmarginv}{1em}
  \setlength{\leftmarginvi}{1em}
\fi

这部分代码处理 memYY.clo已被读入,因此在\normalsize发出之后,其结果是em取自主字体在那时候,即 Computer Modern。

如果您想修改它们,您可以自由地进行;如果您计划使用单位,那么请在加载您喜欢的字体包后em进行更改。\AtBeginDocument

如您所见,有几个参数:,,\topsepX(表示等于,iii`)。\parsepX\partopsepXXiii or

该类memoir使用 设置它们\defaultlists,但也有\firmlists\tightlists,请参阅手册。

相关内容