Was ist in Beamer die „richtige Art“, ein Folienelement zu verkleinern, damit es besser passt?

Was ist in Beamer die „richtige Art“, ein Folienelement zu verkleinern, damit es besser passt?

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:

Bildbeschreibung hier eingeben

und wenn Sie die Skalierungs-/Miniseitenwerte auf 0,6/1,6 ändern, erhalten Sie:

Bildbeschreibung hier eingeben

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:

Bildbeschreibung hier eingeben

und wenn Sie \scalebox{0.8}zu ändern \scalebox{1.2}, erhalten Sie das folgende Ergebnis:

Bildbeschreibung hier eingeben

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}

(Zugegebenermaßen wurde es aus irgendeinem Grund vertikal etwas gequetscht, als ich die Umgebung nur auf einen Teil der Liste anwandte, also habe ich das mit \smallskip und \medskip korrigiert. Dafür gibt es vielleicht elegantere Optionen, aber ich weiß nicht, wie ich sie alle global behandeln soll.)

verwandte Informationen