在 beamer 的枚举环境中更改 \item 字体

在 beamer 的枚举环境中更改 \item 字体

下面我在文档中使用旧式数字,但我定义了一种带有内衬数字的新字体以用于枚举列表:

\documentclass{article}
%\documentclass{beamer}
\usepackage{fontspec}
    \setmainfont{Libertinus Sans}[Numbers = {OldStyle, Proportional}]
    \newfontfamily\enumfont{Libertinus Sans}[Numbers ={Lining, Monospaced}]

\usepackage{enumitem}
    \setlist[enumerate]{font = \enumfont}

\begin{document}
%    \begin{frame}
    \begin{enumerate}
        \item 12345
        \item 67890
    \end{enumerate}
%    \end{frame}
\end{document}

使用\documentclass{article},文档可以编译成功:

在此处输入图片描述

\documentclass{beamer}但是,使用时我收到此错误:

! TeX capacity exceeded, sorry [input stack size=5000].
\labelenumi ->{\labelenumi 
                           }
l.16 ^^I\end{frame}

enumitem我猜想这与和的协同工作有关beamer,但我不知道如何修复它。那么如何在 beamer 中的枚举环境中使用等宽内衬数字?


更新

以下是 samcarter 的建议使用 时\setbeamerfont,只有在顶级列表中才有效果,而在嵌入列表中则没有效果:

\documentclass{beamer}
\usepackage{fontspec}
    \setsansfont{Libertinus Sans}[Numbers = {OldStyle, Proportional}]
    \setbeamerfont{enumerate item}{family = {\fontspec[Numbers ={Lining, Monospaced}]{Libertinus Sans}}}

\begin{document}
    \begin{frame}
        \begin{enumerate}
        \item foo
        \item bar
            \begin{enumerate}
                \item 123
                \item 456
                \item 789
            \end{enumerate}
        \item baz
        \end{enumerate}
    \end{frame}
\end{document}

在此处输入图片描述

答案1

不要enumitem与 beamer 一起使用。你也不需要它,因为使用 beamer 字体机制就足够了。

% !TeX TS-program = xelatex
\documentclass{beamer}

\usepackage{fontspec}

\setbeamerfont{itemize/enumerate body}{family={\fontspec[Variant=1]{Zapfino}}}
\setbeamerfont{enumerate item}{family={\fontspec[Variant=1]{Zapfino}}}
\setbeamerfont{enumerate subitem}{family={\fontspec[Variant=1]{Zapfino}}}


\begin{document}
  \begin{frame}
    \begin{enumerate}
        \item 12345
        \item 67890
        \begin{enumerate}
            \item 12345
            \item 67890
        \end{enumerate}
    \end{enumerate}
  \end{frame}
\end{document}

在此处输入图片描述

相关内容