summaryrefslogtreecommitdiff
path: root/Master
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
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')
-rw-r--r--Master/texmf-dist/doc/generic/pst-asr/README23
-rw-r--r--Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.pdfbin0 -> 54041 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.tex589
-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
-rw-r--r--Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/pst-asr.tlpsrc2
7 files changed, 1349 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-asr/README b/Master/texmf-dist/doc/generic/pst-asr/README
new file mode 100644
index 00000000000..516186e83e7
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-asr/README
@@ -0,0 +1,23 @@
+
+The pst-asr package is based on PSTricks and is intended to be
+used by linguists to typeset autosegmental representations. The
+core files are 1) pst-asr.tex, the Tex macro file, 2)
+pst-asr.sty, a LaTex wrapper which calls pst-asr.tex, and 3)
+pst-asr-doc.pdf, the documentation. The complete Tex source for
+the documentation is zipped into pst-asr-doc-source.zip along
+with README.txt, which has instructions for generating the
+documentation.
+
+The file pst-asr-examples.tex is a LaTex file which contains
+almost all the examples in the documentation, very simply
+formatted (no packages other than pstricks, pst-xkey, and pst-asr
+are used) in order to facilitate user experimentation with
+pst-asr typesetting. Users should be able to run this file with
+little difficulty if pst-asr is fully installed or is simply
+in the same directory that pst-asr-examples.tex is in.
+pst-asr-examples.pdf shows what the source produces.
+
+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-asr/pst-asr-examples.pdf b/Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.pdf
new file mode 100644
index 00000000000..c0202c7f026
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.tex b/Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.tex
new file mode 100644
index 00000000000..a3614a1eddf
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.tex
@@ -0,0 +1,589 @@
+
+\documentclass[12pt]{article}
+\usepackage{pstricks,pst-xkey,pst-asr}
+
+\textwidth=6in
+\oddsidemargin=.25in
+\evensidemargin=.25in
+\rightskip=0pt plus 2em
+
+\newpsstyle{bigsyls}{extragap=.6ex,unitxgap=true,xgap=3.5ex,
+ ts=0pt ($\times$),sy=5.5ex ($\sigma$) .7ex,ph=-4.5ex (pf)}
+\newpsstyle{dotted}{linestyle=dotted,linewidth=1.2pt,dotsep=1.6pt}
+\def\feat#1{$\rm [#1]$}
+\def\crossing{\pscircle[linestyle=solid,linewidth=.5pt](0,0){.7ex}}%
+
+\newdimen\dimpuba
+\newdimen\dimpubb
+\newcount\exno
+\exno=0
+\def\ex{%
+ \vskip2.5em
+ \allowbreak\noindent
+ \global\advance\exno by 1
+ \bgroup
+ \parindent=0pt (\the\exno)\quad
+}
+\def\xe{\par\egroup}
+\def\TO{\quad$\rightarrow$\quad}
+\tiershortcuts
+
+\begin{document}
+
+\centerline{\huge Examples}
+
+\vskip1.5em
+
+\noindent The source file for this pdf file is {\it
+pst-asr-examples.tex}. It is written in very simple LaTex, using
+no packages other than those that are absolutely necessary for
+illustrating {\it pst-asr\/}: {\it pstricks}, {\it pst-xkey}, and
+{\it pst-asr} itself. The hope is that potential {\it pst-asr\/}
+users can easily experiment with the various examples and use
+various bits and pieces as models for there own work.
+
+Most of the examples in {\it pst-asr-doc.pdf\/} are given here,
+in the order in which they appear in that document. The
+numbering is sequential and differs from the numbering in that
+document.
+
+\ex
+\asr logwhin\endasr
+\TO
+\asr \3logwhin\endasr
+\bigskip
+
+\hfill \TO
+\asr \3log\2wVhin\endasr
+\TO
+\asr \3log\2wV\3hin\endasr \kern1em
+\xe
+
+\ex
+\asr \4ki:p\endasr
+\xe
+
+\begingroup % parser and syllable examples
+\asrsetkeys{phB=!-1ex,syB=!1ex,xgap=!1ex}
+
+\ex
+\asr[tssym=$\bullet$] ka:t\endasr
+\xe
+
+\ex
+\asr[tssym=$\bullet$,everyph=\it] ka:t\endasr
+\xe
+
+\ex
+\asr {k$\rm ^h$}a:t\endasr
+\xe
+
+\ex
+\asr k|\pscircle(\xpos,.55ex){1.5ex}|amba\endasr
+\xe
+
+\ex
+\def\goop{\pscircle(\xpos,.55ex){1.5ex}}%
+\asr k\goop amba\endasr
+\qquad
+(alternate code for example above)
+\xe
+
+\ex
+\def\kh{k$\rm ^h$}%
+\asr {\kh}amba\endasr
+\qquad
+(alternate code for earlier example)
+\xe
+
+\ex
+\def\goop{\pscircle(\xpos,.55ex){1.5ex}}%
+\asr kupa:<\goop nu\endasr
+\xe
+
+% syllables
+
+\ex
+\asrsetkeys{phB=!-1ex,syB=!1ex,xgap=!1ex}
+\asr du|\varsyl[linestyle=dashed]{1.5}{0,1,2}|man\endasr
+\xe
+
+\ex
+\asr |\varsyl[sysym=\monosysym]{.5}{0,1}|du
+ |\varsyl[sysym=\bisysym]{1}{0,1,2}|man\endasr
+\xe
+
+\ex
+\asr |\qsyl(\monosysym)2|du|\qsyl(\bisysym)3|man\endasr
+\qquad (alternate code for example above)
+\xe
+
+\ex
+\asr |\qsyl2|du|\qsyl3|man\endasr
+\xe
+
+\ex
+\asr \3kat\3man\2du\endasr
+\xe
+
+\ex
+\newtier{nuc}
+\tiershortcuts
+\asr[style=bigsyls,nuc=(sy) 1em ($\nu$)]
+|\varsyl{.4}{0,1,2}|kat|\varsyl{.4}{0,1,2}|man
+ |\varsyl{-.1}{0,1}|du|
+\@[.2](1,nuc){$\nu$}\-(1,ts)
+\@[.2](4,nuc){$\nu$}\-(4,ts)
+\@[.2](7,nuc){$\nu$}\-(7,ts)
+|\endasr
+\xe
+
+\endgroup % end parser and syllable examples
+
+\ex \asr[style=bigsyls]
+|\qsyl(k)1 \X \varph{a}1 \qsyl(t)1 \X \varph{}{-1} \qsyl(b)1 \X
+\endasr
+\xe
+
+\ex \hskip-1em \hfil
+\small
+\def\\#1#2{$\left[\matrix{\rm #1cons\hfill\cr
+ \rm #2sonor\cr}\right]$}%
+\psset{tssym=Oral,sysym=\\+-,unit=2em,xgap=4.2 em,
+ sy=1.5 (\\++),ts=0 (O),ph=-1.2 (C),asrB=\ASRsyB}
+\newtier{voice,nasal,low,back}
+\asrsetkeys{voice=(ph) -1.4 ([),nasal=(ph) -1 ([),
+ low=(ph) -2 ([),back=(ph) -2.3 ([)}
+\DefList{\lowoff{-.5},\backoff{.4}}
+\def\PharGlot{\varph[tssym=Phar]{Glottal}0}%
+\def\PharSP{\varph[tssym=Phar]{SP}0}%
+\asr
+\2{Coronal}\PharGlot
+\2\PharGlot{Coronal}
+|\qsyl(\\-+)1|{Dorsal}
+|\qsyl(\\++)2|\PharSP{Labial}:%
+<\2\PharGlot
+|\@(1.5,voice){\feat{-voiced}}
+ \-(1,ph)\-(2,ph)
+\@(8,voice){\feat{-voiced}}
+ \-(8,ph)
+\@(5,nasal){\feat{+nasal}}
+ \-(5,ph)
+\@[\lowoff](4,low){\feat{+low}}
+ \-(4,ph)
+\@[\backoff](4,back){\feat{-back}}
+ \-(4,ph)
+\endasr
+\xe
+
+\ex
+\asr[xgap=2em,syB=2.5em] hu'+ari|
+\@(1,sy){L}
+ \-(1,ts)
+\@(2,sy){H}
+ \-(2,ts)
+\@(4,sy){L}
+ \-(4,ts)
+|\endasr
+\TO
+\asr[xgap=2em,syB=2.5em] hwari|
+\@(1,sy){L}
+ \-[xed=true,xedratio=.4](1,ts)\-[style=dotted](2,ts)
+\@(2,sy){H}
+ \-(2,ts)
+\@(4,sy){L}
+ \-(4,ts)
+|\endasr
+\xe
+
+\ex
+\asr[xgap=2em,syB=2.5em]
+\X\X\X\X\X|\@(1,sy){L}\-[xed=true](0,ts)\-[xed=true](4,ts)
+|\endasr
+\xe
+
+\ex
+\newtier{softpal,ant,dist,nasal}%
+\newpsstyle{crossing}{xed=true,xedtype=\xedcirc,style=dotted}
+\tiershortcuts
+\psset{xgap=1.5in,yunit=3em,ts=0 (Pg),sy=1 ([),
+ ph=-1 (Cg),softpal=.3 (Sg),
+ nasal=-.4 ([),ant=-2 ([),dist=-3 ([),
+ tssym=Place,sysym=\feat{+cons},everyph=Coronal}
+\DefList{\softpalA{2.5},\antoffset{-.22},\distoffset{.36}}
+%
+\quad \asr \1{}\1{}\1{}|
+% softpal features
+\@(\softpalA,softpal){Soft Palate}
+ \-(2,sy)
+\@(\softpalA,nasal){\feat{+nas}}
+ \-(\softpalA,softpal)
+% ant features
+\@(\antoffset,ant){\feat{-ant}}
+ \-(0,ph)
+ \-[style=crossing](2,ph)
+\@[1](\antoffset,ant){\feat{\alpha ant}}
+ \-(1,ph)
+\@[2](\antoffset,ant){\feat{-ant}}
+ \-(2,ph)
+% dist features
+\@(\distoffset,dist){\feat{-dist}}
+ \-(0,ph)
+ \-[style=crossing](2,ph)
+\@[1](\distoffset,dist){\feat{\beta dist}}
+ \-(1,ph)
+\@[2](\distoffset,dist){\feat{+dist}}
+ \-(2,ph)
+|\endasr
+\xe
+
+\ex
+\newtier{dorsal,high,back,low,labial,round}
+\psset{xgap=1.5in,yunit=3em,ts=0 (Pg),sy=1 ((),dorsal=-1 (Dg),
+ high=-2 ((),back=-2.6 ((),low=-3.2 ((),
+ labial=-4 (Lg),round=-5 ((),
+ sysym=\feat{-cons},tssym=Place}
+\DefList{\dorsalA{.4},\dorsalB{1.6},\highoffset{-.2},%
+ \backoffsetA{.1},\backoffsetB{-.2},\lowoffsetA{.5},%
+ \lowoffsetB{.3},\labialA{-.2},\labialB{2.2}}
+\asr \1\X\X\1\X
+|\@(1,sy){\feat{+cons}}
+ \-(1,ts)
+\@(\dorsalA,dorsal){Dorsal}\-(0,ts)
+\@(\dorsalB,dorsal){Dorsal}\-(2,ts)
+\@[\highoffset](\dorsalA,high){\feat{-high}}
+ \-(\dorsalA,dorsal)
+ \-(\dorsalB,dorsal)
+\@[\backoffsetA](\dorsalA,back){\feat{+back}}
+ \-(\dorsalA,dorsal)
+ \-[style=dotted](\dorsalB,dorsal)
+\@[\backoffsetB](\dorsalB,back){\feat{+back}}
+ \-[xed=true](\dorsalB,dorsal)
+\@[\lowoffsetA](\dorsalA,low){\feat{-low}}
+ \-(\dorsalA,dorsal)
+ \-[style=dotted](\dorsalB,dorsal)
+\@[\lowoffsetB](\dorsalB,low){\feat{+low}}
+ \-[xed=true](\dorsalB,dorsal)
+\@(\labialA,labial){Labial}
+ \-(0,ts)
+\@(\labialB,labial){Labial}
+ \-(2,ts)
+\@(\labialA,round){\feat{+round}}
+ \-(\labialA,labial)
+ \-[style=dotted](\labialB,labial)
+\@(\labialB,round){\feat{-round}}
+ \-[xed=true](\labialB,labial)
+\endasr
+\xe
+
+\ex
+\DefList{\syloffA{.4},\syloffB{-.1},\nucoff{.2}}
+\asr[style=bigsyls]
+|\varsyl{\syloffA}{0,1,2}|kat
+|\varsyl{\syloffA}{0,1,2}|man
+|\varsyl{\syloffB}{0,1}|du
+|\asrsetkeys{syB=!2.5ex,sysym=$\nu$}
+\setxpos1
+\varsyl{\nucoff}{0}
+\stepxpos3
+\varsyl{\nucoff}{0}
+\stepxpos3
+\varsyl{\nucoff}{0}
+\endasr
+\qquad (alternate code for earlier example)
+\xe
+
+\ex
+\asr[ts=0 (x),sy=1.5 ($*$),ph=-1.6 (C),
+ xgap=1.2em,syB=3.2ex,sysym=$*$]
+|\def\({\tierput[-.7](\xpos,sy){(}}%
+\def\.{{\stepxpos{-.5}\tierput(\xpos,ts){\bf .}}}%
+|C\(\1V\.C\1V\.C\1V\.C\(\1VX\.C\1V\.C\1V\.
+ C\(\1VX\.C\1V\.C\1V\.C\1V\.C\1V
+|\LevelsIncrement
+ \setxpos1
+ \1\(
+ \stepxpos6
+ \1
+ \stepxpos7
+ \1
+ \LevelsIncrement
+ \setxpos1
+ \1
+\endasr
+\xe
+
+\ex
+\asr[unit=3.6ex,yunit=1.3,ts=0 ($\times$),sy=1 ($\sigma$),xgap=1]
+\1\X\2\X\X\2\X\X\1\X\2\X\X\1\X\1\X\2\X\X
+|\dput[Bl](12.5,\ASRtsB){syllable terminal}
+\dput[Bl](12.5,\ASRsyB){syllable}
+\LevelsIncrement
+\asrsetkeys{sysym=Ft,sy=* (F)}
+ \setxpos0
+ \varsyl{.75}{0,1.5}
+ \varsyl{4.25}{3.5,5}
+ \varsyl{7.25}{6.5,8}
+ \varsyl{9.75}{9,10.5}
+ \dput[Bl](12.5,\ASRsyB){foot}
+\LevelsIncrement
+ \asrsetkeys{sysym=Wd,tsht=!.3ex}
+ \varsyl{2.5}{.75,4.25}
+ \varsyl{8.5}{7.25,9.75}
+ \dput[Bl](12,\ASRsyB){Prosodic word}
+\LevelsIncrement
+ \asrsetkeys{sysym=PhP}
+ \varsyl{5.5}{2.5,8.5}
+ \dput[Bl](12,\ASRsyB){Phonological phrase}
+\endasr
+\xe
+
+\ex \quad
+\asr[reptype=nots] \3kat\3man\3du:\endasr
+\qquad versus\qquad
+\asr[reptype=normal] \3kat\3man\3du:\endasr
+\xe
+
+\ex \quad \vtop{%
+\newpsstyle{tonedot}{linestyle=dotted,dotsep=1.2pt,linewidth=1pt}
+\def\H{\varsyl[sysym=H]0{0}}%
+\asrsetkeys{xgap=1em,sysym=L,syB=2.3em,reptype=nots}
+\halign{#\hfil&& \hskip3em #\hfil\cr
+\asr c\H ed\1e{$+$}\H ar\1i\endasr&
+\asr h\1u{$+$}\H ar\1i\endasr& underlying\cr
+\noalign{\bigskip}
+%
+\asr c\H ed{$+$}\H ar\1i
+ |\tierput(2.5,sy){L}\endasr&
+\asr hw{$+$}\H ar\1i
+ |\tierput(1,sy){L}\endasr& syncope/glide formation\cr
+\noalign{\bigskip}
+%
+\asr c\H ed{$+$}\H ar\1i
+ |\tierput(2.5,sy){L}\assoc[style=tonedot](4,ts)\endasr&
+\asr hw{$+$}\H ar\1i
+ |\tierput(1,sy){L}\assoc[style=tonedot](3,ts)\endasr&
+ reassociation\cr
+}}\xe
+
+\begingroup % DM representations
+\asrsetkeys{reptype=DM,
+ ph=-2.3em (ky),ts=0 (Sy),mlevelsep=.8em,
+ lbstyle=normal,rbstyle=normal,xgap=1.4ex}
+
+\ex
+\vtop{%
+\halign{#\hfil&&\hskip1.7em #\hfil\cr
+a. \ Derivational suffix& b. \ /i\~n/-Adjunction&
+ c. \ /zi\~n/-Adjunction\cr
+\noalign{\medskip}
+\hfil
+\asr
+{Stem,amig}{Suffix,on}{n,}{\#,o}|
+\merge{A1,A2,B1}{Suffix}%
+\merge{B1,A3,C1}{n}%
+\merge{C1,A4,D1}{\#}%
+\endasr
+&
+\asr
+{Stem,amig}{n$_1$}{Dim,i\~n}{n$_2$}{\#,o}|
+\merge{A1,A2,B1}{n$_1$}
+\merge{A3,A4,B2}{n$_2$}
+\merge{B1,B2,C1}{n$_1$}
+\merge{C1,A5,D1}[C]{\#}
+\endasr
+&
+\asr
+{Stem,amig}{n}{\#$_1$,o}{Dim,zi\~n}{n}{\#$_2$,o}|
+\merge{A1,A2,B1}{n}%
+\merge{B1,A3,C1}{\#$_1$}%
+\merge{A4,A5,B2}{n}%
+\merge{B2,A6,C2}{\#$_2$}%
+\merge{C1,C2,D1}{\#$_1$}%
+\endasr
+\cr}}\xe
+
+\ex
+\psset{xgap=1.25ex,yunit=.6em,realstyle=spell,
+ lbstyle=normal,rbstyle=head}
+\vtop{%
+\halign{#\hfil&&\hskip1.7em #\hfil\cr
+a. \ Derivational suffix& b. \ /i\~n/-Adjunction&
+ c. \ /zi\~n/-Adjunction\cr
+\noalign{\medskip}
+\hfil
+\asr
+{\sc AMIG,amig}{\sc MOD,on}{n,}{ \#,o}|
+\merge{A1,A2,B1}
+\merge{B1,A3,C1}
+\merge{C1,A4,D}
+\endasr
+&
+\asr
+{\sc AMIG,amig}{n}{Dim,i\~n}{n}{ \#,o}|
+\merge{A1,A2,B1}
+\merge{A3,A4,B2}
+\merge[lbstyle=head,rbstyle=adjunct]{B1,B2,C1}
+\merge{C1,A5,D}
+\endasr
+&
+\asr
+{\sc AMIG,amig}{n}{ \# ,o}{Dim,zi\~n}{n}{ \#,o}|
+\merge{A1,A2,B1}
+\merge{B1,A3,C1}
+\merge{A4,A5,B2}
+\merge{B2,A6,C2}
+\merge[lbstyle=head,rbstyle=adjunct,mslope=.6]{C1,C2,D}
+\endasr
+\cr}}\xe
+
+\endgroup % DM representations
+
+
+
+
+%%%%%%
+\def\skewx(#1,#2)#3{%
+ \pssetxlength\dimpuba{#1}%
+ \pssetylength\dimpubb{#2}%
+ \advance\dimpuba by \slantratio\dimpubb
+ \edef#3{\the\dimpuba}%
+}
+\def\skewline(#1,#2)#3(#4,#5){%
+ \skewx(#1,#2)\tempa
+ \skewx(#4,#5)\tempb
+ \psline(\tempa,#2)(\tempb,#5)%
+}
+\def\skewdput#1(#2,#3){%
+ \skewx(#2,#3)\tempa
+ \dput#1(\tempa,#3)%
+}
+
+\ex
+\newpsstyle{pageborder}{linestyle=dashed,linewidth=.3pt,
+ dash=2pt 1.8pt}
+\def\ts{\psframebox*[framesep=0pt]{$\times$}}%
+\psset{unit=4ex,xgap=1,ts=-.5ex ($\times$),ph=-1.3 (e) .5pt,
+ sy=1.5 (s),tssym=\ts,asrB=1.5}
+\DefList{\vpagetop{2.5},\hpagebot{-1.7},\slantratio{.9}}
+\asr |\psframe[style=pageborder](-1,0)(5,\vpagetop)|
+\X\X\X\X\X
+|\skewx(-1,\hpagebot)\tempa
+\skewx(5,\hpagebot)\tempb
+\psline[style=pageborder]
+ (-1,0)(\tempa,\hpagebot)(\tempb,\hpagebot)(5,0)
+\skewline(1.15,\ASRtsb)(2,\ASRpht)
+\skewline(3,\ASRtsb)(2,\ASRpht)
+\skewdput[B](2,\ASRphB){\bf a}
+\skewdput(-1,\hpagebot){}
+\@(0,sy){\bf k}\-(0,ts)
+\@(2,sy){\bf t}\-(2,ts)
+\@(4,sy){\bf b}\-(4,ts)
+\dput(0,\vpagetop){}
+\endasr
+\xe
+
+\ex
+\DefList{\hioff{.4},\upoff{-.2}}
+\def\\#1{$\scriptstyle\rm #1$}%
+\asr[unit=2em,xgap=5em,ts=0 ($\bullet$) 1ex 0,tssym=$\bullet$,
+ phB=-1,syB=\ASRtst]
+\X\X\X
+|\@[\upoff](0,ph){\\{+upper}}
+ \-(0,ts)
+ \-[style=dotted](1,ts)
+\@[\upoff](1,ph)
+ {\\{-upper}}
+ \-[xed=true,xedratio=.55](1,ts)
+\@[\upoff](2,ph){\\{+upper}}
+ \-(2,ts)
+\asrsetkeys{phB=!-1}
+\setxpos0
+\varph{\\{-hi}}{\hioff}
+\varph{\\{+hi}}{\hioff}
+\varph{\\{-hi}}{\hioff}
+\@(0,sy){H}
+\@(1,sy){L}
+\@(2,sy){H}
+\endasr
+\xe
+
+\ex
+\newtier{nuclear,rhyme}
+\psset{xgap=2em,yunit=1.8em,phB=-1,syB=3.5,nuclear=1 (N),rhyme=2.2 (R)}
+\DefList{\sypos{2.2},\rhymepos{3.1}}
+\asr |\varsyl{\sypos}{0,1}|
+dri:m
+|\@(2.5,nuclear){N}
+ \-(2,ts)
+ \-(3,ts)
+\@(\rhymepos,rhyme){R}
+ \-(\sypos,sy)
+ \-(2.5,nuclear)
+ \-(4,ts)
+\endasr
+\xe
+
+\ex
+\newtier{nuclear,rhyme,coda,onset}
+\psset{xgap=2.5em,yunit=2em,
+ phB=-1,nuclear=.9 (lg),coda=1.2 (dg),rhyme=2.3 (hy),
+ onset=1.8 (tg),syB=3.5}
+\DefList{\onsetpos{.5},\nuclearpos{2.5},\rhymepos{3.25}}
+\asr
+dri:m
+|\@(\nuclearpos,nuclear){nuclear}
+ \-(2,ts)
+ \-(3,ts)
+\@(4,coda){coda}
+ \-(4,ts)
+\@(\onsetpos,onset){onset}
+ \-(0,ts)
+ \-(1,ts)
+\@(\rhymepos,rhyme){rhyme}
+ \-(4,coda)
+ \-(\nuclearpos,nuclear)
+\@(2,sy){$\sigma$}
+ \-(\onsetpos,onset)
+ \-(\rhymepos,rhyme)
+|\endasr
+\xe
+
+\ex
+\def\XS{\bare{$\acute\omega$}}%
+\def\JunctureChoose#1{\ifx#1-\hbox{-}\else #1\fi}%
+\asrsetkeys{tssym=$\omega$,xgap=1.3em,phantomjunctures=true}
+a.\quad
+\vtop{\openup1ex
+\halign{#\hfil\cr
+\asr \X\X\X\X\endasr \cr
+\asr '(\XS\X\X\X\endasr \cr
+\asr '(\XS\X')\X\X\endasr \cr
+\asr '(\XS\X')\XS')\X\endasr \cr
+}}
+\qquad
+b.\quad
+\vtop{\openup1ex
+\halign{#\hfil\cr
+\asr \X\X\X'-\X\endasr \cr
+\asr '(\XS\X\X'-\X\endasr \cr
+\asr '(\XS\X')\X'-\X\endasr \cr
+}}
+\qquad
+c.\quad
+\vtop{\openup1ex
+\halign{#\hfil\cr
+\asr \X\X\X\X'-\X\endasr \cr
+\asr '(\XS\X\X\X'-\X\endasr \cr
+\asr '(\XS\X')\X\X'-\X\endasr \cr
+\asr '(\XS\X')\XS')\X'-\X\endasr \cr
+}}
+\xe
+
+\end{document}
+
+
+
+
+
+
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
diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
index bea224b1486..c46515cf44f 100644
--- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
@@ -8,6 +8,7 @@ depend pdftricks
depend pst-2dplot
depend pst-3d
depend pst-3dplot
+depend pst-asr
depend pst-bar
depend pst-barcode
depend pst-blur
diff --git a/Master/tlpkg/tlpsrc/pst-asr.tlpsrc b/Master/tlpkg/tlpsrc/pst-asr.tlpsrc
new file mode 100644
index 00000000000..6431b1f4547
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/pst-asr.tlpsrc
@@ -0,0 +1,2 @@
+name pst-asr
+category Package