Ajustar o texto em uma caixa com ajuste do tamanho da fonte em LaTeX
Se o seu objetivo é criar uma caixa de altura e largura específica e fazer com que o texto dentro dele se ajuste para ocupar todo esse espaço, fazendo com que o tamanho do texto aumente ou diminua automaticamente, então a solução está aqui.
O código abaixo faz uso do pacote enivron
que oferece o ambiente fitbox
.
\begin{fitbox}{largura}{altura}
conteúdo
\end{fitbox}
Onde em {largura}
informamos a largura da caixa e em {altura}
a altura da caixa.
O código abaixo insere um texto numa caixa de 7cm de largura por 300pt:
\documentclass{article}
\usepackage{lmodern}
\usepackage{environ}
\usepackage{lipsum}
\newdimen\fontdim
\newdimen\upperfontdim
\newdimen\lowerfontdim
\newif\ifmoreiterations
\fontdim12pt\makeatletter
\newEnviron{fitbox}[2]{ %
\def\buildbox{ %
\setbox0\vbox{\hbox{\minipage{#1}%
\fontsize{\fontdim}{1.2\fontdim}%
\selectfont%
\stuff%
\endminipage}}%
\dimen@\ht0
\advance\dimen@\dp0
}
\def\stuff{\BODY}% Armazena o corpo do ambiente
\buildbox
% Calcular limites superior e inferior
\ifdim\dimen@>#2
\loop
\fontdim.5\fontdim % Reduz o tamanho da fonte pela metade
\buildbox
\ifdim\dimen@<#2 \repeat
\lowerfontdim\fontdim
\upperfontdim2\fontdim
\fontdim1.5\fontdim
\else
\loop
\fontdim2\fontdim % Dobra o tamanho da fonte
\buildbox
\ifdim\dimen@>#2 \repeat
\upperfontdim\fontdim
\lowerfontdim.5\fontdim
\fontdim.75\fontdim
\fi
% Tenta encontrar o tamanho ideal
\loop
%\message{Bounds: \the\lowerfontdim\space
% \the\fontdim\space \the\upperfontdim^^J}
\buildbox
\ifdim\dimen@<#2
\moreiterationstrue
\upperfontdim\fontdim
\advance\fontdim\lowerfontdim
\fontdim.5\fontdim
\else
\advance\dimen@-#2
\ifdim\dimen@>10pt
\lowerfontdim\fontdim
\advance\fontdim\upperfontdim
\fontdim.5\fontdim
\dimen@\upperfontdim
\advance\dimen@-\lowerfontdim
\ifdim\dimen@>.2pt
\moreiterationsfalse
\else
\moreiterationstrue
\fi
\else
\moreiterationsfalse
\fi
\fi
\ifmoreiterations \repeat
\box0% Escreve o conteúdo
}
\makeatother
\begin{document}
\lipsum[1]
\begin{fitbox}{7cm}{300pt}
\lipsum[1-1]
\end{fitbox}
\lipsum[2]
\end{document}
Confira nossos vídeos no YouTube, visite nosso canal.
Playlist sobre LaTeX no YouTube: Playlist sobre LaTeX