将证明环境实现为普通段落,不带列表

将证明环境实现为普通段落,不带列表

我正在格式化另一位作者的数学书,该书在段落中使用了大量图形,例如wrapfigure环境生成的图形。我遇到了很多麻烦,因为proof和其他定理类环境都是通过列表实现的,而列表与交互很差wrapfigure

我尝试了软件包wrapfigcutwininsbox.tex。最后一个很有希望,在proof第一个包装的图形中可以正常工作,但从第二个开始失败,依此类推,我怀疑这是因为它在完成图形后进行了“恢复”:

\def\@restore@{%
    \global\@wherebottom = 0cm
    \global\@byframefalse
    \global\everypar = {}%
    \global\let \par = \endgraf
    \global\parshape = 1 0cm \hsize
}

因此我决定避免使用列表环境并坚持使用wrapfigureinsbox

由此我们对环境amsbook.cls有以下定义:proof

\newenvironment{proof}[1][\proofname]{\par
  \pushQED{\qed}%
  \normalfont \topsep6\p@\@plus6\p@\relax
  \trivlist
  \itemindent\normalparindent
  \item[\hskip\labelsep
        \scshape
    #1\@addpunct{.}]\ignorespaces
}{%
  \popQED\endtrivlist\@endpefalse
}

(您可以在定义中看到\trivlist和。)\endtrivlist

我已经制作了没有列表的版本,接缝没问题。即使是\qedhere内部数学也有效。包裹的数字都很开心。

\renewenvironment{proof}[1][\proofname]{\par
  \pushQED{\qed}%
  \vspace{6\p@\@plus6\p@}%
  \noindent
    \textit{#1\@addpunct{.}}\enskip\ignorespaces
  }{%
    \popQED
    \vspace{6\p@\@plus6\p@}\@endpefalse
  }

但是 AMS 和其他人将这些环境实现为列表肯定是有原因的,我不知道,但我想知道,如果你知道,请分享这些知识 :-) 我怀疑环境前后的间距可能会更好。

我的问题是:如何获得与 AMSmath 一样好的证明环境,外观好看,间距好,但没有列表环境?我的证明定义中是否遗漏了什么?

编辑:我在这里添加了一个 MWE 来说明。

\documentclass{article}

\usepackage{lipsum,amsthm}
\input{insbox}

% my version of proof, here as myproof
\makeatletter
\newenvironment{myproof}[1][\proofname]{\par
  \pushQED{\qed}%
  \vspace{6\p@\@plus6\p@}%
  \noindent
    \textit{#1\@addpunct{.}}\enskip\ignorespaces
  }{%
    \popQED
    \vspace{6\p@\@plus6\p@}\@endpefalse
  }
\makeatother
  
\begin{document}

\InsertBoxR{0}{\rule{1cm}{1cm}}
\begin{proof}
  \lipsum[1][1-7]

  \InsertBoxR{0}{\rule{1cm}{1cm}}
  \lipsum[1][1-7]
\end{proof}

\lipsum[1][1-7]

\InsertBoxR{0}{\rule{1cm}{1cm}}
\begin{myproof}[My proof]
  \lipsum[1][1-7]

  \InsertBoxR{0}{\rule{1cm}{1cm}}[-1]
  \lipsum[1][1-7]
\end{myproof}

\end{document}

结果如下:第一个黑色方块位于文本上方,其他均正常。

第一个黑色方块位于文本上方

答案1

当 AMS 创建这三个文档类amsartamsbook和时amsproc,我们坚信它们应该尽可能接近基本的 LaTeX 类articlebookproc,这样作者就可以使用其中之一来编写文档,只需更改行即可\documentclass应用 AMS 样式。事实证明,这在很大程度上是一个明智的决定。

等中的“基本”定理支持article基于列表结构,因此该结构基本上被复制到 AMS 类中,而 AMS 类amsthm是其中不可或缺的一部分。这是一个很大的错误,但直到为时已晚才意识到这一点,而 AMS 类已经得到了广泛的使用。(事实上,我认为将几乎所有东西都视为列表是 LateX 中的一个严重设计缺陷,从未得到过适当的重新考虑,现在已经太晚了。)

我知道它位于“待考虑”修改列表(本地也称为“错误和请求列表”)中,以摆脱列表限制——它只会导致问题——但我不知道它何时或是否会发生。(我不再有权访问该列表,但猜测这个请求是在上个世纪首次提出的,即 2000 年之前。)

顺便说一句,amsmath仅与proof环境有外围关系。 amsmathamsthm一起工作,但是proof在 中定义amsthm,而不是amsmath

抱歉,这只回答了您问题的一半。

相关内容