
Ich versuche, ein gestricheltes zu definieren \Uparrow
: Mein erster Versuch mit tikz
besteht einfach darin, zwei weiße Rechtecke über das normale zu zeichnen \Uparrow
und manuell zu versuchen, eine gute Positionierung der Rechtecke zu finden.
\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}}
Tippen Sie jetzt
\begin{document}
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.
\end{document}
Ich verstehe das
und ich bin mit dem Ergebnis ziemlich zufrieden. Allerdings habe ich drei Fragen:
- Wie erreiche ich die gleiche Ausrichtung des normalen
\Downarrow
und des\Uparrow
? Mein neues Symbol ist an der Grundlinie des Textes ausgerichtet, während die beiden Standardsymbole etwas nach unten verschoben sind. - Wie kann man dieses neue Symbol richtig dehnbar machen? Wenn man das tut,
\LARGE Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.
ist die Ausgabeso, dass das darunterliegende Symbol
\Uparrow
vergrößert wurde, die weißen Rechtecke jedoch nicht. - Gibt es eine bessere Lösung als die von mir vorgeschlagene?
Antwort1
ÜBERARBEITETE ANTWORT
Der OP kommentiert, dass bei meiner ursprünglichen Antwort die Lücken bei unterschiedlichen Schriftgrößen (und mathematischen Stilen) nicht skaliert werden. Dies kann behoben werden, indem man auf tikz
mein stackengine
Paket verzichtet und es verwendet, während man die Lückengröße mit dem mathematischen Stil skaliert (unter Verwendung des [Local-Mathstyle ex] scalerel
des Pakets \LMex
anstelle cm
oder pt
als Dimension der weißen Rechtecküberlagerungen).
Um eine weitere Frage des OP zu beantworten: Die \ThisStyle{...\SavedStyle...}
Syntax ermöglicht es, den aktuellen mathematischen Stil in eine Konstruktion zu übertragen, in der er normalerweise verloren gehen würde, in diesem Fall in das , \hbox
das bearbeitet und gestapelt wird \vcenter
. Es entspricht einem verherrlichten \mathchoice
, verringert jedoch häufig den erforderlichen Tippaufwand erheblich.
\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}
URSPRÜNGLICHE ANTWORT
Hier beginne ich mit den Definitionen des OP.
Ich zentriere es dann jedoch \vcenter
auf der mathematischen Achse und verwende auch scalerel
Funktionen, um den mathematischen Stil beizubehalten.
\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}
Antwort2
Eine schnelle Problemumgehung (vielleicht etwas unsauber):
\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}
Wobei ich ein verwendet habe, parbox
um den Inhalt zu zentrieren.
\parbox{\widthof{$\Dasheduparrow$}}{$\Dasheduparrow$}
Eine andere Möglichkeit besteht darin, den Befehl zur mathematischen Zentrierung zu verwenden:
\vcenter{\hbox{\Dasheduparrow}}