From 8aedb83df207f78d4395c9ea8758a5d374584894 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 18 Nov 2007 21:27:39 +0000 Subject: new packge pst-asr (->collection-pstricks) git-svn-id: svn://tug.org/texlive/trunk@5504 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/pst-asr/README | 23 + .../doc/generic/pst-asr/pst-asr-examples.pdf | Bin 0 -> 54041 bytes .../doc/generic/pst-asr/pst-asr-examples.tex | 589 +++++++++++++++++ Master/texmf-dist/tex/generic/pst-asr/pst-asr.tex | 729 +++++++++++++++++++++ Master/texmf-dist/tex/latex/pst-asr/pst-asr.sty | 5 + Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc | 1 + Master/tlpkg/tlpsrc/pst-asr.tlpsrc | 2 + 7 files changed, 1349 insertions(+) create mode 100644 Master/texmf-dist/doc/generic/pst-asr/README create mode 100644 Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.pdf create mode 100644 Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.tex create mode 100644 Master/texmf-dist/tex/generic/pst-asr/pst-asr.tex create mode 100644 Master/texmf-dist/tex/latex/pst-asr/pst-asr.sty create mode 100644 Master/tlpkg/tlpsrc/pst-asr.tlpsrc 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 Binary files /dev/null and b/Master/texmf-dist/doc/generic/pst-asr/pst-asr-examples.pdf 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 -- cgit v1.2.3