diff options
Diffstat (limited to 'fonts/tolkienfonts/tex/latex/boustr.sty')
-rw-r--r-- | fonts/tolkienfonts/tex/latex/boustr.sty | 104 |
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 |