我正尝试在 Beamer 幻灯片上的三列中显示一些希伯来语单词。
因为希伯来语是一种从右到左的语言,所以列应该从右到左排列。但是,由于主要语言是从左到右排列(例如英语或法语),所以列默认从左到右排列。在下面的示例中,我添加了一个\raggedleft
命令,使单词至少在右侧对齐。
我怎样才能使各列按正确的顺序排列?
\documentclass{beamer}
%Setting line spacing
\usepackage{setspace}
%Multiple columns
\usepackage{multicol}
%Languages
\usepackage{polyglossia}
\setdefaultlanguage{french}
\setotherlanguage{hebrew}
\setmainfont{Times New Roman}
\newfontfamily{\hebrewfontsf}{Ezra SIL}
\begin{document}
\begin{frame}
\frametitle{Vocabulaire: Chap. 2}
\begin{spacing}{1.25}
\raggedleft
\begin{multicols}{3}
\texthebrew{אַבְרָהָם
אַהֲרֹן
דָּוִד
יְהוּדָה
יהוה
יְהוֹשׁוּעַ
יוֹסֵף
יַעֲקֹב
יִצְחָק
יְרוּשָׁלַ֫םִ
יִרְמְיָ֫הוּ
יִשְׂרָאֵל
כְּנַעַן
מִצְרַ֫יִם
משֶׁה
עֵשָׂו
פַּרְעֹה
צִיּוֹן
שָׁאוּל
שְׁלֹמֹה
שְׁמוּאֵל
}
\end{multicols}
\end{spacing}
\end{frame}
\end{document}
它看起来像这样(列的顺序不正确):
答案1
正如@MS-SPO 在评论中提到的,beamer 有自己的列机制。
在内部,beamer 将一堆小页面(如单词中的字母)放在一起以创建这些列。这意味着您可以在列环境中切换语言并以相反的顺序获取列:
% !TeX TS-program = lualatex
\documentclass{beamer}
%Languages
\usepackage{polyglossia}
\setdefaultlanguage{french}
\setotherlanguage{hebrew}
\setmainfont{Times New Roman}
\newfontfamily{\hebrewfontsf}{Arial}
\begin{document}
\begin{frame}
\frametitle{Vocabulaire: Chap. 2}
\begin{columns}
\selectlanguage{hebrew}
\begin{column}{0cm}
\end{column}
\begin{column}{.3\textwidth}
אַבְרָהָם
אַהֲרֹן
דָּוִד
יְהוּדָה
יהוה
יְהוֹשׁוּעַ
יוֹסֵף
\end{column}
\begin{column}{.3\textwidth}
יַעֲקֹב
יִצְחָק
יְרוּשָׁלַ֫םִ
יִרְמְיָ֫הוּ
יִשְׂרָאֵל
כְּנַעַן
מִצְרַ֫יִם
\end{column}
\begin{column}{.3\textwidth}
משֶׁה
עֵשָׂו
פַּרְעֹה
צִיּוֹן
שָׁאוּל
שְׁלֹמֹה
שְׁמוּאֵל
\end{column}
\end{columns}
\end{frame}
\end{document}
或者你可以使用 babel,列将自动按相反顺序排列。而且右边距也不需要任何肮脏的黑客手段:
% !TeX TS-program = lualatex
\documentclass{beamer}
%Languages
\usepackage{fontspec}
\usepackage[bidi=basic]{babel}
\babelprovide[main]{french}
\babelprovide[import]{hebrew}
\babelfont{sf}{Times New Roman}
\babelfont[hebrew]{sf}{Arial}
\begin{document}
\begin{frame}
\frametitle{Vocabulaire: Chap. 2}
{ \selectlanguage{hebrew}
\begin{columns}
\begin{column}{.3\textwidth}
אַבְרָהָם
אַהֲרֹן
דָּוִד
יְהוּדָה
יהוה
יְהוֹשׁוּעַ
יוֹסֵף
\end{column}
\begin{column}{.3\textwidth}
יַעֲקֹב
יִצְחָק
יְרוּשָׁלַ֫םִ
יִרְמְיָ֫הוּ
יִשְׂרָאֵל
כְּנַעַן
מִצְרַ֫יִם
\end{column}
\begin{column}{.3\textwidth}
משֶׁה
עֵשָׂו
פַּרְעֹה
צִיּוֹן
שָׁאוּל
שְׁלֹמֹה
שְׁמוּאֵל
\end{column}
\end{columns}}
\end{frame}
\end{document}
答案2
该解决方案受到@samcarter_is_at_topanswers.xyz 的回答的启发,该回答解释了 Beamer 自己的列环境使用了小页面。
最后,另一个解决方案几乎成功了,但并没有产生所有预期的效果。字体选择、XeLaTeX 与 LuaLaTeX、babel 与 polyglossia 等之间的平衡很尴尬。某些组合可以更好地呈现某些字体,尤其是希伯来语元音的对齐,这是绝对必要的。
简而言之,XeLaTeX 无法处理 Beamer 的列环境,但确实能生成有吸引力的希伯来语文本。因此,正如评论中提出的那样,考虑到 XeLaTex 的所有挑战,最佳解决方案必须与 XeLaTeX 兼容。
对我有用的解决方案是直接使用 minipages。
% !TeX TS-program = xelatex
\documentclass{beamer}
%Setting line spacing
\usepackage{setspace}
%Multiple columns
\usepackage{multicol}
%Languages
\usepackage{polyglossia}
\setdefaultlanguage{french}
\setotherlanguage{hebrew}
\setmainfont{Times New Roman}
\newfontfamily{\hebrewfontsf}{Ezra SIL}
\begin{document}
\begin{frame}
\frametitle{Vocabulaire: Chap. 2}
\selectlanguage{hebrew}
\begin{spacing}{1.25}
\begin{minipage}{0.3\textwidth}
אַבְרָהָם
אַהֲרֹן
דָּוִד
יְהוּדָה
יהוה
יְהוֹשׁוּעַ
יוֹסֵף
\end{minipage}
\begin{minipage}{0.3\textwidth}
יַעֲקֹב
יִצְחָק
יְרוּשָׁלַ֫םִ
יִרְמְיָ֫הוּ
יִשְׂרָאֵל
כְּנַעַן
מִצְרַ֫יִם
\end{minipage}
\begin{minipage}{0.3\textwidth}
משֶׁה
עֵשָׂו
פַּרְעֹה
צִיּוֹן
שָׁאוּל
שְׁלֹמֹה
שְׁמוּאֵל
\end{minipage}
\end{spacing}
\end{frame}
\end{document}
最后请注意,在这种情况下,增加间距(无论如何我最初想要这样做)是必要的,因为希伯来语单词不一定占据相同的垂直空间,具体取决于使用的元音。不增加行距的结果是列不均匀。