\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 }