summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/gb4e
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-12-25 19:59:46 +0000
committerKarl Berry <karl@freefriends.org>2007-12-25 19:59:46 +0000
commit45330fd64d73a7d3af25462ac003ac49e56f7a09 (patch)
tree11af70d833f6fbafe2f3a5e2f1c6b9bcb240bc22 /Master/texmf-dist/tex/latex/gb4e
parentdc73e95749999fd0f8f29353c34a46010f26c643 (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.sty165
-rw-r--r--Master/texmf-dist/tex/latex/gb4e/gb4e.sty316
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}