我想使用内联 TikZ 代码来创建自己的下标符号。例如
$V_{\tikz{ \draw [|->] (0,0) -- (2ex,0); }}$
问题是它没有缩放。箭头的长度比字符的 2 倍长x
(ex
即字符的高度x
)。我该如何解决这个问题?如果符号是下标的下标,问题就会变得非常棘手。尽管绝对高度会发生变化,但 TikZ 不会缩放符号ex
。
我不想使用“标准”数学符号。实际上,我的符号更复杂,没有可用的数学符号。
答案1
\text
来自amstext
(也由)包的宏amsmath
设置了正确的字体大小,并可以用来正确访问字体单位em
和ex
。
从您的评论来看,您似乎使用了基于字体大小的节点作为箭头,而不是使用真正的箭头(这可能不是一个坏主意,因为 TikZ 在箭头大小方面非常不灵活),但是我对箭头尖进行了一个小的重新定义,|
它需要一个选项(用 设置\pgfsetarrowoptions
并用 访问\pgfgetarrowoptions
)。
代码
\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}