![\splitfrac 产生额外的“1”字符](https://linux22.com/image/384589/%5Csplitfrac%20%E4%BA%A7%E7%94%9F%E9%A2%9D%E5%A4%96%E7%9A%84%E2%80%9C1%E2%80%9D%E5%AD%97%E7%AC%A6.png)
我遇到了同样的问题(已关闭)问题- 但我知道是什么导致了我的问题
\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
未定义?是的,这是真的。除了其他损害之外,它主动定义(或重新定义)。但它做错了。定义在amsmath
breqn
\genfrac
mathstyle.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}