LuaTeX \bodydir 和 \pagedir:有没有办法将它们从 TRT 切换回 TLT?

LuaTeX \bodydir 和 \pagedir:有没有办法将它们从 TRT 切换回 TLT?

\bodydir到目前为止,我还没有找到一种方法,可以在不使用和原语的情况下,在从右到左模式下正确缩进标准列表环境\pagedir,如下所示:—

\documentclass{article}

\begin{document}

\bodydir TRT
\pagedir TRT
desserts.\footnote{Would you have any?}
\begin{enumerate}
\pardir TRT
\textdir TRT
\item desserts desserts desserts desserts desserts desserts desserts
  desserts desserts desserts desserts desserts desserts desserts
  desserts desserts desserts desserts desserts desserts desserts
  desserts desserts desserts desserts desserts desserts desserts
  desserts desserts desserts desserts desserts desserts desserts
  desserts desserts.
  \item desserts.
    \begin{itemize}
    \item desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts.
      \begin{itemize}
      \item desserts.
      \end{itemize}
    \item desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts.
    \end{itemize}
\end{enumerate}

% \bodydir TLT
% \pagedir TLT
\pardir TLT
\textdir TLT
desserts.\footnote{Would you have any?}

\end{document}

注意,\bodydir和都\pagedir必须在列表环境之外设置;否则缩进会出现在左侧,这是错误的。

问题是,当我尝试设置\bodydir\pagedir返回时,我遇到了麻烦TLT

至于上面的 mwe,它可以很好地编译,但是脚注规则向右刷新,而我希望将其向左刷新。

任何帮助将非常感激。

答案1

到目前为止,我还没有找到一种方法,可以在不使用 \bodydir 和 \textdir 原语的情况下,在从右到左模式下正确缩进标准列表环境,如下所示:—

您的意思是\pagedir不是\textdir

LuaTeX 的 bidi 模型有太多错误,所以最好忘记\pagedir\bodydir,只使用\pardir\textdir

这几乎是逐字逐句地从bidi包中摘取的:

\documentclass{article}
\usepackage{lipsum}
\makeatletter
\def\list#1#2{%
  \ifnum \@listdepth >5\relax
    \@toodeep
  \else
    \global\advance\@listdepth\@ne
  \fi
  \rightmargin\z@
  \listparindent\z@
  \itemindent\z@
  \csname @list\romannumeral\the\@listdepth\endcsname
  \def\@itemlabel{#1}%
  \let\makelabel\@mklab
  \@nmbrlistfalse
  #2\relax
  \@trivlist
  \parskip\parsep
  \parindent\listparindent
  \advance\linewidth -\rightmargin
  \advance\linewidth -\leftmargin
  \advance\@totalleftmargin \rightmargin
  \parshape \@ne \@totalleftmargin \linewidth
  \ignorespaces}

\def\itemize{%
  \ifnum \@itemdepth >\thr@@\@toodeep\else
    \advance\@itemdepth\@ne
    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
    \expandafter
    \list
      \csname\@itemitem\endcsname
      {\def\makelabel##1{\llap{##1}\hss}}%
  \fi}

\def\@item[#1]{%
  \if@noparitem
    \@donoparitem
  \else
    \if@inlabel
      \indent \par
    \fi
    \ifhmode
      \unskip\unskip \par
    \fi
    \if@newlist
      \if@nobreak
        \@nbitem
      \else
        \addpenalty\@beginparpenalty
        \addvspace\@topsep
        \addvspace{-\parskip}%
      \fi
    \else
      \addpenalty\@itempenalty
      \addvspace\itemsep
    \fi
    \global\@inlabeltrue
  \fi
  \everypar{%
    \@minipagefalse
    \global\@newlistfalse
    \if@inlabel
      \global\@inlabelfalse
      {\setbox\z@\lastbox
       \ifvoid\z@
         \kern-\itemindent
       \fi}%
      \box\@labels
      \penalty\z@
    \fi
    \if@nobreak
      \@nobreakfalse
      \clubpenalty \@M
    \else
      \clubpenalty \@clubpenalty
      \everypar{}%
    \fi}%
  \if@noitemarg
    \@noitemargfalse
    \if@nmbrlist
      \refstepcounter\@listctr
    \fi
  \fi
  \sRTLbox\@tempboxa{\makelabel{#1}}%
  \global\setbox\@labels\hbox dir TRT{%
    \unhbox\@labels
    \hskip \itemindent
    \hskip -\labelwidth
    \hskip -\labelsep
    \ifdim \wd\@tempboxa >\labelwidth
      \box\@tempboxa
    \else
      \hbox to\labelwidth {\unhbox\@tempboxa}%
    \fi
    \hskip \labelsep}%
  \ignorespaces}

\def\itemize{%
  \ifnum \@itemdepth >\thr@@\@toodeep\else
    \advance\@itemdepth\@ne
    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
    \expandafter
    \list
      \csname\@itemitem\endcsname
      {\def\makelabel##1{\hss\llap{##1}}}%
  \fi}

\long\def\sRTLbox#1#2{\setbox#1\hbox dir TRT{%
  \color@setgroup#2\color@endgroup}}
\makeatother
\pardir TRT
\textdir TRT
\begin{document}
\lipsum[1]
desserts.\footnote{Would you have any?}
\begin{enumerate}
\item desserts desserts desserts desserts desserts desserts desserts
  desserts desserts desserts desserts desserts desserts desserts
  desserts desserts desserts desserts desserts desserts desserts
  desserts desserts desserts desserts desserts desserts desserts
  desserts desserts desserts desserts desserts desserts desserts
  desserts desserts.
  \item desserts.
    \begin{itemize}
    \item desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts.
      \begin{itemize}
      \item desserts.
      \end{itemize}
    \item desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts desserts desserts desserts desserts
      desserts desserts desserts.
    \end{itemize}
\end{enumerate}
desserts.\footnote{Would you have any?}

\end{document}

相关内容