我在使用希伯来语 Polyglossia 时遇到问题:虽然将主要语言定义为希伯来语,但我的表格在标题中没有编号(它仅显示为“表格”(טבלה)而不是“表格 1”(或“טבלה 1”)。如果我将主要语言改回英语 - 表格的标题为“表格 1”,没有问题。
有什么建议可以让我如何将数字恢复到表格的标题中?
梅威瑟:
\documentclass{article}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\setmainfont{David}
\setsansfont{Arial}
\setmonofont{Arial}
\begin{document}
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrr}
\hline
& speed & dist \\
\hline
1 & 4.00 & 2.00 \\
2 & 4.00 & 10.00 \\
3 & 7.00 & 4.00 \\
4 & 7.00 & 22.00 \\
5 & 8.00 & 16.00 \\
6 & 9.00 & 10.00 \\
\hline
\end{tabular}
\caption{סתם טבלה}
\end{center}
\end{table}
\end{document}
谢谢您的帮助!
答案1
使用 MAC OSX 10.7.4 和 TeXLive 2012 没有问题:
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\setmainfont{Adobe Hebrew}
\setsansfont{Arial}
\setmonofont{Arial}
\begin{document}
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrr}
\hline
& speed & dist \\
\hline
1 & 4.00 & 2.00 \\
2 & 4.00 & 10.00 \\
3 & 7.00 & 4.00 \\
4 & 7.00 & 22.00 \\
5 & 8.00 & 16.00 \\
6 & 9.00 & 10.00 \\
\hline
\end{tabular}
\caption{סתם טבלה}
\end{center}
\end{table}
\end{document}
这是我得到的非常好的输出:
更新:
@Ulrike:这应该是你的最小例子:
\documentclass{minimal}
\TeXXeTstate=1
\font\body="Adobe Hebrew:script=hebrew" at 12pt % replace "Adobe Hebew" with some other Hebrew font
\begin{document}
\hbox{\beginR\body
טבלה
1:
סתם טבלה
\endR}
\end{document}
在 Mac OS X 10.7.4 上使用 TeXLive 2012,我得到了预期的行为:
如果您得到其他信息,那么这就是 MiKTeX 的 bug。事实上,MiKTeX 多年来一直包含一个有 bug 的 XeTeX 二进制版本。有关详细信息,请参阅这里。
答案2
@Eyal、@Vafa:
关于分隔符的问题。我不知道这是否是由于 miktex 中的错误造成的,因为我不知道缩进或想要的行为是什么(例如,数字 123 应该如何用希伯来语打印?打印为 123 还是 321?)。但如果是错误,那么第一步就是简化问题。依赖于 fontspec、polyglossia、bidi 和未知字体的示例在错误报告中没有用处。
我把问题归结为以下几点:
\documentclass{article}
%\font\test="Arial Unicode MS"
\font\test="Ezra SIL"
\TeXXeTstate=1
\chardef\popDirection"202C
\chardef\forceLtoR"202D
\chardef\forceRtoL"202E
\begin{document}
%non-unicode font
\beginR
abc 123:
\endR
%unicode-font
\test
abc 123: 456\mbox{}: מאוד abמאוד :מאוד
\beginR
abc 123: 456\mbox{}: מאוד abמאוד :מאוד
\endR
\beginR
\forceRtoL 123:
\forceRtoL abמאוד
\endR
\end{document}
这为我提供了 miktex 2.9 的结果(arial unicode 的结果类似):
很明显,一旦使用unicode字体,方向里面“单词”取决于所涉及字符的 unicode 平面:带有数字或字符(如“abc”)以及标点符号(如冒号或点)的单词即使在 RTL 上下文中也是从左到右打印的(反之亦然)。混合了从左到右和从右到左平面的字符的单词可能会因方向变化而吞掉前面的字符。您在 TeXLive 上获得了什么?
答案3
我在 Windows XP 上使用 MiKTeX 2.9。
以下是我使用 Ulrike 的 MWE (使用 FrankRuehl 作为字体) 得到的结果:
并且这是没有的script=hebrew
(根据 Vafa 的评论):
因此,第一幅图中没有数字符号和冒号符号,而第二幅图中又出现了它们。此外,还有Shmulik 链接到的分隔符错误。最后,请注意间距差异 - 字形没有被相同宽度的空白替换 - 但在第一个示例中有一些额外的空间。
使用 Shmulik 的代码 + 对字体命令进行轻微更改,我得到了一些奇怪的行为:
\documentclass{article}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
%\setmainfont{David}
\newfontfamily\hebrewfont{David}
\setsansfont{Arial}
\setmonofont{Arial}
\begin{document}
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrr}
\hline
& speed & dist \\
\hline
1 & 4.00 & 2.00 \\
2 & 4.00 & 10.00 \\
3 & 7.00 & 4.00 \\
4 & 7.00 & 22.00 \\
5 & 8.00 & 16.00 \\
6 & 9.00 & 10.00 \\
\hline
\end{tabular}
\caption{סתם טבלה}
\end{center}
\end{table}
\end{document}
非希伯来语字符似乎确实是大卫,但希伯来语却是其他字体。