考虑到 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
永远不会跨页,所以你不应该在其中放置长文本。