Я пишу латексный шаблон для слайдов презентации с использованием beamer
класса.
Я хочу разработать стиль заголовка и подзаголовка произвольного кадра с точки зрения их цвета, размера шрифта и расположения. Я не знаю, как настроить параметры специально beamer
для объектов заголовка и подзаголовка, поэтому я определил два textblock
в части \defbeamertemplate*
.
И я также хочу разместить основной текст под 3.5 cm
верхним краем слайда.
Ниже я представляю свой код. Результат не очень. Потому что если я добавлю больше контента в основной текст, первая строка основного текста сместится выше и перекроет строки заголовка и подзаголовка, см. два скриншота ниже.
Знаете ли вы, как сделать так, чтобы первая строка основного текста находилась 3.5 cm
ниже верхнего края слайда? Возможно, использование текстовых блоков для заголовка и подзаголовка совсем не элегантно. Любые предложения приветствуются.
\documentclass{beamer}
\usepackage[absolute,overlay]{textpos}
\defbeamertemplate*{frametitle}{}[1][]
{
\begin{textblock*}{12cm}(0.5cm,1cm)
{\color{gray} \fontsize{36}{43.2} \selectfont \insertframetitle}
\end{textblock*}
\begin{textblock*}{12cm}(0.5cm,2.5cm)
{\color{gray} \fontsize{20}{24} \selectfont \insertframesubtitle}
\end{textblock*}
}
\begin{document}
\begin{frame}
\frametitle{Bulleting and Number}
\framesubtitle{As An Example}
This is line should be 3.5 cm below the top edge of the slide.
\begin{itemize}
\item adfas
\begin{itemize}
\item afdfa
\begin{itemize}
\item adfadsfa
\item adsfa
\end{itemize}
\end{itemize}
\end{itemize}
This is how to add numbered list.
\begin{enumerate}
\item Use number
\item Another number
\begin{enumerate}[I]
\item Use Letter
\item Another letter
\begin{enumerate}[a]
\item Use
\item Use
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{frame}
\end{document}
решение1
Вместо a textblock
я бы пошел традиционным путем и поместил заголовок кадра внутрь a beamercolorbox
. Чтобы отрегулировать вертикальное положение в соответствии с вашими требованиями, измените значения s \vskip
.
\documentclass{beamer}
\usepackage[absolute,overlay]{textpos}
\setbeamerfont{frametitle}{size=\fontsize{36}{43.2}}
\setbeamerfont{framesubtitle}{size=\fontsize{20}{24}}
\setbeamercolor{frametitle}{fg=gray}
\setbeamercolor{framesubtitle}{fg=gray}
\makeatletter
\setbeamertemplate{frametitle}{%
\ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}%
\@tempdima=\textwidth%
\advance\@tempdima by\beamer@leftmargin%
\advance\@tempdima by\beamer@rightmargin%
\begin{beamercolorbox}[sep=0.5cm,left,wd=\the\@tempdima]{frametitle}
\usebeamerfont{frametitle}%
\vbox{}\vskip-0.25ex%
\if@tempswa\else\csname beamer@fteleft\endcsname\fi%
\strut\insertframetitle\strut\par%
{%
\ifx\insertframesubtitle\@empty%
\else%
{\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle\strut\par}%
\fi
}%
\vskip-1ex%
\if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
\end{beamercolorbox}%
}
\makeatother
\begin{document}
\begin{frame}
\frametitle{Bulleting and Number}
\framesubtitle{As An Example}
This is line should be 3.5 cm below the top edge of the slide.
\begin{itemize}
\item adfas
\begin{itemize}
\item afdfa
\begin{itemize}
\item adfadsfa
\item adsfa
\end{itemize}
\end{itemize}
\end{itemize}
This is how to add numbered list.
\begin{enumerate}
\item Use number
\item Another number
\begin{enumerate}[I]
\item Use Letter
\item Another letter
\begin{enumerate}[a]
\item Use
\item Use
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{frame}
\end{document}