
Я хочу создать дерево в tikz, где я выделяю определенные узлы с помощью шаблона. Однако я хочу ограничить шаблон внутри прямоугольников так, чтобы текст был виден на белом фоне.
Вот MWE:
\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{patterns,trees}
\begin{document}
\begin{tikzpicture}[
every node/.style={rectangle,draw,align=center, minimum height=0.5cm},
grandchild/.style={grow=down,xshift=0.5em,anchor=west,
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}},
first/.style={level distance=7mm},
second/.style={level distance=14mm},
third/.style={level distance=21mm},
level 1/.style={sibling distance=12em}]
\node[font = {\small\bfseries}] {This is a very long root}
[edge from parent fork down,level distance=10mm]
child{node[font = {\footnotesize}, style={}] {Foo\\[-0.3mm]Bar}
[edge from parent fork down,level distance=10mm]
child[style={sibling distance=6em, level distance=10mm}] {node[font = {\footnotesize}, ]{Alpha}}
child[style={sibling distance=6em, level distance=10mm}] {node[font = {\footnotesize}]{Beta}
}
child[style={sibling distance=6em, level distance=10mm,}] {node[font = {\footnotesize},preaction={clip, postaction={pattern=north west lines, pattern color=red, }}]{Charlie}}
}
child{node[font = {\footnotesize},] {Bar\\[-0.3mm]Foo}
child[grandchild,first] {node[font = {\footnotesize},]{Test 1}}
child[grandchild,second] {node[font = {\footnotesize},]{Test 2}}
child[grandchild,third] {node[font = {\footnotesize},preaction={clip, postaction={pattern=north west lines, pattern color=red, }}]{Test 3}}
};
\end{tikzpicture}
\end{document}
Что производит:
Я бы хотел получить примерно такой результат:
решение1
Вы можете поместить свой текст в белую цветовую рамку:
\documentclass[border=0.1cm]{standalone}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{patterns,trees}
\setlength{\fboxsep}{1.5pt}
\begin{document}
\begin{tikzpicture}[
every node/.style={rectangle,draw,align=center, minimum height=0.5cm},
grandchild/.style={grow=down,xshift=0.5em,anchor=west,
edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}},
first/.style={level distance=7mm},
second/.style={level distance=14mm},
third/.style={level distance=21mm},
level 1/.style={sibling distance=12em}]
\node[font = {\small\bfseries}] {This is a very long root}
[edge from parent fork down,level distance=10mm]
child{node[font = {\footnotesize}, style={}] {Foo\\[-0.3mm]Bar}
[edge from parent fork down,level distance=10mm]
child[style={sibling distance=6em, level distance=10mm}] {node[font = {\footnotesize}, ]{Alpha}}
child[style={sibling distance=6em, level distance=10mm}] {node[font = {\footnotesize}]{Beta}
}
child[style={sibling distance=6em, level distance=10mm,}] {node[inner sep=.3333em-\fboxsep,font = {\footnotesize},preaction={clip, postaction={pattern=north west lines, pattern color=red, }}]{\colorbox{white}{Charlie}}}
}
child{node[font = {\footnotesize},] {Bar\\[-0.3mm]Foo}
child[grandchild,first] {node[font = {\footnotesize},]{Test 1}}
child[grandchild,second] {node[font = {\footnotesize},]{Test 2}}
child[grandchild,third] {node[inner sep=.3333em-\fboxsep,font = {\footnotesize},preaction={clip, postaction={pattern=north west lines, pattern color=red, }}]{\colorbox{white}{Test 3}}}
};
\end{tikzpicture}
\end{document}