Alterar as margens “on the fly” (no curso da composição)

Uma das surpresas características do uso do TeX é que você não pode alterar a largura ou a altura do texto dentro do documento simplesmente modificando os parâmetros de tamanho de texto; O TeX não pode alterar a largura do texto na hora, e o LaTeX só olha para a altura do texto ao iniciar uma nova página.

Portanto, a regra simples é que os parâmetros só devem ser alterados no preâmbulo do documento, ou seja, antes da declaração de \begin{document} (antes de qualquer composição tipográfica).

Para ajustar a largura do texto em um documento, definimos um ambiente:

\newenvironment{changemargin}[2]{%
  \begin{list}{}{%
    \setlength{\topsep}{0pt}%
    \setlength{\leftmargin}{#1}%
    \setlength{\rightmargin}{#2}%
    \setlength{\listparindent}{\parindent}%
    \setlength{\itemindent}{\parindent}%
    \setlength{\parsep}{\parskip}%
  }%
  \item[]}{\end{list}}
O ambiente aceita dois argumentos e recua as margens esquerda e direita, respectivamente, pelos valores dos parâmetros. Valores negativos farão com que as margens sejam reduzidas, então \begin{changemargin}{-1cm}{-1cm} estreita as margens esquerda e direita em 1 centímetro.

Como o TeX não pode fazer isso, como funciona? — bem, o ambiente (que é um parente próximo do ambiente quote do LaTeX) não altera a largura do texto no que se refere ao TeX : ele meramente move o texto dentro da largura em que o TeX acredita.

O pacote changepage fornece comandos prontos para fazer o descrito acima; ele inclui provisão para alterar os deslocamentos aplicados a seu texto, considerando se você está em uma página ímpar (anverso) ou par (verso) de um documento em frente e verso. A estrutura do Changepage corresponde àquela da classe memoir.

O pacote (anterior) chngpage fornece os mesmos recursos, mas usa uma sintaxe bastante diferente. A estrutura do Changepage corresponde àquela da classe memoir , e ele deve ser usado para qualquer novo trabalho.

Alterar as dimensões verticais de uma página ainda é algo mais desajeitado: o comando \enlargethispage do LaTeX ajusta o tamanho da página atual pelo valor de seu argumento. Usos comuns são

\enlargethispage{\baselineskip}
para tornar a página uma linha mais longa, ou
\enlargethispage{-\baselineskip}
para tornar a página uma linha mais curta. O processo é (até certo ponto) simplificado pelo pacote addlines : seu comando \addlines aceita como argumento o número de linhas a ser adicionado à página (em vez de um comprimento): a documentação do pacote também fornece uma análise útil de quando o comando pode (ou não) funcionar.
addlines.sty
addlines
changepage.sty
changepage

This answer last edited: 2011-06-01


Do you have any question? Ask on: latex.net.br - we love qood questions!