
Ich möchte Inline-TikZ-Code verwenden, um mein eigenes Indexsymbol zu erstellen. Zum Beispiel so etwas wie
$V_{\tikz{ \draw [|->] (0,0) -- (2ex,0); }}$
Das Problem ist, dass es nicht skaliert wird. Die Länge des Pfeils ist länger als das Doppelte des Zeichens x
( ex
also die Höhe des Zeichens x
). Wie kann ich das beheben? Das Problem wird wirklich schmerzhaft, wenn das Symbol ein Index eines Indexes ist. TikZ skaliert das Symbol nicht, obwohl sich die absolute Höhe ändert ex
.
Ich möchte kein „Standard“-Mathematiksymbol verwenden. Tatsächlich ist mein Symbol komplizierter und es ist kein mathematisches Symbol verfügbar.
Antwort1
Das Makro \text
aus dem amstext
(ebenfalls von geladenen amsmath
) Paket richtet die richtigen Schriftgrößen ein und kann verwendet werden, um korrekt auf die Schrifteinheiten em
und zuzugreifen ex
.
Aus Ihren Kommentaren scheint hervorzugehen, dass Sie für die Pfeile schriftgrößenbasierte Knoten anstelle von echten Pfeilen verwendet haben (was wahrscheinlich keine schlechte Idee ist, da TikZ sehr unflexibel ist, was die Pfeilgrößen angeht). Ich habe jedoch eine kleine Neudefinition der |
Pfeilspitze eingefügt, die eine Option benötigt (festgelegt mit \pgfsetarrowoptions
und aufgerufen mit \pgfgetarrowoptions
).
Code
\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}