虚线 \向上箭头

虚线 \向上箭头

我正在尝试定义一个虚线\Uparrow:我第一次尝试使用tikz,只是在正常的上方绘制两个白色矩形\Uparrow,手动尝试找到矩形的良好定位。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}

\newcommand{\Dasheduparrow}{
\begin{tikzpicture}[x=1, y=1]
\node (0,0) [inner sep=0] {$\Uparrow$};
\fill[fill=white] (-3,0.5) rectangle (2,-1);
\fill[fill=white] (-3,-2) rectangle (2,-3.5);
\end{tikzpicture}}

立即输入

\begin{document}
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.
\end{document}

我明白了

1

我对输出结果非常满意。但是,我有三个问题:

  1. 如何使法线\Downarrow和对齐\Uparrow?我的新符号与文本基线对齐,而两个默认符号略微向下偏移。
  2. 如何让这个新符号正确拉伸?通过输出\LARGE Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.可以 2 明显看出底层\Uparrow已被放大,而白色矩形没有。
  3. 有没有比我提出的更好的解决方案?

答案1

修改后的答案

OP 评论说,根据我原来的回答,间隙不会根据不同的字体大小(和数学样式)进行缩放。可以通过放弃tikz并使用我的stackengine包来解决此问题,同时使用数学样式缩放间隙大小(使用scalerel包的\LMex[Local-Mathstyle ex] 而不是cmpt作为白色矩形覆盖的尺寸)。

回答 OP 的另一个问题,\ThisStyle{...\SavedStyle...}语法允许将当前的 mathstyle 带入通常会丢失的构造中,在本例中,带入\hbox正在\vcenter编辑和堆叠的 中。它相当于一个美化的\mathchoice,但通常会大大减少所需的打字量。

\documentclass{article}
\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}
\usepackage{scalerel,stackengine,xcolor}
\newcommand{\Dasheduparrow}{\ThisStyle{\vcenter{\hbox{$%
\stackengine{0.45\LMex}{\stackengine{-.15\LMex}{$\SavedStyle\Uparrow$}
  {\textcolor{white}{\rule{1.1\LMex}{0.3\LMex}}}{O}{c}{F}{T}{L}%
 }{\textcolor{white}{\rule{1.1\LMex}{0.3\LMex}}}{O}{c}{F}{T}{L}%
$}}}}
\begin{document}
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.

$\Dasheduparrow \scriptstyle \Dasheduparrow \scriptscriptstyle \Dasheduparrow$

\LARGE
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.

\end{document}

在此处输入图片描述

原始答案

在这里,我从 OP 的定义开始。

但是,我随后使用\vcenter它来将数学轴置于中心,并使用scalerel特征来保留数学风格。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{scalerel}
\newcommand{\Dasheduparrow}{\ThisStyle{\vcenter{\hbox{$
\begin{tikzpicture}[x=1, y=1]
\node (0,0) [inner sep=0] {$\SavedStyle\Uparrow$};
\fill[fill=white] (-3,0.5) rectangle (2,-1);
\fill[fill=white] (-3,-2) rectangle (2,-3.5);
\end{tikzpicture}$}}}}
\begin{document}
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.

$\Dasheduparrow \scriptstyle \Dasheduparrow \scriptscriptstyle \Dasheduparrow$
\end{document}

在此处输入图片描述

答案2

一个快速的解决方法(可能有点不干净):

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz,calc}

\newcommand{\Dasheduparrow}{
\begin{tikzpicture}[x=1, y=1]
\node (0,0) [inner sep=0] {$\Uparrow$};
\fill[fill=white] (-3,0.5) rectangle (2,-1);
\fill[fill=white] (-3,-2) rectangle (2,-3.5);
\end{tikzpicture}}

\begin{document}
Text \parbox{\widthof{$\Dasheduparrow$}}{$\Dasheduparrow$} $\Downarrow$ $\Uparrow$ text.
\end{document}

在此处输入图片描述

我已使用来parbox将其内容置于中心。

\parbox{\widthof{$\Dasheduparrow$}}{$\Dasheduparrow$}

另一种可能性是使用数学居中命令:

\vcenter{\hbox{\Dasheduparrow}}

相关内容