定制的“证明”环境在小节标题后产生较大的垂直空间

定制的“证明”环境在小节标题后产生较大的垂直空间

我正在使用一个我尚未开发的定制文档类。作为此类的一部分,环境proof定义如下:

\newenvironment{proof}{%
\par\addvspace{12pt plus3pt minus3pt}\global\logotrue%
\noindent{\bf Proof.\hskip.5em}\ignorespaces}{%
    \par\iflogo\vskip-\lastskip
    \vskip-\baselineskip\prbox\par
    \addvspace{12pt plus3pt minus3pt}\fi}

有几件事我不确定我是否理解。除此之外,我甚至不确定我是否理解重新定义环境的必要性proof(也许在创建此模板时本机环境还不存在?)。

无论如何,我的问题是关于定义中的第二行,以 开头\par...。这似乎打破了一行并添加了垂直空间;但是,当我proof在 之后启动环境时subsection,这会在小节标题和环境的开始之间创建一个相当大的空间proof

我尝试删除该行,问题得以解决。但是,我不确定该行的意义何在,并且希望避免在其他情况下出现任何意外后果proof

这样做的意义何在\par\addvspace{12pt plus3pt minus3pt}\global\logotrue?是否有其他方法可以避免我所概述的问题?

答案1

假设您的文档类具有以下几行(以显示比您所展示的更多的定义)

\newif\iflogo
\def\prbox{\hbox to \hsize{\hfill\fboxsep0pt\fbox{\phantom{\vrule width5pt height5pt depth0pt}}}\global\logofalse}
%
\newenvironment{proof}{%
\par\addvspace{12pt plus3pt minus3pt}\global\logotrue%
\noindent{\bf Proof:\hskip.5em}\ignorespaces}{%
    \par\iflogo\vskip-\lastskip
    \vskip-\baselineskip\prbox\par
    \addvspace{12pt plus3pt minus3pt}\fi}

我不会告诉你什么要做的,而是告诉你代码的作用。

\newif\iflogo

定义一个新的布尔标志。

\def\prbox{\hbox to \hsize{\hfill\fboxsep0pt\fbox{\phantom{\vrule width5pt height5pt depth0pt}}}\global\logofalse}

定义\prbox命令。它具有以下组件(在这种情况下向后排列,因为这样更方便)

  • 最后它将\global\logoflase先前定义的布尔标志设置为 false
  • 绘制一个 5pt x 5pt 大小的隐藏矩形 ( )\fbox{...}周围的带框框。带框框没有填充 ( )。实际上,它绘制了一个 5pt x 5pt 大小的开放正方形\phantom\vrule\fboxsep0pt
  • \hfill在盒子前增加了空间,因此盒子与右齐平。

所以总的来说,这构成了一个命令,可用于在证明末尾打印墓碑符号。

\newenvironment{proof}...

开始定义证明环境。请记住,两个参数是开始之前发生的事情和结束之后发生的事情。

{%
\par\addvspace{12pt plus3pt minus3pt}\global\logotrue%
\noindent{\bf Proof:\hskip.5em}\ignorespaces}

开始一个新段落。将垂直空间增加(如果必要,因为之前的材料可能已经添加了一些垂直空间)到之前的 12pts(带有一些粘连)。

\global\logotrue布尔标志设置为 true,即重要的当涉及到定义的第二部分时。然后它Proof以适当的间距打印单词。

{%
    \par\iflogo\vskip-\lastskip
    \vskip-\baselineskip\prbox\par
    \addvspace{12pt plus3pt minus3pt}\fi}

用 开始一个新段落\par。然后\iflogo开始执行,如果布尔标志已设置为真(就像在校样环境的开头一样),它将首先取消所有最近添加的垂直空格(有效地将光标移回到打印材料的最后一行)。然后\prbox打印墓碑,以便它显示在最后一行打印的右侧。然后它再次结束段落并将垂直空间增加到 12pt,以便开头和结尾具有对称间距。

相关内容