diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/langsci/langsci-cgloss.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/langsci/langsci-cgloss.sty | 465 |
1 files changed, 465 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langsci-cgloss.sty b/Master/texmf-dist/tex/xelatex/langsci/langsci-cgloss.sty new file mode 100644 index 00000000000..60b5c6b8bfe --- /dev/null +++ b/Master/texmf-dist/tex/xelatex/langsci/langsci-cgloss.sty @@ -0,0 +1,465 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% File: langsci-cgloss.sty +%% Author: Language Science Press (http://langsci-press.org) +%% Date: 2016-01-16 16:47:43 UTC +%% Purpose: This file contains an adpated version of the cgloss +%% package for glossing linguistic examples. +%% Language: LaTeX +%% Licence: +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% -*- LaTeX -*- + +% Modified version of cgloss4e.sty. Hacked and renamed cgloss.sty +% by Alexis Dimitriadis (alexis@babel.ling.upenn.edu) + +% 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 +% + +% Changes by Alexis Dimitriadis +% +% Removed flushleft environment and initial vskip to make macros usable +% on the same line with earlier and/or later text, e.g., +% \item Q: \gll ... \\ +% ... \\ \hfill (Greek) +% \trans Q: `...' +% Note: Text following the gloss will appear on line one of the example; +% To get a line break, insert one manually with \\ or use \trans or \glt. +% (\gln does not end the line, since it was already the +% case in cgloss4e that a translation must be ended with a line break). +% +% Modified \glt to keep translation on the same page as the text. + +% BUGS: does not work very gracefully with double spacing (struts are not +% automatically inserted after the \vboxes used by the macros). +% In double space mode without \nosinglegloss, when a translation +% is not given, the next line of text is single-spaced from the glossed text. +% With \nosinglegloss, the translation is set too close to the bottom line. + + +%%% +%%% 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. + {\raggedright% + \bgroup %\begin{flushleft} + \ifx\@gsingle1% conditionally force single spacing (hpk/MC) + \def\baselinestretch{1}\@selfnt\fi +% \vskip\baselineskip\def\baselinestretch{1}% +% \@selfnt\vskip-\baselineskip\fi% + \bgroup + \twosent +} + +\def\glll% % Introduces 3-line text-and-gloss. + {\bgroup %\begin{flushleft} + \ifx\@gsingle1% conditionally force single spacing (hpk/MC) + \def\baselinestretch{1}\@selfnt\fi +% \vskip\baselineskip\def\baselinestretch{1}% +% \@selfnt\vskip-\baselineskip\fi% + \bgroup + \threesent +} + + +\def\gllll% % Introduces 4-line text-and-gloss. + {\bgroup %\begin{flushleft} + \ifx\@gsingle1% conditionally force single spacing (hpk/MC) + \def\baselinestretch{1}\@selfnt\fi +% \vskip\baselineskip\def\baselinestretch{1}% +% \@selfnt\vskip-\baselineskip\fi% + \bgroup + \foursent +} + + +\def\glllll% % Introduces 5-line text-and-gloss. + {\bgroup %\begin{flushleft} + \ifx\@gsingle1% conditionally force single spacing (hpk/MC) + \def\baselinestretch{1}\@selfnt\fi +% \vskip\baselineskip\def\baselinestretch{1}% +% \@selfnt\vskip-\baselineskip\fi% + \bgroup + \fivesent +} + + +\def\gllllll% % Introduces 6-line text-and-gloss. + {\bgroup %\begin{flushleft} + \ifx\@gsingle1% conditionally force single spacing (hpk/MC) + \def\baselinestretch{1}\@selfnt\fi +% \vskip\baselineskip\def\baselinestretch{1}% +% \@selfnt\vskip-\baselineskip\fi% + \bgroup + \sixsent +} + + +\def\glllllll% % Introduces 7-line text-and-gloss. + {\bgroup %\begin{flushleft} + \ifx\@gsingle1% conditionally force single spacing (hpk/MC) + \def\baselinestretch{1}\@selfnt\fi +% \vskip\baselineskip\def\baselinestretch{1}% +% \@selfnt\vskip-\baselineskip\fi% + \bgroup + \sevensent +} + + +\def\gllllllll% % Introduces 8-line text-and-gloss. + {\bgroup %\begin{flushleft} + \ifx\@gsingle1% conditionally force single spacing (hpk/MC) + \def\baselinestretch{1}\@selfnt\fi +% \vskip\baselineskip\def\baselinestretch{1}% +% \@selfnt\vskip-\baselineskip\fi% + \bgroup + \eightsent +} + +% \def\glt{\vskip.0\baselineskip} + +% redefine \gltoffset to set off translation from ex and gloss +\@ifundefined{gltoffset}{\def\gltoffset{0pt}}{} + +\def\glt{\ifhmode\\*[\gltoffset]\else\nobreak\vskip\gltoffset\nobreak\fi} + + +% Introduces a translation +\let\trans\glt + +\def\gln{\relax} +\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\linefour +\newbox\linefive +\newbox\linesix +\newbox\lineseven +\newbox\lineeight +\newbox\wordone % a word from the first line (hbox) +\newbox\wordtwo +\newbox\wordthree +\newbox\wordfour +\newbox\wordfive +\newbox\wordsix +\newbox\wordseven +\newbox\wordeight +\newbox\gline % the constructed double line (hbox) +\newskip\glossglue % extra glue between glossed pairs or tuples +\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=\upshape}{\relax} +\@ifundefined{eachwordtwo}{\let\eachwordtwo=\upshape}{\relax} +\@ifundefined{eachwordthree}{\let\eachwordthree=\upshape}{\relax} +\@ifundefined{eachwordfour}{\let\eachwordfour=\upshape}{\relax} +\@ifundefined{eachwordfive}{\let\eachwordfive=\upshape}{\relax} +\@ifundefined{eachwordsix}{\let\eachwordsix=\upshape}{\relax} +\@ifundefined{eachwordseven}{\let\eachwordseven=\upshape}{\relax} +\@ifundefined{eachwordeight}{\let\eachwordeight=\upshape}{\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} + + + +\gdef\foursent#1\\ #2\\ #3\\ #4\\{% #1 = first line, #2 = second line, #3 = third + \getwords(\lineone,\eachwordone)#1 \\% + \getwords(\linetwo,\eachwordtwo)#2 \\% + \getwords(\linethree,\eachwordthree)#3 \\% + \getwords(\linefour,\eachwordfour)#4 \\% + \loop\lastword{\eachwordone}{\lineone}{\wordone}% + \lastword{\eachwordtwo}{\linetwo}{\wordtwo}% + \lastword{\eachwordthree}{\linethree}{\wordthree}% + \lastword{\eachwordfour}{\linefour}{\wordfour}% + \global\setbox\gline=\hbox{\unhbox\gline + \hskip\glossglue + \vtop{\box\wordone % vtop was vbox + \nointerlineskip + \box\wordtwo + \nointerlineskip + \box\wordthree + \nointerlineskip + \box\wordfour + }% + }% + \testdone + \ifnotdone + \repeat + \egroup % matches \bgroup in \gloss + \gl@stop} + + + +\gdef\fivesent#1\\ #2\\ #3\\ #4\\ #5\\{% #1 = first line, #2 = second line, #3 = third + \getwords(\lineone,\eachwordone)#1 \\% + \getwords(\linetwo,\eachwordtwo)#2 \\% + \getwords(\linethree,\eachwordthree)#3 \\% + \getwords(\linefour,\eachwordfour)#4 \\% + \getwords(\linefive,\eachwordfive)#5 \\% + \loop\lastword{\eachwordone}{\lineone}{\wordone}% + \lastword{\eachwordtwo}{\linetwo}{\wordtwo}% + \lastword{\eachwordthree}{\linethree}{\wordthree}% + \lastword{\eachwordfour}{\linefour}{\wordfour}% + \lastword{\eachwordfive}{\linefive}{\wordfive}% + \global\setbox\gline=\hbox{\unhbox\gline + \hskip\glossglue + \vtop{\box\wordone % vtop was vbox + \nointerlineskip + \box\wordtwo + \nointerlineskip + \box\wordthree + \nointerlineskip + \box\wordfour + \nointerlineskip + \box\wordfive + }% + }% + \testdone + \ifnotdone + \repeat + \egroup % matches \bgroup in \gloss + \gl@stop} + + + +\gdef\sixsent#1\\ #2\\ #3\\ #4\\ #5\\ #6\\{% #1 = first line, #2 = second line, #3 = third + \getwords(\lineone,\eachwordone)#1 \\% + \getwords(\linetwo,\eachwordtwo)#2 \\% + \getwords(\linethree,\eachwordthree)#3 \\% + \getwords(\linefour,\eachwordfour)#4 \\% + \getwords(\linefive,\eachwordfive)#5 \\% + \getwords(\linesix,\eachwordsix)#6 \\% + \loop\lastword{\eachwordone}{\lineone}{\wordone}% + \lastword{\eachwordtwo}{\linetwo}{\wordtwo}% + \lastword{\eachwordthree}{\linethree}{\wordthree}% + \lastword{\eachwordfour}{\linefour}{\wordfour}% + \lastword{\eachwordfive}{\linefive}{\wordfive}% + \lastword{\eachwordsix}{\linesix}{\wordsix}% + \global\setbox\gline=\hbox{\unhbox\gline + \hskip\glossglue + \vtop{\box\wordone % vtop was vbox + \nointerlineskip + \box\wordtwo + \nointerlineskip + \box\wordthree + \nointerlineskip + \box\wordfour + \nointerlineskip + \box\wordfive + \nointerlineskip + \box\wordsix + }% + }% + \testdone + \ifnotdone + \repeat + \egroup % matches \bgroup in \gloss + \gl@stop} + + + +\gdef\sevensent#1\\ #2\\ #3\\ #4\\ #5\\ #6\\ #7\\{% #1 = first line, #2 = second line, #3 = third + \getwords(\lineone,\eachwordone)#1 \\% + \getwords(\linetwo,\eachwordtwo)#2 \\% + \getwords(\linethree,\eachwordthree)#3 \\% + \getwords(\linefour,\eachwordfour)#4 \\% + \getwords(\linefive,\eachwordfive)#5 \\% + \getwords(\linesix,\eachwordsix)#6 \\% + \getwords(\lineseven,\eachwordseven)#7 \\% + \loop\lastword{\eachwordone}{\lineone}{\wordone}% + \lastword{\eachwordtwo}{\linetwo}{\wordtwo}% + \lastword{\eachwordthree}{\linethree}{\wordthree}% + \lastword{\eachwordfour}{\linefour}{\wordfour}% + \lastword{\eachwordfive}{\linefive}{\wordfive}% + \lastword{\eachwordsix}{\linesix}{\wordsix}% + \lastword{\eachwordseven}{\lineseven}{\wordseven}% + \global\setbox\gline=\hbox{\unhbox\gline + \hskip\glossglue + \vtop{\box\wordone % vtop was vbox + \nointerlineskip + \box\wordtwo + \nointerlineskip + \box\wordthree + \nointerlineskip + \box\wordfour + \nointerlineskip + \box\wordfive + \nointerlineskip + \box\wordsix + \nointerlineskip + \box\wordseven + }% + }% + \testdone + \ifnotdone + \repeat + \egroup % matches \bgroup in \gloss + \gl@stop} + + + +\gdef\eightsent#1\\ #2\\ #3\\ #4\\ #5\\ #6\\ #7\\ #8\\{% #1 = first line, #2 = second line, #3 = third + \getwords(\lineone,\eachwordone)#1 \\% + \getwords(\linetwo,\eachwordtwo)#2 \\% + \getwords(\linethree,\eachwordthree)#3 \\% + \getwords(\linefour,\eachwordfour)#4 \\% + \getwords(\linefive,\eachwordfive)#5 \\% + \getwords(\linesix,\eachwordsix)#6 \\% + \getwords(\lineseven,\eachwordseven)#7 \\% + \getwords(\lineeight,\eachwordeight)#8 \\% + \loop\lastword{\eachwordone}{\lineone}{\wordone}% + \lastword{\eachwordtwo}{\linetwo}{\wordtwo}% + \lastword{\eachwordthree}{\linethree}{\wordthree}% + \lastword{\eachwordfour}{\linefour}{\wordfour}% + \lastword{\eachwordfive}{\linefive}{\wordfive}% + \lastword{\eachwordsix}{\linesix}{\wordsix}% + \lastword{\eachwordseven}{\lineseven}{\wordseven}% + \lastword{\eachwordeight}{\lineeight}{\wordeight}% + \global\setbox\gline=\hbox{\unhbox\gline + \hskip\glossglue + \vtop{\box\wordone % vtop was vbox + \nointerlineskip + \box\wordtwo + \nointerlineskip + \box\wordthree + \nointerlineskip + \box\wordfour + \nointerlineskip + \box\wordfive + \nointerlineskip + \box\wordsix + \nointerlineskip + \box\wordseven + \nointerlineskip + \box\wordeight + }% + }% + \testdone + \ifnotdone + \repeat + \egroup % matches \bgroup in \gloss + \gl@stop} + +%\def\gl@stop{{\hskip -\glossglue}\unhbox\gline\end{flushleft}} + +% \leavevmode puts us back in horizontal mode, so that a \\ will work +\def\gl@stop{{\hskip -\glossglue}\unhbox\gline\leavevmode \egroup} + +\endinput
\ No newline at end of file |