我正在使用 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 rectangle
TikZ-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}