答案1
获取所需符号的一种方法是查看如何mathtools
创建任何箭头。
例如,\xRightarrow
定义为
\providecommand*\xRightarrow[2][]{%
\ext@arrow 0055{\Rightarrowfill@}{#1}{#2}}
amsmath
定义\Rightarrowfill@
为产生\cleaders
具有重叠框的。
由于我们希望它们之间有空间而不是重叠,所以这种方法不太管用。相反,我们可以修改定义以使用\xleaders
一些正空间。
这是一小套虚线可扩展箭头。
\usepackage{amsmath}
\usepackage{mathtools}
\makeatletter
\def\dasharrowfill@#1#2#3#4{%
$\m@th
\thickmuskip0mu
\medmuskip\thickmuskip
\thinmuskip\thickmuskip
\relax
#4#1\mkern2mu
\xleaders\hbox{$#4\mkern2mu#2\mkern2mu$}\hfill
\mkern2mu
#3$%
}
\def\dashleftarrowfill@{\dasharrowfill@\leftarrow\relbar\relbar}
\def\dashrightarrowfill@{\dasharrowfill@\relbar\relbar\rightarrow}
\def\dashleftrightarrowfill@{\dasharrowfill@\leftarrow\relbar\rightarrow}
\def\dashLeftarrowfill@{\dasharrowfill@\Leftarrow\Relbar\Relbar}
\def\dashRightarrowfill@{\dasharrowfill@\Relbar\Relbar\Rightarrow}
\def\dashLeftrightarrowfill@{\dasharrowfill@\Leftarrow\Relbar\Rightarrow}
\providecommand*\xdashleftarrow[2][]{%
\ext@arrow 0055{\dashleftarrowfill@}{#1}{#2}}
\providecommand*\xdashrightarrow[2][]{%
\ext@arrow 0055{\dashrightarrowfill@}{#1}{#2}}
\providecommand*\xdashleftrightarrow[2][]{%
\ext@arrow 0055{\dashleftrightarrowfill@}{#1}{#2}}
\providecommand*\xdashLeftarrow[2][]{%
\ext@arrow 0055{\dashLeftarrowfill@}{#1}{#2}}
\providecommand*\xdashRightarrow[2][]{%
\ext@arrow 0055{\dashRightarrowfill@}{#1}{#2}}
\providecommand*\xdashLeftrightarrow[2][]{%
\ext@arrow 0055{\dashLeftrightarrowfill@}{#1}{#2}}
\makeatother
您可以照常使用它们。例如,\xdashRightarrow[subscript]{superscript}
。
使用的主要缺点\xleaders
是组成箭头的框之间的空间将均匀分布。因此冲刺不一致。
一个解决方案就是限制下标和上标具有组成 所需的整数个盒子\xleaders
,这可能通过对 进行修改来实现\ext@arrow
。