Как сделать отступ элемента в среде теоремы пакета ams-gsm

Как сделать отступ элемента в среде теоремы пакета ams-gsm

Я использую пакет gsm для записи своего файла latex. Обычно в среде Theorem элементы отступают на небольшое пространство от левого поля. Я хочу отступить все это до левого поля, как на следующем рисунке:

введите описание изображения здесь

Вот минимальный рабочий пример:

\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. Вместо этого, это поведение списка по умолчанию (включая enumerateи itemize). Вы можете изменить отступы, используя некоторые из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насколько я понимаю.

Связанный контент