放置节点(自动),不重叠

放置节点(自动),不重叠

在此处输入图片描述

我生成了一堆大小不同的节点(在 Python 中),需要将它们放置在不重叠的位置。例如,生成了 latex forloop(再次说明:实际数据不是 latex 生成的)。但结果看起来与左边的示例非常相似 - 节点重叠。

我猜想放置节点最直观的解决方案是一种列方向,其中如果前一个节点占据该位置,则当前节点节点将被放置到下一个空闲的“列”中。

在生成时,我不知道乳胶生成的节点的高度(但是基于字符或换行符的内容长度的不准确假设是可能的 - 它远远超过示例中的“.x”)

有没有办法给 Latex 一组节点,让它自己找出位置?有什么替代解决方案吗?

母语:

https://www.latex4technics.com?note=zzvqsh

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{fit} 

\begin{tikzpicture}
\foreach \i in {0,0.5,...,3}
\node[inner sep=10pt, draw] at (1,\i) {\i};
\end{tikzpicture}
\begin{tikzpicture}
\draw (0,-2) -- (0,3);
\node[inner sep=10pt, draw] at (1,0) {0};
\node[inner sep=10pt, draw] at (2.1,0.5) {0.5};
\node[inner sep=10pt, draw] at (3.2,1) {1};
\node[inner sep=10pt, draw] at (1,1.5) {1.5};
\node[inner sep=10pt, draw] at (2.1,2) {2};
\node[inner sep=10pt, draw] at (3.2,2.5) {2.5};
\node[inner sep=10pt, draw] at (1,3) {3};
\end{tikzpicture}
\end{document}

编辑:我忘了提到重要的附注:对于我的应用程序,节点的 y 坐标必须是固定的

答案1

例如,chains旨在创建不重叠节点的链。

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{fit,chains} 
\begin{document}
\begin{tikzpicture}
\path[start chain=going above,node distance=1ex,
    nodes={inner sep=10pt, draw,minimum width=3.5em,on chain}]
 (1,0) foreach \x in {0,0.5,...,3} {node{$\pgfmathprintnumber\x$}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容