summaryrefslogtreecommitdiff
path: root/fonts/tolkienfonts/tex/latex/boustr.sty
diff options
context:
space:
mode:
Diffstat (limited to 'fonts/tolkienfonts/tex/latex/boustr.sty')
-rw-r--r--fonts/tolkienfonts/tex/latex/boustr.sty104
1 files changed, 104 insertions, 0 deletions
diff --git a/fonts/tolkienfonts/tex/latex/boustr.sty b/fonts/tolkienfonts/tex/latex/boustr.sty
new file mode 100644
index 0000000000..c1bf8094b4
--- /dev/null
+++ b/fonts/tolkienfonts/tex/latex/boustr.sty
@@ -0,0 +1,104 @@
+%% boustr.sty
+%% Part of the tolkienfonts package
+%% Copyright 2010 Ariel Barton
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Ariel Barton.
+%
+% This work consists of all the files listed in Appendix F of the file
+% `tolkienfontsdoc.pdf'.
+%
+% Version: 2
+
+\ProvidesPackage{boustr}[2010/08/29]
+
+\RequirePackage{graphicx}
+
+\def\zeroToSp@boust{\parskip=1sp plus 1pt
+ \parfillskip = 1sp plus 1fil
+ %\advance\leftskip by 1sp
+ %\advance\rightskip by 1sp
+ \def\vfil{\vskip 1sp plus 1fil}
+ \def\vfill{\vskip 1sp plus 1fill}
+ \abovedisplayshortskip = 1sp plus 3pt
+ \postdisplaypenalty = 1
+ \interlinepenalty=1}
+
+\def\oddboxstep@boust{%
+ \ifodd\lines@boust\global\setbox1=\vbox{\box0\unvbox1}
+ \else\global\setbox1=\vtop{\noindent\reflectbox{\box0}\unvbox1}\fi
+ \global\advance\lines@boust 1
+ }
+\def\evenboxstep@boust{%
+ \ifodd\lines@boust\global\setbox1=\vbox{\noindent\reflectbox{\box0}\unvbox1}
+ \else\global\setbox1=\vtop{\box0\unvbox1}\fi
+ \global\advance\lines@boust 1
+ }
+\def\allboxstep@boust{%
+ \global\setbox1=\vtop{\noindent\reflectbox{\box0}\unvbox1}
+ }
+
+\def\fliplines@boust#1{%
+ \global\lines@boust=0%
+ \global\setbox1 = \vbox{}%
+ \loop\Anyleft@boustfalse
+ \ifdim\lastskip=0pt \ifdim\lastkern=0pt \ifnum\lastpenalty=0
+ \global\setbox0=\lastbox \ifvoid0
+ \else\Anyleft@bousttrue \csname #1boxstep@boust\endcsname \fi
+ \else\Anyleft@bousttrue
+ \pen@boust=\lastpenalty
+ \global\setbox1=\vtop{\penalty\pen@boust\unvbox1}\unpenalty\fi
+ \else\Anyleft@bousttrue
+ \dimen0=\lastkern
+ \global\setbox1=\vtop{\kern\dimen0\unvbox1}\unkern\fi
+ \else\Anyleft@bousttrue
+ \skip0=\lastskip
+ \global\setbox1=\vtop{\vskip\skip0\unvbox1}\unskip\fi
+ \ifAnyleft@boust\repeat}
+
+\newcount\lines@boust
+\newcount\pen@boust
+\newif\ifAnyleft@boust
+\newif\ifboustright \boustrighttrue
+\newif\ifNoindent@boust
+
+\newenvironment{rtl}{\ifvmode\Noindent@boustfalse\else\Noindent@bousttrue\fi
+\par\setbox4=\vtop\bgroup\zeroToSp@boust\ifNoindent@boust\noindent\fi}
+{\egroup
+\dimen0 = -\ht4 \ifdim\prevdepth>0pt\advance\dimen0 -\prevdepth\fi
+\advance\dimen0 \baselineskip
+\ifdim\dimen0 <\lineskiplimit \dimen0=\lineskip \fi
+\ifdim\prevdepth>0pt\vskip\dimen0\fi
+\ifNoindent@boust\else\vskip\parskip\fi
+\setbox3 = \vbox{\unvcopy4\fliplines@boust{all}}
+\ifvoid3\else\unvbox3\fi
+\noindent\unvbox1}
+
+\newenvironment{boustrophedon}{\ifvmode\Noindent@boustfalse\else\Noindent@bousttrue\fi
+\par\setbox4=\vtop\bgroup\zeroToSp@boust\ifNoindent@boust\noindent\fi}
+{\egroup
+\dimen0=-\ht4\advance\dimen0-\prevdepth\advance\dimen0\baselineskip
+\ifdim\dimen0<\lineskiplimit\dimen0=\lineskip\fi
+\ifdim\prevdepth>0pt\vskip\dimen0\fi\ifNoindent@boust\else\vskip\parskip\fi
+\setbox3=\vbox{\unvcopy4\fliplines@boust{odd}}
+\ifboustright
+ \ifodd\lines@boust\else\setbox3=\vbox{\unvcopy4\fliplines@boust{even}}\fi
+\else
+ \ifodd\lines@boust\setbox3=\vbox{\unvcopy4\fliplines@boust{even}}\fi
+\fi
+\ifvoid3\else\unvbox3\fi\unvbox1\noindent\ignorespacesafterend}
+
+\newenvironment{sidewaysflip}[1]
+{\ifvmode\Noindent@boustfalse\else\Noindent@bousttrue\fi
+\par\setbox4=\vtop\bgroup\hsize=#1\zeroToSp@boust\ifNoindent@boust\noindent\fi}
+{\egroup\noindent\rotatebox[origin=c]{90}{\reflectbox{\box4}}\par\noindent\ignorespacesafterend}
+% May 2010: Added the \noindent \ No newline at end of file