Beamer 主题和 bidi 问题

Beamer 主题和 bidi 问题

我正在尝试编写希伯来语投影仪演示文稿。我找到了一些非常好的模板,这些模板实际上可以从盒子里找到在这个链接中来源作者编译的输出),但是有两个问题,我的编译输出与上面的不一致:

  1. 首先,列表会向左刷新(即使它向右对齐),即使我将它封闭在环境中,这种情况也不会改变flushright

  2. 定理(第二帧)以标题“定理”或其希伯来语对应词的形式出现。无论对单词进行任何修改或删除。

    但是,如果我禁用主题(Warsaw,以及其他类似的主题),那么它就会运行得很好(它也可以与Hannover类似的主题一起使用)。但是像往常一样没有包含定理的框。

有没有简单的方法可以解决这个问题(除了不使用 Beamer 准备希伯来语演示文稿)?

如果有任何相关性,我正在使用 Arch Linux 和 texlive;但问题仍然存在于装有 MiKTeX(最新版本)的 Windows 8.1 平板电脑上。


我设法通过主题解决了第二个问题Rochester。但我想了解如何解决其他主题(如主题)的问题Warsaw

第一个问题显得更加棘手。

答案1

LuaLaTeX+Babel+Beamer+Metropolis 对于希伯来语的演示非常有效:推介会来源。不过我还没有用数学来测试过它。

祝你好运 :-)

以下是上面链接的源的本地副本:

%! TEX program = lualatex

%%%%%%%%%%
% BEAMER %
%%%%%%%%%%

\RequirePackage{luatex85}
\PassOptionsToPackage{luatex}{hyperref}

\documentclass[luatex]{beamer}

\usetheme{metropolis}

% Fix the title separator
\makeatletter
\setbeamertemplate{title separator}{
    \bgroup
    \bodydir TLT
    \begin{tikzpicture}
        \fill[fg] (0,0) rectangle (\textwidth, \metropolis@titleseparator@linewidth);
    \end{tikzpicture}%
    \egroup
    \par%
}
\makeatother

% Fix the progress bar and make it progress from right to left
\makeatletter
\setbeamertemplate{progress bar in section page}{
    \setlength{\metropolis@progressonsectionpage}{%
        \textwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}%
    }%
    \bgroup
    \bodydir TLT
    \begin{tikzpicture}
        \fill[bg] (0,0) rectangle (\textwidth, \metropolis@progressonsectionpage@linewidth);
        \fill[fg] (\textwidth,0) rectangle (\textwidth-\metropolis@progressonsectionpage, \metropolis@progressonsectionpage@linewidth);
    \end{tikzpicture}%
    \egroup
}
\makeatother

% A more logical title page, juxtaposing `institute` to `author`. This modification is not necessary for Hebrew support.
\makeatletter
\setbeamertemplate{title page}{
  \begin{minipage}[b][\paperheight]{\textwidth}
    \ifx\inserttitlegraphic\@empty\else\usebeamertemplate*{title graphic}\fi
    \vfill%
    \ifx\inserttitle\@empty\else\usebeamertemplate*{title}\fi
    \ifx\insertsubtitle\@empty\else\usebeamertemplate*{subtitle}\fi
    \usebeamertemplate*{title separator}
    \ifx\beamer@shortauthor\@empty\else\usebeamertemplate*{author}\fi
    \ifx\insertinstitute\@empty\else\usebeamertemplate*{institute}\fi
    \ifx\insertdate\@empty\else\usebeamertemplate*{date}\fi
    \vfill
    \vspace*{1mm}
  \end{minipage}
}
\setbeamertemplate{author}{\vspace*{2em}\insertauthor\par\vspace*{0.25em}}
\setbeamertemplate{institute}{\insertinstitute\par}
\setbeamertemplate{date}{\vspace*{3mm}\insertdate\par}
\makeatother




%%%%%%%%%
% Babel %
%%%%%%%%%

\usepackage[nil,bidi=basic-r]{babel}
\babelprovide[import=he,main]{hebrew}
\babelprovide[import=en-GB]{english}
\babelprovide[import=cy]{welsh}

% For some reason Babel’s `\babelfont` doesn’t work
\setsansfont[Script=Hebrew]{Open Sans Hebrew}
\setmonofont{Fira Mono}
\renewcommand{\H}[1]{\foreignlanguage{hebrew}{\fontspec[Script=Hebrew]{Open Sans Hebrew}#1}}
\newcommand{\nikud}[1]{$\mbox{\H{#1}}$}
\newcommand{\E}[1]{\foreignlanguage{english}{\fontspec{Open Sans}#1}}
\newcommand{\C}[1]{\foreignlanguage{welsh}{\fontspec{Open Sans}#1}}
\newcommand{\LR}[1]{{‏\textdir TLT #1}}



%%%%%%%%
% MISC %
%%%%%%%%

\usepackage{metalogo, fancyvrb}

\newcommand{\smallurl}[1]{{\footnotesize\url{#1}}}



%%%%%%%%%%%%
% DOCUMENT %
%%%%%%%%%%%%

\begin{document}
\title{מצגות \E{Beamer} בעברית הן בגדר האפשר}
\subtitle{החלום שכולנו חיכינו לו מתגשם סוף כל סוף}
\author{יודה רונן\quad\foreignlanguage{english}{\smallurl{<https://me.digitalwords.net/>}}}
\institute{האגודה הבינלאומית ל\TeX נולוגיה עברית}
\date{אוגוסט 2018}
\frame{\titlepage}


\begin{frame}{שלום עולם!}
    מה יש לנו כאן?

    \begin{itemize}
        \item פתרון מודרני שלם (אך לא מושלם) ליצירת מצגות עבריות ב־\E{Beamer}.
        \item משתמש במחלקות וחבילות הרגילות, ולא דורש תחזוק של פוֹרְקִים עם התאמה לעברית. למעשה, פחות או יותר הכל עובד מהקופסה חוץ מכמה תיקונים קטנים שנדרשים.
        \item המנוע הוא \LuaLaTeX, על הכיווניות אחראית החבילה \E{Babel}, והעיצוב הוא של הערכה \E{Metropolis} האלגנטית, הברורה והנקיה.
    \end{itemize}
\end{frame}


\begin{frame}{על כתפי ענקים}
    ככל הידוע לי, היו לפחות שלושה פתרונות קודמים:
    \begin{itemize}
        \item של \href{https://web.archive.org/web/20111206041733/http://www.technion.ac.il/~ronen/latex/beamer_hebrew.html}{רונן אברבנאל}%
            \footnote{כתובת: \smallurl{https://web.archive.org/web/20111206041733/http://www.technion.ac.il/~ronen/latex/beamer_hebrew.html}}
        \item של \href{https://web.archive.org/web/20150327024158/http://technion.ac.il/~gai/beamer/index.html}{גיא שקד}%
            \footnote{כתובת: \smallurl{https://web.archive.org/web/20150327024158/http://technion.ac.il/~gai/beamer/index.html}}
        \item של \href{https://tug.org/pipermail/xetex/2009-July/013721.html}{ופא ח׳ליקי}%
            \footnote{כתובת: \smallurl{https://tug.org/pipermail/xetex/2009-July/013721.html}}
    \end{itemize}

    כמו שאפשר לראות, שני הראשונים כבר לא נמצאים יותר ברשת באופן עצמאי אלא רק בארכיון האינטרנט.
    הפתרון של רונן לא מתקמפל היטב בגרסאות חדשות;
    של גיא ושל ופא מבוססים על מחלקה לא סטנדרטית.
\end{frame}


\begin{frame}{האקים א׳: קווים מפרידים}
    בגדול הכל עובד ישר מהקופסה. עם זאת, יש כמה דברים קטנים שצריך לשנות, כמו שאפשר לראות בקוד המקור של הקובץ הזה.

    שניים מהם קשורים לקווים המפרידים בשקופיות מיוחדות:

    \begin{itemize}
        \item תיקון של הקו המפריד בכותרת.
        \item תיקון של הקו המפריד בסעיפים והחלפת הכיוון שלו כך שיהיה הגיוני (התקדמות מימין לשמאל).
    \end{itemize}
\end{frame}


\begin{frame}{האקים ב׳: ענייני פונטים}
    ושניים קשורים לפונטים:

    \begin{itemize}
        \item משום מה מנגנון בחירת הפונטים של \E{Babel} לא עובד טוב, אז צריך לעקוף אותו ולהשתמש ב־\E{fontspec} ישירות.
        \item ניקוד מוצג נכון רק אם אין מלל לועזי לפניו בפסקה%
            \footnote{אני משער שהפונט העברי חוזר ללא המאפיין \E{\texttt{Script=Hebrew}}, ההכרחי לניקוד.}.
            כדי לעקוף את הבעיה אפשר לשים את המילה המנוקדת בסביבה מבודדת%
            \footnote{לדוגמה, בתוך \E{\texttt{\textbackslash mbox}} בתוך מתמטיקה; לא אלגנטי אבל עובד. אפשר, כמובן, ליצור פקודה יפה שעושה את זה.}.

            \begin{itemize}
                \item ככה זה נראה נכון: \E{abc} \nikud{נִקּוּד}\\
                \item וככה לא נכון: \E{abc} נִקּוּד
            \end{itemize}
    \end{itemize}
\end{frame}


\begin{frame}{האקים ג׳: טבלאות}
    לא בדיוק האק, אלא משהו לשים לב אליו: סדר העמודות בטבלאות הוא משמאל לימין ולא מימין לשמאל.

    \vfill

    \begin{columns}[t]
        \column{0.50\textwidth}
        קלט:\\
        \begin{otherlanguage}{english}
            \bgroup\tt
            \textbackslash begin\{tabular\}\{r|r|r\}\\
            \quad\foreignlanguage{hebrew}{\fontspec{Pragmata Pro}{שמאל}} \&\\
            \quad\foreignlanguage{hebrew}{\fontspec{Pragmata Pro}{אמצע}} \&\\
            \quad\foreignlanguage{hebrew}{\fontspec{Pragmata Pro}{ימין}}\\
            \textbackslash end\{tabular\}
            \egroup
        \end{otherlanguage}

        \column{0.40\textwidth}
        פלט:\\
        \begin{tabular}{r|r|r}
            שמאל &
            אמצע &
            ימין
        \end{tabular}
    \end{columns}
\end{frame}


\begin{frame}{מה לא עובד?}
    הבעיה היחידה שנתקלתי בה ולא מצאתי פתרון עבורה היא בביבליוגרפיה עם \E{Bib\LaTeX}. רוב הרשומות ב־\E{\texttt{\textbackslash printbibliography}} מסתדרות מעולה, ושומרות על כיווניות בלי בעיה. לעומת זאת, רשומות של תרגומים שמשתמשות בשדה \E{\texttt{related}} ובשדה \E{\texttt{relatedtype}} עם הערך \E{\texttt{translationof}} מתחרבשות בחלק שמציג את הספר המקורי: כל האותיות מופיעות בסדר הפוך. אם מצאתם פתרון לבעיה, אשמח לשמוע מתחרבשים בחלק שמציג את המקור: כל האותיות מופיעות בסדר הפוך. אם מצאתם פתרון לבעיה, אשמח לשמוע :-) (פרטי יצירת קשר יש בעמוד השער).

    דוגמה לבעיה אפשר לראות בתרגום הוולשי של הארי פוטר במצגת הזאת:\\
    \smallurl{https://ac.digitalwords.net/\#nonacademic-2018-08-23}\\
    קובץ ה־\E{Bib\LaTeX} זמין כאן:
    \smallurl{https://gitlab.com/rwmpelstilzchen/bibliography.bib}
\end{frame}


\begin{frame}{מה צריך עוד לעשות?}
    כאמור, אני נתקלתי רק בבעיה אחת שלא הצלחתי לפתור. יכול להיות שאנשים עם צרכים אחרים משלי יתקלו בבעיות אחרות. אם נתקלת בבעיה כללית, אל תהסס/י לפנות אלי: אם מצאת פתרון, אשמח לשמוע אותו; אם לא מצאת פתרון, אשמח לנסות לעזור.
\end{frame}


\begin{frame}{דוגמה למצגת מורכבת}
    הצורך ביצירת מצגת עברית עלה אצלי עבור הרצאה שהכנתי לכנס מיתופיה 2018 („הארי פוטר וכינויי הגוף השני”), הרצאה שהיא גלגול של הרצאה שהצגתי בכנסים אקדמיים (בלשניים וקלטולוגיים) לקהל הפוטריסטי. לא יכולתי להסתמך על מצגת באנגלית בגלל שלא כולם בקהל קוראים באנגלית באופן שוטף, כך שהייתי צריך לתרגם את המצגת הקיימת שהיתה לי לעברית. \E{PowerPoint} של מיקרוסופט או \E{Impress} של ליברה־אופיס הן לא אופציות: אני מעדיף למות תריסר מיתות משונות לפני שאגע בדברים האלה. מתוך הצורך הגיעה נבירה ב־\url{tex.stackexchange.com} ויצירת הפתרון הזה.

    למה אני מספר את זה? כי אם אתם רוצים לראות מצגת די מורכבת שעובדת יפה עם עברית ושקוד המקור שלה זמין, גשו אל:\\
    \smallurl{https://ac.digitalwords.net/\#nonacademic-2018-08-23}
\end{frame}



\part{ככה נראית שקופית של חלק}
\frame{\partpage}

\section{וככה סעיף לקראת הסוף}

\begin{frame}{הערת־אגב: פונטים למצגות}
    במצגת הזאת משמש הפונט \href{https://en.wikipedia.org/wiki/Open_Sans}{\E{Open Sans}} של סטיב מטסון עם \href{https://yaronimus.wordpress.com/2014/01/19/\%D7\%90\%D7\%95\%D7\%A4\%D7\%9F-\%D7\%A1\%D7\%90\%D7\%A0\%D7\%A1-\%D7\%92\%D7\%95\%D7\%A4\%D7\%9F-\%D7\%A8\%D7\%A9\%D7\%AA-\%D7\%97\%D7\%99\%D7\%A0\%D7\%9E\%D7\%99-\%D7\%91\%D7\%A2\%D7\%99\%D7\%A6\%D7\%95\%D7\%91\%D7\%95-\%D7\%A9\%D7\%9C-\%D7\%99\%D7\%90/}{ההרחבה העברית} שעיצב ינק יונטף („הפונט של הארץ”).
    לדעתי זה פונט מעולה למצגות, בדומה ל־\E{Fira Sans} (הפונט הדיפולטיבי של \E{Metropolis}); $\mbox{אָלֶף}$ (\E{Alef}), עם כל חיבתי אליו, לא מתאים למצגות.
\end{frame}
\end{document}

答案2

这只是对第二个问题的解释。

似乎 beamer 只包含少数几种语言的翻译。对于定理等,似乎仅限于巴西语、克罗地亚语、英语、法语、德语、希腊语、挪威语、波兰语、塞尔维亚语和西班牙语。beamerbasemisc.sty 中的注释说明了月份的处理方式:

这不是最理想的;为了实现完整的本地化,应该使用 Babel。

我实际上曾在一种不受支持的语言中使用过 Beamer,我想这种情况并不罕见。但是,很多情况下不会出现此问题,因为它们不需要 Beamer 定义的文本作为幻灯片内容的一部分。

我怀疑在这种情况下,您需要提供希伯来语翻译才能使其正常工作。不过,您可能能够重新定义奇怪的事物以使特定演示文稿正常工作以供您自己使用,而无需进行完整翻译。但是,与以往一样beamer,您可能必须通过至少六个文件来追踪正在发生的事情才能解决问题。beamerbasetranslator.stytranslator.sty等等。

语言映射存在于translator-language-mappings.tex

\DeclareOption{hebrew}         {\trans@use@and@alias{hebrew}    {Hebrew}}

translator.sty输入此。但是,后来发生的事情是,beamer当它找不到希伯来语词典时(因为beamer没有),默认为英语。这可能是大多数定义的语言的问题,因为它们中的大多数都缺乏beamer特定的翻译词典。

您可以尝试将相关词典复制translator-theorem-dictionary-English.dicttranslator-theorem-dictionary-Hebrew.dict,然后编辑它,更改您实际需要使用的名称。在相关目录中进行复制,TEXMFHOME以便它不会在更新时被覆盖。这将避免由于某些东西不存在而导致的错误,beamer因为您不会删除任何翻译。但它将允许您只添加您实际使用的术语的翻译。如果您做的不止这些,您应该考虑将您的词典或词典提交到上游,以便希伯来语可以开箱即用。

相关内容