考虑一下代码
\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
影响缩进,例如,使用记录left
在enumitem
手册第 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=0pt
,itemindent=15pt
得到
并且,通过替换itemindent=0pt
,itemindent=-15pt
得到:
不过,如果能具体了解该用户所说的“第 3.2 节,即左侧选项”是什么意思,那就太好了。