\splitfrac 产生额外的“1”字符

\splitfrac 产生额外的“1”字符

我遇到了同样的问题(已关闭)问题- 但我知道是什么导致了我的问题

\documentclass[12pt,a4paper]{article}
\usepackage{mathtools}

\begin{document}
\begin{align}
\mathcal{B}_{x}=\frac{\splitfrac{\Pr\left(\tau_{i}\in[x, x+\delta)|\omega_{x+\delta}=1, \tau_{i}\not\in [x-\delta, x)\right)^{m}}{\Pr\left(\tau_{i}\not\in[x, x+\delta)|\omega_{x+\delta}=1, \tau_{i}\not\in [x-\delta, x)\right)^{k-m-1}}}{\splitfrac{\Pr(\tau_{i}\in[x, x+\delta)|\omega_{x+\delta}=0, \tau_{i}\not\in [x-\delta, x))^{m}}{\Pr\left(\tau_{i}\not\in[x, x+\delta)|\omega_{x+\delta}=0, \tau_{i}\not\in [x-\delta, x)\right)^{k-m-1}}}
\end{align}
\end{document}

当我运行上面的代码时,我得到了我想要的输出: 在此处输入图片描述

但是,当我使用较长文档的整个序言来运行它时,我会得到额外的“1”个字符

\documentclass[12pt,a4paper]{article}
\usepackage{amsmath,amsthm,amssymb,apacite,graphicx, verbatim,upref,paralist,indentfirst}
\usepackage{setspace}
\usepackage{breqn}
\allowdisplaybreaks
\usepackage{graphicx}
\usepackage{mathrsfs}
\usepackage{mathtools}
\usepackage{enumerate}
\graphicspath{ {./images/} }
\onehalfspacing
\usepackage{float}
\setlength{\parskip}{2pt}%

\begin{document}
\begin{align}
\mathcal{B}_{x}=\frac{\splitfrac{\Pr\left(\tau_{i}\in[x, x+\delta)|\omega_{x+\delta}=1, \tau_{i}\not\in [x-\delta, x)\right)^{m}}{\Pr\left(\tau_{i}\not\in[x, x+\delta)|\omega_{x+\delta}=1, \tau_{i}\not\in [x-\delta, x)\right)^{k-m-1}}}{\splitfrac{\Pr(\tau_{i}\in[x, x+\delta)|\omega_{x+\delta}=0, \tau_{i}\not\in [x-\delta, x))^{m}}{\Pr\left(\tau_{i}\not\in[x, x+\delta)|\omega_{x+\delta}=0, \tau_{i}\not\in [x-\delta, x)\right)^{k-m-1}}}
\end{align}
\end{document}

在此处输入图片描述

我怀疑序言中存在来自其他软件包的“污染”,从而产生了这些不需要的“1”字符。我能做些什么来删除这些不需要的“1”?有没有办法在不删除序言中的其他软件包的情况下做到这一点,因为这可能会影响文档中的其他公式。

编辑:我怀疑是序言中的这一行导致了“1”的出现:

    \usepackage{breqn}

当我从序言中删除它时,1 消失了。有没有办法删除 1,而不从序言中删除此行?

答案1

一个非常简单的例子是

\documentclass{article}
\usepackage{breqn}

\begin{document}
\[
\genfrac{}{}{0pt}{1}{A}{B}
\]
\end{document}

排版

在此处输入图片描述

breqn而如果改为 ,则排版将与预期一致amsmath。请注意\splitfrac只是 周围的一层薄薄的层\genfrac

哦,等等!最小示例如何编译?未加载的\genfrac未定义?是的,这是真的。除了其他损害之外,它主动定义(或重新定义)。但它做错了。定义在amsmathbreqn\genfracmathstyle.sty

 145   │ \DeclareRobustCommand\genfrac[6]{%
 146   │   {#1\fracstyle
 147   │     {\begingroup #5\endgroup
 148   │       \csname @@\ifx\maxdimen#4\maxdimen over\else above\fi
 149   │         \if @#2@\else withdelims\fi\endcsname #2#3#4\relax
 150   │      #6}%
 151   │   }%
 152   │ }

并且#2#3#4\relax应该是#2#3\relax。修改后的宏给出了预期的结果:

\documentclass{article}
\usepackage{breqn}
\usepackage{regexpatch}

\makeatletter
\xpatchcmd{\genfrac}{#4\relax}{\relax}{}{}
\makeatother

\begin{document}
\[
\genfrac{}{}{0pt}{1}{A}{B}
\]
\end{document}

如果没有regexpatch,你的文档应该如下所示:

\documentclass{article}
\usepackage{mathtools}
\usepackage{breqn}

\makeatletter
\DeclareRobustCommand\genfrac[6]{%
  {#1\fracstyle
  {\begingroup #5\endgroup
     \csname @@\ifx\maxdimen#4\maxdimen over\else above\fi
     \if @#2@\else withdelims\fi\endcsname #2#3\relax
     #6}%
  }%
}
\makeatother

\begin{document}

\begin{equation}
\mathcal{B}_{x}=
  \frac{
    \splitfrac{
      \Pr\left(\tau_{i}\in[x, x+\delta)|\omega_{x+\delta}=1,
      \tau_{i}\not\in [x-\delta, x)\right)^{m}
    }{
      \Pr\left(\tau_{i}\not\in[x, x+\delta)|\omega_{x+\delta}=1,
      \tau_{i}\not\in [x-\delta, x)\right)^{k-m-1}
    }
  }{
    \splitfrac{
      \Pr(\tau_{i}\in[x, x+\delta)|\omega_{x+\delta}=0,
      \tau_{i}\not\in [x-\delta, x))^{m}
    }{
      \Pr\left(\tau_{i}\not\in[x, x+\delta)|\omega_{x+\delta}=0,
      \tau_{i}\not\in [x-\delta, x)\right)^{k-m-1}
    }
  }
\end{equation}

\end{document}

在此处输入图片描述

相关内容