![En Beamer, ¿cuál es la "forma correcta" de reducir la escala de un elemento de diapositiva para que se ajuste mejor?](https://rvso.com/image/335485/En%20Beamer%2C%20%C2%BFcu%C3%A1l%20es%20la%20%22forma%20correcta%22%20de%20reducir%20la%20escala%20de%20un%20elemento%20de%20diapositiva%20para%20que%20se%20ajuste%20mejor%3F.png)
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:
y si cambias los valores de escala/minipágina a 0.6/1.6 obtienes:
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:
y si cambias \scalebox{0.8}
a \scalebox{1.2}
entonces tendrás el siguiente resultado:
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}