在 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}