我正在创建自定义的 Beamer 主题,在文件中,beamerinnertheme.sty
我试图定义标题、作者和日期文本框,以自动缩小文本以适应预定的框大小。从我发现的情况来看,我似乎会使用该tcolorbox
包。我已经定义了我希望我的框包含的部分
\newtcboxfit{\mybox}{width=\linewidth,colback=white,colframe=white}
% Title page
\defbeamertemplate*{title page}{texsx}[1][]
{
\vskip2.5cm%
\begin{beamercolorbox}[wd=12cm,leftskip=1cm,sep=8pt,#1]{title goes here}
\usebeamerfont{\mybox{title}\inserttitle}\par%
\end{beamercolorbox}%
\vskip0.75cm%
\begin{beamercolorbox}[wd=12cm,leftskip=3cm,#1]{author}
\usebeamerfont{author}\insertauthor%
\end{beamercolorbox}
\vskip0.2cm%
\begin{beamercolorbox}[wd=12cm,leftskip=3cm,#1]{date}
\usebeamerfont{author}\insertdate%
\end{beamercolorbox}
\vfill
}
但这并没有产生我想要的结果,主要是因为我无法让定义的框将标题输入作为参数。
答案1
一些语法问题:
环境的强制参数
beamercolorbox
必须是投影仪颜色。除非您有自定义的颜色名称title goes here
,否则我怀疑您更希望使用类似\begin{beamercolorbox}[...]{title}
宏
\beamerfont
需要作为参数的 beamer 字体,而不是你的框,所以它应该是\usebeamerfont{title}
您的框的参数应该是要放置在框中的文本,在您的情况下,此文本存储在中
\inserttitle
,因此您需要使用\mybox{\inserttitle}
tcoolorbox 的拟合库需要指定盒子的高度。如果您不指定高度,它将假定一个方形盒子 - 考虑到 beamer 框架的纵横比,您在这种情况下永远不会看到收缩。
\documentclass{beamer}
\usepackage[most]{tcolorbox}
\newtcboxfit{\mybox}{colback=red, colframe=red,width=\linewidth, height=1cm}
% Title page
\setbeamertemplate{title page}{
\vskip2.5cm%
\begin{beamercolorbox}[wd=\linewidth,leftskip=0cm,sep=8pt]{title}
\usebeamerfont{title}\mybox{\inserttitle}\par%
\end{beamercolorbox}%
\vskip0.75cm%
\begin{beamercolorbox}[wd=\linewidth,leftskip=3cm]{author}
\usebeamerfont{author}\insertauthor%
\end{beamercolorbox}
\vskip0.2cm%
\begin{beamercolorbox}[wd=\linewidth,leftskip=3cm]{date}
\usebeamerfont{author}\insertdate%
\end{beamercolorbox}
\vfill
}
\title{text very long text very long text text very long text very long text text very long text very long text}
\author{names}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\end{document}
(为了防止您的主题爆炸,您可能需要检查插入的字段是否实际已填充或是否为空......)
如果您使用易于缩放的字体(例如没有不同的光学尺寸),则使用该adjustbox
包可能会更容易:
\documentclass{beamer}
\setbeamerfont{title}{family=\fontfamily{LibertinusSans-LF}\selectfont}% just the first font I could think of which is missing optical sizes, not a recommendation to use this font
\usepackage{adjustbox}
\setbeamercolor{title}{bg=red}
% Title page
\setbeamertemplate{title page}{
\vskip2.5cm%
\begin{beamercolorbox}[wd=\textwidth,leftskip=0cm,sep=8pt]{title}
\usebeamerfont{title}\adjustbox{max width=\linewidth-16pt}{\inserttitle}\par%
\end{beamercolorbox}%
\vskip0.75cm%
\begin{beamercolorbox}[wd=\linewidth,leftskip=3cm]{author}
\usebeamerfont{author}\insertauthor%
\end{beamercolorbox}
\vskip0.2cm%
\begin{beamercolorbox}[wd=\linewidth,leftskip=3cm]{date}
\usebeamerfont{author}\insertdate%
\end{beamercolorbox}
\vfill
}
\title{text very long text very long text text very long text very long text text very long text very long text}
\author{names}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\end{document}