diff options
author | Karl Berry <karl@freefriends.org> | 2015-07-17 22:40:12 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-07-17 22:40:12 +0000 |
commit | 814c22af4dad35e3c03216c3e2c1c27b60e59c9e (patch) | |
tree | 6b3a4b00c97adc79a16a063c2b1b8b68211ddbeb /Master/texmf-dist | |
parent | ec26e0d4b947f92b60e9f50e76b07c2a6e7c0734 (diff) |
forest (17jul15)
git-svn-id: svn://tug.org/texlive/trunk@37872 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/forest/README | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/forest/forest.pdf | bin | 887453 -> 889069 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/forest/forest.dtx | 278 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/forest/forest.sty | 269 |
4 files changed, 287 insertions, 262 deletions
diff --git a/Master/texmf-dist/doc/latex/forest/README b/Master/texmf-dist/doc/latex/forest/README index c14626d5685..57c7ad47364 100644 --- a/Master/texmf-dist/doc/latex/forest/README +++ b/Master/texmf-dist/doc/latex/forest/README @@ -1,4 +1,4 @@ -LaTeX package: forest [2015/07/10 v1.08 Drawing (linguistic) trees] +LaTeX package: forest [2015/07/15 v1.09 Drawing (linguistic) trees] Copyright (c) 2015 Saso Zivanovic (Sa\v{s}o \v{Z}ivanovi\'{c}) diff --git a/Master/texmf-dist/doc/latex/forest/forest.pdf b/Master/texmf-dist/doc/latex/forest/forest.pdf Binary files differindex 00a39d91eaa..24d7a11451e 100644 --- a/Master/texmf-dist/doc/latex/forest/forest.pdf +++ b/Master/texmf-dist/doc/latex/forest/forest.pdf diff --git a/Master/texmf-dist/source/latex/forest/forest.dtx b/Master/texmf-dist/source/latex/forest/forest.dtx index a914af0812d..bb2694e1974 100644 --- a/Master/texmf-dist/source/latex/forest/forest.dtx +++ b/Master/texmf-dist/source/latex/forest/forest.dtx @@ -1,4 +1,4 @@ -% \CheckSum{12854} +% \CheckSum{12878} % \iffalse meta-comment % forest.dtx %% `forest' is a `pgf/tikz'-based package for drawing (linguistic) trees. @@ -3967,6 +3967,10 @@ % \section{Changelog} % % \begin{description} +% \item[v1.09 (2015/07/15)] \mbox{} +% \begin{compactitem} +% \item Bugfix: child alignment was not done in nodes with a single child, see \href{http://tex.stackexchange.com/questions/255309/elementary-forest-question-meaning-of-calign-parent-anchor-and-child-anchor}{this question on TeX.SE}. +% \end{compactitem} % \item[v1.08 (2015/07/10)] \mbox{} % \begin{compactitem} % \item Fix externalization (compatibility with new |tikz| features). @@ -4033,7 +4037,7 @@ % % Identification. % \begin{macrocode} -\ProvidesPackage{forest}[2015/07/10 v1.08 Drawing (linguistic) trees] +\ProvidesPackage{forest}[2015/07/15 v1.09 Drawing (linguistic) trees] \RequirePackage{tikz}[2010/10/13] \usetikzlibrary{shapes} @@ -7038,6 +7042,14 @@ \else \pack@sibling@uniform@main{last}{first}{previous}{next}% \fi + \else + \ifnum\forestove{n children}=1 +% \end{macrocode} +% No need to run packing, but we still need to align the children. +% \begin{macrocode} +\typeout{DEBUG calign: \forestove{content} --- \forestove{calign}}% + \csname forest@calign@\forestove{calign}\endcsname + \fi \fi } % \end{macrocode} @@ -7248,143 +7260,147 @@ % node edges. % \begin{macrocode} \csdef{forest@calign@fixed angles}{% - \edef\forest@ca@first@child{\forest@node@nornbarthchildid{\forestove{calign primary child}}}% - \edef\forest@ca@second@child{\forest@node@nornbarthchildid{\forestove{calign secondary child}}}% - \ifnum\forestove{reversed}=1 - \let\forest@temp\forest@ca@first@child - \let\forest@ca@first@child\forest@ca@second@child - \let\forest@ca@second@child\forest@temp - \fi - \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l - \forestOget{\forest@ca@second@child}{l}\forest@ca@second@l - \pgfmathsetlengthmacro\forest@ca@desired@s@distance{% - tan(\forestove{calign secondary angle})*\forest@ca@second@l - -tan(\forestove{calign primary angle})*\forest@ca@first@l - }% - \forestOget{\forest@ca@first@child}{s}\forest@ca@first@s - \forestOget{\forest@ca@second@child}{s}\forest@ca@second@s - \pgfmathsetlengthmacro\forest@ca@actual@s@distance{% - \forest@ca@second@s-\forest@ca@first@s}% - \ifdim\forest@ca@desired@s@distance>\forest@ca@actual@s@distance\relax - \ifdim\forest@ca@actual@s@distance=0pt - \pgfmathsetlength\pgfutil@tempdima{tan(\forestove{calign primary angle})*\forest@ca@second@l}% - \pgfmathsetlength\pgfutil@tempdimb{\forest@ca@desired@s@distance/(\forestove{n children}-1)}% - \forest@node@foreachchild{% - \forestoeset{s}{\the\pgfutil@tempdima}% - \advance\pgfutil@tempdima\pgfutil@tempdimb - }% - \def\forest@calign@anchor{0pt}% - \else - \pgfmathsetmacro\forest@ca@ratio{% - \forest@ca@desired@s@distance/\forest@ca@actual@s@distance}% - \forest@node@foreachchild{% - \pgfmathsetlengthmacro\forest@temp{\forest@ca@ratio*\forestove{s}}% - \forestolet{s}\forest@temp - }% - \pgfmathsetlengthmacro\forest@calign@anchor{% - -tan(\forestove{calign primary angle})*\forest@ca@first@l}% + \ifnum\forestove{n children}>1 + \edef\forest@ca@first@child{\forest@node@nornbarthchildid{\forestove{calign primary child}}}% + \edef\forest@ca@second@child{\forest@node@nornbarthchildid{\forestove{calign secondary child}}}% + \ifnum\forestove{reversed}=1 + \let\forest@temp\forest@ca@first@child + \let\forest@ca@first@child\forest@ca@second@child + \let\forest@ca@second@child\forest@temp \fi - \else - \ifdim\forest@ca@desired@s@distance<\forest@ca@actual@s@distance\relax - \pgfmathsetlengthmacro\forest@ca@ratio{% - \forest@ca@actual@s@distance/\forest@ca@desired@s@distance}% - \forest@node@foreachchild{% - \pgfmathsetlengthmacro\forest@temp{\forest@ca@ratio*\forestove{l}}% - \forestolet{l}\forest@temp - }% - \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l - \pgfmathsetlengthmacro\forest@calign@anchor{% - -tan(\forestove{calign primary angle})*\forest@ca@first@l}% + \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l + \forestOget{\forest@ca@second@child}{l}\forest@ca@second@l + \pgfmathsetlengthmacro\forest@ca@desired@s@distance{% + tan(\forestove{calign secondary angle})*\forest@ca@second@l + -tan(\forestove{calign primary angle})*\forest@ca@first@l + }% + \forestOget{\forest@ca@first@child}{s}\forest@ca@first@s + \forestOget{\forest@ca@second@child}{s}\forest@ca@second@s + \pgfmathsetlengthmacro\forest@ca@actual@s@distance{% + \forest@ca@second@s-\forest@ca@first@s}% + \ifdim\forest@ca@desired@s@distance>\forest@ca@actual@s@distance\relax + \ifdim\forest@ca@actual@s@distance=0pt + \pgfmathsetlength\pgfutil@tempdima{tan(\forestove{calign primary angle})*\forest@ca@second@l}% + \pgfmathsetlength\pgfutil@tempdimb{\forest@ca@desired@s@distance/(\forestove{n children}-1)}% + \forest@node@foreachchild{% + \forestoeset{s}{\the\pgfutil@tempdima}% + \advance\pgfutil@tempdima\pgfutil@tempdimb + }% + \def\forest@calign@anchor{0pt}% + \else + \pgfmathsetmacro\forest@ca@ratio{% + \forest@ca@desired@s@distance/\forest@ca@actual@s@distance}% + \forest@node@foreachchild{% + \pgfmathsetlengthmacro\forest@temp{\forest@ca@ratio*\forestove{s}}% + \forestolet{s}\forest@temp + }% + \pgfmathsetlengthmacro\forest@calign@anchor{% + -tan(\forestove{calign primary angle})*\forest@ca@first@l}% + \fi + \else + \ifdim\forest@ca@desired@s@distance<\forest@ca@actual@s@distance\relax + \pgfmathsetlengthmacro\forest@ca@ratio{% + \forest@ca@actual@s@distance/\forest@ca@desired@s@distance}% + \forest@node@foreachchild{% + \pgfmathsetlengthmacro\forest@temp{\forest@ca@ratio*\forestove{l}}% + \forestolet{l}\forest@temp + }% + \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l + \pgfmathsetlengthmacro\forest@calign@anchor{% + -tan(\forestove{calign primary angle})*\forest@ca@first@l}% + \fi \fi + \forest@calign@s@shift{-\forest@calign@anchor}% \fi - \forest@calign@s@shift{-\forest@calign@anchor}% } \csdef{forest@calign@fixed edge angles}{% - \edef\forest@ca@first@child{\forest@node@nornbarthchildid{\forestove{calign primary child}}}% - \edef\forest@ca@second@child{\forest@node@nornbarthchildid{\forestove{calign secondary child}}}% - \ifnum\forestove{reversed}=1 - \let\forest@temp\forest@ca@first@child - \let\forest@ca@first@child\forest@ca@second@child - \let\forest@ca@second@child\forest@temp - \fi - \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l - \forestOget{\forest@ca@second@child}{l}\forest@ca@second@l - \forestoget{parent@anchor}\forest@ca@parent@anchor - \forest@ca@parent@anchor - \edef\forest@ca@parent@anchor@s{\the\pgf@x}% - \edef\forest@ca@parent@anchor@l{\the\pgf@y}% - \forestOget{\forest@ca@first@child}{child@anchor}\forest@ca@first@child@anchor - \forest@ca@first@child@anchor - \edef\forest@ca@first@child@anchor@s{\the\pgf@x}% - \edef\forest@ca@first@child@anchor@l{\the\pgf@y}% - \forestOget{\forest@ca@second@child}{child@anchor}\forest@ca@second@child@anchor - \forest@ca@second@child@anchor - \edef\forest@ca@second@child@anchor@s{\the\pgf@x}% - \edef\forest@ca@second@child@anchor@l{\the\pgf@y}% - \pgfmathsetlengthmacro\forest@ca@desired@second@edge@s{tan(\forestove{calign secondary angle})*% - (\forest@ca@second@l-\forest@ca@second@child@anchor@l+\forest@ca@parent@anchor@l)}% - \pgfmathsetlengthmacro\forest@ca@desired@first@edge@s{tan(\forestove{calign primary angle})*% - (\forest@ca@first@l-\forest@ca@first@child@anchor@l+\forest@ca@parent@anchor@l)} - \pgfmathsetlengthmacro\forest@ca@desired@s@distance{\forest@ca@desired@second@edge@s-\forest@ca@desired@first@edge@s}% - \forestOget{\forest@ca@first@child}{s}\forest@ca@first@s - \forestOget{\forest@ca@second@child}{s}\forest@ca@second@s - \pgfmathsetlengthmacro\forest@ca@actual@s@distance{% - \forest@ca@second@s+\forest@ca@second@child@anchor@s - -\forest@ca@first@s-\forest@ca@first@child@anchor@s}% - \ifdim\forest@ca@desired@s@distance>\forest@ca@actual@s@distance\relax - \ifdim\forest@ca@actual@s@distance=0pt - \forestoget{n children}\forest@temp@n@children - \forest@node@foreachchild{% - \forestoget{child@anchor}\forest@temp@child@anchor - \forest@temp@child@anchor - \edef\forest@temp@child@anchor@s{\the\pgf@x}% - \pgfmathsetlengthmacro\forest@temp{% - \forest@ca@desired@first@edge@s+(\forestove{n}-1)*\forest@ca@desired@s@distance/(\forest@temp@n@children-1)+\forest@ca@first@child@anchor@s-\forest@temp@child@anchor@s}% - \forestolet{s}\forest@temp - }% - \def\forest@calign@anchor{0pt}% - \else - \pgfmathsetmacro\forest@ca@ratio{% - \forest@ca@desired@s@distance/\forest@ca@actual@s@distance}% - \forest@node@foreachchild{% - \forestoget{child@anchor}\forest@temp@child@anchor - \forest@temp@child@anchor - \edef\forest@temp@child@anchor@s{\the\pgf@x}% - \pgfmathsetlengthmacro\forest@temp{% - \forest@ca@ratio*(% - \forestove{s}-\forest@ca@first@s - +\forest@temp@child@anchor@s-\forest@ca@first@child@anchor@s)% - +\forest@ca@first@s - +\forest@ca@first@child@anchor@s-\forest@temp@child@anchor@s}% - \forestolet{s}\forest@temp - }% - \pgfmathsetlengthmacro\forest@calign@anchor{% - -tan(\forestove{calign primary angle})*(\forest@ca@first@l-\forest@ca@first@child@anchor@l+\forest@ca@parent@anchor@l)% - +\forest@ca@first@child@anchor@s-\forest@ca@parent@anchor@s - }% + \ifnum\forestove{n children}>1 + \edef\forest@ca@first@child{\forest@node@nornbarthchildid{\forestove{calign primary child}}}% + \edef\forest@ca@second@child{\forest@node@nornbarthchildid{\forestove{calign secondary child}}}% + \ifnum\forestove{reversed}=1 + \let\forest@temp\forest@ca@first@child + \let\forest@ca@first@child\forest@ca@second@child + \let\forest@ca@second@child\forest@temp \fi - \else - \ifdim\forest@ca@desired@s@distance<\forest@ca@actual@s@distance\relax - \pgfmathsetlengthmacro\forest@ca@ratio{% - \forest@ca@actual@s@distance/\forest@ca@desired@s@distance}% - \forest@node@foreachchild{% - \forestoget{child@anchor}\forest@temp@child@anchor - \forest@temp@child@anchor - \edef\forest@temp@child@anchor@l{\the\pgf@y}% - \pgfmathsetlengthmacro\forest@temp{% - \forest@ca@ratio*(% - \forestove{l}+\forest@ca@parent@anchor@l-\forest@temp@child@anchor@l) - -\forest@ca@parent@anchor@l+\forest@temp@child@anchor@l}% - \forestolet{l}\forest@temp - }% - \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l - \pgfmathsetlengthmacro\forest@calign@anchor{% - -tan(\forestove{calign primary angle})*(\forest@ca@first@l+\forest@ca@parent@anchor@l-\forest@temp@child@anchor@l)% - +\forest@ca@first@child@anchor@s-\forest@ca@parent@anchor@s - }% + \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l + \forestOget{\forest@ca@second@child}{l}\forest@ca@second@l + \forestoget{parent@anchor}\forest@ca@parent@anchor + \forest@ca@parent@anchor + \edef\forest@ca@parent@anchor@s{\the\pgf@x}% + \edef\forest@ca@parent@anchor@l{\the\pgf@y}% + \forestOget{\forest@ca@first@child}{child@anchor}\forest@ca@first@child@anchor + \forest@ca@first@child@anchor + \edef\forest@ca@first@child@anchor@s{\the\pgf@x}% + \edef\forest@ca@first@child@anchor@l{\the\pgf@y}% + \forestOget{\forest@ca@second@child}{child@anchor}\forest@ca@second@child@anchor + \forest@ca@second@child@anchor + \edef\forest@ca@second@child@anchor@s{\the\pgf@x}% + \edef\forest@ca@second@child@anchor@l{\the\pgf@y}% + \pgfmathsetlengthmacro\forest@ca@desired@second@edge@s{tan(\forestove{calign secondary angle})*% + (\forest@ca@second@l-\forest@ca@second@child@anchor@l+\forest@ca@parent@anchor@l)}% + \pgfmathsetlengthmacro\forest@ca@desired@first@edge@s{tan(\forestove{calign primary angle})*% + (\forest@ca@first@l-\forest@ca@first@child@anchor@l+\forest@ca@parent@anchor@l)} + \pgfmathsetlengthmacro\forest@ca@desired@s@distance{\forest@ca@desired@second@edge@s-\forest@ca@desired@first@edge@s}% + \forestOget{\forest@ca@first@child}{s}\forest@ca@first@s + \forestOget{\forest@ca@second@child}{s}\forest@ca@second@s + \pgfmathsetlengthmacro\forest@ca@actual@s@distance{% + \forest@ca@second@s+\forest@ca@second@child@anchor@s + -\forest@ca@first@s-\forest@ca@first@child@anchor@s}% + \ifdim\forest@ca@desired@s@distance>\forest@ca@actual@s@distance\relax + \ifdim\forest@ca@actual@s@distance=0pt + \forestoget{n children}\forest@temp@n@children + \forest@node@foreachchild{% + \forestoget{child@anchor}\forest@temp@child@anchor + \forest@temp@child@anchor + \edef\forest@temp@child@anchor@s{\the\pgf@x}% + \pgfmathsetlengthmacro\forest@temp{% + \forest@ca@desired@first@edge@s+(\forestove{n}-1)*\forest@ca@desired@s@distance/(\forest@temp@n@children-1)+\forest@ca@first@child@anchor@s-\forest@temp@child@anchor@s}% + \forestolet{s}\forest@temp + }% + \def\forest@calign@anchor{0pt}% + \else + \pgfmathsetmacro\forest@ca@ratio{% + \forest@ca@desired@s@distance/\forest@ca@actual@s@distance}% + \forest@node@foreachchild{% + \forestoget{child@anchor}\forest@temp@child@anchor + \forest@temp@child@anchor + \edef\forest@temp@child@anchor@s{\the\pgf@x}% + \pgfmathsetlengthmacro\forest@temp{% + \forest@ca@ratio*(% + \forestove{s}-\forest@ca@first@s + +\forest@temp@child@anchor@s-\forest@ca@first@child@anchor@s)% + +\forest@ca@first@s + +\forest@ca@first@child@anchor@s-\forest@temp@child@anchor@s}% + \forestolet{s}\forest@temp + }% + \pgfmathsetlengthmacro\forest@calign@anchor{% + -tan(\forestove{calign primary angle})*(\forest@ca@first@l-\forest@ca@first@child@anchor@l+\forest@ca@parent@anchor@l)% + +\forest@ca@first@child@anchor@s-\forest@ca@parent@anchor@s + }% + \fi + \else + \ifdim\forest@ca@desired@s@distance<\forest@ca@actual@s@distance\relax + \pgfmathsetlengthmacro\forest@ca@ratio{% + \forest@ca@actual@s@distance/\forest@ca@desired@s@distance}% + \forest@node@foreachchild{% + \forestoget{child@anchor}\forest@temp@child@anchor + \forest@temp@child@anchor + \edef\forest@temp@child@anchor@l{\the\pgf@y}% + \pgfmathsetlengthmacro\forest@temp{% + \forest@ca@ratio*(% + \forestove{l}+\forest@ca@parent@anchor@l-\forest@temp@child@anchor@l) + -\forest@ca@parent@anchor@l+\forest@temp@child@anchor@l}% + \forestolet{l}\forest@temp + }% + \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l + \pgfmathsetlengthmacro\forest@calign@anchor{% + -tan(\forestove{calign primary angle})*(\forest@ca@first@l+\forest@ca@parent@anchor@l-\forest@temp@child@anchor@l)% + +\forest@ca@first@child@anchor@s-\forest@ca@parent@anchor@s + }% + \fi \fi + \forest@calign@s@shift{-\forest@calign@anchor}% \fi - \forest@calign@s@shift{-\forest@calign@anchor}% } % \end{macrocode} % diff --git a/Master/texmf-dist/tex/latex/forest/forest.sty b/Master/texmf-dist/tex/latex/forest/forest.sty index be4e5c06686..f93ca21cf4a 100644 --- a/Master/texmf-dist/tex/latex/forest/forest.sty +++ b/Master/texmf-dist/tex/latex/forest/forest.sty @@ -29,7 +29,7 @@ %% This work consists of the files forest.dtx and forest.ins %% and the derived file forest.sty. %% -\ProvidesPackage{forest}[2015/07/10 v1.08 Drawing (linguistic) trees] +\ProvidesPackage{forest}[2015/07/15 v1.09 Drawing (linguistic) trees] \RequirePackage{tikz}[2010/10/13] \usetikzlibrary{shapes} @@ -2575,6 +2575,11 @@ \else \pack@sibling@uniform@main{last}{first}{previous}{next}% \fi + \else + \ifnum\forestove{n children}=1 +\typeout{DEBUG calign: \forestove{content} --- \forestove{calign}}% + \csname forest@calign@\forestove{calign}\endcsname + \fi \fi } \def\pack@sibling@uniform@main#1#2#3#4{% @@ -2711,143 +2716,147 @@ \forest@calign@s@shift{\the\dimexpr-\the\pgf@y}% } \csdef{forest@calign@fixed angles}{% - \edef\forest@ca@first@child{\forest@node@nornbarthchildid{\forestove{calign primary child}}}% - \edef\forest@ca@second@child{\forest@node@nornbarthchildid{\forestove{calign secondary child}}}% - \ifnum\forestove{reversed}=1 - \let\forest@temp\forest@ca@first@child - \let\forest@ca@first@child\forest@ca@second@child - \let\forest@ca@second@child\forest@temp - \fi - \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l - \forestOget{\forest@ca@second@child}{l}\forest@ca@second@l - \pgfmathsetlengthmacro\forest@ca@desired@s@distance{% - tan(\forestove{calign secondary angle})*\forest@ca@second@l - -tan(\forestove{calign primary angle})*\forest@ca@first@l - }% - \forestOget{\forest@ca@first@child}{s}\forest@ca@first@s - \forestOget{\forest@ca@second@child}{s}\forest@ca@second@s - \pgfmathsetlengthmacro\forest@ca@actual@s@distance{% - \forest@ca@second@s-\forest@ca@first@s}% - \ifdim\forest@ca@desired@s@distance>\forest@ca@actual@s@distance\relax - \ifdim\forest@ca@actual@s@distance=0pt - \pgfmathsetlength\pgfutil@tempdima{tan(\forestove{calign primary angle})*\forest@ca@second@l}% - \pgfmathsetlength\pgfutil@tempdimb{\forest@ca@desired@s@distance/(\forestove{n children}-1)}% - \forest@node@foreachchild{% - \forestoeset{s}{\the\pgfutil@tempdima}% - \advance\pgfutil@tempdima\pgfutil@tempdimb - }% - \def\forest@calign@anchor{0pt}% - \else - \pgfmathsetmacro\forest@ca@ratio{% - \forest@ca@desired@s@distance/\forest@ca@actual@s@distance}% - \forest@node@foreachchild{% - \pgfmathsetlengthmacro\forest@temp{\forest@ca@ratio*\forestove{s}}% - \forestolet{s}\forest@temp - }% - \pgfmathsetlengthmacro\forest@calign@anchor{% - -tan(\forestove{calign primary angle})*\forest@ca@first@l}% + \ifnum\forestove{n children}>1 + \edef\forest@ca@first@child{\forest@node@nornbarthchildid{\forestove{calign primary child}}}% + \edef\forest@ca@second@child{\forest@node@nornbarthchildid{\forestove{calign secondary child}}}% + \ifnum\forestove{reversed}=1 + \let\forest@temp\forest@ca@first@child + \let\forest@ca@first@child\forest@ca@second@child + \let\forest@ca@second@child\forest@temp \fi - \else - \ifdim\forest@ca@desired@s@distance<\forest@ca@actual@s@distance\relax - \pgfmathsetlengthmacro\forest@ca@ratio{% - \forest@ca@actual@s@distance/\forest@ca@desired@s@distance}% - \forest@node@foreachchild{% - \pgfmathsetlengthmacro\forest@temp{\forest@ca@ratio*\forestove{l}}% - \forestolet{l}\forest@temp - }% - \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l - \pgfmathsetlengthmacro\forest@calign@anchor{% - -tan(\forestove{calign primary angle})*\forest@ca@first@l}% + \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l + \forestOget{\forest@ca@second@child}{l}\forest@ca@second@l + \pgfmathsetlengthmacro\forest@ca@desired@s@distance{% + tan(\forestove{calign secondary angle})*\forest@ca@second@l + -tan(\forestove{calign primary angle})*\forest@ca@first@l + }% + \forestOget{\forest@ca@first@child}{s}\forest@ca@first@s + \forestOget{\forest@ca@second@child}{s}\forest@ca@second@s + \pgfmathsetlengthmacro\forest@ca@actual@s@distance{% + \forest@ca@second@s-\forest@ca@first@s}% + \ifdim\forest@ca@desired@s@distance>\forest@ca@actual@s@distance\relax + \ifdim\forest@ca@actual@s@distance=0pt + \pgfmathsetlength\pgfutil@tempdima{tan(\forestove{calign primary angle})*\forest@ca@second@l}% + \pgfmathsetlength\pgfutil@tempdimb{\forest@ca@desired@s@distance/(\forestove{n children}-1)}% + \forest@node@foreachchild{% + \forestoeset{s}{\the\pgfutil@tempdima}% + \advance\pgfutil@tempdima\pgfutil@tempdimb + }% + \def\forest@calign@anchor{0pt}% + \else + \pgfmathsetmacro\forest@ca@ratio{% + \forest@ca@desired@s@distance/\forest@ca@actual@s@distance}% + \forest@node@foreachchild{% + \pgfmathsetlengthmacro\forest@temp{\forest@ca@ratio*\forestove{s}}% + \forestolet{s}\forest@temp + }% + \pgfmathsetlengthmacro\forest@calign@anchor{% + -tan(\forestove{calign primary angle})*\forest@ca@first@l}% + \fi + \else + \ifdim\forest@ca@desired@s@distance<\forest@ca@actual@s@distance\relax + \pgfmathsetlengthmacro\forest@ca@ratio{% + \forest@ca@actual@s@distance/\forest@ca@desired@s@distance}% + \forest@node@foreachchild{% + \pgfmathsetlengthmacro\forest@temp{\forest@ca@ratio*\forestove{l}}% + \forestolet{l}\forest@temp + }% + \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l + \pgfmathsetlengthmacro\forest@calign@anchor{% + -tan(\forestove{calign primary angle})*\forest@ca@first@l}% + \fi \fi + \forest@calign@s@shift{-\forest@calign@anchor}% \fi - \forest@calign@s@shift{-\forest@calign@anchor}% } \csdef{forest@calign@fixed edge angles}{% - \edef\forest@ca@first@child{\forest@node@nornbarthchildid{\forestove{calign primary child}}}% - \edef\forest@ca@second@child{\forest@node@nornbarthchildid{\forestove{calign secondary child}}}% - \ifnum\forestove{reversed}=1 - \let\forest@temp\forest@ca@first@child - \let\forest@ca@first@child\forest@ca@second@child - \let\forest@ca@second@child\forest@temp - \fi - \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l - \forestOget{\forest@ca@second@child}{l}\forest@ca@second@l - \forestoget{parent@anchor}\forest@ca@parent@anchor - \forest@ca@parent@anchor - \edef\forest@ca@parent@anchor@s{\the\pgf@x}% - \edef\forest@ca@parent@anchor@l{\the\pgf@y}% - \forestOget{\forest@ca@first@child}{child@anchor}\forest@ca@first@child@anchor - \forest@ca@first@child@anchor - \edef\forest@ca@first@child@anchor@s{\the\pgf@x}% - \edef\forest@ca@first@child@anchor@l{\the\pgf@y}% - \forestOget{\forest@ca@second@child}{child@anchor}\forest@ca@second@child@anchor - \forest@ca@second@child@anchor - \edef\forest@ca@second@child@anchor@s{\the\pgf@x}% - \edef\forest@ca@second@child@anchor@l{\the\pgf@y}% - \pgfmathsetlengthmacro\forest@ca@desired@second@edge@s{tan(\forestove{calign secondary angle})*% - (\forest@ca@second@l-\forest@ca@second@child@anchor@l+\forest@ca@parent@anchor@l)}% - \pgfmathsetlengthmacro\forest@ca@desired@first@edge@s{tan(\forestove{calign primary angle})*% - (\forest@ca@first@l-\forest@ca@first@child@anchor@l+\forest@ca@parent@anchor@l)} - \pgfmathsetlengthmacro\forest@ca@desired@s@distance{\forest@ca@desired@second@edge@s-\forest@ca@desired@first@edge@s}% - \forestOget{\forest@ca@first@child}{s}\forest@ca@first@s - \forestOget{\forest@ca@second@child}{s}\forest@ca@second@s - \pgfmathsetlengthmacro\forest@ca@actual@s@distance{% - \forest@ca@second@s+\forest@ca@second@child@anchor@s - -\forest@ca@first@s-\forest@ca@first@child@anchor@s}% - \ifdim\forest@ca@desired@s@distance>\forest@ca@actual@s@distance\relax - \ifdim\forest@ca@actual@s@distance=0pt - \forestoget{n children}\forest@temp@n@children - \forest@node@foreachchild{% - \forestoget{child@anchor}\forest@temp@child@anchor - \forest@temp@child@anchor - \edef\forest@temp@child@anchor@s{\the\pgf@x}% - \pgfmathsetlengthmacro\forest@temp{% - \forest@ca@desired@first@edge@s+(\forestove{n}-1)*\forest@ca@desired@s@distance/(\forest@temp@n@children-1)+\forest@ca@first@child@anchor@s-\forest@temp@child@anchor@s}% - \forestolet{s}\forest@temp - }% - \def\forest@calign@anchor{0pt}% - \else - \pgfmathsetmacro\forest@ca@ratio{% - \forest@ca@desired@s@distance/\forest@ca@actual@s@distance}% - \forest@node@foreachchild{% - \forestoget{child@anchor}\forest@temp@child@anchor - \forest@temp@child@anchor - \edef\forest@temp@child@anchor@s{\the\pgf@x}% - \pgfmathsetlengthmacro\forest@temp{% - \forest@ca@ratio*(% - \forestove{s}-\forest@ca@first@s - +\forest@temp@child@anchor@s-\forest@ca@first@child@anchor@s)% - +\forest@ca@first@s - +\forest@ca@first@child@anchor@s-\forest@temp@child@anchor@s}% - \forestolet{s}\forest@temp - }% - \pgfmathsetlengthmacro\forest@calign@anchor{% - -tan(\forestove{calign primary angle})*(\forest@ca@first@l-\forest@ca@first@child@anchor@l+\forest@ca@parent@anchor@l)% - +\forest@ca@first@child@anchor@s-\forest@ca@parent@anchor@s - }% + \ifnum\forestove{n children}>1 + \edef\forest@ca@first@child{\forest@node@nornbarthchildid{\forestove{calign primary child}}}% + \edef\forest@ca@second@child{\forest@node@nornbarthchildid{\forestove{calign secondary child}}}% + \ifnum\forestove{reversed}=1 + \let\forest@temp\forest@ca@first@child + \let\forest@ca@first@child\forest@ca@second@child + \let\forest@ca@second@child\forest@temp \fi - \else - \ifdim\forest@ca@desired@s@distance<\forest@ca@actual@s@distance\relax - \pgfmathsetlengthmacro\forest@ca@ratio{% - \forest@ca@actual@s@distance/\forest@ca@desired@s@distance}% - \forest@node@foreachchild{% - \forestoget{child@anchor}\forest@temp@child@anchor - \forest@temp@child@anchor - \edef\forest@temp@child@anchor@l{\the\pgf@y}% - \pgfmathsetlengthmacro\forest@temp{% - \forest@ca@ratio*(% - \forestove{l}+\forest@ca@parent@anchor@l-\forest@temp@child@anchor@l) - -\forest@ca@parent@anchor@l+\forest@temp@child@anchor@l}% - \forestolet{l}\forest@temp - }% - \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l - \pgfmathsetlengthmacro\forest@calign@anchor{% - -tan(\forestove{calign primary angle})*(\forest@ca@first@l+\forest@ca@parent@anchor@l-\forest@temp@child@anchor@l)% - +\forest@ca@first@child@anchor@s-\forest@ca@parent@anchor@s - }% + \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l + \forestOget{\forest@ca@second@child}{l}\forest@ca@second@l + \forestoget{parent@anchor}\forest@ca@parent@anchor + \forest@ca@parent@anchor + \edef\forest@ca@parent@anchor@s{\the\pgf@x}% + \edef\forest@ca@parent@anchor@l{\the\pgf@y}% + \forestOget{\forest@ca@first@child}{child@anchor}\forest@ca@first@child@anchor + \forest@ca@first@child@anchor + \edef\forest@ca@first@child@anchor@s{\the\pgf@x}% + \edef\forest@ca@first@child@anchor@l{\the\pgf@y}% + \forestOget{\forest@ca@second@child}{child@anchor}\forest@ca@second@child@anchor + \forest@ca@second@child@anchor + \edef\forest@ca@second@child@anchor@s{\the\pgf@x}% + \edef\forest@ca@second@child@anchor@l{\the\pgf@y}% + \pgfmathsetlengthmacro\forest@ca@desired@second@edge@s{tan(\forestove{calign secondary angle})*% + (\forest@ca@second@l-\forest@ca@second@child@anchor@l+\forest@ca@parent@anchor@l)}% + \pgfmathsetlengthmacro\forest@ca@desired@first@edge@s{tan(\forestove{calign primary angle})*% + (\forest@ca@first@l-\forest@ca@first@child@anchor@l+\forest@ca@parent@anchor@l)} + \pgfmathsetlengthmacro\forest@ca@desired@s@distance{\forest@ca@desired@second@edge@s-\forest@ca@desired@first@edge@s}% + \forestOget{\forest@ca@first@child}{s}\forest@ca@first@s + \forestOget{\forest@ca@second@child}{s}\forest@ca@second@s + \pgfmathsetlengthmacro\forest@ca@actual@s@distance{% + \forest@ca@second@s+\forest@ca@second@child@anchor@s + -\forest@ca@first@s-\forest@ca@first@child@anchor@s}% + \ifdim\forest@ca@desired@s@distance>\forest@ca@actual@s@distance\relax + \ifdim\forest@ca@actual@s@distance=0pt + \forestoget{n children}\forest@temp@n@children + \forest@node@foreachchild{% + \forestoget{child@anchor}\forest@temp@child@anchor + \forest@temp@child@anchor + \edef\forest@temp@child@anchor@s{\the\pgf@x}% + \pgfmathsetlengthmacro\forest@temp{% + \forest@ca@desired@first@edge@s+(\forestove{n}-1)*\forest@ca@desired@s@distance/(\forest@temp@n@children-1)+\forest@ca@first@child@anchor@s-\forest@temp@child@anchor@s}% + \forestolet{s}\forest@temp + }% + \def\forest@calign@anchor{0pt}% + \else + \pgfmathsetmacro\forest@ca@ratio{% + \forest@ca@desired@s@distance/\forest@ca@actual@s@distance}% + \forest@node@foreachchild{% + \forestoget{child@anchor}\forest@temp@child@anchor + \forest@temp@child@anchor + \edef\forest@temp@child@anchor@s{\the\pgf@x}% + \pgfmathsetlengthmacro\forest@temp{% + \forest@ca@ratio*(% + \forestove{s}-\forest@ca@first@s + +\forest@temp@child@anchor@s-\forest@ca@first@child@anchor@s)% + +\forest@ca@first@s + +\forest@ca@first@child@anchor@s-\forest@temp@child@anchor@s}% + \forestolet{s}\forest@temp + }% + \pgfmathsetlengthmacro\forest@calign@anchor{% + -tan(\forestove{calign primary angle})*(\forest@ca@first@l-\forest@ca@first@child@anchor@l+\forest@ca@parent@anchor@l)% + +\forest@ca@first@child@anchor@s-\forest@ca@parent@anchor@s + }% + \fi + \else + \ifdim\forest@ca@desired@s@distance<\forest@ca@actual@s@distance\relax + \pgfmathsetlengthmacro\forest@ca@ratio{% + \forest@ca@actual@s@distance/\forest@ca@desired@s@distance}% + \forest@node@foreachchild{% + \forestoget{child@anchor}\forest@temp@child@anchor + \forest@temp@child@anchor + \edef\forest@temp@child@anchor@l{\the\pgf@y}% + \pgfmathsetlengthmacro\forest@temp{% + \forest@ca@ratio*(% + \forestove{l}+\forest@ca@parent@anchor@l-\forest@temp@child@anchor@l) + -\forest@ca@parent@anchor@l+\forest@temp@child@anchor@l}% + \forestolet{l}\forest@temp + }% + \forestOget{\forest@ca@first@child}{l}\forest@ca@first@l + \pgfmathsetlengthmacro\forest@calign@anchor{% + -tan(\forestove{calign primary angle})*(\forest@ca@first@l+\forest@ca@parent@anchor@l-\forest@temp@child@anchor@l)% + +\forest@ca@first@child@anchor@s-\forest@ca@parent@anchor@s + }% + \fi \fi + \forest@calign@s@shift{-\forest@calign@anchor}% \fi - \forest@calign@s@shift{-\forest@calign@anchor}% } \def\forest@node@getedge#1#2#3{% \forestoget{#1@edge@#2}#3% |