定理环境中的文本按其标题的长度缩进

定理环境中的文本按其标题的长度缩进

我写了一份数学报告,我想在我的定义中缩进整个段落,以便它与定义单词的结尾对齐。

有一段时间我使用了 minipage,它运行良好:

\begin{definition}
\begin{minipage}[t]{0.80\linewidth}
$\mathcal{G}$(n,M), où $ 0\leqslant M\leqslant N$, consiste en tous les $\dbinom{N}{M}$ sous-graphes de $K_n$ à M arêtes.
\end{minipage}
\end{definition}

定义如下:

\theoremstyle{definition}
\newtheorem{definition}{Définition}[section]

但是对于一个段落来说,它不起作用(实际上它可以起作用,但是有一个未满警告,并且单词之间的间距比平时大),所以我的问题是,我是否可以按照我的定义进行工作,使所有段落都像这样缩进:

Definition 2.2: blalablablabla 

                blablablablabla

答案1

我认为最好在定义环境中更改整体缩进,而不是使用 minipage。以下概述了两种执行此操作的方法 答案(针对同一个问题)。

唯一的问题是我们事先不知道要缩进的量,因为这取决于定理的名称。等到amsthm创建定理头时,从 的任何参数中获取其宽度已经太晚了\newtheoremstyle,所以我将所需的代码添加到\@begintheorem

\documentclass{article}
\usepackage{etoolbox} %% For \apptocmd
\usepackage{amsthm}

\makeatletter
\apptocmd{\@begintheorem}{%
  \advance\@totalleftmargin by \wd\@labels
  \advance\linewidth by -\wd\@labels
  \parshape 1 \@totalleftmargin \linewidth
  \sbox\@labels{\makebox[0pt][r]{\unhbox\@labels}}%
  \ignorespaces %% Because the original ended with this
}{}{}
\makeatother

\theoremstyle{definition}
\newtheorem{definition}{Definition}[section]

\begin{document}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris.

\begin{definition}
    Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

    Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. 
\end{definition}

Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Cur- abitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.

\end{document}

结果如下:

在此处输入图片描述

一点解释:amsthm将定理头存储在一个名为的框中\@labels,并将其插入定理第一段的开头。我只是将此框的宽度添加到左边距并从行宽中减去它,然后我更改了框本身,使其不占用水平空间并突出在左侧。您可以在环境开始时手动执行此操作,但我使用etoolbox这些说明附加到\@begintheorem


注意:这会影响所有定理环境,而不仅仅是定义。如果不希望出现这种情况,则需要进一步修改。以下替代方法允许您将(正文字体)\indentbyhead的第四个参数添加\newtheoremstyle到 (仅) 缩进使用此样式定义的定理。

\newif\ifindentbyhead
\let\indentbyhead\indentbyheadtrue
\makeatletter
\apptocmd{\@begintheorem}{%
  \ifindentbyhead
    \advance\@totalleftmargin by \wd\@labels
    \advance\linewidth by -\wd\@labels
    \parshape 1 \@totalleftmargin \linewidth
    \sbox\@labels{\makebox[0pt][r]{\unhbox\@labels}}%
  \fi
  \ignorespaces
}{}{}
\pretocmd{\@thm}{\indentbyheadfalse}{}{}
\makeatother

因此它的工作原理如下:

\newtheoremstyle{indenteddef}% name
  {} %% Space above (default = \topsep)
  {} %% Space below (default = \topsep)
  {\indentbyhead} %% Body font
  {0pt} %% Indent amount (can't be left empty)
  {\bfseries} %% Thm head font
  {.} %%  Punctuation after thm head (default = .)
  {5pt} %% Space after thm head " " = normal interword space, "\newline" = linebreak (default: 5pt plus 1pt minus 1pt)
  {} %% Thm head spec (default ~= \thmname{#1}\thmnumber{ #2}\thmnote{ (#3)})

\theoremstyle{indenteddef}
\newtheorem{definition}{Definition}[section]

相关内容