
Quero usar o código TikZ embutido para criar meu próprio símbolo de subscrito. Por exemplo algo como
$V_{\tikz{ \draw [|->] (0,0) -- (2ex,0); }}$
O problema é que não é dimensionado. O comprimento da seta é maior que 2 vezes o caractere x
( ex
significa a altura do caractere x
). Como posso consertar isso? O problema torna-se realmente doloroso se o símbolo for um subscrito de um subscrito. TikZ não dimensiona o símbolo, embora a altura absoluta das ex
mudanças.
Não quero usar um símbolo matemático 'padrão'. Na verdade, meu símbolo é mais complicado e nenhum símbolo matemático está disponível.
Responder1
A macro \text
do pacote amstext
(também carregado por amsmath
) configura os tamanhos de fonte corretos e pode ser usada para acessar corretamente as unidades de fonte em
e ex
.
Pelos seus comentários, parece que você usou nós baseados no tamanho da fonte para as setas em vez de usar setas reais (o que provavelmente não é uma má ideia porque o TikZ é muito inflexível quando se trata de tamanhos de setas), no entanto, incluí uma pequena redefinição da |
ponta da seta que leva uma opção (definida \pgfsetarrowoptions
e acessada com \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}