
我想使用內聯 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}