我想要一个\frac
或 mathpartir 风格的推理规则,用虚线而不是实线,这样我就可以将分数放入推理规则中而不会使水平线超载。
下面的例子展示了实现这一目标的三个可能步骤(按与解决方案的接近程度递增排序):
genfrac
,它允许我自定义线条的粗细,但不能自定义笔触dotuline
来自dashundergaps
允许使用虚线但不支持正确分数格式的包- 自定义
inferrule
使用\mprset
包mathpartir
,声称支持虚线,但似乎没有正确地间隔点。
这是我的尝试;我尝试了两种不同的定制方式inferrule
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{dashundergaps}
\begin{document}
\[\genfrac{}{}{1pt}{0}{a}{c+d}\]
\[{\dotuline{a}\atop c+d}\]
\[\mprset{fraction={\cdot\cdots\cdot}}\inferrule{a}{c+d}\]
\[\mprset{fraction={\cdot\hdotdot\cdot}}\inferrule{a}{C+D^{\beta}}\]
\end{document}
有一些讨论这里但建议的解决方案是使用 dashundergaps。由于与 的行为相比,虚线的宽度和垂直定位不正确,因此\frac
这实际上不能被视为解决方案。
使用 mathpartir 并进行自定义inferrule
似乎是最简单的探索方向,但结果有些难以预测。上面的第一次尝试没有正确地将点分开;第二次尝试做到了,但改变了线的垂直位置(因此上标的“beta”字符现在与条相交)。
这也可能相关。
答案1
这是我的尝试,在定义中使用\ooalign
和:\genfrac
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand\dotover{\leavevmode\cleaders\hb@xt@ .22em{\hss $\cdot$\hss}\hfill\kern\z@}
\newcommand{\dotfrac}[2]{
\ooalign{$\genfrac{}{}{0pt}{0}{#1}{#2}$\cr\dotover\cr}
}
\makeatother
\begin{document}
\[\varphi=\dfrac{1+\sqrt5}{2}\neq\dotfrac{1+\sqrt5}{2}\]
\end{document}
结果:
更新
现在有\mathchoice
不同尺寸!
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\dotfrac}[2]{
\mathchoice
{\ooalign{$\genfrac{}{}{0pt}{0}{#1}{#2}$\cr\leavevmode\cleaders\hb@xt@ .22em{\hss $\displaystyle\cdot$\hss}\hfill\kern\z@\cr}}
{\ooalign{$\genfrac{}{}{0pt}{1}{#1}{#2}$\cr\leavevmode\cleaders\hb@xt@ .22em{\hss $\textstyle\cdot$\hss}\hfill\kern\z@\cr}}
{\ooalign{$\genfrac{}{}{0pt}{2}{#1}{#2}$\cr\leavevmode\cleaders\hb@xt@ .22em{\hss $\scriptstyle\cdot$\hss}\hfill\kern\z@\cr}}
{\ooalign{$\genfrac{}{}{0pt}{3}{#1}{#2}$\cr\leavevmode\cleaders\hb@xt@ .22em{\hss $\scriptscriptstyle\cdot$\hss}\hfill\kern\z@\cr}}
}
\makeatother
\begin{document}
Display:
\[\varphi=\frac{1+\sqrt5}{2}\neq\dotfrac{1+\sqrt5}{2}\]
Text:
\[\textstyle\varphi=\frac{1+\sqrt5}{2}\neq\dotfrac{1+\sqrt5}{2}\]
Script:
\[_{\varphi=\frac{1+\sqrt5}{2}\neq\dotfrac{1+\sqrt5}{2}}\]
Scriptscript:
\[_{_{\varphi=\frac{1+\sqrt5}{2}\neq\dotfrac{1+\sqrt5}{2}}}\]
\end{document}
结果:
答案2
可以排版一个没有横线的分数,并在其上叠加一个虚线:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\dashdfrac}[2]{%
{\sbox0{$\genfrac{}{}{0pt}{0}{#1}{#2}$}%
\vphantom{\copy0}%
\ooalign{%
\hidewidth
$\vcenter{\moveright\nulldelimiterspace
\hbox to\wd0{%
\xleaders\hbox{\kern.5pt\vrule height 0.4pt width 1.5pt\kern.5pt}\hfill
\kern-1.5pt
}%
}$
\hidewidth\cr
\box0\cr}}%
}
\begin{document}
\[
\dashdfrac{a}{c+d}+\dashdfrac{1}{2}
\]
\end{document}
答案3
第一种方法可能是:
\documentclass{article}
\renewcommand\dotfill{\cleaders\hbox{.}\hfill}
\newlength{\numwidth}
\newlength{\denwidth}
\newlength{\corrwidth}
\newcommand{\dotfrac}[2]{%
\settowidth{\numwidth}{\hbox{$\displaystyle #1$}}
\settowidth{\denwidth}{\hbox{$\displaystyle #2$}}
\setlength{\corrwidth}{%
\ifdim\numwidth>\denwidth
\numwidth
\else
\denwidth
\fi
}
\displaystyle #1 \atop{\hbox to \corrwidth{\dotfill\hfil}\atop{\null\atop\displaystyle #2}}
}
\begin{document}
\[
\dotfrac{a}{b+c}
\]
\end{document}