如何在 TikZ 中创建带有一些文字的波浪箭头?

如何在 TikZ 中创建带有一些文字的波浪箭头?

我需要定义一个新命令来创建带有一些文本的波浪箭头。类似于\xrightarrow命令生成的命令,但带有波浪形箭头\rightsquigarrow。箭头的长度应自动调整以适合其上方的文本,但我不知道如何在 TikZ 中处理这部分。任何想法都将不胜感激。

答案1

作为敲击在他的评论中提到,你可以使用一个节点和一个装饰箭头;像这样:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing,shapes}

\newcounter{sarrow}
\newcommand\xrsquigarrow[1]{%
\stepcounter{sarrow}%
\begin{tikzpicture}[decoration=snake]
\node (\thesarrow) {\strut#1};
\draw[->,decorate] (\thesarrow.south west) -- (\thesarrow.south east);
\end{tikzpicture}%
}

\begin{document}

\xrsquigarrow{text}\quad\xrsquigarrow{longer text}

\end{document}

在此处输入图片描述

以下代码包含\xrsquigarrow使用zigzag装饰和\mathrel在数学模式中使用的新版本;它显示了和之间的比较\xrightarrow\rightsquigarrow仍然\xrsquigarrow需要进行一些微调,但我把它留给你):

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathmorphing,shapes}

\newcounter{sarrow}
\newcommand\xrsquigarrow[1]{%
\stepcounter{sarrow}%
\mathrel{\begin{tikzpicture}[baseline= {( $ (current bounding box.south) + (0,-0.5ex) $ )}]
\node[inner sep=.5ex] (\thesarrow) {$\scriptstyle #1$};
\path[draw,<-,decorate,
  decoration={zigzag,amplitude=0.7pt,segment length=1.2mm,pre=lineto,pre length=4pt}] 
    (\thesarrow.south east) -- (\thesarrow.south west);
\end{tikzpicture}}%
}

\begin{document}

\[ 
A\xrightarrow{f} B\quad A\rightsquigarrow B\quad A\xrsquigarrow{f}B\quad A\xrsquigarrow{(f\circ g)\circ h}B
\]

\end{document}

在此处输入图片描述

此定义不包括在上/下标中使用箭头的情况。

相关内容