缩进枚举中的多行列表项

缩进枚举中的多行列表项

我的 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仅突出显示文本块边界,否则就不需要。

相关内容