diff options
author | Karl Berry <karl@freefriends.org> | 2007-12-25 19:59:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-12-25 19:59:46 +0000 |
commit | 45330fd64d73a7d3af25462ac003ac49e56f7a09 (patch) | |
tree | 11af70d833f6fbafe2f3a5e2f1c6b9bcb240bc22 /Master/texmf-dist/tex/latex/gb4e | |
parent | dc73e95749999fd0f8f29353c34a46010f26c643 (diff) |
add package gb4e (05dec05)
git-svn-id: svn://tug.org/texlive/trunk@5907 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/gb4e')
-rw-r--r-- | Master/texmf-dist/tex/latex/gb4e/cgloss4e.sty | 165 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/gb4e/gb4e.sty | 316 |
2 files changed, 481 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/gb4e/cgloss4e.sty b/Master/texmf-dist/tex/latex/gb4e/cgloss4e.sty new file mode 100644 index 00000000000..eedaf886e00 --- /dev/null +++ b/Master/texmf-dist/tex/latex/gb4e/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/gb4e/gb4e.sty b/Master/texmf-dist/tex/latex/gb4e/gb4e.sty new file mode 100644 index 00000000000..b212ba00f61 --- /dev/null +++ b/Master/texmf-dist/tex/latex/gb4e/gb4e.sty @@ -0,0 +1,316 @@ +% -*- LaTeX -*- +\def\gbVersion{4e} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Version 4export (= v. 4 minus the compatibility code) +% Based on hpk's gb.sty, revised for GM syllabus by ct, +% and incorporating macros adapted from J.Frampton, M. de Groot en M. +% Covington. Full documentation soon to come in gb4doc.tex. Bug-reports +% and suggestions for improvements, other used features, please! +% +% Notes: +% +% Various styles for X-bar levels; can be changed, but note that {picture} +% environements (e.g. trees) will then come out wrong and have to be +% fixed +% +% This file allows _ and ^ to be used in ordinary text, hence must be +% loaded AFTER any file that uses them in their TeX meaning. Hence +% cgloss(n).sty is loaded early in this file. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%% +% Format of examples: % +%%%%%%%%%%%%%%%%%%%%%%%% +% \begin{exe} or \exbegin +% <examples> (arab.) +% \begin{xlist} or \xlist +% <subexamples> (1st embedding, alph.) +% \begin{xlisti} or \xlisti +% <subsubexamples> (2st embedding, rom.) +% \end{xlisti} or \endxlisti +% <more examples> +% \end{xlist} or \endxlist +% <still more examples> +% \end{exe} or \exend +% +% Other sublist-styles: xlistA (Alph.), xlistI (Rom.), xlistn (arab) +% +% \ex (produces Number) +% \ex <sentence> (numbered example) +% \ex[jdgmt]{sentence} (numbered example with judgement) +% +% \exi{ident} (produces identifier) +% \exi{ident} <sentence> (example numbered with identifier) +% \exi{ident}[jdgmt]{sentence} (dito with judgement) +% (\exr, \exp and \sn are defined in terms of \exi) +% +% \exr{label} (produces cross-referenced Num.) +% \exr{label} <sentence> (cross-referenced example) +% \exr{label}[jdgmt]{sentence} (cross-referenced example with judgement) +% +% \exp{label} (same as +% \exp{label} <sentence> \exr but +% \exp{label}[jdgmt]{sentence} with prime) +% +% \sn <sentence> (unnumbered example) +% \sn[jdgmt]{sentence} (unnumbered example with judgement) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% For my own lazyness (HANDLE WITH CARE---this works only +% in boringly normal cases.... ): +% +% \ea works like \begin{exe}\ex or \begin{xlist}\ex, +% depending on context +% \z works like \end{exe} or \end{xlist}, dep on context +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\@ifundefined{new@fontshape}{\def\reset@font{}\let\mathrm\rm\let\mathit\mit}{} + +\let\prmbrs=0 +\def\primebars{\let\prmbrs=1} +\def\obar#1{\ifmmode#1^{0}\else#1$^{0}$\fi} %% FIX +\def\mbar#1{\ifmmode#1^{\mathrm{max}}\else#1$^{\mathrm{max}}$\fi} +\def\ibar#1{\ifx\prmbrs0% + \ifmmode\overline{\mathrm{#1}}\else$\overline{\mbox{#1}}$\fi% + \else\ifmmode#1^{'}\else#1$^{'}$\fi\fi} +\def\iibar#1{\ifx\prmbrs0% + \ifmmode\overline{\overline{\mathrm{#1}}}% + \else$\overline{\overline{\mbox{#1}}}$\fi% + \else #1P\fi} +\def\th{\ifmmode\theta\else$\theta$\fi} +\def\al{\ifmmode\alpha\else$\alpha$\fi} +\def\be{\ifmmode\beta\else$\beta$\fi} +\def\ga{\ifmmode\gamma\else$\gamma$\fi} +\def\de{\ifmmode\delta\else$\delta$\fi} +\def\spec#1{[Spec,#1]} %Def. of "Specifier of #1" +\def\ct#1{{\em #1\/}} %Citation of linguistic material with alternative style: +%\def\ct#1{`#1'} +\def\tx{\bf} %Introduction of technical terms with alternative style: +%\def\tx{\em} + +\input{cgloss\gbVersion.sty} + +%%% NEWSTUFF: +\newcommand{\indexgroupmark}[1]{\item{\bf #1}} % ?? -CT + +% this allows _ to be used in horizontal mode (from J.Frampton): +\catcode`_=\active +\def_#1{\ifmmode\mathit{\sb{#1}}\else${}\sb{#1}$\fi} +\catcode`^=\active +\def^#1{\ifmmode\mathit{\sp{#1}}\else${}\sp{#1}$\fi} + +\def\lb#1{\@ifnextchar [{\@glarph{#1}}{\@bl{#1}}} +\def\@glarph#1[#2]{\ifmmode{[}\sb{{\mathrm{#1}}\sb{#2}}\else% + ${[}\sb{{\mathrm{#1}}\sb{#2}}$\fi} +\def\@bl#1{\ifmmode{[}\sb{\mathrm{#1}}\;\else${[}\sb{\mathrm{#1}}\;$\fi} + +\def\rb#1{\@ifnextchar [{\@grarph{#1}}{\@br{#1}}} +\def\@grarph#1[#2]{\ifmmode{]}\sb{{\mathrm{#1}}\sb{#2}}\else% + ${]}\sb{{\mathrm{#1}}\sb{#2}}$\fi} +\def\@br#1{\ifmmode{]}\sb{\mathrm{#1}}\;\else${]}\sb{\mathrm{#1}}\;$\fi} + +%%% END_NEWSTUFF. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macros for examples, roughly following Linguistic Inquiry style. % +% From here on best not to tamper, else all the examples and cross- % +% references will come out scrambled! (see also note below) - CT % +% Completely rewritten for more robustness and flexibility. (hpk) % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\qlist{\begin{list}{\Alph{xnum}.}{\usecounter{xnum}% +\setlength{\rightmargin}{\leftmargin}}} +\def\endqlist{\end{list}} + +\newif\if@noftnote\@noftnotetrue +\newif\if@xrec\@xrecfalse +\@definecounter{fnx} + +%%%% adapted from latex.tex to get examples in footnotes right +\long\def\@footnotetext#1{% + \@noftnotefalse\setcounter{fnx}{0}% + \insert\footins{\reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext + {\rule{\z@}{\footnotesep}\ignorespaces + #1\strut}}\@noftnotetrue} + +\newcount\@xnumdepth \@xnumdepth = 0 + +\@definecounter{xnumi} +\@definecounter{xnumii} +\@definecounter{xnumiii} +\@definecounter{xnumiv} +\@definecounter{exx} +\setcounter{exx}{0} +\def\thexnumi{\@xsi{xnumi}} +\def\thexnumii{\@xsii{xnumii}} +\def\thexnumiii{\@xsiii{xnumiii}} +\def\thexnumiv{\@xsiv{xnumiv}} +\def\p@xnumii{\thexnumi} +\def\p@xnumiii{\thexnumi\thexnumii-} +\def\p@xnumiv{\thexnumi\thexnumii-\thexnumiii-} + +\def\xs@default#1{\csname @@xs#1\endcsname} +\def\@@xsi{\let\@xsi\arabic} +\def\@@xsii{\let\@xsii\alph} +\def\@@xsiii{\let\@xsiii\roman} +\def\@@xsiv{\let\@xsi\arabic} + +\@definecounter{rxnumi} +\@definecounter{rxnumii} +\@definecounter{rxnumiii} +\@definecounter{rxnumiv} + +\def\save@counters{% +\setcounter{rxnumi}{\value{xnumi}}% +\setcounter{rxnumii}{\value{xnumii}}% +\setcounter{rxnumiii}{\value{xnumiii}}% +\setcounter{rxnumiv}{\value{xnumiv}}}% + + +\def\reset@counters{% +\setcounter{xnumi}{\value{rxnumi}}% +\setcounter{xnumii}{\value{rxnumii}}% +\setcounter{xnumiii}{\value{rxnumiii}}% +\setcounter{xnumiv}{\value{rxnumiv}}}% + + +\def\exewidth#1{\def\@exwidth{#1}} \exewidth{(234)} +\def\exe{\@ifnextchar [{\@exe}{\@exe[\@exwidth]}} + +\def\@exe[#1]{\ifnum \@xnumdepth >0% + \if@xrec\@exrecwarn\fi% + \if@noftnote\@exrecwarn\fi% + \@xnumdepth0\@listdepth0\@xrectrue% + \save@counters% + \fi% + \advance\@xnumdepth \@ne \@@xsi% + \begin{list}{(\thexnumi)}% + {\usecounter{xnumi}\@subex{#1}{1em}% + \if@noftnote% + \setcounter{xnumi}{\value{exx}}% + \else% + \setcounter{xnumi}{\value{fnx}}% + \fi}} + +\def\endexe{\if@noftnote\setcounter{exx}{\value{xnumi}}% + \else\setcounter{fnx}{\value{xnumi}}% + \reset@counters\@xrecfalse\fi\end{list}} + +\def\@exrecwarn{\typeout{*** Recursion on "exe"---your + example numbering will probably be screwed up!}} + +\def\xlist{\@ifnextchar [{\@xlist{}}{\@xlist{}[iv.]}} +\def\xlista{\@ifnextchar [{\@xlist{\alph}}{\@xlist{\alph}[m.]}} +\def\xlisti{\@ifnextchar [{\@xlist{\roman}}{\@xlist{\roman}[iv.]}} +\def\xlistn{\@ifnextchar [{\@xlist{\arabic}}{\@xlist{\arabic}[9.]}} +\def\xlistA{\@ifnextchar [{\@xlist{\Alph}}{\@xlist{\Alph}[M.]}} +\def\xlistI{\@ifnextchar [{\@xlist{\Roman}}{\@xlist{\Roman}[IV.]}} + +\def\endxlist{\end{list}} +\def\endxlista{\end{list}} +\def\endxlistn{\end{list}} +\def\endxlistA{\end{list}} +\def\endxlistI{\end{list}} +\def\endxlisti{\end{list}} + + +%%% a generic sublist-styler +\def\@xlist#1[#2]{\ifnum \@xnumdepth >3 \@toodeep\else% + \advance\@xnumdepth \@ne% + \edef\@xnumctr{xnum\romannumeral\the\@xnumdepth}% + \def\@bla{#1} + \ifx\@bla\empty\xs@default{\romannumeral\the\@xnumdepth}\else% + \expandafter\let\csname @xs\romannumeral\the\@xnumdepth\endcsname#1\fi + \begin{list}{\csname the\@xnumctr\endcsname.}% + {\usecounter{\@xnumctr}\@subex{#2}{1.5ex}}\fi} + +\def\@subex#1#2{\settowidth{\labelwidth}{#1}\itemindent\z@\labelsep#2% + \ifnum\the\@xnumdepth=1% + \topsep 7\p@ plus2\p@ minus3\p@\itemsep3\p@ plus2\p@\else% + \topsep1.5\p@ plus\p@\itemsep1.5\p@ plus\p@\fi% + \parsep\p@ plus.5\p@ minus.5\p@% + \leftmargin\labelwidth\advance\leftmargin#2\relax} + +%%% the example-items +\def\ex{\@ifnextchar [{\@ex}{\item}} +\def\@ex[#1]#2{\item\@exj[#1]{#2}} +\def\@exj[#1]#2{\@exjbg{#1} #2 \end{list}} +\def\exi#1{\item[#1]\@ifnextchar [{\@exj}{}} +\def\judgewidth#1{\def\@jwidth{#1}} +\judgewidth{??} +\def\@exjbg#1{\begin{list}{#1}{\@subex{\@jwidth}{.5ex}}\item} +\def\exr#1{\exi{{(\ref{#1})}}} +\def\exp#1{\exi{{(\ref{#1}$'$)}}} +\def\sn{\exi{}} +\def\bu{\item[$\bullet$]} + +%%% Lazy abbrevs (HANDLE WITH CARE!) +\def\ea{\ifnum\@xnumdepth=0\begin{exe}[(234)]\else\begin{xlist}[iv.]\fi\ex} +\def\z{\ifnum\@xnumdepth=1\end{exe}\else\end{xlist}\fi} + + +%%%%%%% \lcomment for breaks in (example-)lists (leaves all counters +%%%%%%% as they are) (hpk) +\newlength{\lcommentsep} +\lcommentsep = 1ex + +\long\def\lcomment#1% + {\vspace{\lcommentsep} + \item[]\hspace*{-\leftmargin}% + \@tempskipa=\linewidth% + \addtolength{\@tempskipa}{\rightmargin}% + \addtolength{\@tempskipa}{\leftmargin}% + \parbox{\@tempskipa}{#1}% + \vspace{\lcommentsep}% + } + +%%%%%% control the alignment of exampleno. and (picture-)example +%%%%%% (by Lex Holt <lex@cogsci.ed.ac.uk>). +\def\attop#1{\leavevmode\vtop{\strut\vskip-\baselineskip\vbox{#1}}} +\def\atcenter#1{$\vcenter{#1}$} +%%%%%% + +%-------------------Move Arrows (from J.Frampton): + +\def\leaderfill{\leaders\hrule\hfil} +\def\pointerup{\hbox to 0pt{\hss + \vbox{\offinterlineskip\vskip-1pt\hbox{\elevenex\char'170}\null}\hss}} +\def\pointerdown{\hbox to 0pt{\hss + \vtop{\offinterlineskip\null\hbox{\elevenex\char'171}\vskip-1pt}\hss}} + +\let\pu=\pointerup +\let\pd=\pointerdown +\let\lf=\leaderfill + +\def\spacer{\hskip4.5pt} +\def\fillright#1{\hfil#1\leaderfill} +\def\fillleft#1{\leaderfill#1\hfil} +% Changed spelling to \centr, else conflicts with LaTeX \center{} -CT +\def\centr#1{\leaderfill#1\leaderfill} +\def\link#1{\multispan#1\leaderfill} + +\def\arrowalign#1{\vtop{\baselineskip=0pt \lineskiplimit=0pt \lineskip=2pt + \halign{&##\cr#1}}} + +\font\elevenex=cmex10 scaled\magstephalf % just for the arrow! + %PS: this may not work on some installations, not sure why. CT + %%PPS: (e.g., PCTeX, but it works find works fine with EmTeX) +%----------------END Move Arrows + +\def\pijl{$\rightarrow$\ } + +% Special accents for Vata & Gbadi; Navajo coming soon, I hope...: +%\def\bb#1{$\mathrm{\overline{#1}}$} Following looks better: +\def\bb#1{\ifmmode\overline{\mathrm{#1}}\else$\bar{\mathrm{#1}}$\fi} + +\def\boven#1#2{\raisebox{-0.2pt}{$\stackrel{#1}{\mathrm{#2}}$}} +\def\bovenop#1#2{\raisebox{-0.06ex}[0ex][0ex]{$\stackrel{#1}{\mathrm{#2}}$}} +\def\vl{\rule{0.05em}{0.30em}} +\def\|#1{\ifmmode\vert#1\else\bovenop{\vl}{#1}\fi} |