带虚线的分数或推理规则

带虚线的分数或推理规则

我想要一个\frac或 mathpartir 风格的推理规则,用虚线而不是实线,这样我就可以将分数放入推理规则中而不会使水平线超载。

下面的例子展示了实现这一目标的三个可能步骤(按与解决方案的接近程度递增排序):

  1. genfrac,它允许我自定义线条的粗细,但不能自定义笔触
  2. dotuline来自dashundergaps允许使用虚线但不支持正确分数格式的包
  3. 自定义inferrule使用\mprsetmathpartir,声称支持虚线,但似乎没有正确地间隔点。

这是我的尝试;我尝试了两种不同的定制方式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}

示例输出

相关内容