这是一个关于赛莱特,尽管我在这里提到了 LyX。
我的目标是制作一个一行两列的 RTL 表,看起来或多或少像这样:
+---+---+
| 2 | 1 |
+---+---+
我尝试在 LyX 中制作它,然后导出到 XeTeX 并得到以下代码:
%% LyX 2.0.8.1 created this file. For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[english,hebrew]{article}
\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{David CLM}
\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
%% Because html converters don't know tabularnewline
\providecommand{\tabularnewline}{\\}
\makeatother
\usepackage{xunicode}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\begin{document}
\begin{tabular}{|c|c|}
\hline
{\beginL 2\endL} & {\beginL 1\endL}\tabularnewline
\hline
\end{tabular}
\end{document}
看起来似乎相反,事实上,当使用赛莱特我得到一个相反的表:
+---+---+
| 1 | 2 |
+---+---+
所以我发现这是一个LyX 错误,但在“解决”之前,LyX 人员希望确定正确的 XeTeX 代码应该是什么。是否如我所想的那样,只是列切换了?或者也许那里有其他问题?
答案1
通过编写,\setdefaultlanguage{hebrew}
您可以默认将整个文档设置为从右到左,这也会影响表格列的顺序。这与bidi
加载的包有关polyglossia
。顺便说一句,使用这些包时不需要命令\beginL
和。\endL
因此,LyX 应在 RTL 模式下产生相反的列顺序。另请注意,如果您加载,polyglossia
则无需fontspec
加载xunicode
。
因此代码应该如下:
\documentclass[english,hebrew]{article}
\usepackage{polyglossia}
\setmainfont[Mapping=tex-text]{David CLM}
\providecommand{\tabularnewline}{\\}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\begin{document}
\begin{tabular}{|c|c|}
\hline
1 & 2 \tabularnewline
\hline
\end{tabular}
\end{document}
答案2
简单的方法是:
像这样写你的表格
+---+---+
| 1 | 2 |
+---+---+
生成 pdf 后您将获得:
+---+---+
| 2 | 1 |
+---+---+
我一直都在用这个想法。