多语和垂直表格对齐

多语和垂直表格对齐

我有两个tabular并排的,我想让它们的顶部对齐。

当我使用英语时,它运行良好。

当我使用阿拉伯语时,即使我使用了规范,表格也会突然变为底部对齐[t]。对于阿拉伯语,我使用了 Times New Roman 字体,但这不是必需的。我正在使用 booktabs 包。

我猜测问题在于Bidipolyglossia,但我不知道。

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}

当错误被修复时,补丁就不会成功,所以不会造成任何损害。

相关内容