
Quiero usar código TikZ en línea para crear mi propio símbolo de subíndice. Por ejemplo algo como
$V_{\tikz{ \draw [|->] (0,0) -- (2ex,0); }}$
El problema es que no está escalado. La longitud de la flecha es más larga que 2 veces el carácter x
( ex
significa la altura del carácter x
). ¿Cómo puedo arreglar esto? El problema se vuelve realmente doloroso si el símbolo es un subíndice de un subíndice. TikZ no escala el símbolo, aunque la altura absoluta de ex
los cambios.
No quiero utilizar un símbolo matemático "estándar". En realidad, mi símbolo es más complicado y no hay ningún símbolo matemático disponible.
Respuesta1
La macro \text
del paquete amstext
(también cargada por amsmath
) configura los tamaños de fuente correctos y puede usarse para acceder correctamente a las unidades de fuente em
y ex
.
Según tus comentarios, parece que has usado nodos basados en el tamaño de fuente para las flechas en lugar de usar flechas reales (lo cual probablemente no sea una mala idea porque TikZ es muy inflexible cuando se trata de tamaños de flechas), sin embargo, he incluido una pequeña redefinición de la |
punta de la flecha que toma una opción (establecida con \pgfsetarrowoptions
y accedida con \pgfgetarrowoptions
).
Código
\documentclass{article}
\usepackage{tikz,amstext}
\makeatletter
\newcommand*{\myarrow}{%
\mathchoice
{\pgfsetarrowoptions{:}{2pt}\my@arrow}
{\pgfsetarrowoptions{:}{2pt}\my@arrow}
{\pgfsetarrowoptions{:}{1pt}\my@arrow}
{\pgfsetarrowoptions{:}{1pt}\my@arrow}
}
\newcommand*{\my@arrow}{\text{\tikz\draw[:->] (0,0) -- (2ex,0);}}
\pgfarrowsdeclare{:}{:}
{
\pgfarrowsleftextend{+-0.25\pgflinewidth}
\pgfarrowsrightextend{+.75\pgflinewidth}
}
{
\pgfutil@tempdima\pgfgetarrowoptions{:}
\advance\pgfutil@tempdima by0\pgflinewidth%
\pgfsetdash{}{+0pt}
\pgfsetrectcap
\pgfpathmoveto{\pgfqpoint{0.25\pgflinewidth}{-\pgfutil@tempdima}}
\pgfpathlineto{\pgfqpoint{0.25\pgflinewidth}{\pgfutil@tempdima}}
\pgfusepathqstroke
}
\makeatother
\begin{document}
$\displaystyle\myarrow\textstyle\myarrow V_{\myarrow_{\myarrow}}$
\end{document}