summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-12-31 21:26:04 +0000
committerKarl Berry <karl@freefriends.org>2016-12-31 21:26:04 +0000
commitef3722646aa7f034d07d94074504a5c474692d32 (patch)
tree1f2b1bcb8c0fd2646c1b3fdbbcee1591ed771c29
parenta90d8e411303ef9aa441255464ae02f965db24e2 (diff)
forest (31dec16)
git-svn-id: svn://tug.org/texlive/trunk@42820 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/forest/README4
-rw-r--r--Master/texmf-dist/doc/latex/forest/forest-doc.pdfbin1205944 -> 1208014 bytes
-rw-r--r--Master/texmf-dist/doc/latex/forest/forest-doc.tex44
-rw-r--r--Master/texmf-dist/doc/latex/forest/forest.pdfbin497040 -> 496994 bytes
-rw-r--r--Master/texmf-dist/source/latex/forest/forest.dtx62
-rw-r--r--Master/texmf-dist/tex/latex/forest/forest-compat.sty48
-rw-r--r--Master/texmf-dist/tex/latex/forest/forest.sty60
7 files changed, 128 insertions, 90 deletions
diff --git a/Master/texmf-dist/doc/latex/forest/README b/Master/texmf-dist/doc/latex/forest/README
index 09a1f7d8ca9..066ba7a8a79 100644
--- a/Master/texmf-dist/doc/latex/forest/README
+++ b/Master/texmf-dist/doc/latex/forest/README
@@ -1,4 +1,4 @@
-LaTeX package: forest [2016/12/18 v2.1.1 Drawing (linguistic) trees]
+LaTeX package: forest [2016/12/31 v2.1.2 Drawing (linguistic) trees]
Copyright (c) 2016 Saso Zivanovic
(Sa\v{s}o \v{Z}ivanovi\'{c})
@@ -14,7 +14,7 @@ kinds of) trees. Its main features are:
encoding of trees plus the key--value interface to option-setting;
- many tree-formatting options, with control over option values of
individual nodes and mechanisms for their manipulation;
-- a powerful mechanism for travesing the tree;
+- a powerful mechanism for traversing the tree;
- the possibility to decorate the tree using the full power of pgf/tikz;
- an externalization mechanism sensitive to code-changes.
diff --git a/Master/texmf-dist/doc/latex/forest/forest-doc.pdf b/Master/texmf-dist/doc/latex/forest/forest-doc.pdf
index 29f139efd2e..a7776501215 100644
--- a/Master/texmf-dist/doc/latex/forest/forest-doc.pdf
+++ b/Master/texmf-dist/doc/latex/forest/forest-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/forest/forest-doc.tex b/Master/texmf-dist/doc/latex/forest/forest-doc.tex
index 4fb226a8fb8..6c313f06e08 100644
--- a/Master/texmf-dist/doc/latex/forest/forest-doc.tex
+++ b/Master/texmf-dist/doc/latex/forest/forest-doc.tex
@@ -402,7 +402,7 @@ other kinds of) trees. Its main features are
key--value interface to option-setting;
\item many tree-formatting options, with control over option values of individual nodes and
mechanisms for their manipulation;
-\item a powerful mechanism for travesing the tree;
+\item a powerful mechanism for traversing the tree;
\item the possibility to decorate the tree using the full power of \PGF;/\TikZ;;
\item an externalization mechanism sensitive to code-changes.
\end{enumerate*}
@@ -2685,6 +2685,14 @@ Configures and executes the \meta{nodewalk}. This key is a nodekey-space copy o
interpreted as (cumulative) \TikZ; code. If you'd like to use afterthoughts for some other
purpose, redefine this style --- this will take effect even if you do it in the tree preamble.
+\indexitem{node key>also}|=|\meta{keylist} Execute the keys in the given \meta{keylist}.
+
+If we are currently processing node keys, \meta{keylist} should contain node keys. If we are
+in a nodewalk, \meta{keylist} should (or rather, may also) contain nodewalk keys.
+
+For example, to execute, during a nodewalk, a nodewalk keylist stored in register |tempkeylista|,
+write |also/.register=|\indexex{tempkeylista}. Note that no embedded nodewalk will be introduced.
+
\indexitem{node key>autoforward}|=|\meta{option}\meta{keylist}, \indexdef{node key>autoforward register}|=|\meta{register}\meta{keylist}
\itemnosep
\indexitem{node key>autoforward'}|=|\meta{option}\meta{keylist}, \indexdef{node key>autoforward register'}|=|\meta{register}\meta{keylist}
@@ -3804,8 +3812,8 @@ value. Use an empty argument to reset the node's name to its default value.
aligned to the anchor of the current node.
Behind the scenes, this style sets the alias of the current node to \keyname{forest@baseline@node}.
-\begin{forestexample}[index={baseline,use as bounding box'}]
{\tikzexternaldisable
+\begin{forestexample}[index={baseline,use as bounding box'}]
Baseline at the
\begin{forest}
[parent,~baseline~,use as bounding box'
@@ -3815,8 +3823,8 @@ value. Use an empty argument to reset the node's name to its default value.
\begin{forest}
[parent
[child,~baseline~,use as bounding box']]
- \end{forest}.}
-\end{forestexample}
+ \end{forest}.
+\end{forestexample}}
\indexitem>{tikz key>fit to}|=|\meta{nodewalk} Fits the \TikZ; node to the nodes in the given
\meta{nodewalk}.
@@ -5370,9 +5378,12 @@ argument processor is invoked this way, any number of items can be returned.\foo
},
draw tree stage/.style={
for root'={
- draw tree processing order/.nodewalk style={branch={{from to={1}{round(n_children()/3)}},tree}}, draw tree, TeX={~~},
- draw tree processing order/.nodewalk style={branch={{from to={1+round(n_children()/3)}{2*round(n_children()/3)}},tree}}, draw tree, TeX={~~},
- draw tree processing order/.nodewalk style={branch={{from to={1+2*round(n_children()/3)}{n_children()}},tree}}, draw tree,
+ if n children=0{% so that we don't get an error on the first run
+ }{
+ draw tree processing order/.nodewalk style={branch={{from to={1}{round(n_children()/3)}},tree}}, draw tree, TeX={~~},
+ draw tree processing order/.nodewalk style={branch={{from to={1+round(n_children()/3)}{2*round(n_children()/3)}},tree}}, draw tree, TeX={~~},
+ draw tree processing order/.nodewalk style={branch={{from to={1+2*round(n_children()/3)}{n_children()}},tree}}, draw tree,
+ }
}
}
[!\bigbadprocesslist]
@@ -5524,7 +5535,7 @@ Before we finally list the available instructions, some notes:
\end{indexitemprocessinstruction}
-\begin{indexitemprocessinstruction}{p}([$n$]){\protect\emph{p}process}
+\begin{indexitemprocessinstruction}{p}([$n$]){\protect\emph{p}rocess}
{&\index{meta>process}&\meta{result}&}
Execute an embedded call of the argument processor.
@@ -6386,6 +6397,21 @@ in |-all| styles.
\subsubsection{v2.1}
\begin{description}
+\item[v2.1.2 (2016/12/31)] \mbox{}
+
+ Bugfixes:
+ \begin{syntax}
+ \compatitem{all}{2.1.1-loops}
+ A level of hash doubling was unnecessarily introduced for the \meta{keylist} argument of all
+ loops (\S\ref{ref:loops}), and the \meta{nodewalk} argument of \index{process keylist'} and
+ \index{process delayed}. Use this key to revert to the old behaviour.
+ \end{syntax}
+
+ Minor improvements:
+ \begin{itemize}
+ \item Implemented key \index{also}.
+ \end{itemize}
+
\item[v2.1.1 (2016/12/18)] \mbox{}
Minor improvements:
@@ -6855,7 +6881,7 @@ bug reports and ideas, \foRest; would be a much poorer package indeed.
%\addtocontents{toc}{\protect\iffalse{\protect\fi}}
%http://tex.stackexchange.com/questions/10291/addtocontents-at-end-of-document-not-getting-written-to-toc-file
\makeatletter
-\write\@auxout{\noexpand\@writefile{toc}{\noexpand\iffalse{\noexpand\fi}}}
+\immediate\write\@auxout{\noexpand\@writefile{toc}{\noexpand\iffalse{\noexpand\fi}}}
\makeatother
diff --git a/Master/texmf-dist/doc/latex/forest/forest.pdf b/Master/texmf-dist/doc/latex/forest/forest.pdf
index a4d072168d1..9a08e1553fa 100644
--- a/Master/texmf-dist/doc/latex/forest/forest.pdf
+++ b/Master/texmf-dist/doc/latex/forest/forest.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/forest/forest.dtx b/Master/texmf-dist/source/latex/forest/forest.dtx
index 73ad363285f..642734499d5 100644
--- a/Master/texmf-dist/source/latex/forest/forest.dtx
+++ b/Master/texmf-dist/source/latex/forest/forest.dtx
@@ -1,4 +1,4 @@
-% \CheckSum{16606}
+% \CheckSum{16610}
% \iffalse meta-comment
% forest.dtx
%% `forest' is a `pgf/tikz'-based package for drawing (linguistic) trees.
@@ -83,7 +83,7 @@
%
% \section{Identification}
% \begin{macrocode}
-\ProvidesPackage{forest}[2016/12/18 v2.1.1 Drawing (linguistic) trees]
+\ProvidesPackage{forest}[2016/12/31 v2.1.2 Drawing (linguistic) trees]
\RequirePackage{tikz}[2013/12/13]
\usetikzlibrary{shapes}
@@ -318,18 +318,18 @@
% \begin{macrocode}
\def\newsafeloop#1{%
\csdef{safeloop@#1}##1\saferepeat{%
- \edef\safeloop@marshal{%
- \noexpand\csdef{safeiterate@#1}{%
- \unexpanded{##1}\relax
- \noexpand\expandafter
- \expandonce{\csname safeiterate@#1\endcsname}%
- \noexpand\fi
- }%
- }\safeloop@marshal
+ \forest@temp@toks{##1}%
+ \csedef{safeiterate@#1}{%
+ \the\forest@temp@toks\relax
+ \noexpand\expandafter
+ \expandonce{\csname safeiterate@#1\endcsname}%
+ \noexpand\fi
+ }%
\csuse{safeiterate@#1}%
\advance\noexpand\safeloop@depth-1\relax
\cslet{safeiterate@#1}\relax
}%
+ \expandafter\newif\csname ifsafebreak@\the\safeloop@depth\endcsname
}%
\newcount\safeloop@depth
\def\safeloop{%
@@ -347,14 +347,13 @@
% \begin{macrocode}
\def\newsafeRKloop#1{%
\csdef{safeRKloop@#1}##1\safeRKrepeat{%
- \edef\safeRKloop@marshal{%
- \noexpand\csdef{safeRKiterate@#1}{%
- \unexpanded{##1}\relax
- \noexpand\expandafter
- \expandonce{\csname safeRKiterate@#1\endcsname}%
- \noexpand\fi
- }%
- }\safeRKloop@marshal
+ \forest@temp@toks{##1}%
+ \csedef{safeRKiterate@#1}{%
+ \the\forest@temp@toks\relax
+ \noexpand\expandafter
+ \expandonce{\csname safeRKiterate@#1\endcsname}%
+ \noexpand\fi
+ }%
\csuse{safeRKiterate@#1}%
\advance\noexpand\safeRKloop@depth-1\relax
\cslet{safeRKiterate@#1}\relax
@@ -4036,15 +4035,16 @@
\expandafter\forest@processor@r@\expandafter{\forest@temp}%
}
\def\forest@processor@r@#1{%
- \forest@temp@toks{}%
+ \forest@process@left@esetappend{}%
\def\forest@tempcomma{}%
\pgfqkeys{/forest}{split={#1}{,}{process@rk}}%
- \forest@process@left@esetappend{\the\forest@temp@toks}%
\let\forestmathresulttype\forestmathtype@generic
}
\forestset{%
process@rk/.code={%
- \epretotoks\forest@temp@toks{#1\forest@tempcomma}%
+ \forest@process@left@toppop\forest@temp
+ \forest@temp@toks{#1}%
+ \forest@process@left@esetappend{\the\forest@temp@toks\forest@tempcomma\expandonce{\forest@temp}}%
\def\forest@tempcomma{,}%
}%
}
@@ -4515,6 +4515,7 @@
TeX'/.code={\appto\forest@externalize@loadimages{#1}#1},
TeX''/.code={\appto\forest@externalize@loadimages{#1}},
options/.code={\forestset{#1}},
+ also/.code={\pgfkeysalso{#1}},
typeout/.style={TeX={\typeout{#1}}},
declare toks={name}{},
name/.code={% override the default setter
@@ -5758,10 +5759,8 @@
save and restore register={branched@nodewalk}{
branch@temp@toks={},
split/.process={r}{#1}{,}{#2},
- branch@temp@style/.style/.register=branch@temp@toks,
- branch@temp@style,
- branch@temp@style/.style/.register=branched@nodewalk,
- branch@temp@style,
+ also/.register=branch@temp@toks,
+ also/.register=branched@nodewalk,
}
},
nodewalk/branch@build@realstep/.style={% #1 = nodewalk for this branch
@@ -6232,14 +6231,11 @@
\pgfqkeys{/forest/nodewalk}{
.unknown/.code={%
\forest@nodewalk@areshortstepsfalse
- \pgfkeysifdefined{/forest/\pgfkeyscurrentname/@.cmd}{%
- }{%
- \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text % no value, so possibly short steps
- \forest@nodewalk@shortsteps@resolution{}%
- \forest@nodewalk@areshortstepstrue
- \expandafter\forest@nodewalk@shortsteps\pgfkeyscurrentname==========,% "=" and "," cannot be short steps, so they are good as delimiters
- \fi
- }%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text % no value, so possibly short steps
+ \forest@nodewalk@shortsteps@resolution{}%
+ \forest@nodewalk@areshortstepstrue
+ \expandafter\forest@nodewalk@shortsteps\pgfkeyscurrentname==========,% "=" and "," cannot be short steps, so they are good as delimiters
+ \fi
\ifforest@nodewalk@areshortsteps
\@escapeif{\expandafter\pgfkeysalso\expandafter{\the\forest@nodewalk@shortsteps@resolution}}%
\else
diff --git a/Master/texmf-dist/tex/latex/forest/forest-compat.sty b/Master/texmf-dist/tex/latex/forest/forest-compat.sty
index 4414eb8bc2c..03b5c39b27d 100644
--- a/Master/texmf-dist/tex/latex/forest/forest-compat.sty
+++ b/Master/texmf-dist/tex/latex/forest/forest-compat.sty
@@ -30,36 +30,39 @@
}
\forestset{@@deprecated/.code={\forest@deprecated{#1}}}
\def\forestcompat#1{\pgfqkeys{/forest/@compat}{#1}}
+\def\forestcompat@patchfailed{%
+ \pgfkeys@split@path
+ \PackageError{forest}{Patching in compat=\pgfkeyscurrentname\space failed}{}%
+}
\forestcompat{
silent/.code={\def\forest@deprecated##1{}},
%%% begin listing region: compat_keys
most/.style={1.0-most},
all/.style={1.0-all},
none/.style={},
- 1.0-most/.style={
+ 1.0-harmless/.style={
1.0-triangle,1.0-linear,1.0-nodewalk,1.0-ancestors,
1.0-fittotree,1.0-for,1.0-forall,
- 2.0.2-most,
},
- 1.0-all/.style={
- 1.0-most,
+ 1.0-most/.style={1.0-harmless,2.0.2-most},
+ 1.0-all/.style={1.0-harmless,
1.0-forstep,1.0-rotate,1.0-stages,1.0-name,
2.0.2-all,
},
- 2.0.2-most/.style={
- 2.0-most,
- },
+ 2.0.2-most/.style={2.0-most},
2.0.2-all/.style={
2.0.2-delayn,2.0.2-wrapnpgfmathargs,
2.0-all,
},
- 2.0-most/.style={},
+ 2.0-edges/.style={2.0-anchors,2.0-forkededge,2.0-folder},
+ 2.0-most/.style={2.1.1-most},
2.0-all/.style={
- 2.0-most,
2.0-delayn,
2.0-edges,
+ 2.1.1-all,
},
- 2.0-edges/.style={2.0-anchors,2.0-forkededge,2.0-folder},
+ 2.1.1-most/.style={},
+ 2.1.1-all/.style={2.1.1-loops},
%%% end listing region: compat_keys
1.0-triangle/.style={
/forest/triangle/.style={
@@ -239,13 +242,30 @@
},
2.0-folder/.code={%
\forest@iflibraryloaded{edges}{%
- \expandafter\patchcmd\csname @pgfk@/forest/folder/.@cmd\endcsname
- {parent anchor=-children last}{parent anchor=parent last}{}{}%
- \expandafter\patchcmd\csname @pgfk@/forest/folder/.@cmd\endcsname
- {edge={rotate/.option=!parent.grow},}{edge={rotate/.pgfmath=grow()}}{}{}%
+ \expandafter\patchcmd\csname pgfk@/forest/folder/.@cmd\endcsname
+ {parent anchor=-children last}
+ {parent anchor=parent last}
+ {}{\forestcompat@patchfailed}%
+ \expandafter\patchcmd\csname pgfk@/forest/folder/.@cmd\endcsname
+ {edge={rotate/.option=!parent.grow},}
+ {edge={rotate/.pgfmath=grow()}}
+ {}{\forestcompat@patchfailed}%
}{%
\appto\forest@compat@libraries@edges{\forestcompat{2.0-folder}}%
}%
},
+ 2.1.1-loops/.code={%
+ \patchcmd\newsafeRKloop % pre-{##1}
+ {\forest@temp@toks}%
+ {%
+ \forest@deprecated{hash-doubling loops from pre-2.1.2}%
+ \def\forest@temp
+ }%
+ {}{\forestcompat@patchfailed}%
+ \patchcmd\newsafeRKloop % post-{##1}
+ {\csedef}%
+ {\forest@temp@toks\expandafter{\forest@temp}\csedef}%
+ {}{\forestcompat@patchfailed}%
+ },
}
\expandafter\forestcompat\expandafter{\forest@compat}
diff --git a/Master/texmf-dist/tex/latex/forest/forest.sty b/Master/texmf-dist/tex/latex/forest/forest.sty
index 7443fbdf7ae..39ab9a6a43c 100644
--- a/Master/texmf-dist/tex/latex/forest/forest.sty
+++ b/Master/texmf-dist/tex/latex/forest/forest.sty
@@ -44,7 +44,7 @@
%% - LICENCE
%% To use the package, only the files marked with + need to be installed.
%%
-\ProvidesPackage{forest}[2016/12/18 v2.1.1 Drawing (linguistic) trees]
+\ProvidesPackage{forest}[2016/12/31 v2.1.2 Drawing (linguistic) trees]
\RequirePackage{tikz}[2013/12/13]
\usetikzlibrary{shapes}
@@ -238,18 +238,18 @@
}%
\def\newsafeloop#1{%
\csdef{safeloop@#1}##1\saferepeat{%
- \edef\safeloop@marshal{%
- \noexpand\csdef{safeiterate@#1}{%
- \unexpanded{##1}\relax
- \noexpand\expandafter
- \expandonce{\csname safeiterate@#1\endcsname}%
- \noexpand\fi
- }%
- }\safeloop@marshal
+ \forest@temp@toks{##1}%
+ \csedef{safeiterate@#1}{%
+ \the\forest@temp@toks\relax
+ \noexpand\expandafter
+ \expandonce{\csname safeiterate@#1\endcsname}%
+ \noexpand\fi
+ }%
\csuse{safeiterate@#1}%
\advance\noexpand\safeloop@depth-1\relax
\cslet{safeiterate@#1}\relax
}%
+ \expandafter\newif\csname ifsafebreak@\the\safeloop@depth\endcsname
}%
\newcount\safeloop@depth
\def\safeloop{%
@@ -263,14 +263,13 @@
\def\safeloopn{\csuse{safeloopn@\the\safeloop@depth}}%
\def\newsafeRKloop#1{%
\csdef{safeRKloop@#1}##1\safeRKrepeat{%
- \edef\safeRKloop@marshal{%
- \noexpand\csdef{safeRKiterate@#1}{%
- \unexpanded{##1}\relax
- \noexpand\expandafter
- \expandonce{\csname safeRKiterate@#1\endcsname}%
- \noexpand\fi
- }%
- }\safeRKloop@marshal
+ \forest@temp@toks{##1}%
+ \csedef{safeRKiterate@#1}{%
+ \the\forest@temp@toks\relax
+ \noexpand\expandafter
+ \expandonce{\csname safeRKiterate@#1\endcsname}%
+ \noexpand\fi
+ }%
\csuse{safeRKiterate@#1}%
\advance\noexpand\safeRKloop@depth-1\relax
\cslet{safeRKiterate@#1}\relax
@@ -3308,15 +3307,16 @@
\expandafter\forest@processor@r@\expandafter{\forest@temp}%
}
\def\forest@processor@r@#1{%
- \forest@temp@toks{}%
+ \forest@process@left@esetappend{}%
\def\forest@tempcomma{}%
\pgfqkeys{/forest}{split={#1}{,}{process@rk}}%
- \forest@process@left@esetappend{\the\forest@temp@toks}%
\let\forestmathresulttype\forestmathtype@generic
}
\forestset{%
process@rk/.code={%
- \epretotoks\forest@temp@toks{#1\forest@tempcomma}%
+ \forest@process@left@toppop\forest@temp
+ \forest@temp@toks{#1}%
+ \forest@process@left@esetappend{\the\forest@temp@toks\forest@tempcomma\expandonce{\forest@temp}}%
\def\forest@tempcomma{,}%
}%
}
@@ -3775,6 +3775,7 @@
TeX'/.code={\appto\forest@externalize@loadimages{#1}#1},
TeX''/.code={\appto\forest@externalize@loadimages{#1}},
options/.code={\forestset{#1}},
+ also/.code={\pgfkeysalso{#1}},
typeout/.style={TeX={\typeout{#1}}},
declare toks={name}{},
name/.code={% override the default setter
@@ -4982,10 +4983,8 @@
save and restore register={branched@nodewalk}{
branch@temp@toks={},
split/.process={r}{#1}{,}{#2},
- branch@temp@style/.style/.register=branch@temp@toks,
- branch@temp@style,
- branch@temp@style/.style/.register=branched@nodewalk,
- branch@temp@style,
+ also/.register=branch@temp@toks,
+ also/.register=branched@nodewalk,
}
},
nodewalk/branch@build@realstep/.style={% #1 = nodewalk for this branch
@@ -5448,14 +5447,11 @@
\pgfqkeys{/forest/nodewalk}{
.unknown/.code={%
\forest@nodewalk@areshortstepsfalse
- \pgfkeysifdefined{/forest/\pgfkeyscurrentname/@.cmd}{%
- }{%
- \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text % no value, so possibly short steps
- \forest@nodewalk@shortsteps@resolution{}%
- \forest@nodewalk@areshortstepstrue
- \expandafter\forest@nodewalk@shortsteps\pgfkeyscurrentname==========,% "=" and "," cannot be short steps, so they are good as delimiters
- \fi
- }%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text % no value, so possibly short steps
+ \forest@nodewalk@shortsteps@resolution{}%
+ \forest@nodewalk@areshortstepstrue
+ \expandafter\forest@nodewalk@shortsteps\pgfkeyscurrentname==========,% "=" and "," cannot be short steps, so they are good as delimiters
+ \fi
\ifforest@nodewalk@areshortsteps
\@escapeif{\expandafter\pgfkeysalso\expandafter{\the\forest@nodewalk@shortsteps@resolution}}%
\else