diff options
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/simurgh/simurgh-footnotes.sty')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/simurgh/simurgh-footnotes.sty | 361 |
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 |