tikz 树中的文本对齐和连接器(边)的形式

tikz 树中的文本对齐和连接器(边)的形式

我是新手tikz,想尝试绘制树形结构。

我尝试了不同的选项,但无法按照我想要的样子进行修改。
它目前看起来像这样:

Tikz 代码

\documentclass{article}

\usepackage{tikz}
\usepackage{tikz-qtree}
\usetikzlibrary{trees} % this is to allow the fork right path

\usepackage[utf8]{inputenc}

\begin{document}

\begin{tikzpicture}[grow'=right,sibling distance=0.1cm]
  \tikzstyle{level 1} = [level distance=3cm, text width = 2cm]
  \tikzstyle{level 2} = [level distance=3cm, text width = 2cm]
  \tikzstyle{level 3} = [level distance=3cm, text width = 2cm]
\Tree 
    [
    [.{Pressen}
            [.{uniaxiales Pressen} ]
            [.{isostatisches Pressen} ]
            [.{Vibrationspressen} ]
            [.{Stampfen} ]
        ]
        [.{Plastisches Formen}
            [.{Extrudieren} ]
            [.{Drehen} ]
        ] 
        [.Gießen 
            [.{Schlickergießen} ]
            [.{Druckgießen} ]
            [.{Spritzgießen} ]
            [.{Foliengießen} ]
]
    ]
\end{tikzpicture}
\end{document}

最终的 pdf 输出:

(手绘红线,见下文)

在此处输入图片描述

我想实现以下目标

  • 节点“Plastisches Formen”中的换行符
  • 边缘不直,而是水平/垂直 - 就像用红色勾勒出的一条边缘
  • 各层级的文本左对齐
  • 是否可以自动将级别距离调整为级别中最大节点的宽度,这样我就不必手动设置“级别距离”?

答案1

如果forest是一个选项:

\documentclass[tikz,border=3mm]{standalone}

\usepackage{forest}
\usepackage[utf8]{inputenc}

\begin{document}

\begin{forest}
for tree={grow'=0,
anchor=west, child anchor=west, fit=band, parent anchor=east, edge path={\noexpand\path[\forestoption{edge}](!u.parent anchor)|-(.child anchor)\forestoption{edge label};}, l sep=1cm,}
[, calign=child,  calign child=2
    [Pressen
           [uniaxiales Pressen]
            [isostatisches Pressen]
            [Vibrationspressen]
            [Stampfen]
        ]
        [Plastisches\\Formen, align=center
            [Extrudieren]
            [Drehen]
        ] 
        [Gießen 
            [Schlickergießen ]
            [Druckgießen ]
            [Spritzgießen ]
            [Foliengießen ]
]
    ]
\end{forest}
\end{document}

在此处输入图片描述

第二版本:

我不太明白所有节点“raggedright”意思是,但可能是选择align=right这样做。

关于对齐所有同一级别节点的其他评论可以通过tier/.pgfmath=level()选项完成。

\documentclass[tikz,border=3mm]{standalone}

\usepackage{forest}
\usepackage[utf8]{inputenc}

\begin{document}

\begin{forest}
for tree={grow'=0, l=0, l sep=2em, 
         child anchor=west, anchor=west,  
          parent anchor=east, 
          tier/.pgfmath=level(),
          align=right,
          edge path={\noexpand\path[\forestoption{edge}](!u.parent anchor)|-(.child anchor)\forestoption{edge label};},
          }
[, calign=child,  calign child=2
    [Pressen
           [uniaxiales\\ Pressen]
            [isostatisches Pressen]
            [Vibrationspressen]
            [Stampfen]
        ]
        [Plastisches\\Formen
            [Extrudieren]
            [Drehen]
        ] 
        [Gießen 
            [Schlickergießen ]
            [Druckgießen ]
            [Spritzgießen ]
            [Foliengießen ]
]
    ]
\end{forest}
\end{document}

在此处输入图片描述

相关内容