% -*- 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 gb4e-doc.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}
%  environments (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.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Fixed various bugs and design shortcomings, and renamed gbpenn.sty
%
% Modifications:
% - No brackets needed around examples with judgements.
% - An exdented judgement can be provided with the command \judge[*]
%  (which also causes a line break).
% - \trans in cgloss can also take a [] judgement argument.
% - \pu, \pd are commented out.  Use \pointerup, \pointerdown.
% - No extra space between examples. (Should be a parameter).
%
% I did not update the documentation file.
% Alexis Dimitriadis
%
%
% Bugfix version, 2004/04/22 
% (bug discovered by Tom McFadden): 
% Corrected redefinition of \@footnotetext, which used to break  
% other packages that need to modify the behavior of footnotes. (In 
% particular: it used to disrupt the proper behavior of doublespacing 
% with setspace.sty). 
%



%%%%%%%%%%%%%%%%%%%%%%%%
%  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)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\@ifundefined{new@fontshape}{\def\reset@font{}\let\mathrm\rm}{}

\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\mit{\sb{#1}}\else${}\sb{#1}$\fi}
\catcode`^=\active
\def^#1{\ifmmode\mit{\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}

%%%% Get examples in footnotes right

% Replaces code in original gb4e.sty: changed 2004/04/22 by Alexis
% same function as before, but the old version interacted poorly with
% other packages that redefine \@footnotetext.

\let\@gbsaved@footnotetext=\@footnotetext
\long\def\@footnotetext#1{%
    \@noftnotefalse\setcounter{fnx}{0}%
    \@gbsaved@footnotetext{#1}%
    \@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%
                        %      \message{footnote thingy!!!}%
                                 \setcounter{xnumi}{\value{fnx}}%
                              \fi}}

% (replaced with modified code below)
%\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.]}}

% modified code (by Alexis) below here:

\def\endxlist{\@unjj\end{list}}
\let\endxlista\endxlist
\let\endxlistn\endxlist
\let\endxlistA\endxlist
\let\endxlistI\endxlist
\let\endxlisti\endxlist


\def\endexe{\if@noftnote\setcounter{exx}{\value{xnumi}}%
                   \else\setcounter{fnx}{\value{xnumi}}%
                        \reset@counters\@xrecfalse\fi\@unjj\end{list}}

%%% a generic sublist-styler
\def\@xlist#1[#2]{\@unjj\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@\else%
% Changed for close-together lines; Alexis
%        \topsep 2\p@ plus2\p@\fi\parsep 2\p@ plus\p@ minus\p@%
         \topsep 2\p@ plus2\p@\fi\parsep 0\p@\relax
         \itemsep \parsep\leftmargin\labelwidth\advance\leftmargin#2\relax}

%%% the example-items

\def\judgewidth#1{\def\@jwidth{#1}}
\judgewidth{??}

\newif\ifinjudge
\def\@jj{\begingroup\list{}{\@subex{\@jwidth}{.5ex}}\injudgetrue \item}
\def\@dojj{\@ifnextchar [{\@jj}{}}
\def\@unjj{\ifinjudge \endlist\endgroup \fi}
\def\judge[#1]{\exi{}[#1]}

\def\ex{\@unjj\item\@dojj}
\def\exi#1{\@unjj\item[#1]\@dojj}

\def\exr#1{\exi{{(\ref{#1})}}}
\def\exp#1{\exi{{(\ref{#1}$'$)}}}
\def\sn{\exi{}}
\def\bu{\item[$\bullet$]}


% Cooperate with cgloss to allow exdented judgements on the translation
% line
%
\def\trans{\@ifnextchar[{\penalty10000\judge}{\\*}}

%%%%%%% \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}}

% \pd screws up LaTeX's \d (underdot) command; while we're at it, got rid
% of \pu as well.
%\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}


