下面是我为树编写的改编代码。当全局设置框的长度时,对齐很好。但是,由于某些框中的文本占用两行,因此需要更多空间。因此,我希望颜色和长度调整按级别进行。我希望每个框中的字母都只有一行,就像代码中那样。请帮忙,谢谢。以下是上面引用的代码:
\documentclass[a4paper,10pt]{article}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[edges]{forest}
\usetikzlibrary{shadows}
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tikzset{
my node style/.style={
font=\tiny,
top color=white,
bottom color=blue!25,
rectangle,
rounded corners,
% minimum size=4mm,
draw=blue!75,
very thick,
drop shadow,
align=justify,
% level 2/.style={text width=3.5cm},
}
}
\forestset{
my tree style/.style={
for tree={grow=east,
parent anchor=east, % <---
child anchor=west, % <---
my node style,
l sep=1.5em,
% text width=3.5cm, %<---turn off all sizing
% text width=5cm,
forked edge, % <---
fork sep=1em, % <---
edge={draw=blue!50, thick},
if n children=3{for children={
if n=2{calign with current}{}}
}{},
% delay={if content={}{shape=coordinate}{}},
tier/.option=level,
}
}
}
\centering
\begin{forest}
my tree style
[Inicialização de sistema Acção Y Euro Pallet
[Inicialização de sistema Acção Y, text width=4cm %<---changed
[Inicialização de sistema]
[Inicialização de sistema de sistema]
[Inicialização de sistema]
]
[Inicialização de sistema Inicialização de sistema Acção Y
[Inicialização de sistema]
[Inicialização Inicialização de sistema de sistema]
[Inicialização de sistema]
[Inicialização de sistema de sistema de sistema]
]
]
\end{forest}
\end{document}
图像是:
答案1
为了使颜色和文本宽度取决于级别,您可以使用
where level=0{my node=blue,text width=6em}{},
where level=1{my node=purple,text width=5em}{},
where level=2{my node=red,text width=4em}{},
请注意,我稍微重新定义了my node
。我不知道这些是否是您想要的文本宽度。
\documentclass[a4paper,10pt]{article}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[edges]{forest}
\usetikzlibrary{shadows}
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tikzset{
my node/.style={
font=\tiny,
top color=white,
bottom color=#1!25,
rectangle,
rounded corners,
% minimum size=4mm,
draw=#1!75,
very thick,
drop shadow,
align=justify,
% level 2/.style={text width=3.5cm},
}
}
\forestset{
my tree style/.style={
for tree={grow=east,
parent anchor=east, % <---
child anchor=west, % <---
where level=0{my node=blue,text width=6em}{},
where level=1{my node=purple,text width=5em}{},
where level=2{my node=red,text width=4em}{},
l sep=1.5em,
% text width=3.5cm, %<---turn off all sizing
% text width=5cm,
forked edge, % <---
fork sep=1em, % <---
edge={draw=blue!50, thick},
if n children=3{for children={
if n=2{calign with current}{}}
}{},
% delay={if content={}{shape=coordinate}{}},
tier/.option=level,
}
}
}
\centering
\begin{forest}
my tree style
[Inicialização de sistema Acção Y Euro Pallet
[Inicialização de sistema Acção Y%, text width=4cm %<---changed
[Inicialização de sistema]
[Inicialização de sistema de sistema]
[Inicialização de sistema]
]
[Inicialização de sistema Inicialização de sistema Acção Y
[Inicialização de sistema]
[Inicialização Inicialização de sistema de sistema]
[Inicialização de sistema]
[Inicialização de sistema de sistema de sistema]
]
]
\end{forest}
\end{document}
如果您希望文本大小刚好适合一行,请告诉我。这也可以做到。