如果自定义环境以 displaymath 结尾,则需要额外的垂直空间

如果自定义环境以 displaymath 结尾,则需要额外的垂直空间

nub我在序言中定义了以下自定义环境:

\makeatletter
\newenvironment{nub}[1][\@nil]{%
    \def\tmp{#1}%
    \ifx\tmp\@nnil
        \subsection{}
    \else
        \subsection{#1.}
    \fi}
\makeatother

这完全满足我的需要,除非当一个 nub 以equation或显示模式下的任何其他数学符号结尾时,因为它会在下一个 之前添加更多的垂直空间nub

以下是 6.4.4 之前的屏幕截图,你可以看到额外的间距: 在此处输入图片描述

我确信网站上一定已经有针对这个问题的答案,但我什么也没找到!

答案1

您忘记了 定义中的“结束部分” nub,而应该是\ignorespacesafterend。使用您显示的代码,\makeatother将改为 。

\documentclass{book}
\usepackage{amsmath}

\makeatletter
\newenvironment{nub}[1][\@nil]{%
    \def\tmp{#1}%
    \ifx\tmp\@nnil
        \subsection{}
    \else
        \subsection{#1.}
    \fi}{\ignorespacesafterend}
\makeatother

\begin{document}

\setcounter{chapter}{6}\setcounter{section}{4}\setcounter{subsection}{2}

\begin{nub}
text text text text text text text text text text 
text text text text text text text text text text 
text text text text text text text text text text 
\begin{equation*}
F(x)=G(x)
\end{equation*}
\end{nub}

\begin{nub}[Lemma]
text text text text text text text text text text 
text text text text text text text text text text 
text text text text text text text text text text 
\end{nub}

\end{document}

在此处输入图片描述

更简单的定义xparse

\documentclass{book}
\usepackage{amsmath}
\usepackage{xparse}

\NewDocumentEnvironment{nub}{o}
 {\subsection{\IfValueT{#1}{#1.}}}
 {\ignorespacesafterend}

我将如何实现它

\documentclass{book}
\usepackage{amsmath}
\usepackage{amsthm,xparse}

\newtheoremstyle{nub}
  {\topsep}     % ABOVESPACE
  {\topsep}     % BELOWSPACE
  {\normalfont} % BODYFONT
  {0pt}         % INDENT (empty value is the same as 0pt)
  {\bfseries}   % HEADFONT
  {}            % HEADPUNCT
  {5pt plus 1pt minus 1pt} % HEADSPACE
  {(\thmnumber{#2})\thmname{#1}} % CUSTOM-HEAD-SPEC

\theoremstyle{nub}
\newtheorem{nubinner}[subsection]{\nubname}
\newcommand{\nubname}{}

\NewDocumentEnvironment{nub}{o}
 {\IfValueT{#1}{\renewcommand{\nubname}{ #1.}}\begin{nubinner}}
 {\end{nubinner}}

\begin{document}

\setcounter{chapter}{6}\setcounter{section}{4}\setcounter{subsection}{2}

\begin{nub}
text text text text text text text text text text 
text text text text text text text text text text 
text text text text text text text text text text 
\begin{equation*}
F(x)=G(x)
\end{equation*}
\end{nub}

\begin{nub}[Lemma]
text text text text text text text text text text 
text text text text text text text text text text 
text text text text text text text text text text 
\end{nub}

\end{document}

在此处输入图片描述

相关内容