我正在做回忆录课程,想自定义一些嵌套列表。但我不知道所有的样式参数,特别是长度。我该如何列出它们?这是一个一般性问题,但我提供了以下示例。 \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
\partopsepX
X
i
ii or
该类memoir
使用 设置它们\defaultlists
,但也有\firmlists
和\tightlists
,请参阅手册。