缩进定理中的列表换行

缩进定理中的列表换行

我正在尝试创建一个缩进的定理环境,如下所示使用 amsthm 进行完整缩进的 theoremstyle

这是一个最小(非)工作示例:

\documentclass{article}
\usepackage{amsthm}
\usepackage[english]{babel}
\usepackage{blindtext}

\makeatletter
  \newtheoremstyle{indent}
  {3pt}% space before
  {3pt}% space after
  {
    \setlength{\leftskip}{2.5em}
    \setlength{\rightskip}{2.5em}
    \addtolength{\@totalleftmargin}{2.5em}
  }% body font
  {}% indent
  {\bfseries}% header font
  {.}% punctuation
  {.5em}% after theorem header
  {}% header specification (empty for default)
\makeatother
\theoremstyle{indent}\newtheorem{theorem}{Theorem}

\begin{document}

\blindtext

\begin{theorem}[correct spacing]
\blindtext
\begin{itemize}
\item This is ok.
\item \blindtext
\end{itemize}
\end{theorem}

\end{document}

无论我是否添加了额外的右跳,我的问题是,只要我的定理中的列表中的项目长于一行(如在第三个盲文中),它就会延伸到页面的原始右边距,这种情况在原始帖子中没有考虑到。

有什么建议么?

答案1

我会采取稍微不同的方法,类似于使用 amsthm 进行完整缩进的 theoremstyle

使用etoolboxchangepage包装如下

\AtBeginEnvironment{theorem}{\begin{adjustwidth}{2.5em}{2.5em}}
\AtEndEnvironment{theorem}{\end{adjustwidth}}

我们得到

截屏

我认为这是我们想要的结果。

% arara: pdflatex
\documentclass{article}
\usepackage{amsthm}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{etoolbox}
\usepackage{changepage}

  \newtheoremstyle{indent}
  {3pt}% space before
  {3pt}% space after
  { }% body font
  {}% indent
  {\bfseries}% header font
  {.}% punctuation
  {.5em}% after theorem header
  {}% header specification (empty for default)
\theoremstyle{indent}\newtheorem{theorem}{Theorem}

\AtBeginEnvironment{theorem}{\begin{adjustwidth}{2.5em}{2.5em}}
\AtEndEnvironment{theorem}{\end{adjustwidth}}


\begin{document}

\blindtext

\begin{theorem}[correct spacing]
\blindtext
\begin{itemize}
\item This is ok.
\item \blindtext
\end{itemize}
\end{theorem}

\end{document}

相关内容