From 58679cc130f6f05e33c54456b379a2b878211c29 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 30 Dec 2010 23:50:06 +0000 Subject: pst-jtree git-svn-id: svn://tug.org/texlive/trunk@20894 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/generic/pst-jtree/Doc-source.zip | Bin 0 -> 63897 bytes Master/texmf-dist/doc/generic/pst-jtree/README | 29 +- .../doc/generic/pst-jtree/pst-jtree-doc-add.pdf | Bin 0 -> 18454 bytes .../doc/generic/pst-jtree/pst-jtree-doc-source.zip | Bin 61886 -> 0 bytes .../doc/generic/pst-jtree/pst-jtree-doc.pdf | Bin 257400 -> 255182 bytes .../doc/generic/pst-jtree/pst-jtree-examples.pdf | Bin 65181 -> 0 bytes .../doc/generic/pst-jtree/pst-jtree-examples.tex | 624 --------------------- .../texmf-dist/tex/generic/pst-jtree/pst-jtree.tex | 432 +++++++++----- .../texmf-dist/tex/latex/pst-jtree/pst-jtree.sty | 3 +- 9 files changed, 290 insertions(+), 798 deletions(-) create mode 100644 Master/texmf-dist/doc/generic/pst-jtree/Doc-source.zip create mode 100644 Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc-add.pdf delete mode 100644 Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc-source.zip delete mode 100644 Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-examples.pdf delete mode 100644 Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-examples.tex diff --git a/Master/texmf-dist/doc/generic/pst-jtree/Doc-source.zip b/Master/texmf-dist/doc/generic/pst-jtree/Doc-source.zip new file mode 100644 index 00000000000..6a88bb11c6c Binary files /dev/null and b/Master/texmf-dist/doc/generic/pst-jtree/Doc-source.zip differ diff --git a/Master/texmf-dist/doc/generic/pst-jtree/README b/Master/texmf-dist/doc/generic/pst-jtree/README index 2ebcff0ce09..b8c3448f9c8 100644 --- a/Master/texmf-dist/doc/generic/pst-jtree/README +++ b/Master/texmf-dist/doc/generic/pst-jtree/README @@ -1,27 +1,12 @@ +The jTree package is an extension of PSTricks which is intended +to be used by linguists as a tool to typeset complex trees. It +consists of four files: pst-jtree.tex, pst-jtree.sty, +pst-jtree-doc.pdf, and pst-jtree-doc-add (which is essentially an +appendix to the older pst-jtree-doc.pdf). + + -The pst-jtree package is based on PSTricks and is intended to be -used by linguists to typeset complex trees. The core files are 1) -pst-jtree.tex, the Tex macro file, 2) pst-jtree.sty, a LaTex -wrapper which calls pst-jtree.tex, and 3) pst-jtree-doc.pdf, the -documentation. The complete Tex source for the documentation is -in the file pst-jtree-doc-source.zip. -The file pst-jtree-examples.tex is a LaTex file which contains -all the complex examples in the documentation, as well as many of -the simpler ones. It very simply formatted (no packages other -than pstricks, pst-xkey, and pst-jtree are used) in order to -facilitate user experimentation with pst-jtree typesetting. -Provided that PSTricks and PST-XKey are installed, users should -be able to run this file with little difficulty if PST-jTree is -installed or simply if pst-jtree.tex and pst-jtree.sty are in the -same directory that pst-jtree-examples.tex is in. -pst-jtree-examples.pdf shows what the source produces. -For those interested in tree formatting but not LaTex, -pst-jtree-examples.tex can be very simply converted into a Tex -file. -This material is subject to the LaTeX Project Public License. See -http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html -for the details of that license. diff --git a/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc-add.pdf b/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc-add.pdf new file mode 100644 index 00000000000..7db5c11efa1 Binary files /dev/null and b/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc-add.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc-source.zip b/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc-source.zip deleted file mode 100644 index b0db962d20f..00000000000 Binary files a/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc-source.zip and /dev/null differ diff --git a/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc.pdf b/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc.pdf index 118815005a4..d19f0dd6149 100644 Binary files a/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc.pdf and b/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-doc.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-examples.pdf b/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-examples.pdf deleted file mode 100644 index 9bb9449e24c..00000000000 Binary files a/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-examples.pdf and /dev/null differ diff --git a/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-examples.tex b/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-examples.tex deleted file mode 100644 index 272db499be4..00000000000 --- a/Master/texmf-dist/doc/generic/pst-jtree/pst-jtree-examples.tex +++ /dev/null @@ -1,624 +0,0 @@ - -\documentclass[12pt]{article} -\usepackage{pstricks,pst-xkey,pst-jtree} - -\rightskip=0pt plus 2em - -\newdimen\dimpuba -\newdimen\dimpubb -\newdimen\dimpubc -\newdimen\dimpubd -\newcount\exno -\exno=0 - -\def\ex{% - \vskip2.5em - \allowbreak\noindent - \global\advance\exno by 1 - \bgroup - \parindent=0pt - \rightskip=0pt minus 3em % allow overwide displays if necessary - (\the\exno)\quad -} -\def\xe{\par\egroup} - -\begin{document} -\psset{nodesepA=.8ex,nodesepB=.4ex} - -\centerline{\huge Examples} - -\vskip1.5em - -\noindent The source file for this pdf file is {\it -pst-jtree-examples.tex}. It is very simply formatted (no packages -other than pstricks, pst-xkey, and pst-jtree are used) in order -to facilitate user experimentation with pst-jtree typesetting. -Provided that PSTricks and PST-XKey are installed, users should -be able to run this file with little difficulty if PST-jTree is -installed or simply if \hbox{\it pst-jtree.tex\/} and \hbox{\it -pst-jtree.sty\/} are in the same directory that \hbox{\it -pst-jtree-examples.tex\/} is in. \hbox{\it -pst-jtree-examples.pdf\/} shows what the source produces. For -those interested in Tex tree formatting, but not LaTex, \hbox{\it -pst-jtree-examples.tex\/} can be very simply converted into a -Tex file. - -All of the complex examples in the documentation file {\it -pst-jtree-doc.pdf\/} are given here, as well as many of the -simpler ones. They appear in the same order that they appear in -the documentation. But the numbering is sequential and differs from -the numbering in the documentation. - -\ex -\jtree[xunit=2.2em,yunit=1em] -\def\:{:[scaleby=2.3]}% -\! = \:!a :{is} {rotten}. -\!a = :{the} :{cheese} :{that } \:!b :{ate} {\it t}. -\!b = :{the} :{rat} :{that } :{John \ } :{killed} {\it t}. -\endjtree -\xe - -\ex -\jtree -\! = {a} - :{b} {c} - :{d} {e} - :{f} {g} - :{h} {i}. -\endjtree -\xe - -\ex -\jtree -\! = :{a} :{b} :{c} :{d} {e}. -\endjtree -\xe - -\ex -\jtree -\defbranch(1)(-.5) -\! = {a} - :{b} {c} - :{d} {e} - :{f} {g}. -\endjtree -\xe - -\ex -\jtree[xunit=2.5em,yunit=1em] -\defbranch(2.3)(1) -\! = !a ^ :{is} {rotten}. -\!a = :{the} :{cheese} :{that} - !b ^ :{ate} {\it t}. -\!b = :{the} :{rat} :{that} - !c ^ :{killed} {\it t}. -\!c = :{the} :{cat} :{that} :{John} :{owned} {\it t}. -\endjtree -\xe - -\ex -\jtree[xunit=3em,yunit=3em] -\! = [scaleby=2 1, - arrows=->]{a} - ^[linewidth=2pt]{b} - ^[scaleby=1 2, - linestyle=dashed]{c} - ^[scaleby=1.5 1, - linestyle=dotted,linewidth=1pt]{d} - ^[scaleby=2 .5,doubleline=true]{e}. -\endjtree -\xe - -\ex -\def\GO#1#2#3{$\rm GO\bigl({#1},[_{Path}\, - FROM({#2}),TO({#3})]\bigr)$}% -\jtree[xunit=3em,yunit=1em] -\defstuff[a]{\multiline - \it The cup slid from John to Mary\cr - \GO{\bf cup}{\bf John}{\bf Mary}\cr - IP\endmultiline} -\defstuff[b]{\multiline - \it The cup\cr - \bf cup\cr - NP\endmultiline} -\defstuff[c]{\multiline - \it slid from John to Mary\cr - \GO{\mit x}{\bf John}{\bf Mary}\cr - IP\endmultiline} -\defstuff[d]{\multiline - \it The\cr - $\perp$\cr - \quad N$\rm _{SPEC}$\endmultiline} -\defstuff[e]{\multiline - \it cup\cr - \bf cup\cr - N\endmultiline} -\def\Fracture{{\omit\psframebox[framesep=.4ex] - {Fracture$\vphantom j$}}}% -\! = {\stuff[a]} - \Fracture - :\jtbig{\stuff[b]}!a \jtbig{\stuff[c]} - \Fracture - :{$\vdots$} {$\vdots$}. -\!a = \Fracture - :{\stuff[d]} {\stuff[e]}. -\endjtree -\xe - -\ex % Dowty -\jtree[xunit=4em,yunit=2em,everylabel=\strut\it] -\! = {John walks from Boston to Detroit\rm, t, 4} - :{John\rm, T} {walk from Boston - to Detroit\rm, IV,7}[labeloffset=1.5em] - :\jtlong{walk from Boston\rm, IV,7}!a - {to Detroit\rm, IV/IV, 5} - :[scaleby=.8]{to\rm, IAV/T}() [scaleby=.8]{Detroit\rm, T}. -\!a = :{walk\rm, IV} {from Boston\rm, IV/IV, 5} - :{from\rm, IAV/T} {Boston\rm, T}. -\endjtree -\xe - -\ex % Nunes -\jtree[xunit=3em,yunit=1.4em] -\def\what{[which claim]$_k$}% -\! = {CP$_1$} - [scaleby=1.7]{CP$_2$}!a ^[scaleby=2.5]{C$'$} - :{$\rm was+Q$} {TP} - [scaleby=1.6,triratio=.4] - {he$_i$ willing to discuss \what}. -\!a = :{\what} {CP$_2$} - [scaleby=1.6,triratio=.6] - {that John$_i$ made \what}. -\endjtree -\xe - -\ex % Andrews -\jtree[xunit=2.2em,yunit=.7em] -\def\\{[labelgapb=-.5ex]}% -\! = {S} - :({NP}\\{that book}@A1 ) \jtwide{S/NP} - :({NP}\\{I}) {VP/NP} - :({V}\\{want}) {VP/NP} - :{\it to} {VP/NP} - ({V}\\{ask}) ^({NP}\\{Mary}) ^{VP/NP} - :{\it to} {VP/NP} - ({V}\\{tell}) ^({NP}\\{Tom}) ^{VP/NP} - :{\it to} {VP/NP} - :({V}\\{read}) {NP/NP}\\{e}@A2 . -\nccurve[angleA=210,angleB=-90]{->}{A2}{A1} -\endjtree -\xe - -\ex % Andrews (second version) -\jtree[xunit=2.2em,yunit=.7em] -\def\\{}% -\! = {S} - :({NP}{that book}@A1 ) \jtwide{S/NP} - :({NP}\\{I}) {VP/NP} - :({V}\\{want}) {VP/NP} - :{\it to} {VP/NP} - ({V}\\{ask}) ^({NP}\\{Mary}) ^{VP/NP} - :{\it to} {VP/NP} - ({V}\\{tell}) ^({NP}\\{Tom}) ^{VP/NP} - :{\it to} {VP/NP} - :({V}\\{read}) {NP/NP}\\{e}@A2 . -\nccurve[angleA=210,angleB=-90]{->}{A2}{A1} -\endjtree -\xe - -\ex % Merchant -a.\quad -% -\jtree[xunit=2.6em,yunit=1em] -\def\\{[labelgapb=-1.2ex]}% -\everymath={\rm}% -\! = {CP} - :({XP}\\{$\scriptstyle [wh]$}@A1 ) {$C'$} - :({$C^0$}\\{$\scriptstyle [wh,Q]$}) {$\langle\, TP\,\rangle$} - {\dots\quad\rnode[b]{A2}{\it t}\quad\dots}. -\nccurve[angleA=-150,angleB=-90,ncurv=1]{->}{A2}{A1} -\endjtree -% -\hfil -b.\quad -\jtree[xunit=2.6em,yunit=1em] -\def\\{[labelgapb=-1.2ex]}% -\everymath={\rm}% -\! = {CP} - :({XP}\\{$\scriptstyle [wh]$}@A1 ) {$C'$} - :({$C^0$}\\{$\scriptstyle [wh,Q]$}) {$\langle\, TP\,\rangle$} - {\dots\quad\rnode[b]{A2}{\it t}\quad \dots}. - \ncbar[angleA=-90,angleB=-90,armA=1em, - armB=1em,linearc=.6ex]{->}{A2}{A1} -\endjtree -\xe - -\ex % Chung, first example -a.\quad -% -\jtree[xunit=2.6em,yunit=1em] -\def\\{[labelgapb=-1.2ex]}% -\everymath={\rm}% -\! = {CP} - :({XP}\\{$\scriptstyle [wh]$}@A1 ) {$C'$} - :({$C^0$}\\{$\scriptstyle [wh,Q]$}) {$\langle\, TP\,\rangle$} - {\dots\quad\rnode[b]{A2}{\it t}\quad\dots}. -\nccurve[angleA=-150,angleB=-90,ncurv=1]{->}{A2}{A1} -\endjtree -% -\hfil -b.\quad -\jtree[xunit=2.6em,yunit=1em] -\def\\{[labelgapb=-1.2ex]}% -\everymath={\rm}% -\! = {CP} - :({XP}\\{$\scriptstyle [wh]$}@A1 ) {$C'$} - :({$C^0$}\\{$\scriptstyle [wh,Q]$}) {$\langle\, TP\,\rangle$} - {\dots\quad\rnode[b]{A2}{\it t}\quad \dots}. - \ncbar[angleA=-90,angleB=-90,armA=1em, - armB=1em,linearc=.6ex]{->}{A2}{A1} -\endjtree -\xe - -\ex % Chung, second example -\jtree[xunit=2em,yunit=1.4em,labelgapb=0,triratio=0, - arrowscale=1.6 1] -\deftriangle(1.8)(1)(-.5) -\defbranch(1)(-.5) -\! = {CP} - :{\sc WH}@A {C$'$} - {\rlap{V}}@AA ^[triratio=.55]{CP} - :{\it t}@B {C$'$} - {\rlap{V}}@BB ^[triratio=.55]{CP} - :{\it t}@C {C$'$} - {\rlap{V}}@CC . -\psset{linewidth=1pt,ncurvB=1.1,nodesepA=0,nodesepB=.7ex, - angleA=-90,angleB=180,offsetA=.5ex} -\nccurve{A}{AA} -\nccurve{B}{BB} -\nccurve{C}{CC} -\psset{offsetA=-.5ex,arrows=->} -\nccurve{A}{AA} -\nccurve{B}{BB} -\nccurve{C}{CC} -\endjtree -\xe - -\ex % Caponigo and Schutze -\jtree[xunit=5em,yunit=2em] -\! = {IP} - {\triline{sono stati\hfil}} ^[triratio=.95]{FP} - :{F$_{\rlap{$\scriptstyle\rm [+strong]$}}$}!a - {Voice$_{\rlap{$\scriptstyle\rm Pass$}}$} - :{Voice\rlap{$_{\rm Pass}$}}@A2 {$\rm Agr_OP$} - :{DP}!b {${\rm Agr_O}'$} - :[scaleby=.8 1]{$\rm Agr_O$}@A3 [scaleby=.8 1]{VP} - [scaleby=.4 .7] - {\rnode{A5}{$t_i$}\hskip1ex \rnode{A6}{$t_m$}}. -\!a = {arrestati$_i$}@A1 . -\!b = {alcuni uomini$_m$}@A4 . -\psset{arrows=->} -\nccurve[angleA=225,angleB=-45]{A2}{A1} -\nccurve[angleA=200,angleB=-90,ncurv=1.5]{A3}{A2} -\nccurve[angleA=-130,angleB=-70]{A5}{A3} -\nccurve[angleA=-130,angleB=-70,linestyle=dashed]{A6}{A4} -\endjtree -\xe - -\ex % Uriagereka -\jtree[xunit=1.8em,yunit=.9em] -\def\*{\xleaders\hbox{\kern1pt.\kern1pt}\hfil}% -\deftriangle(1.3)(1)(-1/2) -\! = {F$'$} - {F}!a - ^{\hbox to 2em{\*}}{$\rm Agr_O P$} - {DP\rlap{\rnode{B2}{$\;\equiv\;$}\it me}}@B1 - ^{$\rm Agr_O P$} - ^{$\rm {Agr_O}'$} - {$\rm Agr_O$}!b ^{AsP} - {\triline - {\* \rnode[b]{D1}{t} \* DP \* \rnode[b]{D2}{t} \*}} - [scaleby=.8 1.3]{\triline{\* \rnode[b]{E1}{\it a} \*}}. -\!a = :{F}!a1 @A1 . -\!a1 = :{F}!a2 @A2 . -\!a2 = :{V}@A3 {F}. -\psset{scaleby=.5 1} -\!b = :{V}@C1 {$\emptyset$}. -\psset{arrows=->} -\ncarc[arcangle=50]{C1}{A3} -\ncarc[arcangle=50]{B1}{A2:t} -\ncarc[arcangle=50]{D1}{C1} -\nccurve[angleA=-75,angleB=-90,ncurv=1.2,nodesepB=1ex]{D2}{B2} -\nccurve[angleA=-145,angleB=-100,ncurv=1]{E1}{A1:t} -\endjtree -\xe - -\ex % Richards -\jtree[xunit=1.5em,yunit=1.1em,labelgap=0] -\def\A#1{\pnode(0,.3){A#1}}% -\def\B#1{\pnode(0,-.3){B#1}}% -\! = :{car} {\omit\A1} - :({\omit\A0}{Op}) - :{that} - :{I} - :{T} - :{know} {\omit\B1} - :({\omit\B0}{who}) - :{C} - :{Pro} - :{to}() \jtjot - :{persuade}() \jtjot - :{V} {\omit\A2} - :\jtlong{\omit\A4}!a - :{Pro} - :{to} - :{talk} {\omit\B2} - :\jtlong{\omit\B3}!b - :{V} - :{about}() {\omit\A3}{\it t}. -\!a = :{owners}() \jtjot - :{of} {\omit\A5}{\it t}. -\!b = :{to} {\omit\B4}{\it t}. -\psset{linestyle=dashed,linewidth=.3ex,linecolor=blue,nodesep=0} -\def\fudge{.5}% -\ncline[nodesepA=-\fudge]{A0}{A1} -\ncline[nodesepB=-\fudge]{A1}{A3} -\ncline{A2}{A4} -\ncline[nodesepB=-\fudge]{A4}{A5} -\psset{linestyle=dotted,linewidth=.5ex,linecolor=red} -\ncline[nodesepA=\fudge]{B0}{B1} -\ncline{B1}{B2} -\ncline{B2}{B3} -\ncline[nodesepB=\fudge]{B3}{B4} -\endjtree -\xe - -\ex % Zubizaretta -\jtree[xunit=2.5em,yunit=2em] -\def\ovalstuff{\vtop{\hbox{arg$^3$}% - \hbox to 4em{(\thinspace \leaders\hrule\hfil\ NP)}}}% -\! = {V}@B1 - {face}({arg$^1$}@B2 ) - ^{$\rm [_V\,$leggere]}({arg$^2$,}) - ^[scaleby=3 1,branch=\blank] - {}{\ovalnode[framesep=1ex,boxsep=false]{K}{\ovalstuff}}. -\psset{arrows=->,nodesepA=0} -\nccurve[angleA=150,angleB=180,ncurv=1.2]{B2}{B1} -\nccurve[angleA=90,angleB=0,ncurv=.8]{K}{B1} -\endjtree -\xe - -\begingroup % Koopman - -\def\scaleA{[scaleby=1.6 1]}% -\def\scaleB{[scaleby=.6 1,doubleline=true,doublesep=.1ex]}% -\def\mkovalnode{\rput(-1ex,-.8) - {\ovalnode[framesep=\psxunit]{K}{\hskip2em}}}% - -\ex -\jtree[xunit=3em,yunit=1.5em] -\def\scaleA{[scaleby=1.6 1]}% -\def\scaleB{[scaleby=.6 1,doubleline=true,doublesep=.1ex]}% -\def\mkovalnode{\rput(-1ex,-.8) - {\ovalnode[framesep=\psxunit]{K}{\hskip2em}}}% -\! = {$\rm Agr'$} - :\scaleA{Agr}!a \scaleA{\bf VP} - [linestyle=dashed,linewidth=1pt]{\bf V} - :{${\rm [_V\,e]}_i$}@A1 {T}. -\!a = :{V$_i$}!b {Agr} - {[e]$_j$}@A2 . -\!b = {\omit\mkovalnode} - :\scaleB{${\rm [_{Agr}\,Agr]}_j$}@A3 \scaleB{$\rm [_T\,T]$}. -\psset{angleA=-90,angleB=-45,arrows=->} -\nccurve[nodesepB=0]{A1}{K} -\nccurve[ncurv=1.3]{A2}{A3} -\endjtree -\xe -\vskip2em - -\ex -\jtree[xunit=4.8em,yunit=2em] -\def\mkovalnode{\rput(-1ex,-.8){\ovalnode[framesep=\psxunit]{K} - {\hskip2em}}}% -\! = {$\rm Agr'$} - :\scaleA{Agr}!a \scaleA{\bf VP} - [linestyle=dashed,linewidth=1pt]{\bf V} - :{${\rm [_V\,e]}_i$}@A1 {T}. -\!a = :{V$_i$}!b {Agr} - {[e]$_j$}@A2 . -\!b = {\omit\mkovalnode} - :\scaleB{${\rm [_{Agr}\,Agr]}_j$}@A3 \scaleB{$\rm [_T\,T]$}. -\psset{angleA=-90,angleB=-45,arrows=->} -\nccurve[nodesepB=0]{A1}{K} -\nccurve[ncurv=1.3]{A2}{A3} -\endjtree -\xe -\vskip5em - -\ex \small -\jtree[xunit=2.6em,yunit=1em] -\def\mkovalnode{\rput(-1ex,-.8){\ovalnode[framesep=\psxunit]{K} - {\hskip2em}}}% -\! = {$\rm Agr'$} - :\scaleA{Agr}!a \scaleA{\bf VP} - [linestyle=dashed,linewidth=1pt]{\bf V} - :{${\rm [_V\,e]}_i$}@A1 {T}. -\!a = :{V$_i$}!b {Agr} - {[e]$_j$}@A2 . -\!b = {\omit\mkovalnode} - :\scaleB{${\rm [_{Agr}\,Agr]}_j$}@A3 \scaleB{$\rm [_T\,T]$}. -\psset{angleA=-90,angleB=-45,arrows=->} -\nccurve[nodesepB=0]{A1}{K} -\nccurve[ncurv=1.3]{A2}{A3} -\endjtree -\xe -\vskip2em - -\endgroup % Koopman - -\ex % McCawley -\jtree[xunit=2.45em,yunit=1.4em,dirA=(1:-1),nodesep=0] -\def\\{[labelgapb=-4pt]}% -\def\V{$\rm \overline V$}% -\! = {S} - {S}!a ^{and} ^{S} - :({NP}{Fred}) {\V} - :({V}\\{knows}) {NP} - {a man} ^ - [scaleby=3.5 1,branch=\blank]{NP}@A3 !b ^{S} - :({NP}{who}) {\V}@A2 - ({V}\\{repairs}). -\!a = :({NP}{John}) {\V}@A1 - {V}\\{sells}. -\!b = {washing machines}. -\nccurve[angleB=150,ncurvB=1.4]{A2:b}{A3:t} -\nccurve[angleB=135,ncurvA=.5,ncurvB=2.6]{A1:b}{A3:t} -\endjtree -\xe - -\vfil\break - -\ex % Frampton, verb raising -\def\\#1\par{\bigskip #1\par\nobreak\vskip1.5em \hfil} -\def\Vj{V$\mskip-5mu _j$} -\psset{xunit=3.5em,yunit=1.5em,treevshift=1.3em} -\hfil Theories of verb raising -\medskip -\leftskip=2em - -\\Trace theory - -\jtree[scaleby=.8] -\! = :{Agr} :{Tns} :{V}() \etc. -\endjtree -\quad $\longrightarrow$\quad -\jtree -\! = :{Agr} !a - :{$t_i$} - :{$t_j$}() \etc. -\psset{scaleby=.3 .4} -\!a = :{Agr} {Tns$_i$} - :{Tns} {\Vj}. -\endjtree - -\\Copy theory - -\jtree[scaleby=.8] -\! = :{Agr} :{Tns} :{V}() \etc. -\endjtree -\quad $\longrightarrow$\quad -\jtree -\! = :{Agr}!a [scaleby=1.45] - :{Tns$_i$}!b - :{\Vj}() \etc. -\psset{scaleby=.3 .4} -\!a = :{Agr} {Tns$_i$} - :{Tns} {\Vj}. -\!b = :{Tns} {\Vj}. -\endjtree - -\\Shared structure - -\jtree[scaleby=.8] -\! = :{Agr} :{Tns} :{V}() \etc. -\endjtree -\quad $\longrightarrow$\quad -\jtree -\! = :{Agr}@A1 !a - :{Tns}@A2 !b - :{V}@A3 \etc. -\psset{scaleby=.3 .4,angleA=-35,angleB=125,ncurv=1.5,nodesep=0} -\!a = {Agr}. -\!b = {Tns}. -\nccurve{->}{A1:b}{A2:t} -\nccurve{->}{A2:b}{A3:t} -\endjtree -\xe - -\ex % Frampton, Bulgarian -\kern2em -\jtree[xunit=2.4em,yunit=1.2em,style=arrows2,nodesep=0] -\def\broken{[branch=\brokenbranch,scaleby=1.6]}% -\def\stub{[scaleby=.5,arrows=-]}% -\def\\#1{\rput[bl](.6ex,.4ex){\it #1}}% -\! = {\omit\\a}@A1 - \stub @K1 ^{\omit\\b} - :{C$_2$}() \broken @A2 - \stub @K2 ^@A3 - \stub @K3 ^ - :{C$_1$}() \broken - :{ubil} {\omit\\c}@A4 - :{kolko} {\omit\\d} - :{studenti} {\omit\\e}@A5 - :{ot} :{koi} {strani}. -\psset{dirA=(1:1),angleB=90,ncurvA=.6,ncurvB=1} -\nccurve{K1}{A5} -\nccurve{-}{K2}{A5} -\nccurve{K3}{A4} -\psset{dirA=(-1:-1),dirB=(-1:-1),ncurv=4,arrows=-} -\nccurve{A1}{K1} -\nccurve{A2}{K2} -\nccurve{A3}{K3} -\endjtree -\xe - -\ex % Wilder, right node raising -\jtree[dirA=(1:-1),nodesepA=0,nodesepB=.8ex, - xunit=2.2em,yunit=1em,style=arrows2] -\! = :!a {\rnode{K1}{knew}}. -\!a = :!b {\rnode{O1}{owned}}. -\!b = :!c {\rnode{C1}{cats}}. -\!c = - :\jtlong !d [scaleby=1.8] - :{and}() [scaleby=2.4] - :{he}() @K2 - \jtjot !e . -\!d = - :{she}() @K3 - \jtjot !f . -\!e = - :{a woman}[labeloffset=-1ex] - :{who}() @O2 - @C2 - {four}. -\!f = - :{a man} - :{who}() @O3 - @C3 - {three}. -\psset{linestyle=dashed,arrows=<-} -\nccurve[angleB=-10,ncurvB=2,ncurvA=1.2]{O2}{O1} -\nccurve[angleB=-90,ncurvA=1.4]{O3}{O1} -\nccurve[angleB=-10,ncurvB=1.8,ncurvA=1.6]{K2}{K1} -\nccurve[angleB=-90,ncurvA=1.4]{K3}{K1} -\nccurve[angleB=-90,ncurvA=1.4]{C3}{C1} -\nccurve[angleB=-10,ncurvB=1.8,ncurvA=1.6]{C2}{C1} -\endjtree -\xe - -\ex % Frampton, bilinks -\def\bilink(#1,#2)(#3,#4){% - \pcarc(#1,#2)(#3,#4)% - \pcarc[linestyle=dashed](#3,#4)(#1,#2)% -}% -\kern5em -\jtree[xunit=3em,yunit=1.8em,style=arrows2, - dirA=(-1:-1),branch=\bilink,nodesep=3pt, - arcangle=10,offset=1pt,labelgapt=!3pt] -\def\@{\pscircle(0,0){3pt}}% -\! = - {\pnode{A1}\@} - {\omit\@\pnode(.8,-.8){A3}} - :({\omit\@}{C}) [scaleby=1.6,arcangle=7]{\omit\@} - :({\omit\@}{see}) - ({\omit\@\pnode{A2}}{who}[labeloffset=.8em]). -\nccurve[angleB=225,ncurvA=1.95,ncurvB=1,offset=1.6pt]{A1}{A2} -\nccurve[angleB=227,ncurvA=2,ncurvB=1.02,offset=-1.6pt, - linestyle=dashed,arrows=<-]{A1}{A2} -\rput(1.8,-1.8){\pscircle*[linecolor=white]{1em}}% -\rput(1.8,-1.8){\dots} -\endjtree -\xe - -\end{document} - diff --git a/Master/texmf-dist/tex/generic/pst-jtree/pst-jtree.tex b/Master/texmf-dist/tex/generic/pst-jtree/pst-jtree.tex index 0bbd8d0ea1e..898a84f50cc 100644 --- a/Master/texmf-dist/tex/generic/pst-jtree/pst-jtree.tex +++ b/Master/texmf-dist/tex/generic/pst-jtree/pst-jtree.tex @@ -1,21 +1,58 @@ +% Author: John Frampton, j.frampton@neu.edu +% % Users should feel free to modify this file in any way they % see fit. If these modification go beyond your personal % use, please send me a careful description of the % modifications that have been made and the reasons that % they were made. -\def\fileversion{2.5} -\def\filedate{2010/02/22} -\message{ v\fileversion, \filedate} - +% +% Please NOTIFY ME about bugs and incompatibilities. +% +\def\fileversion{2.6} +\def\filedate{2010/12/17} +\message{`PST-jTree' v\fileversion\space\space <\filedate> (jf)} +% \csname JTreeLoaded\endcsname \let\JTreeLoaded\endinput \ifx\PSTricksLoaded\endinput \else \input pstricks \fi\relax \ifx\PSTnodesLoaded\endinput \else \input pst-node \fi\relax \ifx\PSTXKeyLoaded\endinput \else \input pst-xkey \fi\relax -\edef\TheAtCode{\the\catcode`\@} - -\catcode`@=12 \let\OtherAt=@ +% +% commands for manipulating character codes +\begingroup \catcode`@=11 +\gdef\jStoreCat#1{% + \expandafter\edef\csname @OldCat\string#1\endcsname + {\noexpand\catcode\noexpand`\noexpand#1=\the\catcode`#1}% +} +\gdef\jRestoreCat#1{\edef\tempa{@OldCat\string#1}% + \expandafter\csname\tempa\endcsname \ignorespaces} +\catcode`@=12 +\global\let\OtherAt=@ +\endgroup +\def\jTempChangeCat#1#2{\jStoreCat#1\catcode`#1=#2\ignorespaces} +\jTempChangeCat @{11} +\def\j@StoreCats#1{% + \XKV@for@n{#1}\@char{\expandafter\jStoreCat\@char}% +} +\def\j@ChangeCat#1#2{\catcode`#1=#2} +\def\j@MakeAllOther#1{% + \XKV@for@n{#1}\@char{\expandafter\j@ChangeCat\@char{12}}% +} +\def\j@TempMakeAllOther#1{% + \XKV@for@n{#1}\@char{\expandafter\jTempChangeCat\@char{12}}% + \ignorespaces +} +\def\j@RestoreCats#1{% + \XKV@for@n{#1}\@char{\expandafter\jRestoreCat\@char}% + \ignorespaces +} +\def\tempjtree@cats{\jTempChangeCat ^{7}\j@TempMakeAllOther{",>,<}} +\def\jtree@cats{\catcode`^=7 \j@MakeAllOther{",>,<}} +\def\unjtree@cats{\j@RestoreCats{^,",>,<}} +\tempjtree@cats +% +% register resources \newdimen\@xpos \newdimen\@ypos \newdimen\@@xpos @@ -33,9 +70,44 @@ \newtoks\jtEverytree \newtoks\jteverytree \newtoks\jteverylabel -\newif\if@omit \newcount\@CurrState -%%% +% +\newif\if@omit +% +% from eplain - \@futurenonspacelet, \@getoptionalarg +\def\@futurenonspacelet#1{\def\cs{#1}% + \afterassignment\@stepone\let\@nexttoken= +} +\begingroup +\def\\{\global\let\@stoken= }% +\\ % +\endgroup +\def\@stepone{\expandafter\futurelet\cs\@steptwo}% +\def\@steptwo{\expandafter\ifx\cs\@stoken\let\@@next=\@stepthree + \else\let\@@next=\@nexttoken\fi \@@next}% +\def\@stepthree{\afterassignment\@stepone\let\@@next= }% +\def\@getoptionalarg#1{% + \let\@optionaltemp = #1% + \let\@optionalnext = \relax + \@futurenonspacelet\@optionalnext\@bracketcheck +} +\def\@bracketcheck{% + \ifx [\@optionalnext + \expandafter\@@getoptionalarg + \else + \let\@optionalarg = \empty + \expandafter\@optionaltemp + \fi +} +\def\@@getoptionalarg[#1]{% + \def\@optionalarg{#1}% + \@optionaltemp +} +% end eplain utilities +\def\psset@optionalarg{% + \ifx\@optionalarg\empty \else + \expandafter\psset\expandafter{\@optionalarg}\fi +} \def\jt@xovery#1#2{% \jt@ytox@a#1//\@nil#2\ignorespaces} \def\jt@ytox@a#1/#2/#3\@nil#4{% @@ -44,18 +116,9 @@ \pst@dimc=\@denom pt \pst@dimd=#1pt \pst@dimd=-\pst@dimd \pst@divide\pst@dimc\pst@dimd#4} %%% -\def\Expandafter#1#2{\expandafter\expandafter\expandafter#1#2} +\def\expandaftertwice{\expandafter\expandafter\expandafter} \def\@empty{} \def\@nullbox{\omit} -\begingroup -\def\:{\jf@gobblespace} \expandafter\gdef\: {} -\endgroup -%%% this is also in @lingbasics -\def\ling@getpars#1{% - \def\k@@p{#1}\@ifnextchar[\ling@getparsA\ling@getparsB} -\def\ling@getparsA[#1]{\def\pst@pars{#1}\k@@p} -\def\ling@getparsB{\let\pst@pars\@empty \k@@p} -%%% \def\psinterpolate(#1)(#2)#3#4{{\SpecialCoor \pst@getcoor{#1}\pst@tempa% \pst@getcoor{#2}\pst@tempb% @@ -68,7 +131,6 @@ /dy YB YA sub def dx #3\space mul XA add dy #3\space mul YA add){#4} }\ignorespaces} - %% PSTricks parameters %% % labelgap,labelgapt,labelgapb,everytree,everylabel,branch,triratio @@ -80,29 +142,23 @@ \else \pssetlength\pst@dima{#2#3}\fi } \pst@addfams{jtree} -\define@key[psset]{jtree}{labelgapt}% - {\jtreevalue{labelgapt}#1\@nil - \edef\jt@labelgapt{\the\pst@dima}} -\define@key[psset]{jtree}{labelgapb} - {\jtreevalue{labelgapb}#1\@nil - \edef\jt@labelgapb{\the\pst@dima}} +\def\define@inckey#1{% incremental key + \define@key[psset]{jtree}{#1}% + {\jtreevalue{#1}##1\@nil + \expandafter\edef\csname jt@#1\endcsname{\the\pst@dima}}% +} +\def\defin@inckeys#1{\XKV@for@n{#1}\@parname{% + \expandafter\define@inckey\expandafter{\@parname}% +}} +\defin@inckeys{labelgapt,labelgapb,labeloffset,% + labelstrutt,labelstrutb,baretopadjust} \define@key[psset]{jtree}{labelgap} {\psset{labelgapt=#1,labelgapb=#1}} -\define@key[psset]{jtree}{labeloffset}{% - \jtreevalue{labeloffset}#1\@nil - \edef\jt@labeloffset{\the\pst@dima}} -\define@key[psset]{jtree}{labelstrutt}{% - \jtreevalue{labelstrutt}#1\@nil - \edef\jt@labelstrutt{\the\pst@dima}} -\define@key[psset]{jtree}{labelstrutb}{% - \jtreevalue{labelstrutb}#1\@nil - \edef\jt@labelstrutb{\the\pst@dima}} \define@key[psset]{jtree}{everylabel}{\jteverylabel={#1}} \define@key[psset]{jtree}{everytree}{\jteverytree={#1}} +% 12/29/09 parameter eval added +\define@key[psset]{jtree}{eval}{#1} \define@key[psset]{jtree}{triratio}{\edef\jt@triratio{#1}} -\define@key[psset]{jtree}{baretopadjust}{% - \jtreevalue{baretopadjust}#1\@nil - \edef\jt@baretopadjust{\the\pst@dima}} \define@key[psset]{jtree}{treevshift}{% \jtreevalue{labelgapt}#1\@nil \edef\jt@treevshift{\the\pst@dima}} @@ -131,7 +187,7 @@ % syntax: \psset{dirA=(1:1)} (note :) sets angleA to point in % the (1,1) direction % end new parameter - +% \def\jt@maxafter{\xdef\jt@@maxafter{% \noexpand\max@left=\the\max@left \noexpand\max@right=\the\max@right @@ -145,17 +201,22 @@ \noexpand\@@xpos=\the\@@xpos \noexpand\@@ypos=\the\@@ypos}% \aftergroup\vartri@@after} -%%%%%%%%%%%%%%%%%%%%%% -%%%%% leaf definitions -\def\defbranch{\ling@getpars\defbranch@a} +% +% leaf definitions +\def\defenter{\j@TempMakeAllOther{>,<}\@getoptionalarg} +\def\defreturn{\j@RestoreCats{>,<}} +% +\def\defbranch{\defenter\defbranch@a} \def\defbranch@a<#1>#2(#3)#4(#5){% \jt@xovery{#5}\temp - \Expandafter\edef\@nameuse{leaf@#1}% + \expandaftertwice\edef\@nameuse{leaf@#1}% {\noexpand\def\noexpand\@leaf{% - \noexpand\@@branch{\pst@pars}{#3}{\temp}}% - }\ignorespaces} + \noexpand\@@branch{\@optionalarg}{#3}{\temp}}}% + \defreturn + \ignorespaces +} \def\@@branch#1#2#3{\@@xpos=\@xpos \@@ypos=\@ypos - {\psset{#1}\expandafter\psset\expandafter{\pst@pars}% + {\psset{#1}\psset@optionalarg \pssetylength\pst@dimd{#2} \pst@dimc=#3\pst@dimd \pst@divide\psxunit\psyunit\temp @@ -171,16 +232,18 @@ \ifdim\@ypos < \max@down \max@down=\@ypos \fi \jt@maxafter}% } -\def\deftriangle{\ling@getpars\deftriangle@a} +\def\deftriangle{\defenter\deftriangle@a} \def\deftriangle@a#1<#2>#3(#4)#5(#6)#7(#8){% \jt@xovery{#6}\tempA \jt@xovery{#8}\tempB - \Expandafter\edef\@nameuse{leaf@#2}% + \expandaftertwice\edef\@nameuse{leaf@#2}% {\noexpand\def\noexpand\@leaf{% - \noexpand\@@triangle{\pst@pars}{#4}{\tempA}{\tempB}}}% + \noexpand\@@triangle{\@optionalarg}{#4}{\tempA}{\tempB}}}% + \defreturn + \ignorespaces } \def\@@triangle#1#2#3#4{\@@xpos=\@xpos \@@ypos=\@ypos - {\psset{#1}\expandafter\psset\expandafter{\pst@pars} + {\psset{#1}\psset@optionalarg \jt@dima=\@xpos \jt@dimb=\@ypos \pssetylength\jt@dimc{#2} \jt@dimd=#3\jt@dimc @@ -206,17 +269,19 @@ \jt@positionafter}% \edef\triwd{\temp}% } -\def\defvartriangle{\ling@getpars\defvartriangle@a} +\def\defvartriangle{\defenter\defvartriangle@a} \def\defvartriangle@a#1<#2>#3(#4){% - \Expandafter\edef\@nameuse{leaf@#2}% + \expandaftertwice\edef\@nameuse{leaf@#2}% {\noexpand\@CurrState=\State@vartri \noexpand\def\noexpand\@leaf{% - \noexpand\@@vartriangle{\pst@pars}{#4}}}% + \noexpand\@@vartriangle{\@optionalarg}{#4}}}% + \defreturn + \ignorespaces } \def\@@vartriangle#1#2{\@@xpos=\@xpos \@@ypos=\@ypos {\expandafter\psset\expandafter{\jf@@pars}% \edef\@vartriratio{\jt@triratio}% - \psset{#1}\expandafter\psset\expandafter{\pst@pars}% + \psset{#1}\psset@optionalarg \pssetylength\jt@dimc{#2} \jt@dimc=\jt@scaleyby\jt@dimc \advance\@ypos by -\jt@dimc @@ -276,22 +341,14 @@ \def\@ifCurrState#1{\ifnum\@CurrState=#1} \def\start{\xdef\@topadjust{\jt@baretopadjust}\@CurrState=\State@root \jtp@parse } -% 23 June 05 removed \expandafter - - -%%% utility used extensive by the parser -%%% removes following space token and expands the token -%%% which follows -\def\@preparenext#1{\def\@@hold{#1}\@pn@} -\def\@pn@{\futurelet\temp\@pn@a} -\def\@pn@a{\ifx\temp\@sptoken \let\next\@pn@b - \else \let\next\@pn@c \fi \next} -\def\@pn@b{\expandafter\@pn@c\jf@gobblespace} -\def\@pn@c{\futurelet\temp\@pn@d} -\def\@pn@d{\ifcat\noexpand\temp\noexpand\relax - \let\next\@pn@e \else \let\next\@@hold \fi \next} -\def\@pn@e{\expandafter\@@hold} -%%% main parser +% +% \@preparenext is used extensive by the parser. It removes a +% following space token and expands the token which follows. +\def\@preparenext#1{% + \def\@@hold{\expandafter #1}% + \@futurenonspacelet\temp\@@hold % \temp is a dummy +} +%%%% main parser \def\jtp@parse{\@preparenext\jtp@parseA} \def\jtp@parseA{\futurelet\temp\jtp@parseD} \def\jtp@parseD{% @@ -301,7 +358,6 @@ \ifx\temp:\let\next\jtp@colon \else \ifx\temp!\let\next\jtp@insertlabel \else \ifx\temp\OtherAt \let\next\jtp@insertlabel \else -% \ifx\temp;\let\next\jtp@semicolon \else \ifx\temp(\let\next\jtp@lparen \else \ifx\temp)\let\next\jtp@rparen \else \ifx\temp.\let\next\jtp@exit \else @@ -316,19 +372,22 @@ \def\jtp@TestForOmitA{\global\@omittrue \ifx\temp\omit \let\next\@gobble \else \ifx\temp\pnode \let\next\relax - \else \global\@omitfalse - \def\next{\the\jteverylabel}\fi\fi \next + \else \ifx\temp\elc \let\next\relax + \else \global\@omitfalse + \def\next{\the\jteverylabel}\fi\fi\fi \next } %% -\def\jtp@label#1{\def\@stuff{#1}\@preparenext\jtp@labelA} -\def\jtp@labelA{\expandafter\ling@getpars\expandafter\jtp@labelB} +\def\jtp@label{\unjtree@cats\jtp@label@} +\def\jtp@label@#1{\def\@stuff{#1}\jtree@cats\@preparenext\jtp@labelA} +%\def\jtp@label#1{\def\@stuff{#1}\@preparenext\jtp@labelA} +\def\jtp@labelA{\expandafter\@getoptionalarg\expandafter\jtp@labelB} \def\jtp@labelB{\@preparenext\jtp@labelC} \def\jtp@labelC{\@ifnextchar \OtherAt \jtp@labelD{\def\@explabel{}\jtp@labelE}} \def\testlabel#1.#2\@nil{\def\temp{#2}\ifx\temp\@empty \else \jtp@err{SPACE MUST FOLLOW @TAG OR !TAG}\fi} \def\jtp@labelD#1#2 {\def\@explabel{#2}\testlabel#2.\@nil\jtp@labelE} -\def\jtp@labelE{\bgroup\expandafter\psset\expandafter{\pst@pars}% +\def\jtp@labelE{\bgroup\psset@optionalarg \setbox\@nodebox\hbox{\expandafter\jtp@TestForOmit\@stuff}% \@ifCurrState\State@vartri \@leaf \fi \jt@setnode\vartri@after\jt@positionafter\egroup @@ -336,13 +395,11 @@ \@ifnextchar !\jtp@labelF\jtp@labelG} \def\jtp@labelF #1 {% \testlabel#1.\@nil - \Expandafter\xdef\@nameuse{coords@#1}{% + \expandaftertwice\xdef\@nameuse{coords@#1}{% \noexpand\@xpos=\the\@xpos\noexpand\@ypos=\the\@ypos}% \jtp@labelH } \def\jtp@labelG{\@ifnextchar (\jtp@lparen\jtp@labelH} -%\def\jtp@labelH{% -% \@ifnextchar;{\expandafter\jtp@labelHa\@gobble}\jtp@labelHa} \def\jtp@labelH{% \@ifCurrState\State@colonB \jt@maxafter\egroup \@CurrState=\State@normal @@ -355,36 +412,70 @@ %%%% branches \def\colon@error{\jtp@err{(pars) + target should follow : operator}} \def\jtp@branch<#1>{% - \ifnum\@CurrState=\State@root \@CurrState=\State@normal - \else\ifnum\@CurrState=\State@colonA \@CurrState=\State@colonB - \else\ifnum\@CurrState=\State@colonB \colon@error \fi\fi\fi - \Expandafter\ifx\@nameuse{leaf@#1}\relax - \jtp@err{unknown branch, <#1>}\fi - \@nameuse{leaf@#1}\@preparenext\jtp@branchA} -\def\jtp@branchA{\expandafter\ling@getpars\expandafter\jtp@branchB} + \ifnum\@CurrState=\State@root + \@CurrState=\State@normal + \else + \ifnum\@CurrState=\State@colonA + \@CurrState=\State@colonB + \else + \ifnum\@CurrState=\State@colonB + \colon@error + \fi + \fi + \fi + \expandaftertwice\ifx\@nameuse{leaf@#1}\relax + \jtp@err{unknown branch, <#1>}% + \fi + \@nameuse{leaf@#1}% + \@preparenext + \jtp@branchA +} +\def\jtp@branchA{\expandafter\@getoptionalarg\expandafter\jtp@branchB} \def\jtp@branchB{% - \@ifCurrState\State@vartri \edef\jf@@pars{\pst@pars}% - \let\next\jtp@varbranch\else - \let\next\jtp@mkbranch\fi \next} + \@ifCurrState\State@vartri + \edef\jf@@pars{\@optionalarg}% + \let\next\jtp@varbranch + \else + \let\next\jtp@mkbranch + \fi + \next +} \def\jtp@mkbranch{\@leaf\jtp@parse} \def\jtp@varbranch{\@preparenext\jtp@varbranchA} \def\jtp@varbranchA{\@ifnextchar\bgroup \jtp@label {\jtp@err{vartriangle (pars) should be followed by a label}% \fi \next}} %%% the rest -\def\jtp@colon#1{\ifnum\@CurrState<\State@colonB +\def\jtp@colon#1{% + \ifnum\@CurrState<\State@colonB \else \colon@error \fi - \bgroup \@CurrState=\State@colonA - \jtp@parse } -%\def\jtp@semicolon#1{\jtp@parse ()} -\def\jtp@lparen#1{\@ifCurrState\State@root - \global\@CurrState=\State@normal \gdef\@topadjust{0pt}% - \fi \bgroup \@CurrState=\State@normal \jtp@parse} -\def\jtp@rparen#1{\jt@maxafter\egroup + \bgroup + \@CurrState=\State@colonA + \jtp@parse % +} +\def\jtp@lparen#1{% + \@ifCurrState\State@root + \global\@CurrState=\State@normal + \gdef\@topadjust{0pt}% + \fi + \bgroup + \@CurrState=\State@normal + \jtp@parse +} +\def\jtp@rparen#1{% + \jt@maxafter\egroup \@ifCurrState\State@colonB - \def\next{\jt@maxafter\egroup\@CurrState=\State@normal - \jtp@parse }\else - \def\next{\jtp@parse}\fi \next } + \def\next{% + \jt@maxafter + \egroup + \@CurrState=\State@normal + \jtp@parse % + }% + \else + \def\next{\jtp@parse}% + \fi + \next +} \def\jtp@exit#1{\ignorespaces} \def\jtp@insertlabel{\jtp@parse{\omit}} \def\jtp@HatOp#1{\@ifCurrState\State@normal \else @@ -393,97 +484,138 @@ \def\jtp@evalnext#1#2{\ifnum\@CurrState>1 \jtp@err{misplaced " evaluation}\fi #2\jtp@parse} %%% end of parser - -\def\adjoin at #1 {\Expandafter\ifx\@nameuse{coords@#1}\relax - \writeln{* * coords@#1 unknown * *}\let\next\more@gobble\else - \@nameuse{coords@#1}\let\next\jtp@parse \fi \next} +% +\def\adjoin at #1 {% + \expandaftertwice\ifx\@nameuse{coords@#1}\relax + \writeln{* * coords@#1 unknown * *}% + \let\next\more@gobble + \else + \@nameuse{coords@#1}% + \let\next\jtp@parse + \fi + \next +} \def\more@gobble#1.{\ignorespaces} -\def\adjoinop#1 ={\@ifCurrState\State@root - \xdef\@topadjust{\jt@baretopadjust}\fi - \adjoin at !#1 } - -\def\jtree{\ling@getpars\jtree@a} +\def\adjoinop#1 ={% + \@ifCurrState\State@root + \xdef\@topadjust{\jt@baretopadjust}\fi + \adjoin at !#1 +} +\def\jtree{\@getoptionalarg\jtree@a} \def\jtree@a{\leavevmode \setbox\tree@box\hbox\bgroup - \Expandafter\def\@nameuse{coords@!}{\@xpos=0pt \@ypos=0pt}% + \tempjtree@cats + \expandaftertwice\def\@nameuse{coords@!}{\@xpos=0pt \@ypos=0pt}% \ifjt@normallabelstrut \NormalLabelStrut \fi \the\jtEverytree \the\jteverytree - \expandafter\psset\expandafter{\pst@pars}% + \psset@optionalarg \@CurrState=\State@root \def\@topadjust{\jt@baretopadjust}% \@xpos=0pt \@ypos=0pt \max@left=\maxdimen \max@right=-\maxdimen \max@down=0pt \ignorespaces } -\def\jt@topadjustafter{\pssetlength\jt@dime\@topadjust +\define@key[psset]{jtree}{bbadjust}{\@bbadjust#1 \@nil} +\def\@bbadjust{\futurelet\temp\@@bbadjust} +\def\@@bbadjust{\ifx\temp\@nil \let\next\@gobble + \else \let\next\@@@bbadjust \fi \next} +\def\@@@bbadjust #1 #2 {% + \expandafter\def\csname jt@bb#1adjust\endcsname{#2}% + \@bbadjust +} +\psset{bbadjust=height 0pt depth 0pt left 0pt right 0pt} +\def\jt@afterpic{% + \pssetlength\jt@dime\@topadjust \psaddtolength\jt@dime\jt@treevshift - \xdef\jt@@topadjustafter - {\noexpand\def\noexpand\@topadjust{\the\jt@dime}}% - \aftergroup\jt@@topadjustafter + \xdef\jt@@afterpic + {% + \noexpand\def\noexpand\@topadjust{\the\jt@dime}% + \noexpand\edef\noexpand\@extraht{\jt@bbheightadjust}% + \noexpand\edef\noexpand\@extraleft{\jt@bbleftadjust}% + \noexpand\edef\noexpand\@extraright{\jt@bbrightadjust}% + }% + \aftergroup\jt@@afterpic } -\def\endjtree{\jt@maxafter\jt@topadjustafter\egroup +\def\endjtree{% + \advance\max@down by -\jt@bbdepthadjust + \jt@afterpic\jt@maxafter\egroup + \advance\max@left by -\@extraleft + \advance\max@right by \@extraright \dp\tree@box=-\max@down - \kern-\max@left - \raise\@topadjust - \box\tree@box\kern\max@right + \vbox{% + \kern\@extraht + \hbox{\kern-\max@left + \raise\@topadjust \box\tree@box + \kern\max@right}% + }% } - -%%%% -%% alternates to \psline for drawing branches +% alternates to \psline for drawing branches \let\branch@type=\psline \def\blank(#1)(#2){\ignorespaces} % branch with centered elision -\def\brokenbranch(#1,#2)(#3,#4){{\psline(#1,#2)(#3,#4) - \dimpuba=#1\dimpubb=#2\dimpubc=#3\dimpubd=#4% - \dimpuba=.5\dimpuba \advance\dimpuba by .5\dimpubc - \dimpubb=.5\dimpubb \advance\dimpubb by .5\dimpubd - \rput(\dimpuba,\dimpubb){\pscirclebox*{\vrule - height3pt width0pt\dots}}}\ignorespaces +\def\brokenbranch(#1,#2)(#3,#4){% + {\psline(#1,#2)(#3,#4) + \jt@dima=#1\jt@dimb=#2\jt@dimc=#3\jt@dimd=#4% + \jt@dima=.5\jt@dima \advance\jt@dima by .5\jt@dimc + \jt@dimb=.5\jt@dimb \advance\jt@dimb by .5\jt@dimd + \rput(\jt@dima,\jt@dimb){\pscirclebox*{\vrule + height3pt width0pt\dots}}}% + \ignorespaces } % \etc branches (trail off into ...) \def\psset@etcratio#1{\edef\jt@etcratio{#1}} % determines the proportion of the branch devoted to ... \newpsstyle{etc}{nodesepB=0,nodesepA=1pt,linestyle=dotted, linewidth=1.2pt,dotsep=2pt} -\def\etcbranch(#1,#2)(#3,#4){{\dimpuba=#1\dimpubb=#3% - \dimpubc=\dimpubb - \advance\dimpubc by \jt@etcratio\dimpuba - \advance\dimpubc by -\jt@etcratio\dimpubb - \dimpuba=#2\dimpubb=#4% - \dimpubd=\dimpubb - \advance\dimpubd by \jt@etcratio\dimpuba - \advance\dimpubd by -\jt@etcratio\dimpubb - \psline[arrows=-cc](#1,#2)(\dimpubc,\dimpubd) - \pcline[style=etc](\dimpubc,\dimpubd)(#3,#4)}% +\def\etcbranch(#1,#2)(#3,#4){{\jt@dima=#1\jt@dimb=#3% + \jt@dimc=\jt@dimb + \advance\jt@dimc by \jt@etcratio\jt@dima + \advance\jt@dimc by -\jt@etcratio\jt@dimb + \jt@dima=#2\jt@dimb=#4% + \jt@dimd=\jt@dimb + \advance\jt@dimd by \jt@etcratio\jt@dima + \advance\jt@dimd by -\jt@etcratio\jt@dimb + \psline[arrows=-cc](#1,#2)(\jt@dimc,\jt@dimd) + \pcline[style=etc](\jt@dimc,\jt@dimd)(#3,#4)}% \ignorespaces } \def\etc{[branch=\etcbranch,scaleby=.7]} % the default is that \etc is 70% the length of \rb and 75% of % it is dots % Incremental tree building -\def\stuff{\ling@getpars\stuff@A} -\def\stuff@A{\ifx\pst@pars\@empty no def\else - \Expandafter\ifx\@nameuse{stuff@@\pst@pars}\relax - {\tt [}\expandafter\tt\pst@pars]\else - \@nameuse{stuff@@\pst@pars}\fi\fi +\def\stuff{\@getoptionalarg\stuff@A} +\def\stuff@A{\ifx\@optionalarg\@empty no def\else + \expandaftertwice\ifx\@nameuse{stuff@@\@optionalarg}\relax + {\tt [}\expandafter\tt\@optionalarg]\else + \@nameuse{stuff@@\@optionalarg}\fi\fi } \def\defstuff[#1]#2{% - \Expandafter\def\@nameuse{stuff@@#1}{#2}\ignorespaces} + \expandaftertwice\def\@nameuse{stuff@@#1}{#2}\ignorespaces} % support for multiline labels \def\multiline{\setbox0=\hbox{\strut}\vrule height\ht0 width0pt \xdef\@temp@{\the\dp0}% \vtop\bgroup\let\\=\cr\halign\bgroup \hfil##\hfil\cr} \def\endmultiline{\vrule depth\@temp@ width0pt \crcr\egroup\egroup} - +% \def\triline#1{\hbox to\triwd{#1}} -\catcode`\@=\TheAtCode\relax - +% empty label comment +\defin@inckeys{elcxoffset,elcyoffset} +\define@key[psset]{jtree}{elcref} + {\edef\jt@elcref{#1}} +\psset{elcxoffset=.8ex,elcyoffset=0,elcref=bl} +\def\elc{\@getoptionalarg\@elc} +\def\@elc#1{\psset@optionalarg + \rput[\jt@elcref]% + (\jt@elcxoffset,\jt@elcyoffset){#1}} +% +\unjtree@cats +\jRestoreCat @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% the lines below can be commented out and replaced by -%% personalized settings - +% the lines below can be commented out and replaced by +% personalized settings +% \defbranch(1)(1) \defbranch<4left>(1)(2) \defbranch(2)(1) diff --git a/Master/texmf-dist/tex/latex/pst-jtree/pst-jtree.sty b/Master/texmf-dist/tex/latex/pst-jtree/pst-jtree.sty index bc5a8b11e51..44d3850d83b 100644 --- a/Master/texmf-dist/tex/latex/pst-jtree/pst-jtree.sty +++ b/Master/texmf-dist/tex/latex/pst-jtree/pst-jtree.sty @@ -1,4 +1,3 @@ -\ProvidesPackage{pst-jtree}[2010/02/22 package wrapper for PSTricks - pst-jtree.tex] +\ProvidesPackage{pst-jtree}[2010/12/17 package wrapper for pst-jtree.tex] \input pst-jtree.tex \endinput -- cgit v1.2.3