我正在尝试创建一个缩进的定理环境,如下所示使用 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。
使用etoolbox
和changepage
包装如下
\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}