高阶箭头

高阶箭头

众所周知,\(\rightarrow\)给出一个右箭头,\(\Rightarrow\)给出一个右箭头。使用amssymb包,您甚至可以用 制作三箭头\(\Rrightarrow\)。但如果需要四箭头、五箭头或任何更高阶的箭头怎么办?是否有这样的命令,例如\arroworder{}输入箭头的顺序*,例如:

  • \arroworder{1}基本上是\(\rightarrow\)
  • \arroworder{2}\(\Rightarrow\)给出类似于
  • \arroworder{3}就像amssymb命令一样\(\Rrightarrow\)
  • 可能\arroworder{0}只是一个箭头吗?

附言:似乎也没有三重左右箭头的命令。有没有办法做到这一点,最好是采用与第一个问题相同的风格?

* 在这种情况下,“顺序”是指箭头上附着的茎的数量。

答案1

这主要是技术评论,Implies箭头声称arrows.meta有一个长度参数,但实际上并没有,因为改变长度不会产生影响。可以纠正这个问题吗?可以。但我要警告你,至少这个“修复”并不好。

\documentclass{article}
\usepackage{amssymb}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\makeatletter
\pgfkeys{
  /pgf/arrow keys/.cd,
  xstretch/.store in=\pgfarrowxstretch,
  xstretch=1,
  ystretch/.store in=\pgfarrowystretch,
  ystretch=1,
  }
\ifcsname pgfutil@tempdimc\endcsname
\else
\newlength\pgfutil@tempdimc
\fi 
\ifcsname pgfutil@tempdimd\endcsname
\else
\newlength\pgfutil@tempdimd
\fi 
\pgfdeclarearrow{
  name = varImplies,
  setup code = {
    \pgf@xa\pgfinnerlinewidth
    \[email protected]\pgflinewidth
    \pgfutil@tempdimc\pgfarrowxstretch\pgfutil@tempdima
    \pgfutil@tempdimd\pgfarrowystretch\pgfutil@tempdima
    \advance\pgfutil@tempdima by.25\pgf@xa%
    \[email protected]\pgflinewidth
    \advance\pgfutil@tempdimb by-.5\pgf@xa%
    \pgfutil@tempdimb\pgfutil@tempdimb
    \pgfarrowssettipend{2.06\pgfutil@tempdimc\advance\pgf@x by.5\pgfutil@tempdimb}
    \pgfarrowssetbackend{-1.36\pgfutil@tempdimc\advance\pgf@x by.5\pgfutil@tempdimb}
    \pgfarrowsupperhullpoint{-1.4\pgfutil@tempdimc}{2.8\pgfutil@tempdimd}
    \pgfarrowsupperhullpoint{2\pgfutil@tempdimc}{.5\pgfutil@tempdimd}
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \pgfarrowssavethe\pgfutil@tempdimc
    \pgfarrowssavethe\pgfutil@tempdimd
  },
  drawing code = {
    \pgfmathsetmacro{\pft}{0.1/(\pgfutil@tempdimc/\pgfutil@tempdimd)}%
    \pgftransformxshift{\pft\pgfutil@tempdima}
    \pgfsetlinewidth{\pgfutil@tempdimb}
    \pgfsetdash{}{+0pt}
    \pgfsetroundcap
    \pgfsetroundjoin
    \pgfpathmoveto{\pgfpoint{-1.4\pgfutil@tempdimc}{2.65\pgfutil@tempdimd}}
    \pgfpathcurveto
    {\pgfpoint{-0.75\pgfutil@tempdimc}{1.25\pgfutil@tempdimd}}
    {\pgfpoint{1\pgfutil@tempdimc}{0.05\pgfutil@tempdimd}}
    {\pgfpoint{2\pgfutil@tempdimc}{0pt}}
    \pgfpathcurveto
    {\pgfpoint{1\pgfutil@tempdimc}{-0.05\pgfutil@tempdimd}}
    {\pgfpoint{-.75\pgfutil@tempdimc}{-1.25\pgfutil@tempdimd}}
    {\pgfpoint{-1.4\pgfutil@tempdimc}{-2.65\pgfutil@tempdimd}}
    \pgfusepathqstroke
  },
 parameters = {}
}%
\makeatother
\newif\ifarrowordervar
\tikzset{arrow var/.is if=arrowordervar}
\arrowordervarfalse
\newcommand\arroworder[2][]{\begin{tikzpicture}[Rightarrow/.style={double equal sign distance,>={Implies},->},
triple/.style={-,preaction={draw,Rightarrow}},
Triple/.style={-,preaction={draw,double distance=0.75ex,
>={varImplies[xstretch=1,ystretch=1.4]},->}},
quadruple/.style={preaction={draw,Rightarrow,shorten >=0pt},shorten >=1.2pt,-,double,double
distance=0.2pt},
Quadruple/.style={draw,double distance=0.75ex,
>={varImplies[xstretch=1,ystretch=1.4]},->,
postaction={draw,line width=0.4pt,shorten >=1.4pt,-,double,double
distance=0.18ex}},#1]
\path[use as bounding box] (0,-0.6ex) rectangle
({width("$\Rightarrow$")*1pt},0.6ex);
\draw \ifcase#2
\or [->]
\or [Rightarrow]
\or \ifarrowordervar [Triple] \else [triple] \fi
\or \ifarrowordervar [Quadruple] \else [quadruple] \fi
\fi
(0.2pt,0) -- ({width("$\Rightarrow$")*1pt-0.8pt},0);
\end{tikzpicture}}
\begin{document}
$\to$ $\arroworder{1}$\par
$\Rightarrow$ $\arroworder{2}$\par
$\Rrightarrow$ $\arroworder[arrow var]{3}$ $\arroworder{3}$\par
$\Rrightarrow$ $\arroworder[arrow var]{4}$ $\arroworder{4}$\par
\end{document}

在此处输入图片描述

因此,它有一些选项arrow var可以切换到箭头看起来与 AMS 箭头相似的模式。我们可以继续,使它们可扩展等等,但我认为首先要做的是提出一个明确的方案,说明如何构建这些箭头等等。

请注意,在 Ti在我看来, Zy 环境(例如tikz-cd此类箭头)具有更好的动机,因为在那里你可以弯曲它们等等。我发布这篇文章主要是为了供将来尝试摆弄箭头时参考Implies

答案2

你可以查看这个讨论tikz 和 tikz-cd 中的三箭头\usepackage{tikz},其中使用和提供了“三重”甚至“四重”箭头样式的解决方案\rightarrow\

否则,\usepackge{witharrows}可以使用 WithArrows 绘制多个嵌套箭头并更改层数。但 WithArrows 不会绘制直箭头。

对于“WithArrows”包,请访问Package WithArrows 文档由 F. Pantigny 编辑(最后修订于 2020 年 3 月 30 日)

我希望它有帮助。

相关内容