具有悬挂缩进的定理环境

具有悬挂缩进的定理环境

我想定义一个具有自定义布局的定理环境。特别是,我希望定理的主体缩进,就像这样

Text body. Text body. Text body.

Theorem 1 (Pythagoras).
    Let a,b,c the sides of a rectangular triangle.
    Without loss of generality, we assume that  a<b<c .
    Then, the following equality holds:
           a^2 + b^2 = c^2

More text. And even more text.

quote我相信,这与环境是相似的。

我怎样才能做到这一点?

最好,我想使用现有的\newtheorem命令,但这不是强制性的。

答案1

由于您想使用标准 LaTeX 定理命令,这里有一个解决方案:让我们\newline\quote在定理的开头和\endquote结尾插入。一个完整的可编译示例:

\documentclass{article}
\makeatletter
\def\@begintheorem#1#2{\trivlist
   \item[\hskip \labelsep{\bfseries #1\ #2}]\mbox\newline\quote\itshape}
\def\@opargbegintheorem#1#2#3{\trivlist
      \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\mbox\newline\quote\itshape}
\def\@endtheorem{\endquote\endtrivlist}
\makeatother
\newtheorem{thm}{Theorem}
\begin{document}
\section*{The Theorem of Pythagoras}
Text body. Text body. Text body.
\begin{thm}[Pythagoras]
    Let $a,b,c$ the sides of a rectangular triangle.
    Without loss of generality, we assume that  $a<b<c$ .
    Then, the following equality holds:
          \[a^2 + b^2 = c^2\]
\end{thm}
More text. And even more text.
\end{document}

输出:

替代文本

这是您的起点。您可以插入有关间距和格式的其他命令。例如,您可能会注意到我\mbox之前使用\newline来获得换行符 - 如果我\mbox{}改为写,则会有更多空间,如果我省略它,则此时不能换行(或使用\leavevmode)。简单地写\par而不是\newline是行不通的。

您也可以考虑使用以下有用的定理包之一:

两者都提供自定义定理布局的命令。

答案2

我只是这样做了(使用amsthm):

\newtheoremstyle{indenteddefinition}{\topsep}{\topsep}{\hangindent=2em}{}{}{}{.5em}{}

但这只适用于一个段落。更好的是:

\newtheoremstyle{indenteddefinition}{.5\topsep}{.5\topsep}{\addtolength{\leftskip}{2.5em}}{-2.5em}{}{}{ }{}

但我意识到这并不嵌套。

答案3

我用过ntheorem我的答案。您可能想查看手册的第 7 页(预定义定理样式)。

\documentclass[a4paper]{scrartcl}
\usepackage{amssymb, amsmath} % needed for math
\usepackage[utf8]{inputenc} % this is needed for umlauts
\usepackage[ngerman]{babel} % this is needed for umlauts
\usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
\usepackage{ntheorem}

\theoremstyle{break}
\theoremindent20pt 
\theoremheaderfont{\normalfont\bfseries\hspace{-\theoremindent}}
\newtheorem{theorem}{Theorem}

\begin{document}
Text body. Text body. Text body.

\begin{theorem}[Pythagoras]
    Let $a,b,c$ the sides of a rectangular triangle.
    Without loss of generality, we assume that  $a<b<c$.

    Then, the following equality holds:
           \[a^2 + b^2 = c^2\]
\end{theorem}

More text. And even more text.
\end{document}

结果是

在此处输入图片描述

相关内容