下面我在文档中使用旧式数字,但我定义了一种带有内衬数字的新字体以用于枚举列表:
\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}