下付き文字内のインライン TikZ コードを自動的にスケーリングするにはどうすればよいですか?

下付き文字内のインライン TikZ コードを自動的にスケーリングするにはどうすればよいですか?

インラインTikZコードを使用して独自の下付き文字記号を作成したい。たとえば、次のようなものです。

$V_{\tikz{ \draw [|->] (0,0) -- (2ex,0); }}$

問題は、拡大縮小されないことです。矢印の長さが文字の 2 倍x(ex文字の高さ) よりも長くなっています。どうすればこれを修正できますか? 記号が下付き文字の下付き文字である場合、問題は非常に厄介になります。TikZ は、絶対的な高さが変わっxても記号を拡大縮小しません。ex

「標準的な」数学記号は使いたくありません。実際、私の記号はもっと複雑で、利用できる数学記号がありません。

答え1

( によってもロードされる) パッケージ\textのマクロは正しいフォント サイズを設定し、フォント単位と に正しくアクセスするために使用できます。amstextamsmathemex

コメントから判断すると、実際の矢印を使用する代わりに、矢印にフォント サイズ ベースのノードを使用しているように見えます (TikZ は矢印のサイズに関して非常に柔軟性に欠けるため、これはおそらく悪い考えではありません)。ただし、 1 つのオプション ( で設定され、 でアクセス)|を取る矢印の先端の小さな再定義を含めました。\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}

出力

ここに画像の説明を入力してください

関連情報