如何对齐交换图的 TikZ 节点?

如何对齐交换图的 TikZ 节点?

我有一个 TiZ图片:

\begin{tikzpicture}
  \matrix (m) [matrix of math nodes,row sep=0em,column sep=3em,minimum width=2em] {
     E_1 & H^+ \\
     E_1^\perp & H^- \\
     &\R^{2m}\backslash\left\{H^+\cap H^-\right\}\\};
  \path[-stealth]
    (m-1-1) edge (m-1-2)
    (m-2-1) edge (m-2-2)
            edge (m-1-2)
            edge (m-3-2);
\end{tikzpicture}

到目前为止一切顺利。它看起来像这样:

在此处输入图片描述

两个问题:

  1. 如何将右侧节点水平对齐到左侧,以便右侧节点的左侧位于一条垂直线上?
  2. 如何垂直对齐右侧或左侧节点,以便两个水平箭头完全水平?现在它们有点倾斜。

答案1

默认情况下,matrix of nodes将节点锚定(放置并对齐)在其上baseline,但您可以更改它以固定新的锚点:

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

\usetikzlibrary{matrix}
\usepackage{amsmath}

\begin{document}

\begin{tikzpicture}
  \matrix (m) [matrix of math nodes,row sep=0em,column sep=3em,minimum width=2em, nodes={anchor=west}] {
     E_1 & H^+ \\
     E_1^\perp & H^- \\
     &R^{2m}\backslash\left\{H^+\cap H^-\right\}\\};
  \path[-stealth]
    (m-1-1) edge (m-1-2)
    (m-2-1) edge (m-2-2)
            edge (m-1-2)
            edge (m-3-2);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

带有;的版本tikz-cd只需要对箭头进行微小的调整。

\documentclass{article}
\usepackage{amssymb}
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}[
  cells={nodes={anchor=west}},
  end anchor={west},
  row sep=1ex,
  column sep=large,
]
E_1 \arrow[r] & H^+ \\
E_1^\perp
  \arrow[ru,end anchor=south west]
  \arrow[r]
  \arrow[rd] & H^- \\
& \mathbb{R}^{2m}\setminus (H^+\cap H^-)
\end{tikzcd}

\end{document}

在此处输入图片描述

答案3

这是使用包的最小版本tikz-cd

输出

在此处输入图片描述

代码

\documentclass[letterpaper,11pt,reqno]{amsart}
\usepackage{tikz-cd}

\begin{document}
\[\begin{tikzcd}[row sep=2mm, column sep=1.5cm, cells={anchor=west}]
    E_1 \arrow[r]   & H^+ \\
    E_1^\perp \arrow[ur]\arrow[r]\arrow[dr, end anchor={west}] & H^- \\
    & \mathbb{R}^{2m} \setminus\left\{H^+\cap H^-\right\}\ \\
\end{tikzcd}\]
\end{document}

相关内容