当与自定义命令结合使用时,过满的 \[ \] 环境的内容会影响我的文档是否运行

当与自定义命令结合使用时,过满的 \[ \] 环境的内容会影响我的文档是否运行

我制作了一个.sty这样的文件:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{printready}[2017/04/19 Defines "ready" and "notready"]

%%%
\newif\if@ready

\DeclareOption{ready}{%
    \@readytrue%
    }

\ProcessOptions\relax

\def\ready#1{%
    \if@ready
        #1
    \else
        \fbox{Here goes a picture}
    \fi
    }
\def\notready#1{%
    \if@ready
        {\PackageError{printready}{Custom error message}{Custom error text}}
    \else
        \fbox{Here will be a picture; It's not ready yet.}
    \fi
    }

\endinput

它定义了命令\ready\notready。这些命令的行为取决于选项是否ready随包一起加载。

现在考虑以下 MWE:

\documentclass[a4paper]{article} 
  \usepackage[ready]{printready}% Ready option activated

\usepackage{mathtools}


\begin{document}I found that this must mean that
%%% Let's call this Equation 1
\[waaaaaaaaaaaaaaaaaaaaaaaaaaaayyyyyyyyyyyyyyyyy toooooooooooooooooooooo loooooooooooooooooooooooooooooooooong\]
%
%%% Let's call this Equation 2
\[p= \frac{2q}{2-q}(1-2g) \implies p(2-q)=2q(1-2g) \implies p|2q(1-2g) \implies p \leq 2q(1-2g).\]  

\begin{figure}[htbp]\centering
\notready%
    {%
Picture1
    }\caption{caption}
\end{figure} 
\end{document}

如果我只输入公式 1(而不是公式 2),那么一切都会按预期进行,即:我会看到我的自定义错误消息出现。

如果我输入公式 2,那么最不寻常的事情就会发生:我的运行就停止了,没有显示任何错误消息。控制台输出(在 TeXWorks 中)的最后几行是

Overfull \hbox (4.37506pt too wide) detected at line 11 \OML/cmm/m/it/10 p \OT1/cmr/m/n/10 = [](1 \OMS/cmsy/m/n/10

此后什么也没有发生。

更奇怪的是,从公式 2 中省去最后一个数g).(从而防止出现过满的情况\hbox表现符合预期。

的内容怎么会以\[ \]这种方式影响我的文档的运行?

\notready注意:仅当公式 2 和一起使用且ready加载了该选项时,才会发生错误。否则一切都按预期进行。

相关内容