summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/simurgh/simurgh-footnotes.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-09-17 22:16:07 +0000
committerKarl Berry <karl@freefriends.org>2013-09-17 22:16:07 +0000
commit5d3eded8ad72ddcafd63144edcd885a7ba0b4b75 (patch)
treefef63988dc328afbe009cc54117d49f264351c2a /Master/texmf-dist/tex/lualatex/simurgh/simurgh-footnotes.sty
parentee2e061286e8dd9aaeec0f661c8ea41027660a89 (diff)
simurgh (17sep13)
git-svn-id: svn://tug.org/texlive/trunk@31684 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/simurgh/simurgh-footnotes.sty')
-rw-r--r--Master/texmf-dist/tex/lualatex/simurgh/simurgh-footnotes.sty361
1 files changed, 361 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/lualatex/simurgh/simurgh-footnotes.sty b/Master/texmf-dist/tex/lualatex/simurgh/simurgh-footnotes.sty
new file mode 100644
index 00000000000..a4629c768f1
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/simurgh/simurgh-footnotes.sty
@@ -0,0 +1,361 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{simurgh-footnotes}[2013/12/01 v0.01a footnotes]
+\RequirePackage{zref-abspage}
+\RequirePackage{auxhook}
+\RequirePackage{ltxcmds}
+\newif\if@RTL@footnote
+\newif\if@autofootnoterule
+\newif\iffootdir@debug
+
+\def\simurgh@mpfootnoterule{\footnoterule}
+\newcounter{footdir@label}
+\renewcommand*{\thefootdir@label}{footdir@\the\value{footdir@label}}
+\newcommand*{\footdir@write}{%
+ \stepcounter{footdir@label}%
+ \zref@labelbyprops{\thefootdir@label}{abspage}%
+}
+
+\newcommand*{\debugfootnotedirection}{\footdir@debugtrue}
+\newtoks\footdir@toks
+\newcommand*{\footdir@debug}[1]{%
+ \iffootdir@debug
+ \typeout{[footdir] #1}%
+ \fi
+}
+\@ifpackagelater{zref-abspage}{2012/10/27}{%
+ \newcommand*{\footdir@LeftRightElse}{%
+ \ltx@ifundefined{footdir@\the\value{zabspage}}{%
+ \footdir@debug{abspage \the\value{zabspage}: else}%
+ \ltx@thirdofthree
+ }{%
+ \if\csname footdir@\the\value{zabspage}\endcsname L%
+ \footdir@debug{abspage \the\value{zabspage}: left}%
+ \expandafter\ltx@firstofthree
+ \else
+ \footdir@debug{abspage \the\value{zabspage}: right}%
+ \expandafter\ltx@secondofthree
+ \fi
+ }%
+ }%
+}{%
+ \providecommand*{\c@zabspage}{\c@abspage}%
+ \newcommand*{\footdir@LeftRightElse}{%
+ \footdir@write
+ \zifrefundefined{\thefootdir@label}{%
+ \footdir@debug{abspage ??: else}%
+ \ltx@thirdofthree
+ }{%
+ \edef\footdir@abspage{%
+ \zref@extractdefault{\thefootdir@label}{abspage}{0}%
+ }%
+ \ltx@ifundefined{footdir@\footdir@abspage}{%
+ \footdir@debug{\footdir@abspage: else}%
+ \ltx@thirdofthree
+ }{%
+ \if\csname footdir@\footdir@abspage\endcsname L%
+ \footdir@debug{\footdir@abspage: left}%
+ \expandafter\ltx@firstofthree
+ \else
+ \footdir@debug{\footdir@abspage: right}%
+ \expandafter\ltx@secondofthree
+ \fi
+ }%
+ }%
+ }%
+}
+\newcommand*{\footdir@fntext}[1]{%
+ \zifrefundefined{\thefootdir@label}{%
+ }{%
+ \edef\footdir@name{%
+ footdir@\zref@extractdefault{\thefootdir@label}{abspage}{0}%
+ }%
+ \@ifundefined{\footdir@name}{%
+ \expandafter\gdef\csname\footdir@name\endcsname{#1}%
+ }{}%
+ }%
+}
+
+\newcommand*{\footdir@temp}[3]{%
+ \@ifdefinable{#1}{%
+ \let#1#2%
+ \renewcommand{#2}[1]{%
+ \footdir@write
+ \footdir@fntext{#3}%
+ \stepcounter{footdir@label}%
+ \footdir@fntext{#3}%
+ \footdir@toks{##1}%
+ \footdir@toks\expandafter{%
+ \the\expandafter\footdir@toks
+ \expandafter
+ \zref@labelbyprops\expandafter{\thefootdir@label}{abspage}%
+ }%
+ \expandafter#1\expandafter{\the\footdir@toks}%
+ }%
+ }%
+}
+
+\def\right@footnoterule{%
+ \hbox dir TRT to \columnwidth
+ {\vbox{\kern -3\p@
+ \hrule width .4\columnwidth \kern2.6\p@}\hfil}}
+\def\left@footnoterule{%
+ \hbox dir TLT to \columnwidth
+ {\vbox{\kern -3\p@
+ \hrule width .4\columnwidth \kern2.6\p@}\hfil}}
+\def\textwidth@footnoterule{\kern-3\p@
+ \hrule \@width \columnwidth \kern 2.6\p@}
+\def\leftfootnoterule{%
+\@autofootnoterulefalse%
+\def\footnoterule{\left@footnoterule}}
+\def\rightfootnoterule{%
+\@autofootnoterulefalse%
+\def\footnoterule{\right@footnoterule}}
+\def\textwidthfootnoterule{%
+\@autofootnoterulefalse%
+\def\footnoterule{\textwidth@footnoterule}}
+
+\def\auto@footnoterule{%
+\footdir@LeftRightElse%
+\left@footnoterule%
+\right@footnoterule%
+\left@footnoterule%
+}
+
+\def\autofootnoterule{%
+\@autofootnoteruletrue%
+\def\footnoterule{\auto@footnoterule}%
+}
+
+\newcommand*{\SplitFootnoteRule}{%
+ \gdef\split@prev{0}
+ \let\pagefootnoterule\footnoterule
+ \let\mpfootnoterule\footnoterule
+ \def\splitfootnoterule{\kern-3\p@ \hrule \kern2.6\p@}
+ \def\footnoterule{\relax
+ \ifx \@listdepth\@mplistdepth
+ \mpfootnoterule
+ \else
+ \ifnum\split@prev=\z@
+ \pagefootnoterule
+ \else
+ \splitfootnoterule
+ \fi
+ \xdef\split@prev{\the\insertpenalties}%
+ \fi
+ }%
+}
+
+\def\RTLfootnote{\@ifnextchar[\@xRTLfootnote{\stepcounter\@mpfn
+ \protected@xdef\@thefnmark{\thempfn}%
+ \@footnotemark\@RTLfootnotetext}}
+\def\@xRTLfootnote[#1]{%
+ \begingroup
+ \csname c@\@mpfn\endcsname #1\relax
+ \unrestored@protected@xdef\@thefnmark{\thempfn}%
+ \endgroup
+ \@footnotemark\@RTLfootnotetext}
+\def\LTRfootnote{\@ifnextchar[\@xLTRfootnote{\stepcounter\@mpfn
+ \protected@xdef\@thefnmark{\thempfn}%
+ \@footnotemark\@LTRfootnotetext}}
+\def\@xLTRfootnote[#1]{%
+ \begingroup
+ \csname c@\@mpfn\endcsname #1\relax
+ \unrestored@protected@xdef\@thefnmark{\thempfn}%
+ \endgroup
+ \@footnotemark\@LTRfootnotetext}
+
+
+
+\long\def\@footnotetext#1{\insert\footins{%
+ \if@RTL@footnote%
+ \@RTLtrue%
+ \simurgh@pardir TRT%
+ \simurgh@textdir TRT%
+ \reset@parsifont%
+ \else%
+ \@RTLfalse%
+ \simurgh@pardir TLT%
+ \simurgh@textdir TLT%
+ \reset@latinfont%
+ \fi%
+ \footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}%
+
+\long\def\@RTLfootnotetext#1{\insert\footins{%
+ \@RTLtrue%
+ \simurgh@pardir TRT%
+ \simurgh@textdir TRT%
+ \reset@parsifont\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}%
+
+\long\def\@LTRfootnotetext#1{\insert\footins{%
+ \@RTLfalse%
+ \simurgh@pardir TLT%
+ \simurgh@textdir TLT%
+ \reset@latinfont\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}%
+
+\AtBeginDocument{%
+\if@RTL@footnote
+ \newcommand*{\simurgh@footdir@footnote}{R}
+\else
+ \newcommand*{\simurgh@footdir@footnote}{L}
+\fi%
+}
+
+\footdir@temp\footdir@ORG@simurgh@footnotetext\@footnotetext{\simurgh@footdir@footnote}%
+\footdir@temp\footdir@ORG@simurgh@RTLfootnotetext\@RTLfootnotetext{R}%
+\footdir@temp\footdir@ORG@simurgh@LTRfootnotetext\@LTRfootnotetext{L}%
+
+\long\def\@mpRTLfootnotetext#1{%
+ \if@autofootnoterule\ifnum\c@mpfootnote=\@ne\global\let\simurgh@mpfootnoterule\right@footnoterule\fi\fi%
+ \global\setbox\@mpfootins\vbox{%
+ \@RTLtrue%
+ \simurgh@pardir TRT%
+ \simurgh@textdir TRT%
+ \unvbox\@mpfootins
+ \reset@parsifont\footnotesize
+ \hsize\columnwidth
+ \@parboxrestore
+ \protected@edef\@currentlabel
+ {\csname p@mpfootnote\endcsname\@thefnmark}%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}
+\long\def\@mpLTRfootnotetext#1{%
+ \if@autofootnoterule\ifnum\c@mpfootnote=\@ne\global\let\simurgh@mpfootnoterule\left@footnoterule\fi\fi%
+ \global\setbox\@mpfootins\vbox{%
+ \@RTLfalse%
+ \simurgh@pardir TLT%
+ \simurgh@textdir TLT%
+ \unvbox\@mpfootins
+ \reset@latinfont\footnotesize
+ \hsize\columnwidth
+ \@parboxrestore
+ \protected@edef\@currentlabel
+ {\csname p@mpfootnote\endcsname\@thefnmark}%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}
+\long\def\@mpfootnotetext#1{%
+ \if@autofootnoterule\ifnum\c@mpfootnote=\@ne\if@RTL@footnote\global\let\simurgh@mpfootnoterule\right@footnoterule\else\global\let\simurgh@mpfootnoterule\left@footnoterule\fi\fi\fi%
+ \global\setbox\@mpfootins\vbox{%
+ \if@RTL@footnote%
+ \@RTLtrue%
+ \simurgh@pardir TRT%
+ \simurgh@textdir TRT%
+ \reset@parsifont%
+ \else%
+ \@RTLfalse%
+ \simurgh@pardir TLT%
+ \simurgh@textdir TLT%
+ \reset@latinfont%
+ \fi%
+ \unvbox\@mpfootins
+ \footnotesize
+ \hsize\columnwidth
+ \@parboxrestore
+ \protected@edef\@currentlabel
+ {\csname p@mpfootnote\endcsname\@thefnmark}%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}
+
+\def\@iiiminipage#1#2[#3]#4{%
+ \leavevmode
+ \@pboxswfalse
+ \setlength\@tempdima{#4}%
+ \def\@mpargs{{#1}{#2}[#3]{#4}}%
+ \setbox\@tempboxa\vbox\bgroup
+ \color@begingroup
+ \hsize\@tempdima
+ \textwidth\hsize \columnwidth\hsize
+ \@parboxrestore
+ \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
+ \let\@footnotetext\@mpfootnotetext
+ \let\@LTRfootnotetext\@mpLTRfootnotetext
+ \let\@RTLfootnotetext\@mpRTLfootnotetext
+ \let\@listdepth\@mplistdepth \@mplistdepth\z@
+ \@minipagerestore
+ \@setminipage}
+
+\def\endminipage{%
+ \par
+ \unskip
+ \ifvoid\@mpfootins\else
+ \vskip\skip\@mpfootins
+ \normalcolor
+ \simurgh@mpfootnoterule
+ \unvbox\@mpfootins
+ \fi
+ \@minipagefalse %% added 24 May 89
+ \color@endgroup
+ \egroup
+ \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
+
+
+\def\LTRthanks#1{\footnotemark
+ \protected@xdef\@thanks{\@thanks
+ \protect\LTRfootnotetext[\the\c@footnote]{#1}}%
+}
+\def\LTRfootnotetext{%
+ \@ifnextchar [\@xLTRfootnotenext
+ {\protected@xdef\@thefnmark{\thempfn}%
+ \@LTRfootnotetext}}
+\def\@xLTRfootnotenext[#1]{%
+ \begingroup
+ \csname c@\@mpfn\endcsname #1\relax
+ \unrestored@protected@xdef\@thefnmark{\thempfn}%
+ \endgroup
+ \@LTRfootnotetext}
+\def\RTLthanks#1{\footnotemark
+ \protected@xdef\@thanks{\@thanks
+ \protect\RTLfootnotetext[\the\c@footnote]{#1}}%
+}
+\let\@thanks\@empty
+\def\RTLfootnotetext{%
+ \@ifnextchar [\@xRTLfootnotenext
+ {\protected@xdef\@thefnmark{\thempfn}%
+ \@RTLfootnotetext}}
+\def\@xRTLfootnotenext[#1]{%
+ \begingroup
+ \csname c@\@mpfn\endcsname #1\relax
+ \unrestored@protected@xdef\@thefnmark{\thempfn}%
+ \endgroup
+ \@RTLfootnotetext}
+
+
+\endinput \ No newline at end of file