enumitem:具有内联选项的级别

enumitem:具有内联选项的级别

我有一个类文件,需要在其中设置enumerate和内联版本enumerate*(由enumitem带有选项的包提供inline)。根据定义,这两个环境共享标签、设置等。

我希望它们能够共享级别(即,enumerate*嵌套在enumerate环境内的环境被识别为处于级别 2),但我需要能够调整enumerate*环境的格式(除其他调整外,我希望它从新行开始)。

问题是我无法更改enumerate*(例如使用\setlist)而不更改enumerate。我可以通过使用(例如)来解决这个问题\renewlist{enumerate*}{enumerate*}{3},但这样嵌套就会丢失。

以下是 MWE:

\documentclass{article}
\usepackage[inline]{enumitem}

\setlist[enumerate]{align=left,leftmargin=8mm,labelsep*=0pt}
\setlist[enumerate,1]{label=(\alph*), ref=(\alph*)}
\setlist[enumerate,2]{label=(\roman*), ref=(\roman*),leftmargin=9mm}

\begin{document}

Here's a non-nested inline enumerate list:
\begin{enumerate*}
  \item blah
  \item blah
  \item blah
\end{enumerate*}

\begin{enumerate}
  \item blah
  \item Here's a nested inline list:
  \begin{enumerate*}
    \item blah
    \item blah
    \item blah
  \end{enumerate*}
\end{enumerate}

\end{document}

在这个 MWE 中,挑战在于修改前导码,以便两个内联列表都从新行开始,但嵌套列表使用\roman*标签,而非嵌套列表使用\alph*

如果您可以在 内完全完成此操作,则可以获得加分,enumitem因为类文件的用户希望拥有诸如 之类的功能[resume]

答案1

我不想通过评论来交换代码,而是想直接发布我所拥有的代码。

在这里,我介绍了inumerate一种内联enumerate*变量环境,它修改了 OP 似乎感兴趣的枚举的某些参数。

\documentclass{article}
\usepackage[inline]{enumitem}

\setlist[enumerate]{align=left,leftmargin=8mm,labelsep*=0pt}
\setlist[enumerate,1]{label=(\alph*), ref=(\alph*)}
\setlist[enumerate,2]{label=(\roman*), ref=(\roman*),leftmargin=9mm}
\newenvironment{inumerate}{\begin{enumerate*}[before=\vspace{6pt}\newline,
  itemjoin=\hspace{50pt}]}{\end{enumerate*}}
\begin{document}

Here's a non-nested inline enumerate list:
\begin{inumerate}
  \item blah
  \item blah
  \item blah
\end{inumerate}

\begin{enumerate}
  \item blah
  \item Here's a nested inline list:
  \begin{inumerate}
    \item blah
    \item blah
    \item blah
  \end{inumerate}
  \item Next outer item
\end{enumerate}
\end{document}

在此处输入图片描述

上述不支持,resume因为inumerate作为一个环境,是分组的,并且 所需的数据resume会丢失。这里我提供了一个xnumerate支持 的伪环境resume

我还提供了原始inumerate环境,经过修改以采用其他可选参数(除resume)。

\documentclass{article}
\usepackage[inline]{enumitem}

\setlist[enumerate]{align=left,leftmargin=8mm,labelsep*=0pt}
\setlist[enumerate,1]{label=(\alph*), ref=(\alph*)}
\setlist[enumerate,2]{label=(\roman*), ref=(\roman*),leftmargin=9mm}
\newenvironment{inumerate}[1][]{\begin{enumerate*}[before=\vspace{6pt}\newline,
  itemjoin=\hspace{50pt},#1]}{\end{enumerate*}}
  \newcommand\xnumerate[1][]{\xnumerateaux{#1}}
\def\xnumerateaux#1#2\endxnumerate{\begin{enumerate*}[before=\vspace{6pt}\newline,
  itemjoin=\hspace{50pt},#1]#2\end{enumerate*}}
\begin{document}

Here's a non-nested inline enumerate list:
\begin{inumerate}
  \item blah
  \item blah
  \item blah
\end{inumerate}

\begin{enumerate}
  \item blah
  \item Here's a nested inline list:
  \xnumerate
    \item blah
    \item blah
    \item blah
  \endxnumerate
  \item Next outer item
  \xnumerate[resume]
    \item blah
    \item blah
    \item blah
  \endxnumerate
  \item Next outer item
\end{enumerate}
\end{document}

在此处输入图片描述

相关内容