Beamer:让文本框自动缩小 sty 文件中的文本大小

Beamer:让文本框自动缩小 sty 文件中的文本大小

我正在创建自定义的 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}

在此处输入图片描述

相关内容