En Beamer, ¿cuál es la "forma correcta" de reducir la escala de un elemento de diapositiva para que se ajuste mejor?

En Beamer, ¿cuál es la "forma correcta" de reducir la escala de un elemento de diapositiva para que se ajuste mejor?

Quiero reducir un elemento en una diapositiva para que se ajuste mejor al ancho y/o alto. Estoy dispuesto a reducir el tamaño de fuente, usar algo como scalebox/resizebox, o algo similar (aunque no para apretar el espacio). La cuestión es que quiero evitar comandos de nivel inferior o "no convencionales", así como evitar elegir tamaños de fuente explícitos; más bien, me gustaría una escala predeterminada aceptable.

¿Cuál es la forma "idiomática del proyector" de hacer esto?

Respuesta1

Para lograr un objetivo muy similar, generalmente uso lo siguiente:

\begin{frame}
\frametitle{Size changed}
\scalebox{0.8}{\begin{minipage}{1.20\textwidth}

... your content here ...

\end{minipage}}
\end{frame}

No sé cómo calcular los valores combinados del factor de escala y del ancho de la minipágina, generalmente pruebo con varios valores hasta que me satisface.

Por ejemplo, el siguiente contenido:

\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}

da:

ingrese la descripción de la imagen aquí

y si cambias los valores de escala/minipágina a 0.6/1.6 obtienes:

ingrese la descripción de la imagen aquí

Para una mesa centrada utilizo:

\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}

lo que lleva a:

ingrese la descripción de la imagen aquí

y si cambias \scalebox{0.8}a \scalebox{1.2}entonces tendrás el siguiente resultado:

ingrese la descripción de la imagen aquí

Respuesta2

Para un enfoque que se basa en la respuesta de Lgen, he definido un entorno "reductor" que calcula automáticamente el ancho apropiado (usando el paquete calc). Eso elimina la necesidad de prueba y error.

En el preámbulo escribo

\usepackage{environ,calc}

\newlength{\envwidth}
\NewEnviron{shrink}[1]{
\setlength{\envwidth}{\linewidth/\real{#1}}
\scalebox{#1}{\begin{minipage}{\envwidth}\BODY\end{minipage}}
}

Y luego en el marco puedo simplemente poner algo como

\begin{shrink}{.7}
    \begin{itemize}
        \item \lipsum[75]
        \item \lipsum[66]
    \end{itemize}
\end{shrink}

(Para compilar el ejemplo, también deberá agregarlo \usepackage{lipsum}en el preámbulo).

En total:

\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}

(Es cierto que las cosas se comprimieron un poco verticalmente por alguna razón cuando apliqué el entorno solo a una parte de la lista, así que lo corregí con \smallskip y \medskip. Puede que haya opciones más elegantes para eso, pero No sé cómo tratarlos a todos globalmente).

información relacionada