Пунктирная \стрелка вверх

Пунктирная \стрелка вверх

Я пытаюсь определить пунктирную линию \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пакета и применив его, масштабируя размер зазора с помощью математического стиля (используя [Local-Mathstyle ex] scalerelпакета \LMexвместо cmили ptкак размер белых прямоугольных наложений).

Чтобы ответить на другой вопрос OP, синтаксис \ThisStyle{...\SavedStyle...}позволяет перенести текущий mathstyle в конструкцию, где он обычно теряется, в данном случае в , \hboxкоторый редактируется \vcenterи складывается. Это эквивалентно glorified \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}

введите описание изображения здесь

ОРИГИНАЛЬНЫЙ ОТВЕТ

Здесь я начну с определений автора.

Однако затем я использую \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}}

Связанный контент