![Как сделать отступ элемента в среде теоремы пакета ams-gsm](https://rvso.com/image/281599/%D0%9A%D0%B0%D0%BA%20%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C%20%D0%BE%D1%82%D1%81%D1%82%D1%83%D0%BF%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20%D0%B2%20%D1%81%D1%80%D0%B5%D0%B4%D0%B5%20%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D1%8B%20%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0%20ams-gsm.png)
Я использую пакет 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
насколько я понимаю.