我有两个tabular
并排的,我想让它们的顶部对齐。
当我使用英语时,它运行良好。
当我使用阿拉伯语时,即使我使用了规范,表格也会突然变为底部对齐[t]
。对于阿拉伯语,我使用了 Times New Roman 字体,但这不是必需的。我正在使用 booktabs 包。
我猜测问题在于Bidi
或polyglossia
,但我不知道。
MWE 将两者都放在屏幕上来显示问题。
\documentclass[10pt]{article}
\usepackage{booktabs}
\usepackage{polyglossia}
\setmainlanguage{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic]{Times New Roman}
\begin{document}
\begin{tabular}[t]{rl} \toprule
كلمة&كلمة\\ \midrule
كلمة&كلمة\\
\bottomrule
\end{tabular}
\hfill
\begin{tabular}[t]{rl} \toprule
كلمة&كلمة\\ \midrule
كلمة&كلمة\\
كلمة&كلمة\\
كلمة&كلمة\\
كلمة&كلمة\\
\bottomrule
\end{tabular}
\begin{english}
\begin{tabular}[t]{rl} \toprule
word&word\\ \midrule
word&word\\
\bottomrule
\end{tabular}
\hfill
\begin{tabular}[t]{rl} \toprule
word&word\\ \midrule
word&word\\
word&word\\
word&word\\
word&word\\
\bottomrule
\end{tabular}
\end{english}
\end{document}
答案1
array-xetex-bidi.def
第 90 行有一个错误
\let\\\@arraycr \let\tabularnewline\\\let\par\@empty \if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi\@preamble}
更准确地说,这个错误是
\if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi
它无条件地将表插入到中,使得使用该选项启动的\vbox
变得无关紧要。\vtop
[t]
如果我将其改为
\if@RTLtab
\hbox\bgroup\beginR
\if#1t\vtop\else\vbox\fi\bgroup
\fi
输出是
(注意:我在表格之间使用了\quad
而不是)。\hfill
临时解决方法:
\documentclass[10pt]{article}
\usepackage{booktabs}
\usepackage{polyglossia}
\setmainlanguage{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic]{Times New Roman}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@array}
{\beginR\vbox}
{\beginR\if#1t\vtop\else\vbox\fi}
{}{}
\makeatother
\begin{document}
当错误被修复时,补丁就不会成功,所以不会造成任何损害。