我不是 LaTeX 程序员,但我必须处理这一点。我有一个定义questionlist
环境的类文件。这是一个可以嵌套的列表环境。我希望\itemsep
仅针对顶层(即最低深度)设置不同于默认值。我该怎么做?
代码在这里(取自类文件):
\newcount\@qlistdepth \@qlistdepth = 0
\@definecounter{qlisti}
\@definecounter{qlistii}
\@definecounter{qlistiii}
\@definecounter{qlistiv}
\def\questionlist{%
\ifnum \@qlistdepth >\thr@@\@toodeep\else
\advance\@qlistdepth\@ne
\edef\@qlistctr{qlist\romannumeral\the\@qlistdepth}%
\expandafter
\list
\csname label\@qlistctr\endcsname
{\parsep1ex%
\itemsep1ex% this should only be used at depth=0
\labelwidth1em%
\labelsep0.5em%
\leftmargin1.5em%
\usecounter\@qlistctr\def\makelabel##1{\hss\llap{##1}}}
\fi}
\let\endquestionlist = \endlist
\renewcommand\theqlisti{\@arabic\c@qlisti}
\renewcommand\theqlistii{\@alph\c@qlistii}
\renewcommand\theqlistiii{\@roman\c@qlistiii}
\renewcommand\theqlistiv{\@Alph\c@qlistiv}
\newcommand\labelqlisti{\theqlisti.}
\newcommand\labelqlistii{(\theqlistii)}
\newcommand\labelqlistiii{\theqlistiii.}
\newcommand\labelqlistiv{\theqlistiv.}
为了回应一些评论,我想说,我正是想要同样的结果就像在这里(回答 Keks Dose),但绝不是通过修改我的.tex
文件。相反,我想修改给定的代码(因此这不是重复的)。也许有一种方法可以用包编写我想要的相同列表enumitem
,但这超出了我的范围。
答案1
无需明确设置代码,而是使用以下条件进行设置
\ifnum\@qlistdepth=1 \itemsep1ex\fi
上述条件检查questionlist
深度计数器的值。由于它在使用时是前进的,所以最低深度实际上是 1。
这是一个完整的例子,其中有相当大的\itemsep
条件设置,如上所示,只是为了突出选择:
\documentclass{article}
\makeatletter
\newcount\@qlistdepth \@qlistdepth = 0
\@definecounter{qlisti}
\@definecounter{qlistii}
\@definecounter{qlistiii}
\@definecounter{qlistiv}
\def\questionlist{%
\ifnum \@qlistdepth >\thr@@\@toodeep\else
\advance\@qlistdepth\@ne
\edef\@qlistctr{qlist\romannumeral\the\@qlistdepth}%
\expandafter
\list
\csname label\@qlistctr\endcsname
{\parsep1ex%
\ifnum\@qlistdepth=1\itemsep5ex\fi% this should only be used at depth = 0
\labelwidth1em%
\labelsep0.5em%
\leftmargin1.5em%
\usecounter\@qlistctr\def\makelabel##1{\hss\llap{##1}}}
\fi}
\let\endquestionlist = \endlist
\renewcommand\theqlisti{\@arabic\c@qlisti}
\renewcommand\theqlistii{\@alph\c@qlistii}
\renewcommand\theqlistiii{\@roman\c@qlistiii}
\renewcommand\theqlistiv{\@Alph\c@qlistiv}
\newcommand\labelqlisti{\theqlisti.}
\newcommand\labelqlistii{(\theqlistii)}
\newcommand\labelqlistiii{\theqlistiii.}
\newcommand\labelqlistiv{\theqlistiv.}
\makeatother
\begin{document}
\begin{questionlist}
\item First item - level 1
\item Second item - level 1
\begin{questionlist}
\item First item - level 2
\item Second item - level 2
\begin{questionlist}
\item First item - level 3
\item Second item - level 3
\begin{questionlist}
\item First item - level 4
\item Second item - level 4
\item Last item - level 4
\end{questionlist}
\item Last item - level 3
\end{questionlist}
\item Last item - level 2
\end{questionlist}
\item Last item - level 1
\end{questionlist}
\end{document}
否则,所选的默认字体大小将取决于所选的默认字体大小。也就是说,\itemsep
无论您使用10pt
、11pt
还是12pt
文档类选项, 的长度都会有所不同。