使用 tikz-cd 缩短一些水平线

使用 tikz-cd 缩短一些水平线

以下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,并且我已经相应地更新了我的代码。

在此处输入图片描述

相关内容