我需要定义一个新命令来创建带有一些文本的波浪箭头。类似于\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}
此定义不包括在上/下标中使用箭头的情况。