summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2007-11-18 21:27:39 +0000
committerNorbert Preining <preining@logic.at>2007-11-18 21:27:39 +0000
commit8aedb83df207f78d4395c9ea8758a5d374584894 (patch)
treecb440d2a04c846b056cafea6731ac81ed25c402b /Master/texmf-dist/tex
parent69e371308f9bfe810f2db4680dcd3ce0136e83d9 (diff)
new packge pst-asr (->collection-pstricks)
git-svn-id: svn://tug.org/texlive/trunk@5504 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/generic/pst-asr/pst-asr.tex729
-rw-r--r--Master/texmf-dist/tex/latex/pst-asr/pst-asr.sty5
2 files changed, 734 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-asr/pst-asr.tex b/Master/texmf-dist/tex/generic/pst-asr/pst-asr.tex
new file mode 100644
index 00000000000..0427be4ce37
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pst-asr/pst-asr.tex
@@ -0,0 +1,729 @@
+
+\def\fileversion{1.2}
+\def\filedate{2006/09/23}
+\csname ASRLoaded\endcsname
+\let\ASRLoaded\endinput
+\ifx\PSTricksLoaded\endinput \else \input pstricks \fi\relax
+\ifx\PSTXKeyLoaded\endinput \else \input pst-xkey \fi\relax
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11\relax
+%%% utilities from lingbasics
+\def\@enamedef#1{\expandafter\edef\csname #1\endcsname}
+\def\lingmkactive#1{%
+ \@enamedef{ling@restore\string#1}{\@makeaux#1=\the\catcode`#1}%
+ \catcode`#1=13\ignorespaces}
+\def\lingmkletter#1{%
+ \@enamedef{ling@restore\string#1}{\@makeaux#1=\the\catcode`#1}%
+ \catcode`#1=11\ignorespaces}
+\def\@makeaux{\noexpand\catcode\noexpand`\noexpand}
+\def\lingrestore#1{\edef\tempa{ling@restore\string#1}%
+ \expandafter\csname\tempa\endcsname}
+\def\writeln#1{\immediate\write16{#1}\ignorespaces}
+\def\@gobbleignore#1{\ignorespaces}
+\begingroup
+\def\:{\ling@gobblespace} \expandafter\gdef\: {}
+\endgroup
+\def\ling@getpars#1{%
+ \def\k@@p{#1}\@ifnextchar[\ling@getpars@a\ling@getpars@e}
+\def\ling@getpars@a[#1]{\def\pst@pars{#1}\ling@getpars@b}
+\def\ling@getpars@b{\futurelet\TTemp\ling@getpars@c}
+\def\ling@getpars@c{\ifx\TTemp\@sptoken \let\next\ling@getpars@d
+ \else \let\next\k@@p \fi \next}
+\def\ling@getpars@d{\expandafter\k@@p\ling@gobblespace}
+\def\ling@getpars@e{\let\pst@pars\@empty \k@@p}
+%%% end utilities
+\pst@addfams{ASR}
+\def\asrsetkeys#1{\setkeys[psset]{ASR}{#1}\ignorespaces}
+\def\pssetkeys#1{\setkeys[psset]{}{#1}\ignorespaces}
+\def\pssetpst@pars{\expandafter\psset\expandafter{\pst@pars}}
+\def\xaddto#1#2{%
+ \pssetxlength\pst@dimg{#2}%
+ \advance#1 by\pst@dimg}
+\def\xsettosum#1#2#3{%
+ \pssetxlength#1{#2}
+ \xaddto#1{#3}\ignorespaces
+}
+\def\ysettodiff#1#2#3{%
+ \pssetylength#1{#2}%
+ \pssetlength\pst@dimg{#3}%
+ \advance#1 by -\pst@dimg
+ \ignorespaces
+}
+\def\ASR@addtotoks#1#2{\expandafter
+ #2\expandafter{\expandafter#1\the#2}}
+\def\ASR@trimtoks#1{\expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@gobble\the#1}%
+}
+\long\def\XKVforn#1#2#3{%
+ \def#2{#1}%
+ \ifx#2\@empty
+ \XKV@for@break
+ \else
+ \expandafter\XKV@f@r
+ \fi
+ #2{#3}#1,\@nil,%
+\ignorespaces}
+\def\DefList#1{\XKVforn{#1}\@X{\expandafter\def\@X}%
+ \ignorespaces}
+\def\interpolate(#1)(#2)#3#4{%
+ \begingroup
+ \SpecialCoor
+ \pst@getcoor{#1}\pst@tempa%
+ \pst@getcoor{#2}\pst@tempb%
+ \pnode(!%
+ \pst@tempa /YA exch \pst@number\psyunit div def
+ /XA exch \pst@number\psxunit div def
+ \pst@tempb /YB exch \pst@number\psyunit div def
+ /XB exch \pst@number\psxunit div def
+ /dx XB XA sub def
+ /dy YB YA sub def
+ dx #3\space mul XA add dy #3\space mul YA add){#4}
+ \endgroup
+ \ignorespaces
+}
+% \ASRyvalue{xxx} for \ASR@xxx, \ASRyvalue*{xxx} for \ASRxxx
+% sets \temp and \pst@dima
+\def\ASRyvalue{\pst@ifstar\ASRyvalue@a}
+\def\ASRyvalue@a#1{\edef\temp{\if@star \else @\fi#1}%
+ \expandafter\ASRyvalue@b}
+\def\ASRyvalue@b#1#2\@nil{%
+ \ifx#1!%
+ \pssetylength\pst@dimb{#2}%
+ \expandafter\pst@dima\csname ASR\temp\endcsname
+ \advance\pst@dima by \pst@dimb
+ \else
+ \pssetylength\pst@dima{#1#2}\fi
+}
+\newdimen\ASR@dima
+\newdimen\ASR@dimb
+\newdimen\ASR@dimc
+\newdimen\ASR@dimd
+\newdimen\ASR@dime
+\newdimen\ASR@dimf
+% \dbox, \dput resources and definitions
+\newbox\ASR@hbox
+\newbox\tmpbox
+\newdimen\ASR@left
+\newdimen\ASR@down
+\newdimen\ASR@xpos
+\newdimen\ASR@ypos
+\newdimen\ASR@maxleft
+\newdimen\ASR@maxright
+\newdimen\ASR@maxup
+\newdimen\ASR@maxdown
+\newdimen\ASR@dputht
+%
+\def\dput#1(#2,#3){%
+ \def\pst@par{}%
+ \def\ASR@dput{#1(#2,#3)}%
+ \pssetlength\ASR@xpos{#2}%
+ \pssetlength\ASR@ypos{#3}%
+ \ASR@addtotoks\ASR@egg\everyhbox
+ \expandafter\rput\ASR@dput
+}
+\def\ASR@egg{\aftergroup\ASR@updateafter}
+\def\ASR@updateafter{%
+ \ASR@trimtoks\everyhbox
+ \ASR@dputht=\ht\pst@hbox
+ \expandafter\pssetkeys\expandafter{\pst@par}%
+ \advance\ASR@xpos by -\psk@xref\wd\pst@hbox
+ \ifdim\ASR@xpos<\ASR@maxleft \ASR@maxleft=\ASR@xpos \fi
+ \advance\ASR@xpos by \wd\pst@hbox
+ \ifdim\ASR@xpos>\ASR@maxright \ASR@maxright=\ASR@xpos \fi
+ \ifx\psk@yref\relax
+ \advance\ASR@ypos by \ASR@dputht
+ \advance\ASR@dputht by \dp\pst@hbox
+ \else
+ \advance\ASR@dputht by \dp\pst@hbox
+ \advance\ASR@ypos by \ASR@dputht
+ \advance\ASR@ypos by -\psk@yref\ASR@dputht
+ \fi
+ \ifdim\ASR@ypos>\ASR@maxup \ASR@maxup=\ASR@ypos \fi
+ \advance\ASR@ypos by -\ASR@dputht
+ \ifdim\ASR@ypos<\ASR@maxdown \ASR@maxdown=\ASR@ypos \fi
+}
+\def\dbox{\setbox\ASR@hbox=\hbox\bgroup
+ \ASR@maxleft=\maxdimen
+ \ASR@maxright=-\maxdimen
+ \ASR@maxup=0pt
+ \ASR@maxdown=0pt
+}
+\def\ASR@Maxtransfer{%
+ \xdef\ASR@MaxAfter{%
+ \noexpand\ASR@maxleft=\the\ASR@maxleft
+ \noexpand\ASR@maxright=\the\ASR@maxright
+ \noexpand\ASR@maxdown=\the\ASR@maxdown
+ \noexpand\ASR@maxup=\the\ASR@maxup}%
+ \aftergroup\ASR@MaxAfter
+}
+\def\ASR@asrBtransfer{%
+ \xdef\ASR@asrBAfter{%
+ \noexpand\def\noexpand\ASR@asrB{\ASR@asrB}}%
+ \aftergroup\ASR@asrBAfter
+}
+\def\enddbox{%
+ \ASR@Maxtransfer
+ \ASR@asrBtransfer
+ \egroup
+ \dp\ASR@hbox=-\ASR@maxdown
+ \ht\ASR@hbox=\ASR@maxup
+ \leavevmode
+ \kern-\ASR@maxleft\lower\ASR@asrB\box\ASR@hbox\kern\ASR@maxright}
+% \newtier, defines a list of tiers
+\def\newtier#1{\Newtier@A#1,\@nil,\@nil}
+\def\Newtier@A#1#2,{\ifx#1\@nil \let\temp\@gobbleignore
+ \else \Newtier@B{#1#2}\let\temp\Newtier@A \fi \temp}
+\def\Newtier@B#1{%
+ \@enamedef{ASR#1B}{0pt}%
+ \@enamedef{ASR@#1dp}{.7ex}%
+ \@enamedef{ASR@#1ht}{1.8ex}%
+ \define@key[psset]{ASR}{#1B}{%
+ \ASRyvalue*{#1B}##1\@nil
+ \@enamedef{ASR#1B}{\the\pst@dima}%
+ \pst@dimb=\pst@dima
+ \advance\pst@dimb by \@nameuse{ASR@#1ht}%
+ \@enamedef{ASR#1t}{\the\pst@dimb}%
+ \pst@dimb=\@nameuse{ASR@#1dp}%
+ \advance\pst@dima by -\pst@dimb
+ \@enamedef{ASR#1b}{\the\pst@dima}%
+ }%
+ \define@key[psset]{ASR}{#1ht}{%
+ \ASRyvalue{#1ht}##1\@nil
+ \@enamedef{ASR@#1ht}{\the\pst@dima}%
+ \advance\pst@dima by \@nameuse{ASR#1B}%
+ \@enamedef{ASR#1t}{\the\pst@dima}%
+ }%
+ \define@key[psset]{ASR}{#1dp}{%
+ \ASRyvalue{#1dp}##1\@nil
+ \@enamedef{ASR@#1dp}{\the\pst@dima}%
+ \pst@dima=-\pst@dima
+ \advance\pst@dima by \@nameuse{ASR#1B}%
+ \@enamedef{ASR#1b}{\the\pst@dima}%
+ }%
+ \define@key[psset]{ASR}{#1}{%
+ \TierSet@##1 {} {} \@nil
+ \if@star \expandafter\ASR@dima\@nameuse{ASR#1B}
+ \else
+ \@enamedef{ASR#1B}{\the\ASR@dima}\fi
+ \@enamedef{ASR@#1dp}{\the\pst@dimb}%
+ \@enamedef{ASR@#1ht}{\the\pst@dimc}%
+ \pst@dimb=-\pst@dimb
+ \advance\pst@dimb by \ASR@dima
+ \@enamedef{ASR#1b}{\the\pst@dimb}%
+ \advance\pst@dimc by \ASR@dima
+ \@enamedef{ASR#1t}{\the\pst@dimc}%
+ }%
+}
+\def\TierSet@{\futurelet\temp\TierSet@@}
+\def\TierSet@@{%
+ \@starfalse
+ \ifx\temp(\let\next\TierSet@a
+ \else \ifx\temp*\let\next\TierSet@b
+ \else \let\next\TierSet@c \fi\fi \next}
+\def\TierSet@a(#1) #2 {%
+ \pssetylength\ASR@dima{#2}%
+ \expandafter\pst@dimb\@nameuse{ASR#1B}%
+ \advance\ASR@dima by \pst@dimb
+ \TierSet@d
+}
+\def\TierSet@b#1 {\@startrue\TierSet@d}
+\def\TierSet@c#1 {\pssetylength\ASR@dima{#1}\TierSet@d}
+\def\TierSet@d{\@ifnextchar(\TierSet@e{\TierSet@e() }}
+\def\TierSet@e(#1) #2 #3 #4\@nil{%
+ \setbox\tmpbox=\hbox{#1}%
+ \def\tempb{#2}%
+ \ifx\tempb\@empty % \pst@dimb = depth
+ \pst@dimb=\ASR@extragap % \pst@dimc = height
+ \pst@dimc=\pst@dimb
+ \else
+ \pssetylength\pst@dimc{#2}%
+ \def\tempa{#3}%
+ \ifx\tempa\@empty
+ \pst@dimb=\pst@dimc
+ \else
+ \pssetylength\pst@dimb{#3}
+ \fi
+ \fi
+ \advance\pst@dimb by \dp\tmpbox
+ \advance\pst@dimc by \ht\tmpbox
+}
+\define@key[psset]{ASR}{extragap}{%
+ \pssetylength\pst@dima{#1}%
+ \@enamedef{ASR@extragap}{\the\pst@dima}}
+\psset{extragap=.5ex}
+%
+% \tierput onto a tier, and drawing associations
+%
+\newdimen\ASR@dimf
+\newdimen\ASR@dime
+\def\tierput{\ASR@dimf=0pt
+ \@ifnextchar[\tierput@a\tierput@b}
+\def\tierput@a[#1]{\pssetxlength\ASR@dimf{#1}\tierput@b}
+\def\tierput@b(#1,#2){%
+ \pssetxlength\ASR@dime{#1}%
+ \advance\ASR@dime by \ASR@dimf
+ \edef\ASR@lasttierx{\the\ASR@dime}\edef\ASR@lasttier{#2}%
+ \edef\ASR@lasttierB{\@nameuse{ASR#2B}}%
+ \dput[B](\ASR@dime,\ASR@lasttierB)%
+}
+\def\assoc{\ling@getpars\assoc@a}
+\def\assoc@a#1(#2,#3){%
+ \pssetxlength\pst@dima{#2}%
+ \edef\tempc{\the\pst@dima}%
+ \def\tempd{#3}%
+ \assoc@b}
+\def\assoc@b{%
+ \bgroup
+ \pssetpst@pars
+ \@ifnextchar(\assoc@c\assoc@d
+}
+\def\assoc@c#1(#2){%
+ \let\ASR@lasttierx=\tempc
+ \let\ASR@lasttier=\tempd
+ \edef\ASR@lasttierB{\@nameuse{ASR\tempd B}}%
+ \assoc@e(#2)}
+\def\assoc@d{%
+ \edef\tempe{(\tempc,\tempd)}%
+ \expandafter\assoc@e\tempe}
+\def\assoc@e(#1,#2){%
+ \ifdim\ASR@lasttierB<\@nameuse{ASR#2B}%
+ \@tierorder bt%
+ \else
+ \@tierorder tb%
+ \fi
+ \edef\temp{(#1,\@nameuse{ASR#2\tempa})%
+ (\ASR@lasttierx,\@nameuse{ASR\ASR@lasttier\tempb})}%
+ \expandafter\psline\temp
+ \ifASR@xed
+ \expandafter\putxed\temp
+ \fi
+ \egroup\ignorespaces
+}
+\def\@tierorder#1#2{\def\tempa{#1}\def\tempb{#2}}
+
+\def\tiershortcuts{\let\@=\tierput \let\-=\assoc}
+%
+\define@cmdkey[psset]{ASR}[ASR@]{everyph}[]{}
+\def\putph#1{%
+ \dput[B](\xpos,\ASRphB){\ASR@everyph #1}
+ \psline(\xpos,\ASRtsb)(\xpos,\ASRpht)
+ \dput[B](\xpos,\ASRtsB){\ASR@tssym}
+ \advance\xpos by\ASRxgap
+ \ignorespaces
+}
+\def\putgem#1{%
+ \ASR@dima=\xpos
+ \advance\ASR@dima by .5\ASRxgap
+ \dput[B](\ASR@dima,\ASRphB){\ASR@everyph #1}
+ \dput[B](\xpos,\ASRtsB){\ASR@tssym}
+ \psline(\xpos,\ASRtsb)(\ASR@dima,\ASRpht)
+ \advance\xpos by \ASRxgap
+ \dput[B](\xpos,\ASRtsB){\ASR@tssym}
+ \psline(\xpos,\ASRtsb)(\ASR@dima,\ASRpht)
+ \advance\xpos by \ASRxgap
+ \ignorespaces
+}
+\def\notsputph#1{%
+ \tierput(\xpos,ts){#1}%
+ \stepxpos{1}%
+}
+\def\notsputgem#1{%
+ \notsputph{#1}%
+ \notsputph{#1}%
+}
+\define@key[psset]{ASR}{reptype}{%
+ \@nameuse{ASRreptype@#1}%
+}
+\def\ASRreptype@ts{%
+ \let\ASR@putobj\putph
+ \let\ASR@putgemobj\putgem
+}
+\def\ASRreptype@nots{%
+ \let\ASR@putobj=\notsputph
+ \let\ASR@putgemobj=\notsputgem
+ \asrsetkeys{ts=* (ky),syB=!.35ex}%
+}
+\ASRreptype@ts
+\def\LevelsIncrement{%
+ \pssetylength\ASR@dima{\ASRtsB}%
+ \ASR@dima=-\ASR@dima
+ \ASR@dimb=\ASRsyB
+ \advance\ASR@dima by 2\ASR@dimb
+ \asrsetkeys{tsB=\ASRsyB,syB=\the\ASR@dima}%
+}
+%%%% timing slot matters (including \xpos)
+%
+\newdimen\xpos
+\newdimen\ASRxgap
+\define@boolkey[psset]{ASR}[ASR@]{unitxgap}%
+ {\setkeys[psset]{}{xunit=\ASRxgap}}
+\define@key[psset]{ASR}{xgap}%
+ {\@setxgapaux#1\@nil
+ \edef\ASR@xgap{\the\pst@dima}%
+ \ASRxgap=\pst@dima
+ \ifASR@unitxgap \psset{xunit=\pst@dima}\fi
+}
+\def\@setxgapaux{\@ifnextchar!\@setxgapauxA\@setxgapauxB}
+\def\@setxgapauxA#1#2\@nil{\pssetxlength\pst@dima{#2}%
+ \advance\pst@dima by \ASRxgap}
+\def\@setxgapauxB#1\@nil{\pssetxlength\pst@dima{#1}}
+\define@cmdkey[psset]{ASR}[ASR@]{tssym}[$\times$]{}
+\def\bare#1{%
+ \dput[B](\xpos,\ASRtsB){#1}%
+ \advance\xpos by \ASRxgap
+ \ignorespaces
+}
+\def\X{\bare{\ASR@tssym}}
+\def\setxpos#1{%
+ \pssetxlength\xpos{#1}%
+ \ignorespaces
+}
+\def\stepxpos#1{%
+ \pssetxlength\pst@dima{#1}%
+ \advance\xpos by \pst@dima
+ \ignorespaces
+}
+%
+%%% placing and associating a phoneme
+\def\varph{\ling@getpars\varph@a}
+\def\varph@a#1#2{%
+ \xsettosum\ASR@dima\xpos{#2}%
+ \dput[B](\ASR@dima,\ASRphB){\ASR@everyph #1}%
+ \begingroup
+ \pssetpst@pars
+ \psline(\xpos,\ASRtsb)(\ASR@dima,\ASRpht)%
+ \xdef\temp{\ASR@tssym}%
+ \endgroup
+ \bare{\temp}%
+ \ignorespaces
+}
+%%% syllables
+\define@cmdkey[psset]{ASR}[ASR@]{sysym}[$\sigma$]{}
+\def\monosysym{$\sigma^{\mu}\mskip-10mu$}
+\def\bisysym{$\sigma^{\mu\mu}\mskip-18mu$}
+\def\varsyl{\ling@getpars\varsyl@a}
+\def\varsyl@a#1#2{%
+ \begingroup
+ \pssetpst@pars
+ \xsettosum\pst@dimc{\xpos}{#1}%
+ \tierput(\pst@dimc,sy){\ASR@sysym}%
+ \XKV@for@n{#2}\N{%
+ \xsettosum\pst@dimd{\xpos}{\N}%
+ \psline(\pst@dimc,\ASRsyb)(\pst@dimd,\ASRtst)%
+ }%
+ \ASR@Maxtransfer
+ \endgroup
+ \ignorespaces
+}
+\def\qsyl{\@ifnextchar(\qsyl@a{\qsyl@a(\ASR@sysym)}}
+\def\qsyl@a(#1)#2{%
+ \pssetxlength\pst@dimd{#2}%
+ \advance\pst@dimd by -\ASRxgap
+ \xsettosum\pst@dimc{\xpos}{.5\pst@dimd}%
+ \tierput(\pst@dimc,sy){#1}%
+ \pst@cnta=0
+ \loop \ifnum\pst@cnta<#2
+ {\advance\xpos by \the\pst@cnta\ASRxgap
+ \assoc(\xpos,ts)}\advance\pst@cnta by 1 \repeat
+ \ignorespaces
+}
+\def\1{\qsyl 1}
+\def\2{\qsyl 2}
+\def\3{\qsyl 3}
+\def\4{\qsyl 4}
+\def\5{\qsyl 5}
+%
+% xed crossout, parameters: xed, xedsep,xedht,xedratio,xedtype
+%
+\define@boolkey[psset]{ASR}[ASR@]{xed}{}
+\define@key[psset]{ASR}{xedsep}{%
+ \pssetlength\pst@dima{#1}%
+ \edef\ASR@xedsep{\the\pst@dima}%
+}
+\define@key[psset]{ASR}{xedht}{%
+ \pssetlength\pst@dima{#1}%
+ \edef\ASR@xedht{\the\pst@dima}%
+}
+\define@cmdkey[psset]{ASR}[ASR@]{xedratio}{}
+\define@cmdkey[psset]{ASR}[ASR@]{xedlinewidth}{}
+\define@key[psset]{ASR}{xedtype}{\def\ASR@xedtype{#1}}
+\def\xedparlines{%
+ \ASR@dima=\ASR@xedsep \ASR@dima=.5\ASR@dima
+ \ASR@dimb=\ASR@xedht \ASR@dimb=.5\ASR@dimb
+ \psline(-\ASR@dima,-\ASR@dimb)(-\ASR@dima,\ASR@dimb)
+ \psline(\ASR@dima,-\ASR@dimb)(\ASR@dima,\ASR@dimb)%
+}
+\def\xedcirc{%
+ \pscircle[linestyle=solid,linewidth=.5pt](0,0){.7ex}%
+}
+\setkeys[psset]{ASR}{xedsep=2.2pt,xedht=8pt,xedratio=.5,
+ xedlinewidth=1pt,xedtype=\xedparlines,xed=false}
+\def\putxed{\def\pst@pars{}\@ifnextchar[\putxed@a\putxed@b}
+\def\putxed@a[#1]{\def\pst@pars{#1}\putxed@b}
+\def\putxed@b#1(#2,#3)#4(#5,#6){%
+ \begingroup
+ \pssetpst@pars
+ \pssetxlength\ASR@dimc{#2}\pssetxlength\ASR@dime{#5}
+ \advance\ASR@dime by -\ASR@dimc
+ \advance\ASR@dimc by \ASR@xedratio\ASR@dime
+ \pssetylength\ASR@dimd{#3}\pssetylength\ASR@dimf{#6}
+ \advance\ASR@dimf by -\ASR@dimd
+ \advance\ASR@dimd by \ASR@xedratio\ASR@dimf
+ \pssetkeys{linewidth=\ASR@xedlinewidth}
+ \SpecialCoor
+ \rput{(\ASR@dime,\ASR@dimf)}(\ASR@dimc,\ASR@dimd){\ASR@xedtype}
+ \NormalCoor
+ \endgroup
+ \ignorespaces
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% \ASR ... \endasr boxing
+\define@cmdkey[psset]{ASR}[ASR@]{everyasr}[]{}
+\lingmkactive |
+% fixed 20 Sept 06, JF. non-active | now handled correctly
+% when it appears as the initial character after \asr
+\def\asr{%
+\leavevmode\dbox \ASR@everyasr \xpos=0pt
+\catcode`|=\active \let|=\ASRpush
+\asr@
+}
+\def\asr@{\ling@getpars\asr@@}
+\def\asr@@{\pssetpst@pars\ASR@d}
+% end fix
+%\def\asr{\ling@getpars\asr@@}
+%\lingmkactive |
+%\def\asr@@{\leavevmode\dbox \ASR@everyasr \xpos=0pt
+% \catcode`|=\active \let|=\ASRpush
+% \pssetpst@pars
+% \ASR@d}
+%\lingrestore |
+\def\endasr{\enddbox}
+% parsing the contents of \ASR ... \endASR
+\def\ASR@d{\futurelet\temp\ASR@dd}
+\def\ASR@dd{%
+ \ifx\temp\bgroup \let\next=\ASR@char \else
+ \ifx\temp|\let\next=\ASRpush\else
+ \ifx\temp'\let\next=\ASR@juncture\else
+ \ifx\temp<\let\next=\ASR@displace\else
+ \ifx\temp\endasr\let\next=\ASR@finish \else
+ \ifcat\noexpand\temp\noexpand\ASR\let\next=\ASR@cs
+ \else \let\next=\ASR@char
+ \fi\fi\fi\fi\fi\fi\next
+}
+\def\ASR@gobble#1{\ASR@d #1}
+\def\ASRpush#1{\let|\ASRpop \ignorespaces}
+\def\ASR@popasr{\let|\ASRpush \ASR@d}
+\def\ASRpop{%
+ \let|\ASRpush
+ \@ifnextchar\sptoken{\ASR@d\relax}\ASR@d
+}
+\lingrestore |
+% junctures on the timing tier
+\def\ASR@juncture#1#2{\edef\@juncs{\JunctureChoose#2}\ASR@junctureA}
+\def\ASR@junctureA{\@ifnextchar'\ASR@junctureB\ASR@junctureC}
+\define@cmdkey[psset]{ASR}[ASR@]{juncsep}{}
+\def\ASR@junctureB#1#2{%
+ \edef\@juncs{\@juncs\kern\ASR@juncsep\JunctureChoose{#2}}%
+ \ASR@junctureA
+}
+\def\NormalJunctureChoose#1%
+ {\ifx#1<\langle\else\ifx#1>\rangle\else#1\fi\fi}
+\let\JunctureChoose=\NormalJunctureChoose
+\def\ASR@junctureC{%
+ \ASR@dima=\xpos \advance\ASR@dima by -.5\ASRxgap
+ \ASR@currjuncput[B](\ASR@dima,\ASRtsB){$\@juncs$}\ASR@d
+}
+\define@boolkey[psset]{ASR}[ASR@]{phantomjunctures}{%
+ \ifASR@phantomjunctures \let\ASR@currjuncput\rput
+ \else \let\ASR@currjuncput\dput \fi
+}
+% displaced evaluation
+\def\ASR@displace#1{\def\@displace{-1}%
+ \@ifnextchar[\ASR@displaceA\ASR@displaceB}
+\def\ASR@displaceA[#1]{\def\@displace{#1}\ASR@displaceB}
+\def\ASR@displaceB#1{{\advance\xpos by \@displace\ASRxgap #1}\ASR@d}
+%
+\def\ASR@finish#1{\enddbox}
+\def\ASR@cs#1{#1\ASR@d}
+\def\ASR@char#1{\def\ASR@hold{#1}\@ifnextchar:\ASR@gem\ASR@charA}
+\def\ASR@charA{\ASR@putobj{\ASR@hold}\ASR@d}
+\def\ASR@gem#1{\ASR@putgemobj{\ASR@hold}\ASR@d}
+\define@key[psset]{ASR}{asrB}{%
+ \ASRyvalue{asrB}#1\@nil
+ \edef\ASR@asrB{\the\pst@dima}}
+%%%%%%
+%% reptype=DM
+\newcount\morphcount
+\def\ASRreptype@DM{%
+% \let\ASR@putobj=\ASR@putmorph
+ \let\ASR@char=\ASR@putmorph
+ \morphcount=1
+}
+\def\ASR@putmorph#1{%
+ \expandafter\parse@putmorph #1,,\@nil
+ \setbox\tmpbox\hbox{\tempa}%
+ \pst@dima=\wd\tmpbox
+ \advance\xpos by .5\pst@dima
+ \@enamedef{morphcoord@A\the\morphcount}{\the\xpos,\ASRtst}%
+ \advance\morphcount by 1
+ \dput[B](\xpos,\ASRtsB){\box\tmpbox}%
+ \ifx\tempb\@empty
+ \else
+ \dput[B](\xpos,\ASRphB){\ASR@everyph \tempb}
+ \expandafter\psline\expandafter[\ASR@realstyle]%
+ (\xpos,\ASRtsb)(\xpos,\ASRpht)
+ \fi
+ \advance\xpos by .5\pst@dima
+ \advance\xpos by \ASRxgap
+ \@ifnextchar:\ASR@d\ASR@d
+}
+\def\parse@putmorph #1,#2,#3\@nil{%
+ \def\tempa{#1}%
+ \def\tempb{#2}%
+}
+\def\@getASRcoord#1#2#3{%
+ \edef\temp{\@nameuse{morphcoord@#3}}%
+ \expandafter\@getcoord@a
+ \expandafter#1\expandafter#2\temp\@nil
+}
+\def\@getcoord@a#1#2#3,#4\@nil{%
+ #1=#3\relax #2=#4\relax
+}
+\def\merge{\ling@getpars\merge@a}
+\def\merge@a#1{%
+ \ASR@parsecoors#1\@nil
+ \begingroup
+ \pssetpst@pars
+ \ling@getpars\merge@b
+}
+\def\ASR@parsecoors#1,#2,#3\@nil{%
+ \@getASRcoord\pst@dima\pst@dimb{#1}%
+ \@getASRcoord\pst@dimc\pst@dimd{#2}%
+ \def\@tar{#3}%
+}
+\def\merge@b{%
+ \ifx\pst@pars\@empty
+ \def\@@directive{}%
+ \else
+ \expandafter\mk@@directive\pst@pars\@nil
+ \fi
+ \@ifnextchar\bgroup\merge@label\merge@nolabel
+}
+\def\mk@@directive #1#2\@nil{\def\@@directive{#1}}
+\def\merge@label#1{%
+ \ifdim\pst@dimb>\pst@dimd
+ \ASR@dimb=\pst@dimb
+ \else
+ \ASR@dimb=\pst@dimd
+ \fi
+ \advance\ASR@dimb by \ASR@mlevelsep
+ \ifx \pst@pars\@empty
+ \@binupmirror
+ \else \expandafter \ifx \@@directive M%
+ \@binupmirror
+ \else \expandafter\ifx \@@directive C%
+ \@binupratio{.5}%
+ \else
+ \expandafter\@binupratio\expandafter{\pst@pars}%
+ \fi\fi\fi
+ \@morphdrawbranches
+ \def\temp{#1}%
+ \ifx\temp\@empty
+ \else
+ \advance\ASR@dimb by \ASR@tsdp
+ \dput[B](\xpos,\ASR@dimb){#1}%
+ \advance\ASR@dimb by \ASR@tsht
+ \fi
+ \ASR@endbinup
+}
+\def\@morphdrawbranches{%
+ \expandafter\psline\expandafter[\ASR@lbstyle]%
+ (\pst@dima,\pst@dimb)(\xpos,\ASR@dimb)%
+ \expandafter\psline\expandafter[\ASR@rbstyle]%
+ (\pst@dimc,\pst@dimd)(\xpos,\ASR@dimb)%
+}
+\define@key[psset]{ASR}{mlevelsep}{%
+ \pssetylength\pst@dima{#1}%
+ \edef\ASR@mlevelsep{\the\pst@dima}%
+}
+\def\@binupratio#1{%
+ \ASR@dima=\pst@dimc
+ \advance\ASR@dima by -\pst@dima
+ \xpos=\pst@dima
+ \advance\xpos by #1\ASR@dima
+}
+\def\@binupmirror{%
+ \ASR@dimd=\ASR@dimb
+ \advance\ASR@dimd by -\pst@dimb
+ \ASR@dime=\ASR@dimb
+ \advance\ASR@dime by -\pst@dimd
+ \advance\ASR@dime by \ASR@dimd
+ \pst@divide\ASR@dimd\ASR@dime\temp%
+ \@binupratio{\temp}%
+}
+\def\ASR@endbinup{%
+ \xdef\@message{\noexpand\xpos=\the\xpos\relax
+ \noexpand\ASR@dimb=\the\ASR@dimb}%
+ \aftergroup\@message
+ \ASR@Maxtransfer
+ \endgroup
+ \@enamedef{morphcoord@\@tar}{\the\xpos,\the\ASR@dimb}%
+ \ignorespaces
+}
+\def\merge@nolabel{%
+ \ifx\pst@pars\@empty
+ \else
+ \edef\ASR@mslope{\pst@pars}%
+ \fi
+ \pssetylength\ASR@dima{\ASR@mslope}
+ \pssetxlength\ASR@dimb{1}
+ \pst@divide\ASR@dima\ASR@dimb\@slope
+ \pst@divide\ASR@dimb\ASR@dima\@recipslope
+ \xpos=.5\pst@dima
+ \advance\xpos by .5\pst@dimc
+ \ASR@dimb=.5\pst@dimd
+ \advance\ASR@dimb by -.5\pst@dimb
+ \advance\xpos by \@recipslope\ASR@dimb
+ \ASR@dimb=.5\pst@dimb
+ \advance\ASR@dimb by .5\pst@dimd
+ \ASR@dimc=.5\pst@dimc
+ \advance\ASR@dimc by -.5\pst@dima
+ \advance\ASR@dimb by \@slope\ASR@dimc
+ \@morphdrawbranches
+ \dput(\xpos,\ASR@dimb){}%
+ \ASR@endbinup
+}
+\define@cmdkey[psset]{ASR}[ASR@]{mslope}[1]{}
+\asrsetkeys{mslope=1}%
+\define@key[psset]{ASR}{lbstyle}{%
+ \def\ASR@lbstyle{style=BS@#1}}
+\define@key[psset]{ASR}{rbstyle}{%
+ \def\ASR@rbstyle{style=BS@#1}}
+\define@key[psset]{ASR}{realstyle}{%
+ \def\ASR@realstyle{style=BS@#1}}
+\def\newbranchstyle#1{\newpsstyle{BS@#1}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% the settings below can be changed or overwritten to suit the user
+%% settings for reptype=normal and reptype=nots
+\newtier{ts,ph,sy}
+\newpsstyle{assoc}{linestyle=solid,linewidth=.08ex}
+\setkeys[psset]{ASR}{asrB=0,unitxgap=true,phantomjunctures=false}
+\asrsetkeys{tssym,sysym,everyph,everyasr} % all have defaults
+\newpsstyle{medsyls}{extragap=.5ex,unitxgap=true,xgap=2.5ex,
+ ts=0pt ($\times$),sy=3.5ex ($\sigma$),ph=-3.5ex (pf),
+ juncsep=0pt}
+\newpsstyle{bigsyls}{extragap=.6ex,unitxgap=true,xgap=3.5ex,
+ ts=0pt ($\times$),sy=5.5ex ($\sigma$) .7ex,ph=-4.5ex (pf)}
+\psset{unit=1em,style=medsyls}
+%% settings for reptype=DM
+\newbranchstyle{normal}{linewidth=.1ex,linestyle=solid}
+\newbranchstyle{spell}{linewidth=.1ex,linestyle=solid,
+ arrowsize=.6ex 1.3,arrows=->}
+\newbranchstyle{head}{linewidth=.3ex,linestyle=solid,arrows=c-}
+\newbranchstyle{adjunct}{linewidth=.1ex,yunit=.8ex,
+ linestyle=dashed}
+\asrsetkeys{lbstyle=normal,rbstyle=normal,realstyle=spell,
+ mslope=1,mlevelsep=1em}
+
+\catcode`\@\TheAtCode
diff --git a/Master/texmf-dist/tex/latex/pst-asr/pst-asr.sty b/Master/texmf-dist/tex/latex/pst-asr/pst-asr.sty
new file mode 100644
index 00000000000..cc30b7c2657
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/pst-asr/pst-asr.sty
@@ -0,0 +1,5 @@
+\ProvidesPackage{pst-asr}%
+ [2006/09/17 package wrapper for PSTricks pst-asr.tex]
+\RequirePackage{pstricks,pst-xkey}
+\input pst-asr
+\endinput