![No beamer, qual é a "maneira certa" de reduzir um elemento deslizante para melhor ajuste?](https://rvso.com/image/335485/No%20beamer%2C%20qual%20%C3%A9%20a%20%22maneira%20certa%22%20de%20reduzir%20um%20elemento%20deslizante%20para%20melhor%20ajuste%3F.png)
Quero reduzir um elemento em um slide para que ele se ajuste melhor à largura e/ou altura. Estou disposto a reduzir o tamanho da fonte, usar algo como um scalebox/resizebox ou algo semelhante (mas sem apertar o espaço). O problema é que quero evitar comandos de nível inferior ou "não-beamerish", bem como evitar escolher tamanhos de fonte explícitos; em vez disso, gostaria de uma escala padrão aceitável.
Qual é a maneira "idiomática do projetor" de fazer isso?
Responder1
Para atingir um objetivo muito semelhante, geralmente uso o seguinte:
\begin{frame}
\frametitle{Size changed}
\scalebox{0.8}{\begin{minipage}{1.20\textwidth}
... your content here ...
\end{minipage}}
\end{frame}
Não sei calcular os valores combinados do fator de escala e da largura da minipágina, geralmente tento vários valores até me satisfazer.
Por exemplo, o seguinte conteúdo:
\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}
dá:
e se você alterar os valores de escala/minipágina para 0,6/1,6, obterá:
Para uma tabela centralizada eu uso:
\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}
o que leva a:
e se você mudar \scalebox{0.8}
para \scalebox{1.2}
então terá o seguinte resultado:
Responder2
Para uma abordagem baseada na resposta de Lgen, defini um ambiente "reduzido" que calcula automaticamente a largura apropriada (usando o pacote calc). Isso elimina a necessidade de tentativa e erro.
No preâmbulo escrevo
\usepackage{environ,calc}
\newlength{\envwidth}
\NewEnviron{shrink}[1]{
\setlength{\envwidth}{\linewidth/\real{#1}}
\scalebox{#1}{\begin{minipage}{\envwidth}\BODY\end{minipage}}
}
E então no quadro posso simplesmente colocar algo como
\begin{shrink}{.7}
\begin{itemize}
\item \lipsum[75]
\item \lipsum[66]
\end{itemize}
\end{shrink}
(Para compilar o exemplo, você também teria que adicionar \usepackage{lipsum}
o preâmbulo.)
Completamente:
\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}