我正在用 制作这个图表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 中的虚线或彩色弧(不是一个很好的参考,因为我是唯一一个回答的人,而且没有获得令人印象深刻的分数... :-))
不过我建议改用tikz-cd这里。请参阅我的 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。因此,如果有人遇到过损坏的链接,您可以返回并发现它们已修复 :)。