From 1a113fd171e6547a74bd0693796692fac7494d63 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 12 Jan 2006 23:58:05 +0000 Subject: linguex git-svn-id: svn://tug.org/texlive/trunk@1042 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/linguex/cgloss4e.sty | 165 +++++++++++ Master/texmf-dist/tex/latex/linguex/linguex.sty | 351 +++++++++++++++++++++++ Master/texmf-dist/tex/latex/linguex/linguho.sty | 130 +++++++++ Master/texmf-dist/tex/latex/linguex/ps-trees.sty | 82 ++++++ 4 files changed, 728 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/linguex/cgloss4e.sty create mode 100644 Master/texmf-dist/tex/latex/linguex/linguex.sty create mode 100644 Master/texmf-dist/tex/latex/linguex/linguho.sty create mode 100644 Master/texmf-dist/tex/latex/linguex/ps-trees.sty diff --git a/Master/texmf-dist/tex/latex/linguex/cgloss4e.sty b/Master/texmf-dist/tex/latex/linguex/cgloss4e.sty new file mode 100644 index 00000000000..eedaf886e00 --- /dev/null +++ b/Master/texmf-dist/tex/latex/linguex/cgloss4e.sty @@ -0,0 +1,165 @@ +% -*- LaTeX -*- +% Following borrows from Covington's style files inspired by Midnight by M. +% de Groot, adapted to be used with gb4e.sty: examples beginning with \ex can +% contain glosses directly. Default is +% Linguistic Inquiry style with all lines in \rm; to change a line (eg. to +% \it for a particular journal, change the appropriate line: e.g., +% \let\eachwordone=\rm in a copy of this file. Note that it will NOT work +% to put \it before the line as the words are parsed separately. + +% Use \singlegloss to force single-spaced glosses even in double-space +% environments. Works also in footnotes (^M as delimiter replaced by +% \\)---hpk +% +%%% +%%% Sentences with word-by-word glosses +%%% + +% See covingtn.tex for full documentation. Some examples: +% +% Displayed sentence with gloss and translation: +% +% \gll Dit is een Nederlands voorbeeld.\\ +% This is a Dutch example.\\ +% \glt `This is an example in Dutch.' +% +% Same, using bracketing where words do not correspond one-to-one: +% +% \gll Dit is een voorbeeldje in het Nederlands.\\ +% This is a {little example} in {} Dutch.\\ +% \glt `This is a little example in Dutch.' +% +% If you want to align 3 lines rather than two, use \glll instead of \gll. +% +% Layout is critical between \gll (or \glll) and \glt (or \gln). +% +% Thanks to Marcel R. van der Goot for permission to reproduce code. +\let\@gsingle=1 +\def\singlegloss{\let\@gsingle=1} +\def\nosinglegloss{\let\@gsingle=0} +\@ifundefined{new@fontshape}% + {\def\@selfnt{\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi}} + {\def\@selfnt{\selectfont}} + +\def\gll% % Introduces 2-line text-and-gloss. + {\begin{flushleft} + \ifx\@gsingle1% conditionally force single spacing (hpk/MC) + \vskip\baselineskip\def\baselinestretch{1}% + \@selfnt\vskip-\baselineskip\fi% + \bgroup + \twosent + } + +\def\glll% % Introduces 3-line text-and-gloss. + {\begin{flushleft} + \ifx\@gsingle1% conditionally force single spacing (hpk/MC) + \vskip\baselineskip\def\baselinestretch{1}% + \@selfnt\vskip-\baselineskip\fi% + \bgroup + \threesent + } + +\def\glt{\vskip.17\baselineskip} +% Introduces a translation +\let\trans\glt + +\def\glend{} % obsolete + % Ends the gloss environment. + +% The following TeX code is adapted, with permission, from: +% gloss.tex: Macros for vertically aligning words in consecutive sentences. +% Version: 1.0 release: 26 November 1990 +% Copyright (c) 1991 Marcel R. van der Goot (marcel@cs.caltech.edu). +% Original Midnight/gloss.tex and Midnight/gloss.doc are available from +% csvax.cs.caltech.edu [131.215.131.131] in pub/tex +% and many other anonymous ftp archives. + +\newbox\lineone% boxes with words from first line +\newbox\linetwo% +\newbox\linethree% +\newbox\wordone% a word from the first line (hbox) +\newbox\wordtwo% +\newbox\wordthree% +\newbox\gline% the constructed double line (hbox) +\newskip\glossglue% extra glue between glossed pairs or triples +\glossglue = 0pt plus 2pt minus 1pt % allow stretch/shrink between words +%\glossglue = 5pt plus 2pt minus 1pt % allow stretch/shrink between words +\newif\ifnotdone + +\@ifundefined{eachwordone}{\let\eachwordone=\rm}{\relax} +\@ifundefined{eachwordtwo}{\let\eachwordtwo=\rm}{\relax} +\@ifundefined{eachwordthree}{\let\eachwordthree=\rm}{\relax} + +\def\lastword#1#2#3% #1 = \each, #2 = line box, #3 = word box + {\setbox#2=\vbox{\unvbox#2% + \global\setbox#3=\lastbox% + }% + \ifvoid#3\global\setbox#3=\hbox{#1\strut{} }\fi + % extra space following \strut in case #1 needs a space + } + +\def\testdone + {\ifdim\ht\lineone=0pt + \ifdim\ht\linetwo=0pt \notdonefalse % tricky space after pt + \else\notdonetrue + \fi + \else\notdonetrue + \fi + } + +\gdef\getwords(#1,#2)#3 #4\\% #1=linebox, #2=\each, #3=1st word, #4=remainder + {\setbox#1=\vbox{\hbox{#2\strut#3 }% adds space + \unvbox#1% + }% + \def\more{#4}% + \ifx\more\empty\let\more=\donewords + \else\let\more=\getwords + \fi + \more(#1,#2)#4\\% + } + +\gdef\donewords(#1,#2)\\{}% + +\gdef\twosent#1\\ #2\\{% #1 = first line, #2 = second line + \getwords(\lineone,\eachwordone)#1 \\% + \getwords(\linetwo,\eachwordtwo)#2 \\% + \loop\lastword{\eachwordone}{\lineone}{\wordone}% + \lastword{\eachwordtwo}{\linetwo}{\wordtwo}% + \global\setbox\gline=\hbox{\unhbox\gline + \hskip\glossglue + \vtop{\box\wordone % vtop was vbox + \nointerlineskip + \box\wordtwo + }% + }% + \testdone + \ifnotdone + \repeat + \egroup % matches \bgroup in \gloss + \gl@stop} + +\gdef\threesent#1\\ #2\\ #3\\{% #1 = first line, #2 = second line, #3 = third + \getwords(\lineone,\eachwordone)#1 \\% + \getwords(\linetwo,\eachwordtwo)#2 \\% + \getwords(\linethree,\eachwordthree)#3 \\% + \loop\lastword{\eachwordone}{\lineone}{\wordone}% + \lastword{\eachwordtwo}{\linetwo}{\wordtwo}% + \lastword{\eachwordthree}{\linethree}{\wordthree}% + \global\setbox\gline=\hbox{\unhbox\gline + \hskip\glossglue + \vtop{\box\wordone % vtop was vbox + \nointerlineskip + \box\wordtwo + \nointerlineskip + \box\wordthree + }% + }% + \testdone + \ifnotdone + \repeat + \egroup % matches \bgroup in \gloss + \gl@stop} + +\def\gl@stop{{\hskip -\glossglue}\unhbox\gline\end{flushleft}} + +\endinput diff --git a/Master/texmf-dist/tex/latex/linguex/linguex.sty b/Master/texmf-dist/tex/latex/linguex/linguex.sty new file mode 100644 index 00000000000..b0d7eba7b50 --- /dev/null +++ b/Master/texmf-dist/tex/latex/linguex/linguex.sty @@ -0,0 +1,351 @@ +%% Copyright 1996, 2002 by Wolfgang Sternefeld +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt; either +%% version 1 of the License, or any later version. +%% linguex.sty version 3.3, revised 2000/12/22, compatability with +%% lucida fonts: Defaults defined \AtBeginDocument +%% linguex.sty version 3.4, revised 2001/04/30, corrected vspacing for +%% \ex. embedded in \a. +%% linguex.sty version 3.5, revised 2002/01/26, corrected hspacing for +%% \alignSubEx +%% Author: Wolfgang.Sternefeld@uni-tuebingen.de +%% status: supported +%% filedate 01/04/30 +\RequirePackage{xspace,cgloss4e} +%%%%%%%%%%%%%%%%%%% FOOTNOTES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% to let \ex. know whether or not it is in a footnote +\newif\if@noftnote\@noftnotetrue +\let\predefinedfootnotetext=\@footnotetext +\long\def\@footnotetext#1{\@noftnotefalse\predefinedfootnotetext{#1}% + \@noftnotetrue} +% +%%%%%%%%%%%%%%% COUNTERS FOR LABELLING %%%%%%%%%%%%%%%%%%%%%%%%%%% +\@ifundefined{chapter}{\newcounter{ExNo}}{\newcounter{ExNo}[chapter]} +\newcounter{SubExNo}[\if@noftnote ExNo\else FnExNo\fi] +\newcounter{SubSubExNo}[SubExNo] +\newcounter{FnExNo}[footnote] +\newcounter{ABC} +\renewcommand{\theExNo}{(\arabic{ExNo})} +\renewcommand{\theFnExNo}{(\roman{FnExNo})} +\newcommand{\refdash}{-} +\newcommand{\SubSubExLeftBracket}{(} +\newcommand{\SubSubExRightBracket}{)} +\newcommand{\SubExLeftBracket}{} +\newcommand{\SubExRightBracket}{.} +\renewcommand{\theSubExNo}{\hbox{(\if@noftnote\arabic{ExNo}\else + \roman{FnExNo}\fi\refdash\alph{SubExNo})}} +\renewcommand{\theSubSubExNo}{% + \hbox{(\if@noftnote\arabic{ExNo}\else\roman{FnExNo}\fi + \refdash\alph{SubExNo}\refdash\if@noftnote\roman{SubSubExNo}% + \else\arabic{SubSubExNo}\fi)}} +% +%%%%%%%%%%%%%% LENGTHS FOR SPACING %%%%%%%%%%%%%%%%%%%%%%%%%% +\newlength{\currentlabel} +\newlength{\lessthanten} +\newlength{\lessthanhundred} +\newlength{\lessthanthousand} +\newlength{\@Exleftmargin} +\newlength{\Exlabelwidth} +\newlength{\Extopsep} +\newlength{\Exindent} +\newlength{\SubExleftmargin} +\newlength{\SubSubExleftmargin} +\newlength{\Exlabelsep} +\newlength{\alignSubExnegindent} +\newif\ifalignSubEx +\newcommand{\resetExdefaults}{% + \setlength{\Exlabelsep}{1.3em}% + \setlength{\Extopsep}{.66\baselineskip}% + \setlength{\SubSubExleftmargin}{2.4em}% + \setlength{\SubExleftmargin}{2em}% + \setlength{\Exindent}{0pt}% + \setlength{\Exlabelwidth}{4em}% + \setlength{\alignSubExnegindent}{\Exlabelsep} + \ifalignSubEx\addtolength{\Exlabelsep}{.7em}% + \addtolength{\alignSubExnegindent}{.7em}\fi +} +\AtBeginDocument{\resetExdefaults} +%%%%%%%%%%%%%%%%%%% DEFINITION OF \ex. %%%%%%%%%%%%%%%%%%%%%%%%%% +\newif\ifembedded +\newif\ifExWarning +\newcounter{ExDepth} +\newcounter{TempExDepth}\setcounter{TempExDepth}{0} +\def\trivex.#1\par{\ifdim\lastskip=.66\baselineskip\vspace{-\baselineskip}\fi + \begin{list}{}{\leftmargin\z@% + \labelwidth\z@\labelsep\z@\partopsep\z@\topsep\Extopsep}% + \item{}#1% + \refstepcounter{ExDepth}\ExEnd} +\def\ex.#1\par{% + \ifnum\theExDepth>0 \setcounter{TempExDepth}{\theExDepth}% + \setcounter{ExDepth}{0} + \embeddedtrue\fi + \ifembedded\else + \ifdim\lastskip=.66\baselineskip\vspace{-\baselineskip}\fi + \fi + \refstepcounter{ExDepth}% + \my@ifnextchar[{\OptArgEx}{\ifindex\expandafter\lookforwords\fi + \NormalEx\testforgramm}% + #1% + \addtocounter{ExDepth}{\theTempExDepth}\setcounter{TempExDepth}{0}% + \embeddedfalse\global\ExWarningfalse\ExEnd} +\newcommand{\NormalEx}{\ifExWarning + \PackageWarning{linguex}{Check example numbering (screwed up?), + check number of empty lines at end of examples. + Detected}\fi\ExWarningtrue + \if@noftnote\refstepcounter{ExNo}% + \Exformat[(\arabic{ExNo})]% + \else + \refstepcounter{FnExNo}\Exformat[(\roman{FnExNo})]% + \fi} +\def\OptArgEx[#1]{\Exformat[#1]\expandafter\testforgramm\ifindex\expandafter + \lookforwords\fi} +\newcommand{\ExEnd}{% + \ifnum\theExDepth=0\global\unembeddedfalse\else% + \end{list}\addtocounter{ExDepth}{-1}\ExEnd\fi} +\newcommand{\listdecl}{\parsep\z@\itemsep\z@\partopsep\z@\labelsep\z@ + \@Exleftmargin\z@\settowidth{\lessthanthousand}{(1100)}% + \ifdim\currentlabel<\lessthanthousand\leftmargin\Exlabelsep + \ifdim\lessthanthousand<\Exlabelwidth\Exlabelwidth\Exlabelsep% + \settowidth{\lessthanten}{(11)}% + \settowidth{\lessthanhundred}{(110)}% + \ifdim\currentlabel<\lessthanten\leftmargin\lessthanten% + \else + \ifdim\currentlabel<\lessthanhundred\leftmargin\lessthanhundred% + \else + \ifdim\currentlabel<\lessthanthousand\leftmargin\lessthanthousand% + \fi\fi\fi\fi + \else + \Exlabelwidth\z@ + \fi% + \@Exleftmargin\Exlabelwidth + \labelwidth\leftmargin + \ifembedded\relax\else + \addtolength{\Exlabelwidth}{\Exindent} + \fi + \addtolength{\leftmargin}{\Exlabelwidth}% + \addtolength{\labelwidth}{\@Exleftmargin}% +} +\def\Exformat[#1]{% + \settowidth{\currentlabel}{#1}% + \begin{list}{\makebox[\labelwidth][l]{#1}}{% + \setlength{\leftmargin}{\currentlabel}% + \listdecl% + \if@noftnote\relax\else\addtolength{\topsep}{-.5\topsep}\fi + \ifembedded\topsep=.3\Extopsep\else\topsep=\Extopsep\fi + }% + \ifindex\firstwordtrue\fi\item{}} +% +%%%%%%%% the `[' of OPTIONAL ARGUMENTS must immediately follow \ex. %%%%%% +%%%% redefinition of \@ifnextchar which does NOT ignore spaces %%%%%%%%%%% +\def\my@ifnextchar#1#2#3{\let\reserved@d=#1% + \def\reserved@a{#2}\def\reserved@b{#3}% + \futurelet\@let@token\my@ifnch} +\def\my@ifnch{\ifx\@let@token\@sptoken% + % \let\reserved@c\@xifnch + \let\reserved@c\reserved@b% + \else + \ifx\@let@token\reserved@d% + \let\reserved@c\reserved@a% + \else + \let\reserved@c\reserved@b% + \fi\fi + \reserved@c}% cf. definition of \@ifnextchar in latex2e.ltx %% +% +%%%%%%%%%%%%%% PROCESSING OF GRAMMATICALITY JUDGMENTS %%%%%%%%%%%%% +\newtoks\CollectTokens +\newcommand\AddInfo[1]{\expandafter\expandafter\expandafter + \CollectTokens\expandafter{% + \the\CollectTokens#1}} +\def\testforgramm{\GTest{}{\printGramm}} +\def\printGramm{\makebox[0pt][r]{\normalfont\the\CollectTokens}\ignorespaces} +\def\GTest#1#2{% + \def\TestForGramm{\CollectTokens={}% + \@ifnextchar *{\AddInfo{*}\@firstoftwo\recTestForGramm}{% + \@ifnextchar ?{\AddInfo{\char63}\@firstoftwo\recTestForGramm}{% + \@ifnextchar \#{\AddInfo{\#}\@firstoftwo\recTestForGramm}{% + \@ifnextchar \%{\AddInfo{\%}\@firstoftwo\recTestForGramm}% + {#1}}}}}% + \def\recTestForGramm{\@ifnextchar *{\AddInfo{*}\@firstoftwo% + \recTestForGramm}{% + \@ifnextchar ?{\AddInfo{\char63}\@firstoftwo\recTestForGramm}{% + \@ifnextchar \#{\AddInfo{\#}\@firstoftwo\recTestForGramm}{% + \@ifnextchar \%{\AddInfo{\%}\@firstoftwo\recTestForGramm}% + {#2}}}}}% + \TestForGramm} +% +%%%%%%%%%%%%%%%% SUBLISTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newif\ifunembedded +\newcommand{\SubExlabel}{\SubExLeftBracket\alph{SubExNo}\SubExRightBracket} +\def\a.{\ifindex\firstwordtrue\fi + \ifnum\theExDepth=0 \unembeddedtrue + \trivex.\fi + \refstepcounter{ExDepth}% + \begin{list}{\makebox[\labelwidth][l]{% + \ifnum\theExDepth=1 \SubExLeftBracket\alph{ABC}\SubExRightBracket% + \else + \ifnum\theExDepth=2 % + \ifdim\currentlabel<\lessthanthousand% + \ifalignSubEx + \llap{\hbox to \alignSubExnegindent{\ifunembedded% + \SubExLeftBracket\alph{SubExNo}\SubExRightBracket + \else\SubExlabel\fi\hss}}% + \else\SubExlabel\fi% + \else\ifunembedded% + \SubSubExLeftBracket\roman{SubExNo}\SubSubExRightBracket + \else\SubExlabel\fi\fi + \else + \ifnum\theExDepth=3 % + \if@noftnote%\ifunembedded\mbox{$\bullet$!}\else + \SubSubExLeftBracket\roman{SubSubExNo}\SubSubExRightBracket + %\fi + \else\arabic{SubSubExNo}\SubSubExRightBracket\fi + \fi\fi\fi}}% + {\labelsep\z@ + \ifnum\theExDepth=2\topsep .3\Extopsep\else\topsep 0pt\fi + \parsep\z@\itemsep\z@ + \ifnum\theExDepth=1 % + \usecounter{ABC}% + \settowidth{\currentlabel}{\theExNo}% + \listdecl% + \else + \ifnum\theExDepth=2 % + \usecounter{SubExNo}% + \ifalignSubEx\ifdim\currentlabel<\lessthanthousand% + \leftmargin\z@\else\leftmargin=\SubExleftmargin\fi% + \else\leftmargin=\SubExleftmargin\fi% + \else + \ifnum\theExDepth=3 \usecounter{SubSubExNo}\fi + \leftmargin=\SubSubExleftmargin% + \fi + \labelwidth=\leftmargin% + \fi}% + \ifnum\theExDepth=1 \setlength{\Exlabelwidth}{4em}\fi% + %previous line added 2000/12/22 + \b.} +% +%%%%%%%%%%%%%%%%% ITEMS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\newExitem[#1]{\ifnum\theExDepth=2 % + \ifdim\currentlabel<\lessthanthousand% + \ifalignSubEx + \item[\llap{\hbox to \alignSubExnegindent{#1\hfill}}]% + \else + \item[#1\hfill]\fi + \else\item[#1\hfill]% + \fi + \else\item[#1\hfill]% + \fi\testforgramm} +\let\oldb=\b +\DeclareRobustCommand{\b}{\@ifnextchar.{\newb}{\oldb}} +\def\newb.{\ifindex\firstwordtrue\fi + \my@ifnextchar[{\newExitem}{\item\testforgramm}} +\let\oldc=\c +\DeclareRobustCommand{\c}{\@ifnextchar.{\b}{\oldc}} +\let\oldd=\d +\DeclareRobustCommand{\d}{\@ifnextchar.{\b}{\oldd}} +\let\e=\b +\let\f=\b +\def\z.{\end{list}\addtocounter{ExDepth}{-1}} +% +%%%%%%%%%%%%%%%%%%%% INDEXED BRACKETS %%%%%%%%%%%%%%%%%%%%%%%% +\newif\ifindex +\newif\iffirstword +\def\I#1#2 {#1\labelBr#2 } +\def\exi.#1\par{\indextrue\ex.#1 | blabla | \indexfalse\par} +\def\ai.#1 \par{\indextrue + \a.#1 | blabla | + \par + \indexfalse} +\def\finish|#1|{\ExEnd} +\newcommand{\testGrAndBr}{\GTest{}{\printGramm\checkforbr}} +\def\doaword#1 {% + \iffirstword\firstwordfalse\expandafter\testGrAndBr\fi% + #1 + \ifgloss\expandafter\checkforbrorstar\else + \expandafter\lookforwords\fi} +\newcommand{\checkforbrorstar}{\GTest{\checkforbr}{\printGramm\checkforbr}} +\newcommand{\lookforwords}{\@ifnextchar]{\firstwordfalse\@aber}% + {\@ifnextchar[{\firstwordfalse\@aber}% + {\@ifnextchar|{\firstwordfalse\finish}{\doaword}}}} +\def\labelBr#1 {\mbox{$\hspace{.05em}_{\mbox{\scriptsize\rm#1}}$} } +\newcommand{\jetzt}{\my@ifnextchar[{\@aber}{\my@ifnextchar]{\@aber}% + {\@schnell}}} +\def\@aber#1#2 {#1\jetzt#2 } +\def\@schnell#1 {\labelBr#1 \lookforwords} +\newcommand{\checkforbr}{\@ifnextchar[{\recurseonbr}% + {\@ifnextchar]{\recurseonbr}{}}} +\newcommand{\recurseonbr}{\my@ifnextchar[{\stripoffbr}% + {\my@ifnextchar]{\stripoffbr}{\labelBr}}} +\def\stripoffbr#1#2 {\rm #1\recurseonbr#2 } +% +%%%%%%%%%%%%%%%%%%%% GLOSSES %%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newif\ifgloss +%%% modification of cgloss4e %%%% +\def\getwords(#1,#2)#3 #4\\% #1=linebox, #2=\each, #3=1st word, #4=remainder + {\setbox#1=\vbox{\hbox{#2\strut\ifindex\expandafter\checkforbr\fi#3 }% + \unvbox#1}% + \def\more{#4}% + \ifx\more\empty\let\more=\donewords + \else\let\more=\getwords + \fi + \more(#1,#2)#4\\% + } +\def\gl@stop{{\hskip -\glossglue}\unhbox\gline\end{flushleft}% + \global\glossfalse% + \ifindex\expandafter\lookforwords\fi {} } +%%% +\newcommand{\newgll}{\glosstrue\GTest{\gll}{\gll\printGramm}} +\def\exg.{\my@ifnextchar[{\newglossex}{\ex.\newgll}} +\def\newglossex[#1]{\ex.[#1]\newgll} +\def\ag.{\my@ifnextchar[{\newglossa}{\a.\newgll}} +\def\newglossa[#1]{\a.[#1]\newgll} +\def\newglossitem[#1]{\ifalignSubEx%\ifdim\currentlabel<\lessthanthousand% + \item[\llap{\hbox to \alignSubExnegindent{#1\hfill}}]% + \else + \item[#1\hfill]% + \fi +\newgll} +\def\bg.{\my@ifnextchar[{\newglossitem}{\item\newgll}} +\def\cg.{\bg.} +\def\dg.{\bg.} +\def\eg.{\bg.} +\def\fg.{\bg.} +% +%%%%%%%%%%%%%%%%%%%% GLOSSES WITH INDEXED BRACKETS %%%%%%%%%%%% +\def\exig.{\my@ifnextchar[{\newglossexi}{\exi.\newgll}} +\def\newglossexi[#1]{\exi.[#1]\newgll} +\let\exgi=\exig +\def\aig.{\my@ifnextchar[{\newglossai}{\ai.\newgll}} +\def\newglossai[#1]{\ai.[#1]\newgll} +\let\agi=\aig +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CROSS REFERENCES %%%%%%%%%%%%%% +\newcounter{tmpaEx} +\newif\ifNoFnRef +\newcommand{\Next}{\if@noftnote\NoFnReftrue\else\NoFnReffalse\fi + \copyExNo\refstepcounter{tmpaEx}\printExNo} +\newcommand{\NNext}{\if@noftnote\NoFnReftrue\else\NoFnReffalse\fi + \copyExNo\addtocounter{tmpaEx}{2}\printExNo} +\newcommand{\TextNext}{\NoFnReftrue\copyExNo\refstepcounter{tmpaEx}\printExNo} +\newcommand{\Last}{\if@noftnote\NoFnReftrue\else + \ifnum\arabic{FnExNo}=0 \NoFnReftrue\else\NoFnReffalse\fi + \fi + \copyExNo\printExNo} +\newcommand{\LLast}{\if@noftnote\NoFnReftrue\copyExNo% + \addtocounter{tmpaEx}{-1}% + \else + \ifnum\arabic{FnExNo}=0 \NoFnReftrue\copyExNo% + \addtocounter{tmpaEx}{-1}% + \else + \ifnum\arabic{FnExNo}=1 \NoFnReftrue\copyExNo% + \else + \NoFnReffalse\copyExNo\addtocounter{tmpaEx}{-1}% + \fi\fi\fi + \printExNo} +\newcommand{\copyExNo}{\strut\ifNoFnRef\setcounter{tmpaEx}{\value{ExNo}}% + \def\thetmpaEx{\arabic{tmpaEx}}% + \else + \setcounter{tmpaEx}{\value{FnExNo}}\def\thetmpaEx{\roman{tmpaEx}}% + \fi} +\def\complexExNo[#1]{\hbox{(\thetmpaEx\refdash#1)}} +\newcommand{\printExNo}{\@ifnextchar[{\complexExNo}{(\thetmpaEx)\xspace}} +%%%%%%%%%%%%%%%%%%%%%%%%%%% END %%%%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/linguex/linguho.sty b/Master/texmf-dist/tex/latex/linguex/linguho.sty new file mode 100644 index 00000000000..9d11cbb14a3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/linguex/linguho.sty @@ -0,0 +1,130 @@ +%% Copyright 1999 Wolfgang Sternefeld +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt; either +%% version 1 of the License, or any later version. +%% linguho.sty for linguex.sty +%% Author: Wolfgang.Sternefeld@uni-tuebingen.de +%% fileversion 2.0 +%% filedate 99/05/04 + +\RequirePackage{linguex} +\newif\ifcopytohandout +\DeclareOption{*}{\copytohandouttrue} +\ProcessOptions +\let\copyoflabel=\label +\let\copyofex=\ex +\let\copyofexi=\exi +\let\copyofexg=\exg +\let\copyofexig=\exig +\let\copyofexgi=\exgi +\let\copyofa=\a +\let\copyofag=\ag +\let\copyofai=\ai +\let\copyofaig=\aig +\let\copyofagi=\agi +\let\copyofsection=\section +\let\copyofsubsection=\subsection +\let\copyofsubsubsection=\subsubsection +\let\copyofsetlength=\setlength +\let\copyofsettowidth=\settowidth +\let\copyofresetExdefaults=\resetExdefaults +\let\copyofmaketitle=\maketitle +\let\copyofA=\A +\newwrite\han\immediate\openout\han=\jobname.han +\def\MakeOther #1{\catcode`#1 = 12} +\def\MkOthersSpecial{% + %\MakeOther{\§}%to be copied for all active characters + %\MakeOther{\Š} + %\MakeOther{\š} + %\MakeOther{\€} + %\MakeOther{\…} + %\MakeOther{\†} + %\MakeOther{\Ÿ} + %\MakeOther{\"} + }%This definition must be uncommented if any of\ + %% the characters in the above definition are \active +%\def\MkOthersSpecial{}%This line must be uncommented if any of +%% the characters in the above definition are \active +\def\ChangeCatCodes{\begingroup% + \immediate\write\han{ }% + \MkOthersSpecial% + \def\do##1{\catcode`##1=12}\dospecials% + %\catcode`\%=14 + \catcode`\{=1\catcode`\}=2% + \catcode`\^^M=12\newlinechar=`\^^M}% +{\catcode`\^^M=12% + \gdef\@WriteEx#1#2^^M^^M{\catcode`\^^M=5% + \immediate\write\han{\noexpand#1#2}\endgroup% + \immediate\write\han{\string\par}}% +} +\def\maketitle{\relax} +\def\a.#1\par{\relax} +\def\ag.#1\par{\relax} +\def\ai.#1\par{\relax} +\def\agi.#1\par{\relax} +\def\aig.#1\par{\relax} +\def\exi.#1\par{\relax} +\def\exig.#1\par{\relax} +\def\exgi.#1\par{\relax} +\def\A.#1\par{\relax} +\def\ex{\ChangeCatCodes\@WriteEx{\ex}} +\def\exg{\ChangeCatCodes\@WriteEx{\exg}} +\def\a{\ChangeCatCodes\@WriteEx{\a}} +\def\ag{\ChangeCatCodes\@WriteEx{\ag}} +\def\ai{\ChangeCatCodes\@WriteEx{\ai}} +\def\agi{\ChangeCatCodes\@WriteEx{\agi}} +\def\aig{\ChangeCatCodes\@WriteEx{\aig}} +\def\exi{\ChangeCatCodes\@WriteEx{\exi}} +\def\exig{\ChangeCatCodes\@WriteEx{\exig}} +\def\exgi{\ChangeCatCodes\@WriteEx{\exgi}} +\def\A{\ChangeCatCodes\@WriteEx{\A}} +\def\resetExdefaults{\immediate\write\han{\noexpand\resetExdefaults}} +{\catcode`\^^M=12% + \gdef\@WriteCommand#1#2{\catcode`\^^M=5% + \immediate\write\han{\noexpand#1{#2}}\endgroup}% +} +{\catcode`\^^M=12% + \gdef\@WriteTwoArgCommand#1#2#3{\catcode`\^^M=5% + \immediate\write\han{\noexpand#1{#2}{#3}}\endgroup}% +} +\def\subsubsection{\@ifstar{\subsubsectionstar}% + {\ChangeCatCodes\@WriteCommand{\subsubsection}}} +\def\subsection{\@ifstar{\subsectionstar}% + {\ChangeCatCodes\@WriteCommand{\subsection}}} +\def\section{\@ifstar{\sectionstar}{\ChangeCatCodes\@WriteCommand{\section}}} +\def\setlength{\ChangeCatCodes\@WriteTwoArgCommand{\setlength}} +\def\settowidth{\ChangeCatCodes\@WriteTwoArgCommand{\settowidth}} +\ifcopytohandout + \def\subsubsectionstar{\ChangeCatCodes\@WriteCommand{\subsubsection*}} + \def\subsectionstar{\ChangeCatCodes\@WriteCommand{\subsection*}} + \def\sectionstar{\ChangeCatCodes\@WriteCommand{\section*}} +\else + \def\subsubsectionstar{\relax} + \def\subsectionstar{\relax} + \def\sectionstar{\relax} +\fi +\long\def\footnote#1{\relax} +\def\makehandout{\immediate\closeout\han\newpage% + \setcounter{page}{1}\setcounter{ExNo}{0}% + \def\maketitle{\copyofmaketitle} + \def\a{\copyofa} + \def\ag{\copyofag} + \def\ai{\copyofai} + \def\aig{\copyofaig} + \def\agi{\copyofagi} + \def\ex{\copyofex} + \def\exg{\copyofexg} + \def\exi{\copyofexi} + \def\exig{\copyofexig} + \def\exgi{\copyofexgi} + \def\resetExdefaults{\copyofresetExdefaults} + \def\subsubsection{\copyofsubsubsection} + \def\subsection{\copyofsubsection} + \def\section{\copyofsection} + \def\setlength{\copyofsetlength} + \def\settowidth{\copyofsettowidth} + \def\A{\copyofA} + \maketitle% + \input \jobname.han} +\endinput diff --git a/Master/texmf-dist/tex/latex/linguex/ps-trees.sty b/Master/texmf-dist/tex/latex/linguex/ps-trees.sty new file mode 100644 index 00000000000..00855bd4417 --- /dev/null +++ b/Master/texmf-dist/tex/latex/linguex/ps-trees.sty @@ -0,0 +1,82 @@ +%% Copyright 1999 Wolfgang Sternefeld +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt; either +%% version 1 of the License, or any later version. +%% ps-trees.sty version 2 +%% Author: Wolfgang.Sternefeld@uni-tuebingen.de +%% filedate 99/27/04 +\RequirePackage{tree-dvips} +\newtoks\AllNodes +\newtoks\CollectedNodes +\newtoks\CollectedTNodes +\newif\ifIsElement +\newlength{\MinNodeWidth} +\newlength{\NodeWidth} +\newcommand{\NodeWidthNo}[1]{\setlength{\MinNodeWidth}{\the\wd#1}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newif\ifTNode +\newcommand{\AddToToks}[2]{% + \expandafter\expandafter\expandafter% + \global#1\expandafter{% + \the#1#2}} +\def\TestAndAdd#1{\def\yy{#1}% + \ifx\yy\empty\relax\else% + \ifTNode\AddToToks{\CollectedTNodes}{\\{#1}}% + \else\AddToToks{\CollectedNodes}{\\{#1}}\fi\fi + \IfIsNodeName{#1}% + \typeout{*** Warning: Node Name `#1' already exists ***}\fi + } +\let\oldnode=\node +\newenvironment{psTree}{\tabcolsep0pt\nodemargin0pt% + \def\node##1##2{\AddToToks{\AllNodes}{\\{##1}}\oldnode{##1}{##2\strut}}% + }% + {\let\\=\EveryNode\the\CollectedNodes% + \let\\=\EveryTNode\the\CollectedTNodes% + \global\AllNodes={}\global\CollectedNodes={}\global\CollectedTNodes={}% + \global\setlength{\MinNodeWidth}{0pt}%\hspace{\fill} + } +\newcommand{\EveryNode}[1]{\ConnectNode#1 } +\newcommand{\EveryTNode}[1]{\ConnectTNode#1 } +\def\ConnectNode#1#2 {\IfIsNodeName{#2}\nodeconnect{#2}{#1#2}% + \else\NoNodeWarning{#2}\fi} +\def\ConnectTNode#1#2 {\IfIsNodeName{#2}\nodeconnect{#2}[tl]{#1#2}% + \nodeconnect{#2}[tr]{#1#2}\nodeconnect[tl]{#1#2}[tr]{#1#2}% + \else\NoNodeWarning{#2}\fi} +\newcommand{\IsElementOf}[2]{\IsElementfalse\def\xx{#1}\bgroup + \let\\=\Compare\the#2\egroup} +\newcommand{\IfIsNodeName}[1]{\IsElementOf{#1}{\AllNodes}\ifIsElement} +\newcommand{\Compare}[1]{\def\yy{#1}\ifx\yy\xx\global\IsElementtrue\fi} +\newcommand{\NoNodeWarning}[1]{\typeout{*** Fatal Error. Node Name `#1' + does'nt exist ***}} +\newenvironment{treetab}{\begin{psTree}\begin{tabular}}{\end{tabular}% + \end{psTree}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\Node}{\@ifnextchar[{\OptionNode}{\@Node}} +\newcommand{\@Node}[2]{\TestAndAdd{#1}\settowidth{\NodeWidth}{#2}% + \ifdim\NodeWidth<\MinNodeWidth% + \makebox[\MinNodeWidth]{\hfill\node{#1}{#2}\hfill}% + \else\node{#1}{#2}% + \fi} +\def\OptionNode[#1]#2#3{\TestAndAdd{#2}\makebox[\the\wd#1]{\hfill + \node{#2}{#3}\hfill}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\NodeNo}[1]{\@ifnextchar[{\OptionNodeNo{#1}}{\@NodeNo{#1}}} +\newcommand{\@NodeNo}[2]{\@Node{#2}{\unhcopy#1}} +\def\OptionNodeNo#1[#2]#3{\TestAndAdd{#3}% + \makebox[\the\wd#2]{\hfill\node{#3}{\unhcopy#1}\hfill}} +\newcommand{\NodeZ}[2]{\TestAndAdd{#1}% + \hfill\node{#1}{\makebox[0pt]{#2\strut}}} +\newcommand{\NodeT}[2]{\TNodetrue + \Node{#1}{#2}\TNodefalse} +\newcommand{\NodeZT}[2]{\TNodetrue\TestAndAdd{#1}% + \hfill\makebox[0pt]{\node{#1}{#2\strut}}\TNodefalse} +\let\NodeTZ=\NodeZT +\newcommand{\NodeTNo}[2]{\TNodetrue\NodeNo{#1}{#2}\TNodefalse} +\newcommand{\NodeZTNo}[2]{\hfill\makebox[0pt]{\NodeTNo{#1}{#2}}} +\let\NodeTZNo=\NodeZTNo +\newcommand{\nodeZ}[2]{\IfIsNodeName{#1}% + \typeout{*** Warning: Node Name `#1' already exists ***}\fi + \hfill\node{#1}{\makebox[0pt]{#2}}} +%%%%%%%%%%%%%%%%%%%% END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + -- cgit v1.2.3