在此主题,我从@MartinSharrer 那里学到了如何创建自定义字体大小。除了我嵌套 itemize 列表时,它工作得很好。对于第一个 itemize 级别,它可以按预期工作,但对于较低的级别,它不起作用。以下是发生的情况的一个例子。
\documentclass{beamer}
\newlength{\myFontLength}
\makeatletter
\newcommand{\myFont}[1]{%
\@defaultunits\myFontLength=#1pt\relax\@nnil
\edef\@tempa{{\strip@pt\myFontLength}}%
\ifx\protect\@typeset@protect
\edef\@currsize{\noexpand\myFont\@tempa}% store calculated size
\fi
\myFontLength=1.2\myFontLength
\edef\@tempa{\@tempa{\strip@pt\myFontLength}}%
\expandafter\fontsize\@tempa
\selectfont
}
\makeatother
\begin{document}
\begin{frame}
\myFont{4}{This is a test
\begin{itemize}
\item This is a test \\
\begin{itemize}
\item This is a test \\
\begin{itemize}
\item This is a test \\
\end{itemize}
\end{itemize}
\end{itemize}
}
\end{frame}
\end{document}
输出结果如下:
有人能建议如何修改我的\myFont
宏,以便它在所有级别上都能一致地工作吗itemize
?如果有人能解释一下如何在每次嵌套一个级别时将字体大小减小 1 个单位,从而自动实现此效果,那就更好了:
非常感谢!
答案1
它与article
类配合得很好。因此,这可能是由于 的内部设置beamer
,请参阅beamer - tiny - itemize - itemize 导致行距(和字体大小)不正确。
根据那里的答案,我建议你这样做
\setbeamerfont{itemize/enumerate body}{size=\myFont{4}}
\setbeamerfont{itemize/enumerate subbody}{size=\myFont{4}}
\setbeamerfont{itemize/enumerate subsubbody}{size=\myFont{4}}
如果以后你想itemize
以正常大小书写,你可以简单地输入
\setbeamerfont{itemize/enumerate body}{size=\normalsize}
\setbeamerfont{itemize/enumerate subbody}{size=\small}
\setbeamerfont{itemize/enumerate subsubbody}{size=\footnotesize}
恢复默认值。
以下是完整代码。请注意,我已将您的定义更改\myFont
为\newcommand{\myFont}[1]{\fontsize{#1 pt}{\numexpr 6 * #1 / 5\relax pt}\selectfont}
,对我来说,它似乎与您的相同,但要简单得多。
\documentclass{beamer}
\newcommand{\myFont}[1]{\fontsize{#1 pt}{\numexpr 6 * #1 / 5\relax pt}\selectfont}
\begin{document}
\setbeamerfont{itemize/enumerate body}{size=\myFont{4}}
\setbeamerfont{itemize/enumerate subbody}{size=\myFont{4}}
\setbeamerfont{itemize/enumerate subsubbody}{size=\myFont{4}}
\begin{frame}
\myFont{4}{This is a test}\normalsize Normal size
\begin{itemize}
\item This is a test \\
\begin{itemize}
\item This is a test \\
\begin{itemize}
\item This is a test \\
\end{itemize}
\end{itemize}
\end{itemize}
\end{frame}
\end{document}