如何在 ams-gsm 包的定理环境中缩进项目

如何在 ams-gsm 包的定理环境中缩进项目

我使用 gsm 包来编写我的 latex 文件。通常,在定理环境中,项目会从左边距缩进一小段空间。我想将其全部缩进到左边距,如下图所示:

在此处输入图片描述

这是一个最小的工作示例:

\documentclass{gsm-l}
\usepackage{amsmath}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem} This is the theorem.
\begin{enumerate}
\item The first item
\item The second item
\item Are they indented as my purpose?
\end{enumerate}
\end{theorem}
\end{document}

请帮我。

答案1

theorem这实际上与文档类通过 提供的环境无关\newtheorem。相反,这是列表(包括enumerateitemize)的默认行为。您可以使用以下一些来修改缩进enumitem的接口。下面我已将设置leftmargin为使用 自动计算*,从而产生左对齐设置:

在此处输入图片描述

\documentclass{gsm-l}
\usepackage{amsmath,enumitem}% http://ctan.org/pkg/{amsmath,enumitem}
\setlist[enumerate]{leftmargin=*}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem} This is the theorem.
  \begin{enumerate}
    \item The first item
    \item The second item
    \item The third item that is a tad longer and should span more than 
      a single line, and naturally flow to a second line.
  \end{enumerate}
\end{theorem}
\end{document}

\setlist[enumerate]在所有嵌套级别中更改文档级别的默认行为enumerate。如果您希望进行更本地化的更改,则可以使用以下接口向环境提供可选参数:

\begin{enumerate}[leftmargin=*]
  ...
\end{enumerate}

答案2

基于amsbook(包括gsm-l)的文档类别将缩进设置得太大,如此处所观察到的。

ams 用来降低它的机制是覆盖默认的裕度设置,这是必须做的\AtBeginDocument,因为它们最初就是这样定义的:

\AtBeginDocument{%
  \labelsep=5pt\relax
  \setcounter{enumi}{13}\setcounter{enumii}{13}%
  \setcounter{enumiii}{13}\setcounter{enumiv}{13}%
  \settowidth\leftmargini{\labelenumi\hskip\labelsep}%
%%  \advance\leftmargini by \normalparindent % this is the culprit
  \settowidth\leftmarginii{\labelenumii\hskip\labelsep}%
  \settowidth\leftmarginiii{\labelenumiii\hskip\labelsep}%
  \settowidth\leftmarginiv{\labelenumiv\hskip\labelsep}%
  \setcounter{enumi}{0}\setcounter{enumii}{0}%
  \setcounter{enumiii}{0}\setcounter{enumiv}{0}%
  \leftmarginv=10pt  \leftmarginvi=\leftmarginv
  \leftmargin=\leftmargini
  \labelwidth=\leftmargini \advance\labelwidth-\labelsep
  \@listi}

etoolbox由于这不是作为命令定义设置的,所以据我所知,它不能通过定义的技术轻易地进行修补。

相关内容