将框架标题中的小型大写字母、数学直立字母 + 希腊文文本组合在一起

将框架标题中的小型大写字母、数学直立字母 + 希腊文文本组合在一起

我正拼命尝试在 Beamer 中完成三件事:

  1. 以小型大写字母显示框架标题。
  2. 将数学公式直立显示。
  3. 打印带有变音符号的希腊语文本。

前两点与下面的 MWE 配合得很好,但希腊语文本不起作用。我尝试添加

\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\newfontfamily{\greekfont}{CMU Serif}
\newfontfamily{\greekfontsf}{CMU Sans Serif}

到 .tex 文件。这样,我就有了希腊文,但框架标题不再以小写字母显示。有人知道如何解决这个问题吗?

这是我的 MWE:

\documentclass[hyperref={pdfpagemode=FullScreen},aspectratio=169]{beamer}

%%% Mathe-Font gerade %%%
\usepackage[T1]{fontenc}

\usepackage{amssymb}
\usepackage[math-style=upright]{unicode-math}
%%% Griechisch %%%

\usepackage{exscale} % große Formeln sehen schöner aus
%%% Folientitel weiter unten, zentriert und in Kapitälchen %%%
\usepackage{textcase,regexpatch}
\setbeamertemplate{frametitle}{%
  \makeatletter
  \regexpatchcmd{\insertframetitle}
    {(\c{usebeamertemplate}.*)\c{fi}}
    {\c{NoCaseChange}\cB\{\1\cE\}\c{fi}}
    {}{}%
  \makeatother
  \vspace{1ex} \huge\centerline{\scshape{\insertframetitle}}
}

\begin{document}
\begin{frame}
\frametitle{The frame title is in caps -- as desired.}
Here, the text is normal, as expected.
Also, math formulas are displayed the way I would like them to be, i.\,e., upright:
$\{ \langle x,y \rangle \mid x \in a \land y \in b \} := \{ z \in \mathfrak{P}(\mathfrak{P}(a\cup b)) \mid \exists x \exists y (x\in a \land y \in b \land z=\{ \{ x \}, \{ x,y \} \}) \}$
Problematically, though, greek letters are not displayed at all: Ἀριστοτέλης ὁ φιλόσοφος ἐστιν.
\end{frame}
\end{document}

作为 LaTeX 的一名初学者,我非常感激任何有关更简洁代码的建议。

答案1

为了打印希腊字母,您需要加载支持希腊语的字体。因此,加载 CMU Sans Serif 和 CMU Serif 是个好主意。由于这两种字体似乎都支持希腊语,因此您不需要专门为希腊语文本定义字体。请注意,您不能fontspec与 PDFLaTeX 一起使用,但您需要使用 XeLaTeX 或 LuaLaTeX。

您还需要指定希望以 CMU Serif 打印框架标题,因为 CMU Sans Serif 没有小写字母。您可以通过插入对 的\rmfamily重新定义来实现这一点frametitle

把所有内容放在一起:

\documentclass[hyperref={pdfpagemode=FullScreen},aspectratio=169]{beamer}

%%% Mathe-Font gerade %%%
\usepackage[T1]{fontenc}

\usepackage{fontspec}
\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}

\usepackage{amssymb}
\usepackage[math-style=upright]{unicode-math}
%%% Griechisch %%%

\usepackage{exscale} % große Formeln sehen schöner aus
%%% Folientitel weiter unten, zentriert und in Kapitälchen %%%
\usepackage{textcase,regexpatch}
\setbeamertemplate{frametitle}{%
  \makeatletter
  \regexpatchcmd{\insertframetitle}
    {(\c{usebeamertemplate}.*)\c{fi}}
    {\c{NoCaseChange}\cB\{\1\cE\}\c{fi}}
    {}{}%
  \makeatother
  \vspace{1ex} \huge\centerline{\rmfamily\scshape{\insertframetitle}}
}

\begin{document}
\begin{frame}
\frametitle{The frame title is in caps -- as desired.}
Here, the text is normal, as expected.
Also, math formulas are displayed the way I would like them to be, i.\,e., upright:
$\{ \langle x,y \rangle \mid x \in a \land y \in b \} := \{ z \in \mathfrak{P}(\mathfrak{P}(a\cup b)) \mid \exists x \exists y (x\in a \land y \in b \land z=\{ \{ x \}, \{ x,y \} \}) \}$
Problematically, though, greek letters are not displayed at all: Ἀριστοτέλης ὁ φιλόσοφος ἐστιν.
\end{frame}
\end{document}

输出应为:

在此处输入图片描述


题外话:你也许可以替换

\usepackage{textcase,regexpatch}
\setbeamertemplate{frametitle}{%
  \makeatletter
  \regexpatchcmd{\insertframetitle}
    {(\c{usebeamertemplate}.*)\c{fi}}
    {\c{NoCaseChange}\cB\{\1\cE\}\c{fi}}
    {}{}%
  \makeatother
  \vspace{1ex} \huge\centerline{\scshape{\insertframetitle}}
}

仅通过

\setbeamertemplate{frametitle}{%
  \vspace{1ex} \huge\centerline{\scshape{\insertframetitle}}
}

相关内容