![水平 Tikz 树中相对于节点左边缘的坐标偏移](https://linux22.com/image/371876/%E6%B0%B4%E5%B9%B3%20Tikz%20%E6%A0%91%E4%B8%AD%E7%9B%B8%E5%AF%B9%E4%BA%8E%E8%8A%82%E7%82%B9%E5%B7%A6%E8%BE%B9%E7%BC%98%E7%9A%84%E5%9D%90%E6%A0%87%E5%81%8F%E7%A7%BB.png)
TLDR:我希望在 Tikzpicture 开始时指定的坐标偏移相对于上方节点的西边缘而不是中心进行解释,但找不到如何解释。
你好,
我正在尝试在 LaTeX 中创建一个水平增长的 Tikz 树,其节点上有文本,由于该树有相当多的级别,并且一些文本可能有点长,所以我希望尽可能节省水平空间。
我已经或多或少按我想要的方式设置了所有内容,但问题是我为每个新级别设置的坐标偏移似乎从文本字段的中心开始,这意味着新级别的水平偏移可能比宽文本框所需的偏移要远得多。我希望能够设置相对于文本框西边缘的坐标偏移。仅将锚点设置为西似乎不起作用,因为线条只是水平拉长。
以下是 MWE:
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\begin{document}
\tikzstyle{every node}=[draw=black,thick,anchor=west]
\begin{tikzpicture}[
grow via three points={one child at (0.5,-0.7) and
two children at (0.5,-0.7) and (0.5,-1.4)},
edge from parent path={(\tikzparentnode.west) |- (\tikzchildnode.west)}]
\node[anchor=west]{}
child { node[anchor=west] {Text}}
child { node[anchor=west] {Quite a long text here}
child { node[anchor=west] {Another long text for a wide box}
child { node[anchor=west] {More text}}
}
};
\end{tikzpicture}
\end{document}
如您所见,下方两个文本框按所需量水平移动(比较“文本”相对于根节点)相对于上述水平的中心,这意味着它们在水平方向上仍然延伸得很远。有什么方法可以让坐标偏移被解释为相对于上一层文本框的左/西边缘?
谢谢!
答案1
像这样?
使用forest
包很容易获得:
\documentclass[margin=3mm]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
for tree={grow'=0, % direction
folder, % show folder organization
draw, % nodes have borders
l sep'=6mm
}
[
[A
[Text]
[Quite a long text here
[Another long text for a wide box
[More text]
]
]
]
]
\end{forest}
\end{document}