我正在使用polyglossia
(阿拉伯语和英语)以及我可以关闭和打开的条件环境,代表老师的版本。
在下面的 MWE 中,我有三个单行tabular
,我希望每个行的输出都相同。
第一行使用
\textenglish
并给出我想要和期望的结果。第二行使用了
begin{english}
环境,但 RTL 似乎被忽略了。我不知道为什么。第三行使用条件环境,其RTL也被忽略并且对齐方式再次不同。
我想要修复的是第三行的行为,但前两行更适合比较。
我想知道这个bidi
包这里是否有错误,但我太新手了,无法确定。
这是 MWE。字体不重要。
\documentclass[11pt,oneside]{article}
\newif\ifteacher
\teachertrue
% \teacherfalse
\usepackage{environ}
\usepackage{polyglossia}
\setmainlanguage[numerals=mashriq]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.00]{Times New Roman}
\newfontfamily\englishfont[Script=Latin]{Times New Roman}
\NewEnviron{forteacher}
{
\ifteacher
\begin{english}
\BODY\par
\end{english}
\else
\fi
}
\begin{document}
\begin{tabular}{rl}
ااا ببب & \textenglish{aaa bbb}
\end{tabular}
\begin{tabular}{rl}
ااا ببب &
\begin{english}
aaa bbb
\end{english}
\end{tabular}
\begin{tabular}{rl}
ااا ببب &
\begin{forteacher}
aaa bbb
\end{forteacher}
\end{tabular}
\end{document}
答案1
这不是一个包错误,但我认为您对何时使用以及何时使用环境bidi
存在误解。\textenglish
english
对于短文本(少于一行),使用\textenglish
;对于长文本,使用english
环境。a 的r
或列只能包含短文本,因此使用环境没有意义,也不会产生任何效果;你问的相当于l
tabular
english
\hbox{\begin{english}...\end{english}}
因此在这种情况下,您需要使用\textenglish
命令。但是,当您有p
列时,您可以使用english
环境从左到右排版文本。
答案2
为了达到这个目的,你可以使用原语 \beginL
和\endL
用于bidi
写left-to-right
在right-to-left
句子里面的,你可以看看e-TeX 简明参考手册。
\documentclass[11pt,oneside]{article}
\newif\ifteacher
\teachertrue
% \teacherfalse
\usepackage{environ}
\usepackage{polyglossia}
\setmainlanguage[numerals=mashriq]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.00]{Times New Roman}
\newfontfamily\englishfont[Script=Latin]{Times New Roman}
\NewEnviron{forteacher}
{%
\ifteacher
\beginL
\BODY\par
\endL
\else
\fi
}
\begin{document}
\begin{tabular}{rl}
ااا ببب &
\textenglish{aaa bbb}
\end{tabular}
\begin{tabular}{rl}
ااا ببب &
\beginL
aaa bbb%
\endL
\end{tabular}
\begin{tabular}{rl}
ااا ببب &
\begin{forteacher}
aaa bbb
\end{forteacher}
\end{tabular}
\end{document}