summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/luabidi/autofootnoterule.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/luabidi/autofootnoterule.tex')
-rw-r--r--Master/texmf-dist/tex/lualatex/luabidi/autofootnoterule.tex116
1 files changed, 116 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/lualatex/luabidi/autofootnoterule.tex b/Master/texmf-dist/tex/lualatex/luabidi/autofootnoterule.tex
new file mode 100644
index 00000000000..a1211cb10fc
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luabidi/autofootnoterule.tex
@@ -0,0 +1,116 @@
+\ifx \CatEscape\undefined
+ \chardef\CatEscape=0
+ \chardef\CatOpen=1
+ \chardef\CatClose=2
+ \chardef\CatIgnore=9
+ \chardef\CatLetter=11
+ \chardef\CatOther=12
+ \chardef\CatActive=13 % is defined in Plain already
+
+ \chardef\CatUsCode=\catcode`\_
+\fi
+
+\catcode`\_=\CatLetter % top level macro file
+
+
+\def\l@fn{%
+ \hbox to \columnwidth
+ {\luatexpagedir TLT\vbox{\kern -3\p@
+ \hrule width .4\columnwidth \kern2.6\p@}\hfil}}
+\def\r@fn{%
+ \hrule width .4\columnwidth\kern 2.6\p@}
+
+
+\def\@makefnmark{\hbox{$^{\hbox{\scriptsize\@thefnmark}}\m@th$}}
+
+
+\def\leftfootnoterule{\global\def\footnoterule{\l@fn}}
+\def\rightfootnoterule{\global\def\footnoterule{\r@fn}}
+\leftfootnoterule
+
+%%% \beginprog
+\newread\old_foot_file
+\newwrite\foot_file
+\def\foot_file_name{\jobname.fot\relax}
+\def\init_footnote{%
+ \openin\old_foot_file\foot_file_name
+ \ifeof\old_foot_file \closein\old_foot_file
+ \else \closein\old_foot_file
+ \read_foot_file
+ \fi
+ \immediate\openout\foot_file\foot_file_name
+ \immediate\write\foot_file{\relax}%
+ \global\let\init_footnote\relax
+ }
+
+\newcount\foot_name_no % for generating footnote mark names
+
+
+
+
+
+\newcount\autofootnote
+\def\fnpp_next_footnote{%
+ \init_footnote
+ \global\advance\foot_name_no\@ne
+ \global\advance\c@footnote\@ne
+ \edef\do_write{%
+ \immediate\write\foot_file{%
+ \string\advance\autofootnote\@ne
+ \string\expandafter\xdef
+ \string\csname\space f@\number\foot_name_no \endcsname{%
+ \string\number\autofootnote
+ }%
+ }%
+ }%
+ \do_write
+ \global\autofootnote 0\csname f@\number\foot_name_no \endcsname \relax
+ }
+
+\def\read_foot_file{%
+ \begingroup
+ \catcode`\@\CatLetter \catcode`\^^M\CatIgnore
+ \input \foot_file_name
+ \endgroup
+ }
+
+\let\fnpp_orig_outputpage=\@outputpage
+\def\@outputpage{%
+ \ifx \init_footnote\relax
+ \immediate\write\foot_file{\autofootnote\z@}%
+ \fi
+ \fnpp_orig_outputpage
+ }
+
+\let\FnppOrigFootnote=\footnote % save original bindings
+\let\FnppOrigFootnotemark=\footnotemark
+
+\def\footnote{%
+ \@ifnextchar[% % ] (Emacs)
+ \@xfootnote
+ {\fnpp_next_footnote \ifnum\autofootnote=1\rightfootnoterule\fi \@xfootnote[\the\c@footnote] %
+}%
+ }
+\def\footnotemark{%
+ \@ifnextchar[% % ] (Emacs)
+ \@xfootnotemark
+ {\fnpp_next_footnote \ifnum\autofootnote=1\rightfootnoterule\fi \@xfootnotemark[\the\c@footnote]}%
+ }
+
+
+
+
+\def\footnotemarkLR{%
+ \@ifnextchar[% % ] (Emacs)
+ \@xfootnotemark
+ {\fnpp_next_footnote \ifnum\autofootnote=1\leftfootnoterule\fi\@xfootnotemark[\the\c@footnote]}%
+ }
+
+
+\def\Footnote#1{%
+\begingroup
+\footnotemarkLR%
+\renewcommand{\thefootnote}{\@arabic\c@footnote}%
+\luatexpardir TLT \luatextextdir TLT\footnotetext{#1}%
+\endgroup
+}