在 \newtheoremstyle 中为特定定理设置文本宽度的智能方法是什么?

在 \newtheoremstyle 中为特定定理设置文本宽度的智能方法是什么?

我正在使用一个\newtheoremstyle来生成一个\newtheorem叫做例子。但是,我希望示例(定理)和文本,所有内容,都有比正常文本更小的文本宽度,而且我不知道如何有效地做到这一点,并避免每次重复代码。

有没有一种智能的方式来做到这一点\newtheoremstyle?或者其他地方?

答案1

thmtools包可以帮助解决这个问题。

\documentclass{article}
\usepackage{amsthm,thmtools}
\usepackage{xcolor}
\usepackage{lipsum}
\declaretheorem[shaded={bgcolor=white,textwidth=20em},style=definition]{Example}
\begin{document}
\lipsum[1]
\begin{Example}
\lipsum[2]
\end{Example}
\end{document}

这个示例是一个宽度为 20em 的框。

在此处输入图片描述

编辑:
在评论中,您第一次提到了居中。这是实现居中的一种方法。这需要多做一些工作。

\documentclass{article}
\usepackage{amsthm,thmtools}
\usepackage{lipsum}
\declaretheorem[style=definition]{Example}
\addtotheorempreheadhook[Example]{%
        \moveright\dimexpr(\linewidth-20em)/2\vbox\bgroup
                \hsize=20em
                \linewidth=\hsize
}
\addtotheorempostfoothook[Example]{\egroup}
\begin{document}
\lipsum[1]
\begin{Example}
\lipsum[2]
\end{Example}
\end{document}

这并不依赖于shaded扩展。相反,它将定理放在\vbox适当大小的 中,然后将其向右移动(\linewidth-20em)/2

相关内容