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/cgloss4e.sty | |
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/cgloss4e.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/gb4e/cgloss4e.sty | 165 |
1 files changed, 165 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 |