
Estoy tratando de definir un guión \Uparrow
: mi primer intento, usando tikz
, consiste simplemente en dibujar dos rectángulos blancos sobre el normal \Uparrow
, tratando manualmente de encontrar una buena posición de los rectángulos.
\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}}
Escribiendo ahora
\begin{document}
Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.
\end{document}
entiendo esto
y estoy bastante satisfecho con el resultado. Sin embargo, tengo tres preguntas:
- ¿Cómo conseguir la misma alineación de lo normal
\Downarrow
y\Uparrow
? Mi nuevo símbolo está alineado con la línea base del texto, mientras que los dos predeterminados están un poco desplazados hacia abajo. - ¿Cómo hacer que este nuevo símbolo se pueda estirar correctamente? Al hacer
\LARGE Text $\Dasheduparrow$ $\Downarrow$ $\Uparrow$ text.
la salida esdonde es evidente que el subyacente
\Uparrow
se ha ampliado, mientras que los rectángulos blancos no. - ¿Existe una solución mejor que la que propuse?
Respuesta1
RESPUESTA REVISADA
El OP comenta que, con mi respuesta original, los espacios no se escalan en diferentes tamaños de fuente (y estilos matemáticos). Esto se puede remediar prescindiendo tikz
y empleando mi stackengine
paquete, mientras se escala el tamaño del espacio con el estilo matemático (usando el [Local-Mathstyle ex] scalerel
del paquete \LMex
en lugar de cm
o pt
como la dimensión de las superposiciones del rectángulo blanco).
Para responder a otra pregunta del OP, la \ThisStyle{...\SavedStyle...}
sintaxis permite que el estilo matemático actual se lleve a una construcción donde normalmente se perdería, en este caso, en el \hbox
que se está \vcenter
editando y apilando. Es equivalente a un glorificado \mathchoice
, pero con frecuencia reducirá la cantidad de escritura necesaria en una cantidad significativa.
\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}
RESPUESTA ORIGINAL
Aquí, comienzo con las definiciones del OP.
Sin embargo, luego \vcenter
lo centro en el eje matemático y también uso scalerel
funciones para preservar el estilo matemático.
\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}
Respuesta2
Una solución rápida (puede ser un poco sucia):
\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}
Donde he usado a parbox
para centrar su contenido.
\parbox{\widthof{$\Dasheduparrow$}}{$\Dasheduparrow$}
Otra posibilidad es utilizar el comando de centrado matemático:
\vcenter{\hbox{\Dasheduparrow}}