矩阵节点之间的链接不是水平的

矩阵节点之间的链接不是水平的

我正在使用 tikz 矩阵将一些数据放在网格上。但是,根据每个节点中内容的高度,连接两个节点的边缘略微倾斜,形成了波浪线的丑陋效果。我怎样才能让这些线变直?

以下是生成效果的代码示例

\documentclass[a4paper]{amsart}

\usepackage{amsmath, amsfonts, amssymb, amsthm, wasysym}

\usepackage{pgfkeys}
% tikz environnement
\usepackage{tikz}
\usetikzlibrary{trees, snakes, shapes, arrows, arrows.meta, matrix, calc, graphs,
  plotmarks, backgrounds, decorations.markings}

\begin{document}
\[
\begin{tikzpicture}[ultra thick,
  column sep={1.5cm,between origins}, row sep={1.0cm,between origins}]
  \matrix (M) [matrix of math nodes, nodes={inner sep=1pt}] {
  U_1 & \cdots & U_{i-1} & U_{i-1} \cup \{i\} & U_{i-1}^\sharp &
  U_{i}^\sharp & \cdots & U_{N} \\
};
\foreach \n in {1,2,...,7} {
    \draw[thin] (M-1-\n.east) -- (M-1-\the\numexpr \n + 1\relax.west);
}
\end{tikzpicture}
\]
\end{document}

以下是我得到的结果: 波浪行

我尝试修复节点的高度,但没有成功。我还尝试了一个技巧,例如来自空节点的tikz矩阵箭头不是水平的应该可以完成工作,但如果可能的话,我想避免在每个节点前面手动插入一些幻影文本(而且这样的文本会增加一些水平间距)。

答案1

除非您需要绘制节点的边框或填充它们,否则您可以使用asymmetrical rectangleTikZ-CD 中的形状。此形状正是为此目的而制作的。

事实上,使用 TikZ-CD 可以轻松制作相同的图表。

形状设置为西/中/东锚点与基线之间的距离固定但可变。此距离由 控制,/tikz/commutative diagrams/center yshift其默认值为axis_height,即返回

轴高度参数(又名σ文档的数学字体有两种格式:

或者用外行人的话来说:我们想在哪里排版数学内容。

代码

\documentclass[varwidth]{standalone}
%\documentclass[a4paper]{amsart}
\usepackage{amsmath, amsfonts, amssymb, amsthm, wasysym}
% tikz environnement
\usepackage{tikz}
\usetikzlibrary{cd, matrix}

\begin{document}
\[
\begin{tikzpicture}[
  ultra thick,
  column sep={1.5cm,between origins},
  row sep={1.0cm,between origins}]
\matrix (M) [
  matrix of math nodes,
  nodes={inner sep=1pt, asymmetrical rectangle},
]{
  U_1 & \cdots & U_{i-1} & U_{i-1} \cup \{i\} & U_{i-1}^\sharp &
  U_{i}^\sharp & \cdots & U_{N} \\
};
\foreach \n in {1,2,...,7}
  \draw[thin] (M-1-\n.east) -- (M-1-\the\numexpr \n + 1\relax.west);
\end{tikzpicture}
\]
\[
\begin{tikzcd}[
  arrows=dash, cells={nodes={inner sep=1pt}},
  column sep={1.5cm,between origins}, row sep={1cm,between origins}]
U_1 \rar & \cdots \rar & U_{i-1} \rar
  & U_{i-1} \cup \{i\} \rar & U_{i-1}^\sharp \rar
  & U_{i}^\sharp \rar & \cdots \rar & U_{N}
\end{tikzcd}
\]
\end{document}

输出

在此处输入图片描述

相关内容