如何在 Beamer 中从右到左排列多列?

如何在 Beamer 中从右到左排列多列?

我正尝试在 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}

在此处输入图片描述

最后请注意,在这种情况下,增加间距(无论如何我最初想要这样做)是必要的,因为希伯来语单词不一定占据相同的垂直空间,具体取决于使用的元音。不增加行距的结果是列不均匀。

相关内容