
Ich versuche, das Layout für bestimmte Bäume zu automatisieren, die ich wiederholt verwenden möchte, aber ich scheine den \forestset
Befehl nicht in der Präambel zum Laufen zu bringen. In den folgenden Codes gehe ich davon aus, dass der auskommentierte Teil der Datei im Hauptdokument unnötig sein sollte, sobald diese Informationen an die Präambel weitergegeben wurden. In der aktuellen Form ändern die Präambelinformationen jedoch nicht das Standardlayout des resultierenden Baums. (Beachten Sie, dass dies auch keinen Kompilierungsfehler erzeugt.)
\documentclass[10pt,oneside,pdftex,dvipsnames,a4paper]{article}
\usepackage{forest}
\forestset{
sn edges/.style={
for tree={
grow'=0,
l=0pt, inner sep=0.075cm, s sep=0.1mm,
child anchor=west,parent anchor=south,
anchor=west,calign=first,
edge path={
\noexpand\path [draw, \forestoption{edge}]
(!u.south west) +(7.5pt,0) |- node{} (.child anchor)\forestoption{edge label};
},
before typesetting nodes={
if n=1
{insert before={[,phantom]}}
{}
},
fit=band,
before computing xy={l=15pt},
}
}
}
%-------------------------------------------------------------
\begin{document}
\begin{forest}
% for tree={
% grow'=0,
% l=0pt, inner sep=0.075cm, s sep=0.1mm,
% child anchor=west,parent anchor=south,
% anchor=west,calign=first,
% edge path={
% \noexpand\path [draw, \forestoption{edge}]
% (!u.south west) +(7.5pt,0) |- node{} (.child anchor)\forestoption{edge label};
% },
% before typesetting nodes={
% if n=1
% {insert before={[,phantom]}}
% {}
% },
% fit=band,
% before computing xy={l=15pt},
% }
[$B$
[$B_{1}$]
[$B_{2}$
[$A$
[$A_{1}$,tikz={\node [draw,inner sep=0.5pt,fit to=tree]{};}]
[$A_{2}$
[$D$]
[$E$]
]
[$A_{3}$
]
]
]
]
\end{forest}
\end{document}
Antwort1
Sie definieren den Stil sn edges
in der Präambel, geben aber nicht an, dass Ihr Baum ihn verwenden soll. Dazu sollten Sie den Stilnamen als Schlüssel in Ihrem Baum angeben.
MWE:
\documentclass{article}
\usepackage{forest}
\forestset{
sn edges/.style={
for tree={
grow'=0,
l=0pt, inner sep=0.075cm, s sep=0.1mm,
child anchor=west,parent anchor=south,
anchor=west,calign=first,
edge path={
\noexpand\path [draw, \forestoption{edge}]
(!u.south west) +(7.5pt,0) |- node{} (.child anchor)\forestoption{edge label};
},
before typesetting nodes={
if n=1
{insert before={[,phantom]}}
{}
},
fit=band,
before computing xy={l=15pt},
}
}
}
%-------------------------------------------------------------
\begin{document}
\begin{forest}
sn edges,
[$B$
[$B_{1}$]
[$B_{2}$
[$A$
[$A_{1}$,tikz={\node [draw,inner sep=0.5pt,fit to=tree]{};}]
[$A_{2}$
[$D$]
[$E$]
]
[$A_{3}$
]
]
]
]
\end{forest}
\end{document}
Ergebnis:
default preamble
Eine Alternative besteht darin, keinen neuen Stil zu erstellen, sondern den angegebenen Stil mithilfe des Schlüssels in automatisch auf alle Bäume anzuwenden \forestset
. In diesem Fall müssen Sie den einzelnen Bäumen keinen Stilschlüssel zuweisen.
\documentclass{article}
\usepackage{forest}
\forestset{
default preamble={
for tree={
grow'=0,
l=0pt, inner sep=0.075cm, s sep=0.1mm,
child anchor=west,parent anchor=south,
anchor=west,calign=first,
edge path={
\noexpand\path [draw, \forestoption{edge}]
(!u.south west) +(7.5pt,0) |- node{} (.child anchor)\forestoption{edge label};
},
before typesetting nodes={
if n=1
{insert before={[,phantom]}}
{}
},
fit=band,
before computing xy={l=15pt},
}
}
}
%-------------------------------------------------------------
\begin{document}
\begin{forest}
[$B$
[$B_{1}$]
[$B_{2}$
[$A$
[$A_{1}$,tikz={\node [draw,inner sep=0.5pt,fit to=tree]{};}]
[$A_{2}$
[$D$]
[$E$]
]
[$A_{3}$
]
]
]
]
\end{forest}
\end{document}
Antwort2
Sie \forestset
müssen den Stil definieren, dessen Name in forest
der Umgebung berücksichtigt wird. Siehe MWE unten:
\documentclass[a4paper]{article}
\usepackage{forest}
\forestset{my tree/.style = {% NEW
for tree={
inner sep=0.075cm,
l sep=1mm,% CHANGED AND CORRECTED
s sep=1mm,% changed
grow'=0,
child anchor=west,parent anchor=south,
anchor=west,calign=first,
edge path={
\noexpand\path [draw, \forestoption{edge}]
(!u.south west) +(7.5pt,0) |- node{} (.child anchor)\forestoption{edge label};
},
before typesetting nodes={
if n=1
{insert before={[,phantom]}}
{}
},
fit=band,
before computing xy={l=15pt},
}% end of for tree
}% end of my tree style
}% end of forestset
%-------------------------------------------------------------
\begin{document}
\begin{forest} my tree
[$B$
[$B_{1}$]
[$B_{2}$
[$A$
[$A_{1}$,tikz={\node [draw,inner sep=0.5pt,fit to=tree]{};}]
[$A_{2}$
[$D$]
[$E$]
]
[$A_{3}$
]
]
]
]
\end{forest}
\end{document}