我的 LaTeX 文档中有一个枚举环境,其中包含几个编号步骤。现在我需要缩进其中一些步骤。我使用以下命令来实现一项的缩进:
{\setlength\itemindent{2cm}
\item Some item text...
}
它适用于短项目文本,但对于较长的文本,如果文本需要换行,则后续行不会缩进。请参阅以下 LaTeX 代码以获取示例:
\begin{enumerate}
\item This is a normal item without any indentation.
{\setlength\itemindent{2cm}
\item This is an indented item with a long text that causes a line break. Unfortunately, the new line is not indented.
}
\item This is a normal item without any indentation.
\end{enumerate}
(不幸的是,由于我是新用户,因此不允许发布输出图像......)
第二项的第一行缩进 2cm,但所有后续行均未缩进。有人能提示我如何让后续行也缩进吗?
答案1
正如 ErikYou 所建议的,通常情况下,人们会将枚举列表嵌套在枚举列表中以获得这种效果。但是,就您而言,这实际上会启动一个具有自己的计数器的新列表。因此,我建议您使用IndentedEnumerate
下面定义的环境来启动嵌套列表,以便其枚举从上一个列表继续进行并产生:
笔记:
- 这仅为了一层嵌套而设置——如果需要多层嵌套则需要进一步增强。
- 如果要缩进第一项,则需要
\item[]
在启动IndentedEnumerate
环境之前添加。 - 如果你希望它工作时不需要包裹
enumitem
包,唯一需要做的调整就是修改label
缩进列表的指定方式。 - 包裹
showframe
仅用于显示页边距。
代码:
\documentclass{article}
\usepackage{showframe}
\usepackage{enumitem}
\newcounter{ListStartCount}%
\newenvironment{IndentedEnumerate}[1][]{%
\setcounter{ListStartCount}{\theenumi}%
\stepcounter{ListStartCount}%
\begin{enumerate}[start=\theListStartCount,label={\arabic*.},#1]%
}{%
\setcounter{enumi}{\theListStartCount}%
\end{enumerate}%
}%
\begin{document}
\begin{enumerate}
\item[]
\begin{IndentedEnumerate}
\item This is the frist item with indentation, so need \verb|\item[]| before this.
\end{IndentedEnumerate}
\item This is a normal item without any indentation.
%
\begin{IndentedEnumerate}
\item This is an indented item with a long text that causes a line break. Now, the enumeration is continued and the new line is indented.
\end{IndentedEnumerate}
%
\item This is a normal item without any indentation.
\end{enumerate}
\end{document}
答案2
enumitem
提供resume
。这允许人们终止列表并使用相同的计数器重新启动它,也许使用不同的布局配置。这是一个简短的例子,复制了彼得的答案:
\documentclass{article}
\usepackage{showframe}% http://ctan.org/pkg/showframe
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\newcommand{\modifyenum}[1]{%
\end{enumerate}
\begin{enumerate}[resume,#1]
}
\begin{document}
\begin{enumerate}[leftmargin=2cm]
\item This is the first item with indentation.
\modifyenum{leftmargin=1cm}
\item This is a normal item with a \verb|1cm| indentation.
\modifyenum{leftmargin=2cm}
\item This is an indented item with a long text that causes a line break. Now, the enumeration is continued and the new line is indented.
\modifyenum{leftmargin=1cm}
\item This is a normal item with a \verb|1cm| indentation.
\modifyenum{resume,leftmargin=*}
\item Here is a normal flush-left item.
\item Here is a normal flush-left item.
\item Here is a normal flush-left item.
\end{enumerate}
\end{document}
上述 MWE 使用\modifyenum{<new list configuration>}
来终止现有enumerate
列表并使用任何新的列表首选项重新启动它resume
。
showframe
仅突出显示文本块边界,否则就不需要。