创建自定义字体大小(redux)

创建自定义字体大小(redux)

此主题,我从@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}

相关内容