summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/langsci/langsci-jambox.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/langsci/langsci-jambox.sty')
-rw-r--r--Master/texmf-dist/tex/xelatex/langsci/langsci-jambox.sty93
1 files changed, 93 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langsci-jambox.sty b/Master/texmf-dist/tex/xelatex/langsci/langsci-jambox.sty
new file mode 100644
index 00000000000..ccf65af5762
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/langsci/langsci-jambox.sty
@@ -0,0 +1,93 @@
+%%%%%%%%%%%%%%%%%% JAMBOX: RIGHT-COLUMN ANNOTATIONS %%%%%%%%%%%%%%%%
+%
+% Alexis Dimitriadis
+%
+% This is version 0.3 (informal release, Nov. 2003).
+%
+% Line up material a fixed distance from the right margin. For annotating
+% example sentences, usually with a short note in parentheses.
+% May overflow to the left or right, or line up on the next line as necessary.
+%
+% \jambox[width]{text} Align 'text' starting 'width' distance from the
+% right margin (default \the\jamwidth).
+% \jam(something) Align a note delimited by parentheses (which are
+% retained). No optional argument.
+% \jambox*{text} Set \jamwidth to the width of 'text', then align it.
+% (\jamwidth stays set for the rest of the environment).
+%
+% Notes:
+%
+% Distance from the right margin can be set to an explicit amount, or to the
+% width of some piece of text, as follows:
+%
+% \jamwidth=2in\relax Or
+% \settowidth\jamwidth {(``annotation'')}
+%
+% \jamwidth is locally scoped, so it can be set globally or inside an example
+% environment.
+%
+% BUG: Not compatible with ragged-right mode.
+%
+% Incompatibilities: Not useful with the vanilla cgloss4e.sty, which ends
+% glossed lines prematurely.
+% I do have a suitably modified file, cgloss.sty. With it you can do the
+% following:
+% \gll To kimeno. \\
+% the text \\ \jambox{(Greek)}
+% \trans `The text.'
+
+
+\newdimen\jamwidth \jamwidth=2in
+\def\jambox{\@ifnextchar[{\@jambox}
+ {\@ifnextchar*{\@jamsetbox}{\@jambox[\the\jamwidth]}}}
+
+% Quickie invocation: The argument is delimited by the parentheses (no width
+% argument allowed). I redefine it in my documents to add formatting.
+% Syntax: \jam(Some note)
+%
+\def\jam(#1){\jambox{(#1)}}
+
+% Set width AND display the argument.
+% The star is read and ignored; the argument #1 is boxed, used to set
+% \jamwidth, then passed to \@jambox (which also puts it in \@tempboxa!)
+%
+\def\@jamsetbox*#1{\setbox\@tempboxa\hbox{#1}\jamwidth=\wd\@tempboxa
+ \@jambox[\the\jamwidth]{\box\@tempboxa}}
+
+%% Version 1: old & stupid
+%% \def\@jambox[#1]#2{\hfill\hbox to #1 {#2\hfil}}
+
+% Version 2:
+% Always takes up \jamwidth space, even if it means breaking the line. But it
+% works on ragged-right mode, too.
+% \def\@jambox[#1]#2{\setbox\@tempboxa\hbox {#2\hfil}%
+% \ifdim \wd\@tempboxa<#1\relax \wd\@tempboxa=#1\relax\fi
+% \hskip 0.5em plus 1fill
+% \penalty 100\vadjust{}\nobreak\hfill\box\@tempboxa\par}
+% The penalty enables a break. \vadjust inserts an empty element
+% at the beginning of the next line, protecting \hfill from being discarded.
+
+% Version 3:
+% This seems to cover everything! But unfortunately, it won't work in
+% ragged-right mode-- the line is broken BEFORE the last word, to make enough
+% space...
+\def\@jambox[#1]#2{{\setbox\@tempboxa\hbox {#2}%
+ \ifdim \wd\@tempboxa<#1\relax % if label fits in the alloted space:
+ \@tempdima=#1\relax \advance\@tempdima by-\wd\@tempboxa % remaining \hspace
+ \unskip\nobreak\hfill\penalty250 % break line here if necessary
+ \hskip 1.2em minus 1.2em % used when the line extends past the margin
+ \hbox{}\nobreak\hfill\box\@tempboxa\nobreak
+ \hskip\@tempdima minus \@tempdima\hbox{}%
+ \else % the label is too wide: just right-align it
+ \hfill\penalty50\hbox{}\nobreak\hfill\box\@tempboxa
+ \fi
+ % suppress closing glue:
+ \parfillskip=0pt \finalhyphendemerits=0 \par}}
+% The penalty enables a break, taken only if the line cannot fit.
+% The \hbox{} ensures the next line does not begin with \hfill, which would
+% be discarded if initial.
+% (\vadjust inserts an empty element at the beginning of the next line, so
+% that COULD be used instead of \hbox{}).
+% Algorithm adapted from The TeXBook.
+%
+% The closing \par could be a problem if there is a \parskip...