diff options
author | Karl Berry <karl@freefriends.org> | 2016-05-02 23:39:30 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-05-02 23:39:30 +0000 |
commit | 4141c4aa83d1ead340876cdc2b8408b754bd9b69 (patch) | |
tree | b48928c20ceb05f7a9b8bfc92b1755f20e73fb7a /Master/texmf-dist/tex/latex/bidi/bidituftefloat.sty | |
parent | a2e546fd16ad80846377eeb25715c877e57d69c3 (diff) |
bidi (2may16)
git-svn-id: svn://tug.org/texlive/trunk@40842 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/bidi/bidituftefloat.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/bidi/bidituftefloat.sty | 601 |
1 files changed, 601 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/bidi/bidituftefloat.sty b/Master/texmf-dist/tex/latex/bidi/bidituftefloat.sty new file mode 100644 index 00000000000..7ea0985f5ac --- /dev/null +++ b/Master/texmf-dist/tex/latex/bidi/bidituftefloat.sty @@ -0,0 +1,601 @@ +%% +%% This is file `bidituftefloat.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% bidi.dtx (with options: `table,bidituftefloat.sty') +%% +%% __________________________________________________ +%% Copyright (c) 2009--2016 Vafa Khalighi <persian-tex@tug.org> +%% +%% It may be distributed and/or modified under the LaTeX Project Public License, +%% version 1.3c or higher (your choice). The latest version of +%% this license is at: http://www.latex-project.org/lppl.txt +%% +%% This work is “author-maintained” (as per LPPL maintenance status) +%% by Vafa Khalighi. +%% +%% +%% \CheckSum{46409} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{bidituftefloat}[2011/06/14 v0.1 +bidi implementation of tufte float] +\RequirePackage{xifthen} +\newcommand{\@bidituftefloat@pkgname}{bidituftefloat} +\newcommand{\bidituftefloatError}[2]{\PackageError{\@bidituftefloat@pkgname}{#1}{#2}} +\newcommand{\bidituftefloatDebugInfoNL}[1]{\ifthenelse{\boolean{@bidituftefloat@debug}}{\bidituftefloatInfoNL{#1}}{}} +\newcommand{\bidituftefloatInfoNL}[1]{\PackageInfo{\@bidituftefloat@pkgname}{#1\@gobble}} +\newboolean{@bidituftefloat@RTLgeometry} +\setboolean{@bidituftefloat@RTLgeometry}{true} +\DeclareOption{RTLgeometry}{\setboolean{@bidituftefloat@RTLgeometry}{true}} +\DeclareOption{LTRgeometry}{\setboolean{@bidituftefloat@RTLgeometry}{false}} +\newboolean{@bidituftefloat@afourpaper} +\DeclareOption{a4paper}{\setboolean{@bidituftefloat@afourpaper}{true}} +\newboolean{@bidituftefloat@bfivepaper} +\DeclareOption{b5paper}{\setboolean{@bidituftefloat@bfivepaper}{true}} +\newboolean{@bidituftefloat@symmetric} +\newboolean{@bidituftefloat@twoside} +\DeclareOption{twoside}{% +\@twosidetrue \@mparswitchtrue% +\setboolean{@bidituftefloat@twoside}{true}% +\setboolean{@bidituftefloat@symmetric}{true}% +} +\DeclareOption{oneside}{% +\@twosidefalse \@mparswitchfalse% +\setboolean{@bidituftefloat@twoside}{false}% +\setboolean{@bidituftefloat@symmetric}{false}% +} +\@ifclassloaded{book}{\ExecuteOptions{twoside}}{} +\newboolean{@bidituftefloat@debug} +\newcommand*{\@bidituftefloat@caption@justification}{\@bidituftefloat@justification@autodetect} +\ProcessOptions +%% Globally sets the length +\newcommand*{\gsetlength}[2]{% + \setlength{#1}{#2}% + \global#1=#1\relax% +} +%% Globally sets a boolean +\newcommand*{\gsetboolean}[2]{% based on code from ifthen pkg + \lowercase{\def\@tempa{#2}}% + \@ifundefined{@tempswa\@tempa}% + {\PackageError{ifthen}{You can only set a boolean to `true' or `false'}\@ehc}% + {\@ifundefined{#1\@tempa}% + {\PackageError{ifthen}{Boolean #1 undefined}\@ehc}% + {\global\csname#1\@tempa\endcsname}% + }% +} +%% Set the font sizes and baselines to match bidituftefloat's books +\renewcommand\normalsize{% + \@setfontsize\normalsize\@xpt{14}% + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} +\normalbaselineskip=14pt +\normalsize +\renewcommand\footnotesize{% + \@setfontsize\footnotesize\@viiipt{10}% + \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 3\p@ \@plus\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip +} +%% Paragraph indentation and separation for marginal text +\newcommand{\@bidituftefloat@margin@par}{% + \setlength{\RaggedRightParindent}{0.5pc}% + \setlength{\JustifyingParindent}{0.5pc}% + \setlength{\parindent}{0.5pc}% + \setlength{\parskip}{0pt}% +} +\RequirePackage{ragged2e} +\ifthenelse{\boolean{@bidituftefloat@RTLgeometry}}{% +\RequirePackage[letterpaper,right=1in,top=1in,headsep=2\baselineskip,textwidth=26pc,marginparsep=2pc,marginparwidth=12pc,textheight=44\baselineskip,headheight=\baselineskip]{geometry} +\ifthenelse{\boolean{@bidituftefloat@afourpaper}} + {\geometry{a4paper,right=24.8mm,top=27.4mm,headsep=2\baselineskip,textwidth=107mm,marginparsep=8.2mm,marginparwidth=49.4mm,textheight=49\baselineskip,headheight=\baselineskip}} + {} +\ifthenelse{\boolean{@bidituftefloat@bfivepaper}} + {\geometry{paperwidth=176mm,paperheight=250mm,right=14.66mm,top=13.88mm,textwidth=102.66mm,marginparsep=7.33mm,marginparwidth=36.66mm,textheight=38\baselineskip,includehead}} + {}}{% +\RequirePackage[letterpaper,left=1in,top=1in,headsep=2\baselineskip,textwidth=26pc,marginparsep=2pc,marginparwidth=12pc,textheight=44\baselineskip,headheight=\baselineskip]{geometry} +\ifthenelse{\boolean{@bidituftefloat@afourpaper}} + {\geometry{a4paper,left=24.8mm,top=27.4mm,headsep=2\baselineskip,textwidth=107mm,marginparsep=8.2mm,marginparwidth=49.4mm,textheight=49\baselineskip,headheight=\baselineskip}} + {} +\ifthenelse{\boolean{@bidituftefloat@bfivepaper}} + {\geometry{paperwidth=176mm,paperheight=250mm,left=14.66mm,top=13.88mm,textwidth=102.66mm,marginparsep=7.33mm,marginparwidth=36.66mm,textheight=38\baselineskip,includehead}} + {}} +\ifthenelse{\boolean{@bidituftefloat@symmetric}} + {} + {\geometry{asymmetric}}% forces internal LaTeX `twoside' +\setlength\marginparpush{10pt} +%% Font for margin items +\newcommand{\@bidituftefloat@marginfont}{\normalfont\footnotesize} +\newcommand*{\@bidituftefloat@caption@font}{\@bidituftefloat@marginfont} +\newcommand*{\setcaptionfont}[1]{\renewcommand*{\@bidituftefloat@caption@font}{#1}} +\newcommand{\@bidituftefloat@justification}{\justifying}% +\setlength\abovedisplayskip{6pt plus 2pt minus 4pt} +\setlength\belowdisplayskip{6pt plus 2pt minus 4pt} +\newboolean{@bidituftefloat@changepage} +\IfFileExists{changepage.sty}{% + \bidituftefloatDebugInfoNL{Found changepage.sty} + \RequirePackage[strict]{changepage} + \setboolean{@bidituftefloat@changepage}{true} +}{% + \bidituftefloatDebugInfoNL{Found chngpage.sty} + \RequirePackage[strict]{chngpage} + \setboolean{@bidituftefloat@changepage}{false} +} +\newboolean{@bidituftefloat@odd@page} +\setboolean{@bidituftefloat@odd@page}{true} +\newcommand*{\@bidituftefloat@checkoddpage}{% + \checkoddpage% + \ifthenelse{\boolean{@bidituftefloat@changepage}}{% + \ifoddpage% + \setboolean{@bidituftefloat@odd@page}{true}% + \else% + \setboolean{@bidituftefloat@odd@page}{false}% + \fi% + }{% + \ifcpoddpage% + \setboolean{@bidituftefloat@odd@page}{true}% + \else% + \setboolean{@bidituftefloat@odd@page}{false}% + \fi% + }% +} +\newlength{\@bidituftefloat@overhang}% used by the fullwidth environment and the running heads +\newlength{\@bidituftefloat@fullwidth} +\newlength{\@bidituftefloat@caption@fill} +\newcommand{\bidituftefloatRecalculate}{% + \setlength{\@bidituftefloat@overhang}{\marginparwidth} + \addtolength{\@bidituftefloat@overhang}{\marginparsep} + + \setlength{\@bidituftefloat@fullwidth}{\textwidth} + \addtolength{\@bidituftefloat@fullwidth}{\marginparsep} + \addtolength{\@bidituftefloat@fullwidth}{\marginparwidth} + + \setlength{\@bidituftefloat@caption@fill}{\textwidth} + \addtolength{\@bidituftefloat@caption@fill}{\marginparsep} +} +\AtBeginDocument{\bidituftefloatRecalculate} +\RequirePackage{optparams}% provides multiple optional arguments for commands +\RequirePackage{placeins} +\newsavebox{\@bidituftefloat@margin@floatbox} +\newenvironment{@bidituftefloat@margin@float}[2][-1.2ex]% + {\FloatBarrier% process all floats before this point so the figure/table numbers stay in order. + \begin{lrbox}{\@bidituftefloat@margin@floatbox}% + \begin{minipage}{\marginparwidth}% + \@bidituftefloat@caption@font% + \def\@captype{#2}% + \hbox{}\vspace*{#1}% + \@bidituftefloat@caption@justification% + \@bidituftefloat@margin@par% + \noindent% + } + {\end{minipage}% + \end{lrbox}% + \marginpar{\usebox{\@bidituftefloat@margin@floatbox}}% + } +\newenvironment{marginfigure}[1][-1.2ex]% + {\begin{@bidituftefloat@margin@float}[#1]{figure}} + {\end{@bidituftefloat@margin@float}} +\newenvironment{margintable}[1][-1.2ex]% + {\begin{@bidituftefloat@margin@float}[#1]{table}} + {\end{@bidituftefloat@margin@float}} +\newcommand*{\@bidituftefloat@justification@autodetect}{\justifying}% + +\newcommand{\@bidituftefloat@float@debug@info}{}% contains debug info generated as the float is processed +\newcommand{\@bidituftefloat@float@debug}[1]{% adds debug info to the queue for output + \ifthenelse{\equal{\@bidituftefloat@float@debug@info}{}}% + {\def\@bidituftefloat@float@debug@info{#1}}% + {\g@addto@macro\@bidituftefloat@float@debug@info{\MessageBreak#1}}% +} +\newcommand{\floatalignment}{x}% holds the current float alignment (t, b, h, p) +\newcommand{\setfloatalignment}[1]{\global\def\floatalignment{#1}\@bidituftefloat@float@debug{Forcing position: [#1]}}% manually sets the float alignment +\newboolean{@bidituftefloat@float@recto} +\newcommand{\forcerectofloat}{\gsetboolean{@bidituftefloat@float@recto}{true}\@bidituftefloat@float@debug{Forcing page: [recto]}} +\newcommand{\forceversofloat}{\gsetboolean{@bidituftefloat@float@recto}{false}\@bidituftefloat@float@debug{Forcing page: [verso]}} +\newsavebox{\@bidituftefloat@figure@box} +\newsavebox{\@bidituftefloat@caption@box} +\let\@bidituftefloat@orig@float\@float +\let\@bidituftefloat@orig@endfloat\end@float +\newlength{\@bidituftefloat@caption@vertical@offset} +\setlength{\@bidituftefloat@caption@vertical@offset}{0pt} +\newcommand{\@bidituftefloat@stored@shortcaption}{} +\newcommand{\@bidituftefloat@stored@caption}{} +\newcommand{\@bidituftefloat@stored@label}{} +\long\def\@bidituftefloat@caption[#1][#2]#3{% + \ifthenelse{\isempty{#1}}% + {\gdef\@bidituftefloat@stored@shortcaption{#3}}% + {\gdef\@bidituftefloat@stored@shortcaption{#1}}% + \gsetlength{\@bidituftefloat@caption@vertical@offset}{-#2}% we want a positive offset to lower captions + \gdef\@bidituftefloat@stored@caption{#3}% +} +\newcommand{\@bidituftefloat@label}[1]{% + \gdef\@bidituftefloat@stored@label{#1}% +} +\newcommand{\@bidituftefloat@fps}{} +\newboolean{@bidituftefloat@float@star} +\newlength{\@bidituftefloat@float@contents@width} +\newenvironment{@bidituftefloat@float}[3][htbp]% + {% begin @bidituftefloat@float + % Should this float be full-width or just text-width? + \ifthenelse{\equal{#3}{star}}% + {\gsetboolean{@bidituftefloat@float@star}{true}}% + {\gsetboolean{@bidituftefloat@float@star}{false}}% + % Check page side (recto/verso) and store detected value -- can be overriden in environment contents + \@bidituftefloat@checkoddpage% + \ifthenelse{\boolean{@bidituftefloat@odd@page}}% + {\gsetboolean{@bidituftefloat@float@recto}{true}\@bidituftefloat@float@debug{Detected page: [recto/odd]}}% + {\gsetboolean{@bidituftefloat@float@recto}{false}\@bidituftefloat@float@debug{Detected page: [verso/even]}}% + % If the float placement specifier is 'b' and only 'b', then bottom-align the mini-pages, otherwise top-align them. + \renewcommand{\@bidituftefloat@fps}{#1}% + \@bidituftefloat@float@debug{Allowed positions: [#1]}% + \ifthenelse{\equal{#1}{b}\OR\equal{#1}{B}}% + {\renewcommand{\floatalignment}{b}\@bidituftefloat@float@debug{Presumed position: [bottom]}}% + {\renewcommand{\floatalignment}{t}\@bidituftefloat@float@debug{Presumed position: [top]}}% + % Capture the contents of the \caption and \label commands to use later + \global\let\@bidituftefloat@orig@caption\caption% + \global\let\@bidituftefloat@orig@label\label% + \renewcommand{\caption}{\optparams{\@bidituftefloat@caption}{[][0pt]}}% + \renewcommand{\label}[1]{\@bidituftefloat@label{##1}}% + % Handle subfigure package compatibility + \ifthenelse{\boolean{@bidituftefloat@packages@subfigure}}{% + % don't move the label while inside a \subfigure or \subtable command + \global\let\label\@bidituftefloat@orig@label% + }{}% subfigure package is not loaded + \@bidituftefloat@orig@float{#2}[#1]% + \ifthenelse{\boolean{@bidituftefloat@float@star}}% + {\setlength{\@bidituftefloat@float@contents@width}{\@bidituftefloat@fullwidth}}% + {\setlength{\@bidituftefloat@float@contents@width}{\textwidth}}% + \begin{lrbox}{\@bidituftefloat@figure@box}% + \begin{minipage}[\floatalignment]{\@bidituftefloat@float@contents@width}\hbox{}% + }{% end @bidituftefloat@float + \par\hbox{}\vspace{-\baselineskip}\ifthenelse{\prevdepth>0}{\vspace{-\prevdepth}}{}% align baselines of boxes + \end{minipage}% + \end{lrbox}% + % build the caption box + \begin{lrbox}{\@bidituftefloat@caption@box}% + \begin{minipage}[\floatalignment]{\marginparwidth}\hbox{}% + \ifthenelse{\NOT\equal{\@bidituftefloat@stored@caption}{}}{\@bidituftefloat@orig@caption[\@bidituftefloat@stored@shortcaption]{\@bidituftefloat@stored@caption}}{}% + \ifthenelse{\NOT\equal{\@bidituftefloat@stored@label}{}}{\@bidituftefloat@orig@label{\@bidituftefloat@stored@label}}{}% + \par\vspace{-\prevdepth}%% TODO: DOUBLE-CHECK FOR SAFETY + \end{minipage}% + \end{lrbox}% + % now typeset the stored boxes + \begin{fullwidth}% + \begin{minipage}[\floatalignment]{\linewidth}% + \ifthenelse{\boolean{@bidituftefloat@float@star}}% + {\@bidituftefloat@float@fullwidth[\@bidituftefloat@caption@vertical@offset]{\@bidituftefloat@figure@box}{\@bidituftefloat@caption@box}}% + {\@bidituftefloat@float@textwidth[\@bidituftefloat@caption@vertical@offset]{\@bidituftefloat@figure@box}{\@bidituftefloat@caption@box}}% + \end{minipage}% + \end{fullwidth}% + \@bidituftefloat@orig@endfloat% end original LaTeX float environment + % output debug info + \ifthenelse{\boolean{@bidituftefloat@debug}}{% + \typeout{^^J^^J----------- bidituftefloat package float information ----------}% + \ifthenelse{\equal{\@bidituftefloat@stored@label}{}}% + {\typeout{Warning: Float unlabeled!}}% + {\typeout{Float label: [\@bidituftefloat@stored@label]}}% + \typeout{Page number: [\thepage]}% + \def\MessageBreak{^^J}% + \typeout{\@bidituftefloat@float@debug@info}% + \ifthenelse{\boolean{@bidituftefloat@symmetric}}% + {\typeout{Symmetric: [true]}}% + {\typeout{Symmetric: [false]}}% + \typeout{----------------------------------------------------^^J^^J}% + }{}% + % reset commands and temp boxes and captions + \gdef\@bidituftefloat@float@debug@info{}% + \let\caption\@bidituftefloat@orig@caption% + \let\label\@bidituftefloat@orig@label% + \begin{lrbox}{\@bidituftefloat@figure@box}\hbox{}\end{lrbox}% + \begin{lrbox}{\@bidituftefloat@caption@box}\hbox{}\end{lrbox}% + \gdef\@bidituftefloat@stored@shortcaption{}% + \gdef\@bidituftefloat@stored@caption{}% + \gdef\@bidituftefloat@stored@label{}% + \gsetlength{\@bidituftefloat@caption@vertical@offset}{0pt}% reset caption offset + } +\newcommand{\@bidituftefloat@float@textwidth}[3][0pt]{% + \ifthenelse{\NOT\boolean{@bidituftefloat@symmetric}\OR\boolean{@bidituftefloat@float@recto}}{% + % asymmetric or page is odd, so caption is on the right + \hbox{% + \usebox{#2}% + \hspace{\marginparsep}% + \smash{\raisebox{#1}{\usebox{#3}}}% + } + \@bidituftefloat@float@debug{Caption position: [right]}% + }{% symmetric pages and page is even, so caption is on the left + \hbox{% + \smash{\raisebox{#1}{\usebox{#3}}}% + \hspace{\marginparsep}% + \usebox{#2}% + } + \@bidituftefloat@float@debug{Caption position: [left]}% + }% +} +\newcommand{\@bidituftefloat@float@fullwidth}[3][0pt]{% + \ifthenelse{\equal{\floatalignment}{b}}% + {% place caption above figure + \ifthenelse{\NOT\boolean{@bidituftefloat@symmetric}\OR\boolean{@bidituftefloat@float@recto}}% + {\hfill\smash{\raisebox{#1}{\usebox{#3}}}\par\usebox{#2}\@bidituftefloat@float@debug{Caption position: [above right]}}% caption on the right + {\smash{\raisebox{#1}{\usebox{#3}}}\hfill\par\usebox{#2}\@bidituftefloat@float@debug{Caption position: [above left]}}% caption on the left + }{% place caption below figure + \ifthenelse{\NOT\boolean{@bidituftefloat@symmetric}\OR\boolean{@bidituftefloat@float@recto}}% + {\usebox{#2}\par\hfill\smash{\raisebox{#1}{\usebox{#3}}}\@bidituftefloat@float@debug{Caption position: [below right]}}% caption on the right + {\usebox{#2}\par\smash{\raisebox{#1}{\usebox{#3}}}\hfill\@bidituftefloat@float@debug{Caption position: [below left]}}% caption on the left + }% +} +\renewenvironment{figure}[1][htbp]% + {\ifvmode\else\unskip\fi\begin{@bidituftefloat@float}[#1]{figure}{}} + {\end{@bidituftefloat@float}} +\renewenvironment{table}[1][htbp] + {\ifvmode\else\unskip\fi\begin{@bidituftefloat@float}[#1]{table}{}} + {\end{@bidituftefloat@float}} +\renewenvironment{figure*}[1][htbp]% + {\ifvmode\else\unskip\fi\begin{@bidituftefloat@float}[#1]{figure}{star}} + {\end{@bidituftefloat@float}} +\renewenvironment{table*}[1][htbp]% + {\ifvmode\else\unskip\fi\begin{@bidituftefloat@float}[#1]{table}{star}} + {\end{@bidituftefloat@float}} +\newenvironment{fullwidth} + {\ifthenelse{\boolean{@bidituftefloat@symmetric}}% + {\ifthenelse{\boolean{@bidituftefloat@changepage}}{\begin{adjustwidth*}{}{-\@bidituftefloat@overhang}}{\begin{adjustwidth}[]{}{-\@bidituftefloat@overhang}}}% + {\begin{adjustwidth}{}{-\@bidituftefloat@overhang}}% + }% + {\ifthenelse{\boolean{@bidituftefloat@symmetric}}% + {\ifthenelse{\boolean{@bidituftefloat@changepage}}{\end{adjustwidth*}}{\end{adjustwidth}}}% + {\end{adjustwidth}}% + } +\long\def\@caption#1[#2]#3{% + \par% + \addcontentsline{\csname ext@#1\endcsname}{#1}% + {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% + \begingroup% + \@parboxrestore% + \if@minipage% + \@setminipage% + \fi% + \@bidituftefloat@caption@font\@bidituftefloat@caption@justification% + \noindent\csname fnum@#1\endcsname: \ignorespaces#3\par% + %\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} +%% +\DeclareRobustCommand{\@biditufteheading@newlinetospace}{% + \@ifstar{\@biditufteheading@newlinetospace@i}{\@biditufteheading@newlinetospace@i}% +} +\def\@biditufteheading@newlinetospace@i{% + \ifdim\lastskip>\z@\else\space\fi + \ignorespaces% +} +\DeclareRobustCommand{\newlinetospace}[1]{% + \let\@biditufteheading@orig@cr\\% save the original meaning of \\ + \def\\{\@biditufteheading@newlinetospace}% turn \\ and \\* into \space + \let\newline\\% turn \newline into \space + #1% + \let\\\@biditufteheading@orig@cr% revert to original meaning of \\ +} +\RequirePackage{fancyhdr} +\pagestyle{fancy} +\AtBeginDocument{% + \ifthenelse{\boolean{@bidituftefloat@symmetric}} + {\fancyhfoffset[LE,RO]{\@bidituftefloat@overhang}} + {\fancyhfoffset[RE,RO]{\@bidituftefloat@overhang}} +} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} +\fancyhf{} % clear header and footer fields + \ifthenelse{\boolean{@bidituftefloat@symmetric}} + {\fancyhead[LE]{\thepage\quad\textsl{\newlinetospace{\plainauthor}}}% + \fancyhead[RO]{\textsl{\newlinetospace{\plaintitle}}\quad\thepage}}% + {\fancyhead[RE,RO]{\textsl{\newlinetospace{\plaintitle}}\quad\thepage}}% +\fancypagestyle{plain}{ + \fancyhf{} % clear header and footer fields + % Uncomment the following five lines of code if you want the opening page + % of the chapter to express the folio in the lower outside corner. + % \ifthenelse{\boolean{@bidituftefloat@symmetric}} + % {\fancyfoot[LE,RO]{\thepage}} + % {\fancyfoot[RE,RO]{\thepage}} +} +\fancypagestyle{empty}{ + \fancyhf{} % clear header and footer fields +} +\def\morefloats{% provides a total of 52 floats + \ifthenelse{\isundefined{\bx@S}}{% + \bidituftefloatDebugInfoNL{Adding 34 more float slots.} + \newinsert\bx@S + \newinsert\bx@T + \newinsert\bx@U + \newinsert\bx@V + \newinsert\bx@W + \newinsert\bx@X + \newinsert\bx@Y + \newinsert\bx@Z + \newinsert\bx@a + \newinsert\bx@b + \newinsert\bx@c + \newinsert\bx@d + \newinsert\bx@e + \newinsert\bx@f + \newinsert\bx@g + \newinsert\bx@h + \newinsert\bx@i + \newinsert\bx@j + \newinsert\bx@k + \newinsert\bx@l + \newinsert\bx@m + \newinsert\bx@n + \newinsert\bx@o + \newinsert\bx@p + \newinsert\bx@q + \newinsert\bx@r + \newinsert\bx@s + \newinsert\bx@t + \newinsert\bx@u + \newinsert\bx@v + \newinsert\bx@w + \newinsert\bx@x + \newinsert\bx@y + \newinsert\bx@z + \gdef\@freelist{\@elt\bx@A\@elt\bx@B\@elt\bx@C\@elt\bx@D\@elt\bx@E + \@elt\bx@F\@elt\bx@G\@elt\bx@H\@elt\bx@I\@elt\bx@J + \@elt\bx@K\@elt\bx@L\@elt\bx@M\@elt\bx@N + \@elt\bx@O\@elt\bx@P\@elt\bx@Q\@elt\bx@R + \@elt\bx@S\@elt\bx@T\@elt\bx@U\@elt\bx@V + \@elt\bx@W\@elt\bx@X\@elt\bx@Y\@elt\bx@Z + \@elt\bx@a\@elt\bx@b\@elt\bx@c\@elt\bx@d\@elt\bx@e + \@elt\bx@f\@elt\bx@g\@elt\bx@h\@elt\bx@i\@elt\bx@j + \@elt\bx@k\@elt\bx@l\@elt\bx@m\@elt\bx@n + \@elt\bx@o\@elt\bx@p\@elt\bx@q\@elt\bx@r + \@elt\bx@s\@elt\bx@t\@elt\bx@u\@elt\bx@v + \@elt\bx@w\@elt\bx@x\@elt\bx@y\@elt\bx@z}% + }{% we've already added another 34 floats, so we'll add 26 more, but that's it! + \ifthenelse{\isundefined{\bx@AA}}{% + \bidituftefloatDebugInfoNL{Adding 26 more float slots.} + \newinsert\bx@AA + \newinsert\bx@BB + \newinsert\bx@CC + \newinsert\bx@DD + \newinsert\bx@EE + \newinsert\bx@FF + \newinsert\bx@GG + \newinsert\bx@HH + \newinsert\bx@II + \newinsert\bx@JJ + \newinsert\bx@KK + \newinsert\bx@LL + \newinsert\bx@MM + \newinsert\bx@NN + \newinsert\bx@OO + \newinsert\bx@PP + \newinsert\bx@QQ + \newinsert\bx@RR + \newinsert\bx@SS + \newinsert\bx@TT + \newinsert\bx@UU + \newinsert\bx@VV + \newinsert\bx@WW + \newinsert\bx@XX + \newinsert\bx@YY + \newinsert\bx@ZZ + \gdef\@freelist{\@elt\bx@A\@elt\bx@B\@elt\bx@C\@elt\bx@D\@elt\bx@E + \@elt\bx@F\@elt\bx@G\@elt\bx@H\@elt\bx@I\@elt\bx@J + \@elt\bx@K\@elt\bx@L\@elt\bx@M\@elt\bx@N + \@elt\bx@O\@elt\bx@P\@elt\bx@Q\@elt\bx@R + \@elt\bx@S\@elt\bx@T\@elt\bx@U\@elt\bx@V + \@elt\bx@W\@elt\bx@X\@elt\bx@Y\@elt\bx@Z + \@elt\bx@a\@elt\bx@b\@elt\bx@c\@elt\bx@d\@elt\bx@e + \@elt\bx@f\@elt\bx@g\@elt\bx@h\@elt\bx@i\@elt\bx@j + \@elt\bx@k\@elt\bx@l\@elt\bx@m\@elt\bx@n + \@elt\bx@o\@elt\bx@p\@elt\bx@q\@elt\bx@r + \@elt\bx@s\@elt\bx@t\@elt\bx@u\@elt\bx@v + \@elt\bx@w\@elt\bx@x\@elt\bx@y\@elt\bx@z + \@elt\bx@AA\@elt\bx@BB\@elt\bx@CC\@elt\bx@DD\@elt\bx@EE + \@elt\bx@FF\@elt\bx@GG\@elt\bx@HH\@elt\bx@II\@elt\bx@JJ + \@elt\bx@KK\@elt\bx@LL\@elt\bx@MM\@elt\bx@NN + \@elt\bx@OO\@elt\bx@PP\@elt\bx@QQ\@elt\bx@RR + \@elt\bx@SS\@elt\bx@TT\@elt\bx@UU\@elt\bx@VV + \@elt\bx@WW\@elt\bx@XX\@elt\bx@YY\@elt\bx@ZZ}% + }{% + \bidituftefloatError{You may only call \string\morefloats\space twice. See the\MessageBreak bidituftefloat package documentation for other workarounds} + {There are already 78 float slots allocated. Try using \string\FloatBarrier\space or\MessageBreak \string\clearpage\space to place some floats before creating more.} + }% + }% +} +\newboolean{@bidituftefloat@packages@subfigure} +\setboolean{@bidituftefloat@packages@subfigure}{false} +\AtBeginDocument{% + \@ifpackageloaded{subfigure} + {\gsetboolean{@bidituftefloat@packages@subfigure}{true}} + {\gsetboolean{@bidituftefloat@packages@subfigure}{false}}% +} +\AtBeginDocument{% + \@ifpackageloaded{float}{% + % Save the redefined float environment (instead of the LaTeX float environment) + \let\@bidituftefloat@orig@float\@float + \let\@bidituftefloat@orig@endfloat\end@float + + % Define Tuftian float styles (with the caption in the margin) + \newcommand{\floatc@bidituftefloatplain}[2]{% + \begin{lrbox}{\@bidituftefloat@caption@box}% + \begin{minipage}[\floatalignment]{\marginparwidth}\hbox{}% + \@bidituftefloat@caption@font{\@fs@cfont #1:} #2\par% + \end{minipage}% + \end{lrbox}% + \smash{\hspace{\@bidituftefloat@caption@fill}\usebox{\@bidituftefloat@caption@box}}% + } + \newcommand{\fs@bidituftefloatplain}{% + \def\@fs@cfont{\@bidituftefloat@caption@font}% + \let\@fs@capt\floatc@bidituftefloatplain% + \def\@fs@pre{}% + \def\@fs@post{}% + \def\@fs@mid{}% + \let\@fs@iftopcapt\iftrue% + } + \let\fs@bidituftefloatplaintop=\fs@bidituftefloatplain + \let\floatc@bidituftefloatplaintop=\floatc@bidituftefloatplain + \newcommand\floatc@bidituftefloatruled[2]{% + {\@fs@cfont #1} #2\par% + } + \newcommand\fs@bidituftefloatruled{% + \def\@fs@cfont{\@bidituftefloat@caption@font}% + \let\@fs@capt\floatc@bidituftefloatplain% + \def\@fs@pre{\hrule height.8pt depth0pt width\textwidth \kern2pt}% + \def\@fs@post{\kern2pt\hrule width\textwidth\relax}% + \def\@fs@mid{}% + \let\@fs@iftopcapt\iftrue% + } + \newcommand\fs@bidituftefloatboxed{% + \def\@fs@cfont{}% + \let\@fs@capt\floatc@bidituftefloatplain% + \def\@fs@pre{% + \setbox\@currbox\vbox{\hbadness10000 + \moveleft3.4pt\vbox{\advance\hsize by6.8pt + \hrule \hbox to\hsize{\vrule\kern3pt + \vbox{\kern3pt\box\@currbox\kern3pt}\kern3pt\vrule}\hrule}} + }% + \def\@fs@mid{\kern2pt}% + \def\@fs@post{}% + \let\@fs@iftopcapt\iftrue% + } + }{% + % Nothing to do + } +} +\AtBeginDocument{% + \@ifpackageloaded{algorithm}{% + % Set the float style to the Tuftian version + \ifthenelse{\equal{\ALG@floatstyle}{plain}\OR\equal{\ALG@floatstyle}{ruled}\OR\equal{\ALG@floatstyle}{boxed}}{% + \bidituftefloatInfoNL{Switching algorithm float style from \ALG@floatstyle\MessageBreak to bidituftefloat\ALG@floatstyle}% + \floatstyle{bidituftefloat\ALG@floatstyle}% + \restylefloat{algorithm}% + }{}% + }{% + % Nothing to do + } +} +\PassOptionsToPackage{caption=false}{subfig} +\endinput +%% +%% End of file `bidituftefloat.sty'. |