\leftmargin 长度在枚举环境中不起作用

\leftmargin 长度在枚举环境中不起作用

我需要写下由编号声明组成的论据,其中结论用结论符号标记。我可以毫无问题地修改枚举标签的显示方式以获得该结果。

不幸的是,这些标签很快就会变得太宽,以至于它们会延伸到左边距。我想在左侧缩进枚举环境,以便标签和文本更靠右。查看列表环境中的长度列表(例如,在这个答案中),我认为\leftmargin这个长度对我来说是合适的。不幸的是,它没有达到预期的效果,即缩进与项目相关的文本。我可以使用\itemindent缩进标签,但这只会缩进第一行,而不是主体。

对答案有几个限制。

  • 我知道这个enumerate包,但由于各种原因不想使用它。
  • 我只想以这种方式缩进部分枚举环境,而不是全部。因此,通过包含等方式进行全局更改\AtBeginDocument{\addtolength{\leftmargini}{3em}}对我来说不起作用。

这是我正在使用的 MWE 以及结果的屏幕截图。我使用lipsum它来生成多行文本,并调用它amssymb来获取三个点组成的“结论”符号。

\documentclass{article}

\usepackage{lipsum}
\usepackage{amssymb}
\begin{document}

\lipsum[1]

\begin{enumerate}
  \renewcommand{\theenumi}{\roman{enumi}}%
  \renewcommand{\labelenumi}{(\theenumi)}%
  \addtolength{\leftmargin}{5em}
  \addtolength{\itemindent}{3em}
\item \lipsum[4]
\item \lipsum[4]%
  \renewcommand{\labelenumi}{$\therefore$(\theenumi)}%
\item \lipsum[4]
\end{enumerate}
\end{document}

输出

答案1

您无需\addtolength{\leftmargini}{3em}在序言中设置,这是一个本地声明,因此可以在特殊列表之前的任何位置设置。您可以使用 tex 组重置列表后的值,或者在列表完成后简单地减去该值。

它需要在之前\begin{enumerate}而不是之后,因为该值在开始代码中用于设置列表参数。

答案2

enumitem简单:

\documentclass{article}
\usepackage{lipsum}

\usepackage{amssymb}
\usepackage{enumitem}
\setlist[enumerate]{label=(\roman*),
                    itemindent=3em,
                    leftmargin=2em, % leftmargin=* if you like to have left margin as in main text
                    }

\begin{document}
\lipsum[11]

\begin{enumerate}
\item   \lipsum[4]
\item   \lipsum[4]%
\stepcounter{enumi}          % <---
\item[$\therefore$\theenumi] % <---
        \lipsum[4]
\end{enumerate}
\end{document}

在此处输入图片描述

答案3

这是你想要的吗?我用 设置标签宽度enumitem,并要求按照以下方式计算左边距:

\documentclass{article}
\usepackage{showframe}
\renewcommand{\ShowFrameLinethickness}{0.4pt}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage{amssymb}

\begin{document}

\lipsum[1]

\begin{enumerate}[labelwidth=2.5em, leftmargin=!]
\item \lipsum[4]
\item \lipsum[4]%
\item[$\therefore$ \stepcounter{enumi}(\theenumi)] \lipsum[4]
\end{enumerate}

\end{document} 

在此处输入图片描述

相关内容