RTL 上下文 (vmode) 中的 \hbox 问题

RTL 上下文 (vmode) 中的 \hbox 问题

考虑到 RTL 上下文中的这个例子\hbox 出现在左边,它不应该出现在右边吗\pardir TRT

\documentclass{article}
\usepackage[showframe]{geometry}


\parindent0pt

\begin{document}

\pagedir TRT \pardir TRT \textdir TRT \bodydir TRT  

Text text text text text text text text text text 

\hbox{Text text text text text text text text text text}

\pagedir TLT \pardir TLT \textdir TLT \bodydir TLT

\hbox{Text text text text text text text text text text}

\end{document}

在此处输入图片描述

答案1

正如 Henri Menke 所说,\hbox不会开始一个段落,因此\pardir不会影响它。相反,你会得到一个水平框,它不如封闭框宽。在这种情况下,内部框根据外部框的方向性进行对齐,在这种情况下,外部框是 TeX 从主垂直列表(其方向性由 控制\bodydir)构建的垂直框。

现在您可能认为这不会产生任何影响,因为您设置了\bodydir太多,但每个页面上只有一个这样的框,因此\bodydir每个页面上都遵循一个值。如您在此处所见,它是最后一个。

这表明主垂直列表中未超出范围的框\hsize与页面中间的方向性改变不兼容。

有多种方法可以避免这种情况。例如,您可以输入一个段落(通过添加\noindent),该段落始终超出整个宽度,或者您可以将框包装在内部 vbox 中,该内部 vbox 可以具有自己的一致方向。(当然,您必须确保此框本身具有整个宽度,例如通过添加\hrule height 0pt width \textwidth\relax

如果您无法更改某些使用文档中通常不使用的方向的命令,最后一个选项特别有用:例如

\documentclass{article}
\usepackage[showframe]{geometry}


\parindent0pt

\begin{document}

\pagedir TRT \pardir TRT \textdir TRT \bodydir TRT  

Text text text text text text text text text text 

\hbox{Text text text text text text text text text text}

\vbox dir TLT {\hrule height 0pt width \hsize \relax
  \hbox{Text text text text text text text text text text}
  % Everything here is left to right
}

\end{document}

但要小心:这\vbox永远不会跨页,所以你不应该在其中放置长文本。

相关内容