کاری که باید انجام بدهیم این است که در output routine
موارد زیر را چک کنیم:
- اگر در صفحهای نه زیرنویس راست به چپ و نه زیرنویس چپ به راست قرار دارد، هیچ خط زیرنویسی قرار نده.
- اگر در صفحهای زیرنویس راست به چپ و چپ به راست وجود داشت، خط زیرنویس بالای زیرنویسهای راست به چپ قرار بگیرد.
- اگر در صفحهای زیرنویس راست به چپ وجود داشت اما زیرنویس چپ به راست وجود نداشت، خط زیرنویس بالای زیرنویسهای راست به چپ قرار بگیرد.
- اگر در صفحهای زیرنویس راست به چپ وجود نداشت اما زیرنویس چپ به راست وجود داشت، آنگاه خط زیرنویس را بالای زیرنویسهای چپ به راست قرار بده.
نتیجه کد زیر میشود:
\documentclass{article}
\usepackage[extrafootnotefeatures]{xepersian}
\settextfont{XB Niloofar}
\paragraphfootnotes
\makeatletter
\newif\ifLTRfootnoterule
\let\@footnotetext\m@mold@footnotetext
\gdef\mem@makecol{%
\m@m@makecolintro
\ifvoid\footins
\ifvoid\footinsv@r\else \LTRfootnoteruletrue\fi
\setbox\@outputbox \box\@cclv
\else
\m@mopfootnote
\fi
\m@mdoextrafeet
\m@m@makecolfloats
\m@mopsidebar
\m@m@makecoltext
\global \maxdepth \@maxdepth}
\renewcommand*{\@footstartv@r}{%
\vskip\bigskipamount
\leftskip=\z@
\rightskip=\z@
\ifLTRfootnoterule\footnoterule\fi}
\makeatother
\begin{document}
مقداری متن%
\LTRfootnote{text} \LTRfootnote{text} \LTRfootnote{text} \LTRfootnote{text}
مقدار دیگری متن%
\footnote{مقداری متن} \footnote{مقداری متن}
\footnote{مقداری متن که میتواند خیلی طولانی هم باشد}
و دوباره متن%
\LTRfootnote{text}
\newpage
\LTRfootnote{text} \LTRfootnote{text} \LTRfootnote{text} \LTRfootnote{text}
\LTRfootnote{text}
\newpage
\footnote{مقداری متن} \footnote{مقداری متن}
\footnote{مقداری متن که میتواند خیلی طولانی هم باشد}
\newpage
در این صفحه هیچ زیرنویسی وجود ندارد.
\end{document}