虚线和弯曲的 xy 矩阵箭头具有非虚线转弯

虚线和弯曲的 xy 矩阵箭头具有非虚线转弯

我正在用 制作这个图表xypic,我想制作从图表顶部到底部的弯曲箭头。所以我重新学习了弯曲条目的语法。然后我决定要将这些箭头弄虚。所以我添加了额外的命令并最终得到以下结果:

\documentclass[a4paper]{report}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage[all]{xy}

\begin{document}
\[\xymatrix{
 & & M(\omega)\ar@{-}@/_.1pc/[ddr]\ar@{-}@/_.1pc/[dl] & \\
 & M \ar@{-}@/_.1pc/[ddr] & & \\
 & & & K(\omega)\ar@{-}@/_.1pc/[dl] & \\
 & & K\ar@{..>}`[urr]`[uuur]_1[uuu]\ar@{..>}`[ull]`[uuul]^2[uuu]
}\]
\end{document}

我终于开始排版了...什么?

在此处输入图片描述

为什么这些转弯处没有虚线,有没有办法让它们像箭杆的其他部分一样变得虚线?

答案1

恐怕这是不可能的。请参见此处\xymatrix 中的虚线或彩色弧(不是一个很好的参考,因为我是唯一一个回答的人,而且没有获得令人印象深刻的分数... :-))

不过我建议改用这里。请参阅我的 MWE:

% arara: pdflatex

\documentclass[a4paper]{report}
\usepackage{tikz-cd}

\begin{document}
\[
\begin{tikzcd}[column sep={2cm,between origins},row sep={1.5cm,between origins}] % can be left away, but it makes the rectangle parallel
    & & M(\omega)\arrow[dash]{dl}\arrow[dash]{ddr} & \\
    & M\arrow[dash]{ddr}  & & \\
    & & & K(\omega)\arrow[dash]{dl} & \\
    & & 
    K
    \arrow[dotted, rounded corners, to path={-- ([xshift=-2.8cm]\tikztostart.west) \tikztonodes  |- (\tikztotarget)}]{uuu}[near end,swap]{2} % rounded corners=10 if you want the same as with xy
    \arrow[dotted, rounded corners, to path={-- ([xshift=2.8cm]\tikztostart.east) \tikztonodes  |- (\tikztotarget)}]{uuu}[near end]{1}
    &
\end{tikzcd}
\]
\end{document}

在此处输入图片描述


我无法将标签设置在箭头中间(或者没有足够的时间……)。请参阅手册和其他帖子以了解如何\tikztonodes正确使用。您可能需要在此处设置两个幻影节点。

答案2

简单修复 1

坚持的替代解决方案xypic如下:

\documentclass[a4paper]{report}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage[all]{xy}

\begin{document}

\[\xymatrix{
 & & M(\omega)\ar@{-}@/_.1pc/[ddr]\ar@{-}@/_.1pc/[dl] & \\
 & M \ar@{-}@/_.1pc/[ddr] & & \\
 & & & K(\omega)\ar@{-}@/_.1pc/[dl] & \\
 & & K
           \ar@{..>}@(ur,dr)_1 [uuu]
           \ar@{..>}@(ul,dl)^2 [uuu]
}\]
\end{document}

产量:

在此处输入图片描述

外观相当不同,但对于这个单一图表来说,它已经足够了。然而,这只是一个部分解决方案,因为在其他情况下,我可能想调整那些弯曲的箭头,而目前我不知道该怎么做,而且这里的回答者似乎也不知道。

“简单”修复 2

Kris 在邮件中告诉我,另一个解决方案xypic如下:

\documentclass[a4paper]{report}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage[all]{xy}

\begin{document}

\[\xymatrix{
 & & M(\omega)\ar@{-}@/_.1pc/[ddr]\ar@{-}@/_.1pc/[dl] & \\
 & M \ar@{-}@/_.1pc/[ddr] & & \\
 & & & K(\omega)\ar@{-}@/_.1pc/[dl] & \\
 & & K
           \ar@{..>}@(r2pc,r2pc)_1 [uuu]
           \ar@{..>}@(l2pc,l2pc)^2 [uuu]
}\]
\end{document}

但是,这只适用于 3.9 及以上版本,也就是 3.9,因为这是最新版本。不幸的是,TL 2014 和加拿大运输安全局有该版本,并且它们都具有 3.8.9,这会产生以下令人讨厌的结果:

在此处输入图片描述

用 Kris 自己的话来说:

“3pc”是曲线的宽度指示器,只有 3.9 可以处理 - 3.8 只是对它们进行呼应。

使用从源码,该解决方案的结果变为:

在此处输入图片描述

我很快就会尝试括号中的长度,看看我能对循环进行多少调整。这实际上记录在第 42 页这里,哦,不,那是旧文档,但在 sourceforge 的新文档的第 42 页上,您可以找到与旧文档相同的表格,但<dimen>也有这种可能性,在第 43 页的 24p 中进行了解释。据我所知,可以对此进行大量调整。我不会发布示例,因为我不知道从众多示例中选择哪一个,而且它们太多了 :)。

来源改变 —— 仍然未知,将再次收到 Kris 的消息 :)

源代码中似乎有一个可能的更改,可以允许自动标注弯道。这是 Kristoffer Rose 在邮件中告诉我的,我将尝试一下。当我处理完这个问题后,我会编辑这个答案以包含该更改。更新克里斯 说:

要参与 Xy-pic 开发,您需要 (1) 从 SourceForge 签出源代码,(2) “制作 xysource.pdf”,(3) 研究代码的“内核”和“箭头”部分(xysource.pdf 中最简单)。修复将针对 xyarrow.doc 代码中当前使用 \cir 原语进行转弯的位置,如果已加载 \crv 原语并且连接样式为非实心,则您希望它改用 \crv 原语...(我是认真的,这是一个勇敢的事业)!

现在我已经从 sourceforge 下载了 xy-pic,xysource.pdf 已经存在,但我仔细查看后xyarrow.tex发现没有\cir,只有\CIR\cir@…其中…代表我不记得的东西。非虚线弯曲被报告为漏洞\cir在 xysource 中。我在箭头部分找不到任何内容,只有\cir…。我想我现在会专心考试,夏天再回来做这件事。

笔记

与 Kris 的交流也是为了告诉他这一页。现在大部分都已修复,只有几个被移除,还有一个仍旧损坏。将在下一封邮件中通知 Kris。因此,如果有人遇到过损坏的链接,您可以返回并发现它们已修复 :)。

相关内容