两种枚举项

两种枚举项

考虑一下代码

\documentclass{book}
\begin{document}
\thispagestyle{empty}
\LARGE
\bfseries

\begin{enumerate}
\item Item 1. 

\item Item 2.

\item Item 3.

\item Item 4.
\end{enumerate}
\end{document}

产生

在此处输入图片描述

我想要两种枚举项:第一种\item,它执行当前功能;第二种,\itemb在显示项的编号和内容之前缩进,比如说 10pt。对于 MWE,我想让项 1 和 4 保持不变,同时缩进项 2 和 3。

问:这可能吗?如果可以,该如何做?

谢谢。

答案1

根据@Vincent 的回答,你可以定义\itemb为:

\newcommand*{\itemb}[1]{%
  \begin{enumerate}\item #1\end{enumerate}
}

但是有了这个,您将需要使用常规参数\itemb

\documentclass{book}
\usepackage{enumitem}
\setlist[enumerate,2]{
    label=\arabic*.,
    topsep=\itemsep,
    before={\setcounter{enumii}{\value{enumi}}},
    after={\setcounter{enumi}{\value{enumii}}\vspace*{-\topsep}}
}
\newcommand*{\itemb}[1]{%
  \begin{enumerate}\item #1\end{enumerate}
}
\begin{document}
\thispagestyle{empty}
\LARGE
\bfseries

\begin{enumerate}
\item Item 1.
\itemb{Item 2.}
\itemb{Item 3.}
\item Item 4.
\end{enumerate}
\end{document}

您还可以将所有选项移动到enumerate命令环境中,\itemb以不影响不使用但通常嵌套的环境。enumerate\itemb

此外,您还可以使用可选参数来\itemb影响缩进,例如,使用记录leftenumitem手册第 3.2 节“标签的水平间距”环境:

\documentclass{book}
\usepackage{enumitem}
\newcommand*{\itemb}[2][0pt]{%
  \begin{enumerate}[
    label=\arabic*.,
    topsep=\itemsep,
    before={\setcounter{enumii}{\value{enumi}}},
    after={\setcounter{enumi}{\value{enumii}}\vspace*{-\topsep}},
    left=#1,
  ]
  \item #2\end{enumerate}
}
\begin{document}
\thispagestyle{empty}
\LARGE
\bfseries

\begin{enumerate}
\item Item 1.
\itemb[\dimexpr-\leftmargin+\itemsep\relax]{Item 2.}
\itemb{Item 3.}
\itemb[20pt]{Item 4.}
\item Item 5.
\end{enumerate}
\end{document}

有关影响水平缩进和间距的更多选项,请参阅链接的手册

但是如果你还没有使用包enumitem 如果您的所有项目都只有单行,那么也可能有一个更简单的解决方案:

\documentclass{book}
\newcommand*{\itemb}[2][0pt]{%
  \begingroup
    \setlength{\itemindent}{\dimexpr\leftmargin + #1\relax}%
    \item #2\par
  \endgroup
}
\begin{document}
\thispagestyle{empty}
\LARGE
\bfseries

\begin{enumerate}
\item Item 1.
\itemb{Item 2.}
\itemb[-\leftmargin]{Item 3.}
\itemb[20pt]{Item 4.}
\item Item 5.
\end{enumerate}
\end{document}

但通常情况下,如果您有几行项目,您不会喜欢这个建议。在这种情况下,水平间距和包装边距的选项enumitem会更合适。

答案2

最简单的方法可能是将另一个列表嵌套在第一个列表中。

\documentclass{book}
\usepackage{enumitem}
\setlist[enumerate,2]{
    label=\arabic*.,
    topsep=\itemsep,
    before={\setcounter{enumii}{\value{enumi}}},
    after={\setcounter{enumi}{\value{enumii}}\vspace*{-\topsep}}
}
\begin{document}
\thispagestyle{empty}
\LARGE
\bfseries

\begin{enumerate}
\item Item 1.
\begin{enumerate}
\item Item 2.

\item Item 3.
\end{enumerate}
\item Item 4.
\end{enumerate}
\end{document}

答案3

由于用户 Cabohah 修改了使用 Vincent 的答案,我现在稍微修改了 Cabohah 的答案,以允许对“特殊”缩进的项目进行水平调整。

我看到了 Cabohah 的评论,但我无法从链接的手册中确定用户所说的“选项左侧”是什么意思——因此,我提供了以下替代方案:

\documentclass{book}
\usepackage{enumitem}
\setlist[enumerate,2]{
    label=\arabic*.,
    topsep=\itemsep,
    itemindent=0pt, % Adjusts the indent for the "\itemb" items 
    before={\setcounter{enumii}{\value{enumi}}},
    after={\setcounter{enumi}{\value{enumii}}\vspace*{-\topsep}}
}
\newcommand*{\itemb}[1]{%
  \begin{enumerate}\item #1\end{enumerate}
}
\begin{document}
\thispagestyle{empty}
\LARGE
\bfseries

\begin{enumerate}
\item Item 1.
\itemb{Item 2.}
\itemb{Item 3.}
\item Item 4.
\end{enumerate}
\end{document}   

据我所知,其输出与该用户的答案相同:

在此处输入图片描述

但是,此外,通过将itemindent=上面的“0pt”放置在代码中,我们可以将上面的“0pt”更改为某个正值(例如 15pt),以将 b 项向右移动;例如,用 替换itemindent=0ptitemindent=15pt得到

在此处输入图片描述

并且,通过替换itemindent=0ptitemindent=-15pt得到:

在此处输入图片描述

不过,如果能具体了解该用户所说的“第 3.2 节,即左侧选项”是什么意思,那就太好了。

相关内容