
インラインTikZコードを使用して独自の下付き文字記号を作成したい。たとえば、次のようなものです。
$V_{\tikz{ \draw [|->] (0,0) -- (2ex,0); }}$
問題は、拡大縮小されないことです。矢印の長さが文字の 2 倍x
(ex
文字の高さ) よりも長くなっています。どうすればこれを修正できますか? 記号が下付き文字の下付き文字である場合、問題は非常に厄介になります。TikZ は、絶対的な高さが変わっx
ても記号を拡大縮小しません。ex
「標準的な」数学記号は使いたくありません。実際、私の記号はもっと複雑で、利用できる数学記号がありません。
答え1
( によってもロードされる) パッケージ\text
のマクロは正しいフォント サイズを設定し、フォント単位と に正しくアクセスするために使用できます。amstext
amsmath
em
ex
コメントから判断すると、実際の矢印を使用する代わりに、矢印にフォント サイズ ベースのノードを使用しているように見えます (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}