No beamer, qual é a "maneira certa" de reduzir um elemento deslizante para melhor ajuste?

No beamer, qual é a "maneira certa" de reduzir um elemento deslizante para melhor ajuste?

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á:

insira a descrição da imagem aqui

e se você alterar os valores de escala/minipágina para 0,6/1,6, obterá:

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

e se você mudar \scalebox{0.8}para \scalebox{1.2}então terá o seguinte resultado:

insira a descrição da imagem aqui

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}

(É certo que as coisas ficaram um pouco comprimidas verticalmente por algum motivo quando apliquei o ambiente apenas a uma parte da lista, então corrigi isso com um \smallskip e um \medskip. Pode haver opções mais elegantes para isso, mas Não sei como tratar todos eles globalmente.)

informação relacionada