如何在不使用 TikZ 矩阵库的情况下在交换图中的节点之间绘制直线?

如何在不使用 TikZ 矩阵库的情况下在交换图中的节点之间绘制直线?

我想绘制一个交换图,如下TikZ所示:

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{tikzpicture}[auto]
\node (S1) {$\sigmaSet \cap X_N$};
\node (S2) [below= 2cm and 4cm of S1] {$\sigmaSet \cap X_N$};
\node (S3) [below= 2cm and 4cm of S2] {$\discreteSigmaSet$};
\node (U1) [right= 2cm and 4cm of S1] {$\potentialSpace$};
\node (U2) [below= 2cm and 4cm of U1] {$Y_M$};
\node (U3) [below= 2cm and 4cm of U2] {$\R^M$};
\draw[->] (S1) to node {$F_f$} (U1);
\draw[->] (S2) to node {$\widetilde{F}_f$} (U2);
\draw[->] (S3) to node {$\widehat{F}_f$} (U3);
\draw[->] (S1) to node [swap] {$I$} (S2);
\draw[->] (S2) to node [swap] {$\theta_{B_N}$} (S3);
\draw[->] (U1) to node {$P^{\psprod{E}{\cdot}{\cdot}}_{Y_M}$} (U2);
\draw[->] (U2) to node {$\theta_{C_M}$} (U3);
\end{tikzpicture}

看起来像这样:

在此处输入图片描述

请注意,水平箭头不是直的,而是在右侧末端太高。

现在我的问题是如何让 TikZ 将水平箭头绘制为直线。有没有办法在不使用矩阵库的情况下实现这一点?我想让上面的代码尽可能简单。

答案1

您可以使用(p |- q)符号,意思是过 p 的垂直线与过 q 的水平线的交点。

代码

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[auto]
\node (S1) {$\sigma \cap X_N$};
\node (S2) [below= 2cm and 4cm of S1] {$\sigma \cap X_N$};
\node (S3) [below= 2cm and 4cm of S2] {$\sigma$};
\node (U1) [right= 2cm and 4cm of S1] {$\gamma$};
\node (U2) at (U1 |- S2) {$Y_M$};
\node (U3) at (U2 |- S3) {$R^M$};
\draw[->] (S1) to node {$F_f$} (U1);
\draw[->] (S2) to node {$\widetilde{F}_f$} (U2);
\draw[->] (S3) to node {$\widehat{F}_f$} (U3);
\draw[->] (S1) to node [swap] {$I$} (S2);
\draw[->] (S2) to node [swap] {$\theta_{B_N}$} (S3);
\draw[->] (U1) to node {$P^{\hat{E}{\cdot}{\cdot}}_{Y_M}$} (U2);
\draw[->] (U2) to node {$\theta_{C_M}$} (U3);
\end{tikzpicture}

\end{document}

输出

在此处输入图片描述

答案2

有助于tikz-cd

我已经模拟了你未定义的符号。

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}

\begin{tikzcd}[column sep=large,row sep=large]
\Sigma \cap X_N
 \arrow{r}{F_f}
 \arrow[swap]{d}{I}
&
\mathcal{P}
 \arrow{d}{P^{\Pi(E){\cdot}{\cdot}}}
\\
\Sigma \cap X_N
 \arrow{r}{\tilde{F}_f}
 \arrow[swap]{d}{\theta_{B_N}}
&
Y_M
 \arrow{d}{\theta_{C_M}}
\\
\Sigma
 \arrow{r}{\hat{F}_f}
&
R^M
\end{tikzcd}
\end{document}

在此处输入图片描述

相关内容