![Was ist in Beamer die „richtige Art“, ein Folienelement zu verkleinern, damit es besser passt?](https://rvso.com/image/335485/Was%20ist%20in%20Beamer%20die%20%E2%80%9Erichtige%20Art%E2%80%9C%2C%20ein%20Folienelement%20zu%20verkleinern%2C%20damit%20es%20besser%20passt%3F.png)
Ich möchte ein Element in einer Folie verkleinern, damit es besser in die Breite und/oder Höhe passt. Ich bin bereit, die Schriftgröße zu reduzieren, etwas wie eine Scalebox/Resizebox oder etwas Ähnliches zu verwenden (aber nicht Platz quetschen). Die Sache ist, ich möchte Befehle auf niedrigerer Ebene oder „nicht-beamerartige“ Befehle vermeiden und auch die Auswahl expliziter Schriftgrößen vermeiden; vielmehr hätte ich gerne eine akzeptable Standardskalierung.
Was ist die „Beamer-idiomatische“ Art, dies zu tun?
Antwort1
Um ein sehr ähnliches Ziel zu erreichen, verwende ich im Allgemeinen Folgendes:
\begin{frame}
\frametitle{Size changed}
\scalebox{0.8}{\begin{minipage}{1.20\textwidth}
... your content here ...
\end{minipage}}
\end{frame}
Ich weiß nicht, wie ich die kombinierten Werte des Skalierungsfaktors und der Miniseitenbreite berechnen soll. Normalerweise probiere ich mehrere Werte aus, bis ich zufrieden bin.
Beispielsweise folgender Inhalt:
\begin{itemize}
\item First item.
\begin{itemize}
\item First subitem.
\begin{itemize}
\item \lipsum[75]
\item \lipsum[66]
\item \lipsum[75]
\end{itemize}
\item Second subitem.
\end{itemize}
\item Second item.
\item Third item.
\end{itemize}
gibt:
und wenn Sie die Skalierungs-/Miniseitenwerte auf 0,6/1,6 ändern, erhalten Sie:
Für eine zentrierte Tabelle verwende ich:
\begin{frame} {Scale Items}
\makebox[1.1\linewidth][c]{\scalebox{0.8}{\begin{minipage}{0.8\linewidth}
\begin{tabular}{l | c | c | c | c }
& Column1 & Column2 & Column3 & Column4 \\
\hline \hline
Line1 & Value11 & Value12 & Value13 & Value14\\
Line2 & Value21 & Value22 & Value23 & Value24\\
Line3 & Value31 & Value32 & Value33 & Value34\\
Line4 & Value41 & Value42 & Value34 & Value44
\end{tabular}
\end{minipage}}}
\end{frame}
was dazu führt:
und wenn Sie \scalebox{0.8}
zu ändern \scalebox{1.2}
, erhalten Sie das folgende Ergebnis:
Antwort2
Für einen Ansatz, der auf Lgens Antwort aufbaut, habe ich eine „Shrink“-Umgebung definiert, die die entsprechende Breite automatisch berechnet (mithilfe des Calc-Pakets). Dadurch entfällt die Notwendigkeit von Versuch und Irrtum.
In der Präambel schreibe ich
\usepackage{environ,calc}
\newlength{\envwidth}
\NewEnviron{shrink}[1]{
\setlength{\envwidth}{\linewidth/\real{#1}}
\scalebox{#1}{\begin{minipage}{\envwidth}\BODY\end{minipage}}
}
Und dann kann ich auf den Rahmen einfach etwas schreiben wie
\begin{shrink}{.7}
\begin{itemize}
\item \lipsum[75]
\item \lipsum[66]
\end{itemize}
\end{shrink}
(Um das Beispiel zu kompilieren, müssten Sie auch \usepackage{lipsum}
die Präambel hinzufügen.)
Insgesamt:
\documentclass[]{beamer}
\usepackage{lipsum} % this is just for the sample text
\usepackage{environ,calc}
\newlength{\envwidth}
\NewEnviron{shrink}[1]{
\setlength{\envwidth}{\linewidth/\real{#1}}
\scalebox{#1}{\begin{minipage}{\envwidth}\BODY\end{minipage}}
}
\begin{document}
\begin{frame}
\begin{itemize}
\item First item.
\begin{itemize}
\item First subitem.
\medskip
\begin{shrink}{.7}
\begin{itemize}
\item \lipsum[75]
\item \lipsum[66]
\end{itemize}
\end{shrink}
\smallskip
\item Second subitem.
\end{itemize}
\item Second item.
\item Third item.
\end{itemize}
\end{frame}
\end{document}