diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/forest/forest-doc.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/forest/forest-doc.sty | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/forest/forest-doc.sty b/Master/texmf-dist/tex/latex/forest/forest-doc.sty new file mode 100644 index 00000000000..70f84563179 --- /dev/null +++ b/Master/texmf-dist/tex/latex/forest/forest-doc.sty @@ -0,0 +1,240 @@ +%% forest-doc.sty +%% `forest-doc.sty` is an auxiliary package needed to compile the documentation of package `forest`. +%% +%% Copyright (c) 2015 Saso Zivanovic +%% (Sa\v{s}o \v{Z}ivanovi\'{c}) +%% saso.zivanovic@guest.arnes.si +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This file is a part of package `forest'. For the list of files +%% constituting the package see main source file of the package, +%% `forest.dtx', or the derived `forest.sty'. +%% +\ProvidesPackage{forest-doc} +\RequirePackage{lstdoc} +\RequirePackage{pgfkeys} +\RequirePackage{forest-index} +% if you want index support, load package "forest-index", but later + +\lstset{language={[LaTeX]TeX},tabsize=4,gobble=2,% + basicstyle=\small\ttfamily,basewidth=0.51em,boxpos=c,pointstyle=\pstyle,moredelim=[is][\pstyle]{~}{~}} +%\lst@InstallKeywords{p}{point}{pointstyle}\relax{keywordstyle}{}ld +\def\pstyle{\color{darkgreen}} +\def\itemnosep{\vspace{-1.4ex}} +\lstset{ + rangebeginprefix=\ \ \%\%\%\ begin\ listing\ region:\ , + rangebeginsuffix=, + rangeendprefix=\ \ \%\%\%\ end\ listing\ region:\ , + rangeendsuffix=, + includerangemarker=false, + keepspaces=true, +} +\newcommand\lstinputregion[3][]{\lstinputlisting[linerange=#3-#3,#1]{#2}} +\def\lst@outputspace{{\ifx\lst@bkgcolor\empty\color{white}\else\lst@bkgcolor\fi\lst@visiblespace}}% this works for acroread, but not for atril :-( + +\lstnewenvironment{forestexample}[1][]{% + \PackageWarning{forest-doc}{Compiling example}{}% + \global\let\lst@intname\@empty + \gdef\lst@sample{}% + \def\forestexample@layout{tree on left}% + \def\forestexample@treebin{box}% + \pgfqkeys{/forestexample}{label format,#1}% + \pgfkeysgetvalue{/forestexample/counter}\forestexample@temp + \ifdefempty\forestexample@temp{}{\addtocounter{\forestexample@temp}{1}}% + \setbox\lst@samplebox=\hbox\bgroup + \pgfkeysvalueof{/forestexample/tree prefix}% + \lst@BeginAlsoWriteFile{\jobname.tmp}% +}{% + \lst@EndWriteFile + \pgfkeysvalueof{/forestexample/tree suffix}% + \egroup + \global\setbox\codebox=\box\lst@samplebox + \global\setbox + \treebox + \csname forestexample@treebin@\forestexample@treebin\endcsname + \pgfkeys{/forestexample/do layout/.expanded=\forestexample@layout}% +} +\pgfqkeys{/forestexample}{% + .unknown/.code={\lstset{\pgfkeyscurrentname={#1}}}, + index/.code={\indexex[not print]{#1}}, + index>/.code={\indexex[not print]>{#1}}, + code prefix/.code={\gdef\lst@sample{#1}}, + tree prefix/.initial={}, + tree suffix/.initial={}, + counter/.initial=lstlisting, + no label/.style={counter={}}, + label format/.store in=\@currentlabel, + label format/.default={\arabic{\pgfkeysvalueof{/forestexample/counter}}}, + tree width/.initial={\dimexpr\linewidth-\wd\codebox- + \glueexpr\pgfkeysvalueof{/forestexample/center skip}\relax\relax}, + layout/.store in=\forestexample@layout, + tree bin/.store in=\forestexample@treebin, + do layout/.is choice, + do layout/export/.code={% + \pgfkeysgetvalue{/forestexample/counter}\forestexample@temp + \ifdefempty\forestexample@temp{}{\addtocounter{\forestexample@temp}{-1}}% + }, + left skip/.initial={\glueexpr 0pt plus .4\linewidth minus \marginparsep + 0pt minus \@totalleftmargin + 0pt minus .75\marginparwidth}, + center skip/.initial={3em plus 0.1\linewidth minus 2em}, + right skip/.initial={0pt plus .4\linewidth}, + tree left skip/.initial=0pt, + tree right skip/.initial=0pt, + code left skip/.initial=0pt, + code right skip/.initial=0pt, + label y offset/.initial={\height-1ex}, % looks better to me this way + do layout/tree on left/.code={% + \begin{list}{}{\leftmargin 0pt} + \item + \@tempdima=\ifdim\totalht\treebox>\totalht\codebox + \dimexpr0.5 \totalht\treebox\relax + \else + \dimexpr0.5 \totalht\codebox\relax + \fi + \mbox{% + \mbox{\hbox to \linewidth{% + \hskip\pgfkeysvalueof{/forestexample/left skip}\relax + \textvcenter{\box\treebox}% + \hskip\pgfkeysvalueof{/forestexample/center skip}\relax + \hbox{\hskip-\@totalleftmargin\box\codebox\hskip\@totalleftmargin}% + \hskip\pgfkeysvalueof{/forestexample/right skip}\relax + }}% + \forestexample@label + }% + \end{list} + }, + v sep/.initial={1ex}, + align/.initial=center, + do layout/tree on top/.code={% + \begin{list}{}{\leftmargin 0pt \parsep 0pt \itemsep \pgfkeysvalueof{/forestexample/v sep}\relax} + \item \forestexample@align{tree}\forestexample@label + \item \forestexample@align{code} + \end{list} + }, + do layout/tree on bottom/.code={% + \begin{list}{}{\leftmargin 0pt \parsep 0pt \itemsep \pgfkeysvalueof{/forestexample/v sep}\relax} + \item \forestexample@align{code}\forestexample@label + \item \forestexample@align{tree} + \end{list} + }, + do layout/only tree/.code={% + \forestexample@align{tree}\forestexample@label + }, + do layout/only code/.code={% + \forestexample@align{code}\forestexample@label + }, +} +\newbox\treebox +\newbox\codebox +\def\forestexample@treebin@box{% + \hbox{\lst@sampleInput}% +} +\def\forestexample@treebin@minipage{% + \hbox{% + \begin{minipage}{\pgfkeysvalueof{/forestexample/tree width}}% + \lst@sampleInput + \end{minipage}% + }% +} +\def\forestexample@label{% + \pgfkeysgetvalue{/forestexample/counter}\forestexample@temp + \ifdefempty\forestexample@temp{}{% + \makebox[0pt][l]{% + \hskip-\linewidth + \hskip-\@totalleftmargin + \hskip\textwidth + \hskip\marginparsep + \raisebox + {\dimexpr\@tempdima+\depth-\pgfkeysvalueof{/forestexample/label y offset}}% + {\hbox to 0pt{\scriptsize(\@currentlabel)}}% + }% + }% +} +\def\forestexample@align#1{% + \pgfkeysgetvalue{/forestexample/align}\forestexample@temp + \mbox{\hbox to \linewidth{% + \csname forestexample@align@left@\forestexample@temp\endcsname + \hspace*{\pgfkeysvalueof{/forestexample/#1 left skip}}% + \mbox{\expandafter\box\csname #1box\endcsname}% + \hspace*{\pgfkeysvalueof{/forestexample/#1 right skip}}% + \csname forestexample@align@right@\forestexample@temp\endcsname + }}% +} +\def\forestexample@align@left@left{} +\def\forestexample@align@right@left{} +\def\forestexample@align@left@right{\hfill} +\def\forestexample@align@right@right{} +\def\forestexample@align@left@center{\hfill} +\def\forestexample@align@right@center{\hfill} +\newcommand\forestexampleimport[1][]{% + \def\forestexample@layout{tree on left}% + \pgfkeysgetvalue{/forestexample/counter}\forestexample@temp + \ifdefempty\forestexample@temp{}{\addtocounter{\forestexample@temp}{1}}% + \pgfqkeys{/forestexample}{% + label format, + do layout/.expanded=\forestexample@layout + }% +} + +\def\totalht#1{\dimexpr\ht#1 + \dp#1\relax} +\def\textvcenter#1{\raisebox{\dimexpr .5\depth-.5\height}{#1}} + +% For some reason, lstdoc's version kills all spaces in defaults ... +\def\lst@syntaxlabel@#1>#2\relax + %{\edef\lst@temp{\zap@space#2 \@empty}} + {\edef\lst@temp{#2}} + + + + +\def\getforestversion#1/#2/#3 v#4 #5\getforestversion{v#4} +\edef\forestversion{% +\expandafter\expandafter\expandafter\getforestversion + \csname ver@forest.sty\endcsname\getforestversion} + +\def\settodayfromforestdateA#1/#2/#3 v#4 #5\settodayfromforestdateA{\def\year{#1}\def\month{#2}\def\day{#3}} +\def\settodayfromforestdate{\expandafter\expandafter\expandafter\settodayfromforestdateA\csname ver@forest.sty\endcsname\settodayfromforestdateA} + +\def\TikZ;{{\rm Ti\emph{k}Z}} +\def\PGF;{\textsc{pgf}} +\def\foRest;{\textsc{Forest}} +\def\FoRest;{\textsc{Forest}} + +\let\keyname\texttt +\newcommand\cmdname[1]{\texttt{\char\escapechar#1}} + +\gdef\greaterthan{>} +\def\gobbleone#1{} + +\newcommand{\Repeat}[1]{% from tex.se http://tex.stackexchange.com/a/16194/16819 + \expandafter\@Repeat\expandafter{\the\numexpr #1\relax}% +} +\def\@Repeat#1{% + \ifnum#1>0 + \expandafter\@@Repeat\expandafter{\the\numexpr #1-1\expandafter\relax\expandafter}% + \else + \expandafter\@gobble + \fi +} +\def\@@Repeat#1#2{% + \@Repeat{#1}{#2}#2% +} +\def\spaces#1{\Repeat{#1}\space} + + +%%% Local Variables: +%%% mode: latex +%%% fill-column: 100 +%%% TeX-command-default: "Make PDF" +%%% TeX-master: "forest-doc" +%%% End: |