Ich schreibe mithilfe einer Klasse eine Latex-Vorlage für Präsentationsfolien beamer
.
Ich möchte den Stil von Titel und Untertitel eines beliebigen Frames hinsichtlich Farbe, Schriftgröße und Position gestalten. Ich weiß nicht, wie ich die Parameter speziell beamer
auf Titel- und Untertitelobjekte abstimmen kann, daher habe ich textblock
im Teil von zwei definiert \defbeamertemplate*
.
Und ich möchte den Haupttext auch 3.5 cm
unterhalb der oberen Kante der Folie platzieren.
Ich stelle meinen Code unten vor. Das Ergebnis ist nicht schön. Denn wenn ich dem Haupttext mehr Inhalt hinzufüge, verschiebt sich die erste Zeile des Haupttextes nach oben und überlappt sich mit Titel- und Untertitelzeilen, siehe die beiden Screenshots unten.
Wissen Sie, wie Sie die erste Zeile des Haupttextes 3.5 cm
unterhalb der oberen Kante der Folie halten können? Vielleicht ist die Verwendung von Textblöcken für Titel und Untertitel überhaupt nicht elegant. Jeder Vorschlag ist willkommen.
\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}
Antwort1
Anstelle eines textblock
würde ich den traditionellen Beamer-Weg gehen und den Frametitle in ein setzen beamercolorbox
. Um die vertikale Position Ihren Anforderungen anzupassen, ändern Sie die Werte des \vskip
s.
\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}