以下tikz-cd
代码生成该图:
\documentclass[tikz]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
A & B \arrow[r] \arrow[d] & C \arrow[d] \\
D& E \arrow[r] &F
\end{tikzcd}
\end{document}
如果有的话,怎样才能将 A 和 D 分别移近 B 和 E(当然,同时仍保持它们水平和垂直对齐)?
在对我的问题进行了大量修改之后,我发现 tikz-cd 中箭头的长度使用可选参数来&
更改列间距。egreg 的回答就说明了这一点。
答案1
把图表想象成一个矩阵:我们有两行三列;所以每行需要两个&
角色。在每个单元格中添加从它开始的箭头及其目标。
\begin{tikzcd}
A \arrow[r] \arrow[d] & B \arrow[r] \arrow[d] & C \arrow[d] \\
D \arrow[r] & E \arrow[r] & F
\end{tikzcd}
如果图表比较复杂,其实也没什么不同。例如,假设 A 位于顶行,箭头指向 B、C 和 D 位于底行,A 位于 B 上方;我们还想要一个从 B 到 C 的箭头和一个从 C 到 D 的箭头。
\begin{tikzcd}
A \arrow[d,"f"] \arrow[rd,"g"] \arrow[rrd,"h"] \\
B \arrow[r,"\beta"] & C \arrow[r,"\gamma"] & D
\end{tikzcd}
哦,等等!第二张图很糟糕!
我们可以通过增加列间距和改变标签的位置来获得更好的效果:
\begin{tikzcd}[column sep=4em]
A \arrow[d,swap,"f"] \arrow[rd,swap,"g"] \arrow[rrd,"h"] \\
B \arrow[r,swap,"\beta"] & C \arrow[r,swap,"\gamma"] & D
\end{tikzcd}
更好的是:使其更加对称:
\begin{tikzcd}[column sep=4em]
& A \arrow[dl,swap,"f"] \arrow[d,swap,"g"] \arrow[rd,"h"] \\
B \arrow[r,swap,"\beta"] & C \arrow[r,swap,"\gamma"] & D
\end{tikzcd}
为了缩短两列之间的距离,使用可选参数&
:
\begin{tikzcd}
A &[-2em] B \arrow[r] \arrow[d] & C \arrow[d] \\
D & E \arrow[r] & F
\end{tikzcd}
答案2
您可以使用 tikz-cd 或 来制作这样的图表pstricks
,更具体地说,使用psmatrix
来自的环境pst-node
:
\documentclass[pdf]{article}
\usepackage{tikz-cd}
\usepackage{pst-node, multido, auto-pst-pdf}
\begin{document}
\[ \begin{tikzcd}
A\dar \rar [dashed] & B\dar\rar [dashed] & C\dar\\%
D \rar [dashed] & E \rar [dashed] & F
\end{tikzcd}
\]
\[ \def\pscolhookii{\hskip-.4cm}
\begin{psmatrix}[colsep=1.2cm, rowsep=0.8cm]
%% nodes
A & B & C\\
D & E & F
%%arrows
\psset{arrows=->, arrowinset=0.15, nodesep=3pt, linewidth=0.6pt}
\ncline{1,1}{2,1} \ncline{1,2}{2,2} \ncline{1,3}{2,3}
\psset{ linestyle=dashed, dash=3pt 2pt}
\ncline{1,1}{1,2} \ncline{1,2}{1,3}
\ncline{2,1}{2,2} \ncline{2,2}{2,3}
\psset{ linestyle =dash}
\end{psmatrix}%
\] %
\end{document}
添加:对于您的新要求,我知道如何使用来实现pstricks
,并且我已经相应地更新了我的代码。