xy-pic 中的波浪箭头

xy-pic 中的波浪箭头

用什么方法才能画出漂亮的波浪箭头呢?

到目前为止,我尝试了以下内容。我使用xy-pic包,在那里我使用@{~>}箭头的定义。

我编写的代码如下:

\begin{figure}
\centering
\mbox{
\xygraph{
!{<0cm,0cm>;<1cm,0cm>:<0cm,1cm>::}
!{(0,0) }*+{\bullet_{x}}="x"
!{(2,0) }*+{\bullet_{v''}}="v"
!{(4,0) }*+{\bullet_{y}}="y"
!{(2,1) }*+{\bullet_{u}}="u"
!{(2,-2) }*+{\bullet_{z}}="z"
"x":@{~>}"v"
"v":@{~>}"y"
"y":@/_/@{~>}"u"
"u":"v"
"v":@{~>}"z"
}}
\end{figure}

结果如下:

带有波浪箭头的图表

我发现该图中存在以下问题:

  • 在从 x 到 v'' 和从 v'' 到 y 的箭头中,最后一个“~”和结尾的“>”的组合并不好。
  • 每次“~”后,从 v'' 到 z 的箭头都会被切断
  • 从 y 到 u 的箭头看起来很糟糕。

我正在寻找如何提高图形质量的技巧。谢谢。

答案1

默认箭头样式xypic相当糟糕,箭头/提示样式可以通过字体系列和大小进行更改,如参考手册:第 10 节更多提示扩展:第 27 页

\SelectTips{<family>}{<size>}

那些断掉的箭头和劣质的排版质量可以通过加载来改善 繁體PDFpdf像这样的选项 包\usepackage[pdf]{xypic}

tikz-cd最后,尽管您可能会考虑这项工作,但经过上述调整和输出的 MWE 改进版本如下。

在此处输入图片描述

\documentclass{article}
\usepackage[all,pdf]{xy}
\begin{document}
\SelectTips{cm}{11}
\begin{figure}
\centering
\mbox{
\xygraph{
!{<0cm,0cm>;<1cm,0cm>:<0cm,1cm>::}
!{(0,0) }*+{\bullet_{x}}="x"
!{(2,0) }*+{\bullet_{v''}}="v"
!{(4,0) }*+{\bullet_{y}}="y"
!{(2,1) }*+{\bullet_{u}}="u"
!{(2,-2) }*+{\bullet_{z}}="z"
"x":@{~>}"v"
"v":@{~>}"y"
"y":@/_/@{~>}"u"
"u":"v"
"v":@{~>}"z"
}}
\end{figure}
\end{document}

答案2

我知道 OP 想要一个解决方案xy-pic,但由于活动很少并且其他人可能会发现它们很有用,因此这里有一些使用tikz-cd和普通的可能解决方案tikz

选项1:tikz-cd

\documentclass{standalone}
\usepackage{tikz-cd}
\usetikzlibrary{decorations.pathmorphing}

\begin{document}
\begin{tikzcd}[%
  arrows={decorate, decoration={snake,segment length=1.64mm,amplitude=0.2mm}}
]
~            & & u \arrow[decorate=false]{d} & &                           \\
x \arrow{rr} & & v'' \arrow{rr} \arrow{dd}   & & y \arrow[bend right]{llu} \\
             & &                             & &                           \\
             & & z                           & &
\end{tikzcd}
\end{document}

在此处输入图片描述

选项 2:tikz

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}

\begin{document}
\begin{tikzpicture}[%
  foo/.style={%
    ->,
    shorten >=4pt,
    shorten <=4pt,
    decorate,
    decoration={%
      snake,
      segment length=1.64mm,
      amplitude=0.2mm,
      pre length=4pt,
      post length=4pt,
    }
  }
]
  \coordinate (v'') at ( 0, 0);
  \coordinate (u)   at ( 0, 1);
  \coordinate (x)   at (-2, 0);
  \coordinate (y)   at ( 2, 0);
  \coordinate (z)   at ( 0,-2);
  \foreach \pt in {u,v'',x,y,z} {
    \fill (\pt) circle (2pt) node[below right] {$\pt$};
  }
  \draw[foo] (x) -- (v'');
  \draw[foo] (v'') -- (y);
  \draw[foo] (v'') -- (z);
  \draw[foo] (y) to[in=-5,out=120] (u);
  \draw[foo,decorate=false] (u) -- (v'');
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容