在 tikzpicture 矩阵环境中,垂直线将矩阵条目分隔开吗?

在 tikzpicture 矩阵环境中,垂直线将矩阵条目分隔开吗?

在 tikzpicture 矩阵环境中,我们如何制作一条完美的垂直线作为方阵中的线来分隔左侧的 Cc 和 G 以及右侧的 D 和 H?

该线最好完美地设置在左侧的Cc和G以及右侧的D和H之间的中间位置。

如果可能的话,我愿意坚持使用 tikzpicture 矩阵环境。

感谢您的任何建议/意见。

这是我的失败的尝试。 在此处输入图片描述

这是我的 Tex 代码:

\documentclass[10pt,border=3mm,tikz]{standalone}
\usetikzlibrary{matrix}

    \usepackage{amsmath, amsthm, amssymb,mathtools}
    
    
    \begin{document}
    
    
    \begin{tikzpicture}
    \matrix[matrix of math nodes,inner sep=1pt,row sep=1em,column sep=1em] (M)
    {
     & A &  B & Cc & D \\
      & E &  F & G & H\\
    }
    ;
    \draw[ ->] (M-1-2.east) -- (M-1-3.west) node[midway,above,pos=0.3]{\,\tiny ab};
    \draw[ ->] (M-1-3.east) -- (M-1-4.west) node[midway,above,pos=0.3]{\,\tiny bc};
    \draw[-] (M-1-4.north east) -- (M-2-4.south east);
    \end{tikzpicture}
    
    
    \end{document}

答案1

由于 Cc 和 G 未右对齐,而 D 和 H 或多或少左对齐,因此不可能同时垂直放置,并使其位于 Cc 和 D 之间以及 G 和 H 之间,而不违反物理定律,这是一个过于复杂的项目,无法在 SE 帖子中解决。相反,我在寻找中间点时以 Cc 和 D 作为参考点,以 G 为下点。计算中不使用 H。

您可以使用该calc库找到两个顶部节点之间的中间点,创建一个标记坐标,并在创建到底部的线时使用该标记保持水平位置。

调整线

\documentclass[10pt,border=3mm,tikz]{standalone}
\usetikzlibrary{matrix,calc}
\usepackage{amsmath, amsthm, amssymb,mathtools}
\begin{document}
\begin{tikzpicture}
  \matrix[matrix of math nodes,inner sep=1pt,row sep=1em,column sep=1em] (M)
  {
    & A &  B & Cc & D \\
    & E &  F & G & H\\
  }
  ;
  \draw[ ->] (M-1-2.east) -- (M-1-3.west) node[midway,above,pos=0.3]{\,\tiny ab};
  \draw[ ->] (M-1-3.east) -- (M-1-4.west) node[midway,above,pos=0.3]{\,\tiny bc};
  \draw[-] ($(M-1-4.north east)!.5!(M-1-5.north west)$) coordinate (a) -- (a |- M-2-4.south);
\end{tikzpicture}
\end{document}

相关内容