%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Contents: Customising LaTeX output
% $Id: custom.tex 9926 2011-05-20 14:20:33Z ambs $
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Configurar o \LaTeX}

\begin{intro}
Os documentos produzidos usando os comandos apresentados até aqui
parecerão aceitáveis a uma grande audiência. Não seguem um estilo
muito trabalhado, mas obedecem às regras estabelecidas como correctas
para um bom documento, e que farão o documento agradável e agradável
de ler.

No entanto, existem situações onde o \LaTeX{} não dispõe de
comandos ou ambientes que satisfaçam as suas necessidades, ou o
resultado produzido por um comando já existente não está de
acordo com os seus requisitos.

Este capítulo tentará dar algumas ideias sobre como ensinar novos
truques ao \LaTeX{} e como fazê-lo produzir resultados que são
diferentes aos disponíveis de raiz.
\end{intro}


\section{Novos Comandos, Ambientes e Pacotes}

Deve ter reparado que todos os comandos que introduzi neste livro são
apresentados numa caixa, e que aparecem no índice no fim do livro. Em
vez de usar directamente os comandos \LaTeX{} necessários para obter
este resultado, criei um \wi{pacote} no qual defini novos comandos e
ambientes para este fim. Agora, escrevo simplesmente:

\begin{example}
\begin{lscommand}
\ci{dum}
\end{lscommand}
\end{example}

Neste exemplo estou a utilizar quer um novo ambiente chamado\\
\ei{lscommand}, que é responsável por desenhar a caixa à volta
do comando, quer um novo comando denominado \ci{ci} que escreve o
nome do comando e também coloca a entrada correspondente no índice.
Pode verificar isto olhando para o comando \ci{dum} no índice
no fim deste livro, onde aparecerá uma entrada para \ci{dum},
apontando cada uma das páginas onde mencionei o comando \ci{dum}.

Se decidir que já não gosto que os comandos sejam escritos numa caixa,
posso alterar simplesmente a definição do ambiente \texttt{lscommand}
para criar uma nova aparência. Isto é muito mais fácil do que andar
por todo o documento à caça de todos os lugares onde usei alguns
comandos genéricos \LaTeX{} para desenhar uma caixa à volta de algumas
palavras.

\subsection{Novos Comandos}

Para adicionar os seus próprios comandos, use o comando 
\begin{lscommand}
\ci{newcommand}\verb|{|%
       \emph{nome}\verb|}[|\emph{num}\verb|]{|\emph{definição}\verb|}|
\end{lscommand}
\noindent 
Basicamente, o comando necessita de dois argumentos: o \emph{nome} do
comando que quer criar, e a \emph{definição} do comando. O argumento
\emph{num} em parêntesis rectos é opcional e especifica o número de
argumentos que o novo comando recebe (são possíveis até 9). Se não
especificar, o valor utilizado é 0, ou seja, nenhum argumento é
permitido.

Os dois exemplos seguintes devem ajudar a apanhar a ideia.  O primeiro
exemplo define um novo comando chamado \ci{npil}. Este é um atalho
para ``A Não Tão Pequena Introdução ao \LaTeXe.'' Um comando deste
género pode tornar-se útil se precisa de escrever o título deste livro
muitas e muitas vezes.

\begin{example}
\newcommand{\npil}{A Não
    Tão Pequena Introdução ao
    \LaTeXe}
Esta é a  ``\npil'' \ldots{} 
``\npil''
\end{example}

O próximo exemplo ilustra a definição de um novo comando que recebe um
argumento.  A etiqueta \verb|#1| vai ser substituída pelo argumento
que especificar.  Se quiser usar mais do que um argumento, use
\verb|#2| e assim sucessivamente.

\begin{example}
\newcommand{\txsit}[2]
 {Esta é a \emph{#1} #2
      Introdução ao \LaTeXe}
% no corpo do documento:
\begin{itemize}
\item \txsit{Não Tão}{Grande}
\item \txsit{Muito}{Pequena}
\end{itemize}
\end{example}

O \LaTeX{} não permite que crie um novo comando que substitua um já
existente.  Mas, existe um comando especial no caso de querer fazer
isto. Nesse caso, use explicitamente o comando \ci{renewcommand} que
funciona da mesma forma que o comando \verb|\newcommand|.

Em alguns casos, pode querer usar o comando \ci{providecommand} que
funciona como o \ci{newcommand}, mas se o comando já existir, o
\LaTeX{} irá ignora-lo silenciosamente.

Existem alguns pontos a tomar em conta quando existem espaços após
comandos \LaTeX{}. Veja a página~\pageref{whitespace} para mais
informação.

\subsection{Novos Ambientes}

Tal como com o comando \verb|\newcommand|, existe também um comando
para criar os seus próprios ambientes. O comando \ci{newenvironment} usa
a seguinte sintaxe:

\begin{lscommand}
\ci{newenvironment}\verb|{|%
       \emph{nome}\verb|}[|\emph{num}\verb|]{|%
       \emph{antes}\verb|}{|\emph{depois}\verb|}|
\end{lscommand}

De novo, o comando \verb|\newcommand| pode usar \ci{newenvironment}
com um argumento opcional. O material especificado no argumento
\emph{antes}, é processado antes do texto incluso no ambiente seja
processado. O conteúdo do argumento \emph{depois} é processado quando
o comando \verb|\end{|\emph{nome}\verb|}| é encontrado.

O seguinte exemplo ilustra a utilização do comando \ci{newenvironment}.

\begin{example}
\newenvironment{king}
 {\rule{1ex}{1ex}%
      \hspace{\stretch{1}}}
 {\hspace{\stretch{1}}%
      \rule{1ex}{1ex}}

\begin{king} 
Os meus pensamentos \ldots
\end{king}
\end{example}

O argumento \emph{num} é usado da mesma forma que o do
\verb|\newcommand|. O \LaTeX{} também não permite que defina um
ambiente que já exista. Se por alguma razão quiser mudar um ambiente
já existente, pode fazê-lo com o comando \ci{renewenvironment} que usa
a mesma sintaxe do comando \ci{newenvironment}.

O comando usado neste exemplo irá ser explicado mais tarde: Para o
comando \ci{rule} veja a página~\pageref{sec:rule}, para \ci{stretch}
vá à página~\pageref{cmd:stretch}, e mais informação sobre \ci{hspace}
pode ser encontrada na página~\pageref{sec:hspace}.

\subsection{Espaço Extra}

Ao criar um novo ambiente poderá vir a ser mordido por espaços extra,
que o irão fazer tremer, e que potencialmente terão efeitos
mortíferos. Por exemplo, quando desejar criar um ambiente de título
que remove a sua própria indentação assim como a do próximo parágrafo.
O comando \ci{ignorespaces} no bloco de início da definição do
ambiente irá ignorar qualquer espaço após a sua execução. O bloco
final da definição é ligeiramente mais complicado, visto que algum
processamento especial ocorre no final do ambiente. Com o comando
\ci{ignorespacesafterend} o \LaTeX{} irá colocar o comando
\ci{ignorespaces} depois do processamento especial de final de
ambiente ter ocorrido.

\begin{example}
\newenvironment{simples}%
 {\noindent}%
 {\par\noindent}

\begin{simples}
Ver o espaço\\à esquerda.
\end{simples}
O mesmo\\aqui.
\end{example}

\begin{example}
\newenvironment{correcto}%
 {\noindent\ignorespaces}%
 {\par\noindent
    \ignorespacesafterend}

\begin{correcto}
Sem espaços\\à esquerda.
\end{correcto}
O mesmo\\aqui.
\end{example}

\subsection{A linha de comando do \LaTeX}

Se trabalhar num sistema operativo tipo Unix, poderá usar Makefiles
para construir os seus projectos \LaTeX. Nesta ligação poderá ser
interessante produzir versões diferentes do mesmo documento chamando o
\LaTeX{} com parâmetros diferentes de linha de comando. Se adicionar a
seguinte estrutura ao seu documento:

\begin{verbatim}
\usepackage{ifthen}
\ifthenelse{\equal{\blackandwhite}{true}}{
  % Modo "preto e branco"; fazer qualquer coisa...
}{
  % Modo "a cores"; fazer qualquer coisa diferente...
}
\end{verbatim}

Agora se invocar o \LaTeX{} desta forma:
\begin{verbatim}
latex '\newcommand{\blackandwhite}{true}\input{test.tex}'
\end{verbatim}

Primeiro, o comando \verb|\blackandwhite| será definido, e depois, o
ficheiro será lido Desta forma, ao definir o \verb!\blackandwhite!
estará a indicar ao \LaTeX{} que vai querer produzir a versão a cores
do documento.

\subsection{O Seu Próprio Pacote}

Se definir um grande número de novos comandos e ambientes, o preâmbulo
do seu documento ficará bastante longo. Nesta situação, é a boa ideia
criar um pacote \LaTeX{} contendo todas as suas definições de comandos
e ambientes. Depois pode usar o comando \ci{usapackage} para tornar as
definições disponíveis no seu documento.

\begin{figure}[!htbp]
\begin{lined}{\textwidth}
\begin{verbatim}
% Pacote de Demonstração por Tobias Oetiker
\ProvidesPackage{demopack}
\newcommand{\npil}{A não tão Pequena 
                   Introdução ao \LaTeXe}
\newcommand{\txsit}[1]{A \emph{#1} Tão
                       Introdução ao \LaTeXe}
\newenvironment{king}{\begin{quote}}{\end{quote}}
\end{verbatim}
\end{lined}
\caption{Pacote de Exemplo.} \label{package}
\end{figure}

Escrever um pacote consiste basicamente em copiar o conteúdo do
preâmbulo do seu documento para um ficheiro separado com um nome
com a extensão \texttt{.sty}. Existe um comando especial
\begin{lscommand}
\ci{ProvidesPackage}\verb|{|\emph{nome do pacote}\verb|}|
\end{lscommand}
\noindent para usar no topo do seu pacote. O comando
\verb|\ProvidesPackage| indica ao \LaTeX{} o nome do pacote e irá
permitir que apresente mensagens de erro quando tentar incluir mais do que uma
vez um pacote. A figura~\ref{package} mostra um pequeno
exemplo de um pacote que contém os comandos definidos nos exemplos
anteriores.

\section{Letras e Tamanhos}

\subsection{Tipos de letra}
\index{letras}\index{tamanho letras} O \LaTeX{} escolhe os tipos de letra
e respectivos tamanhos apropriados baseando-se na estrutura lógica do documento
(secções, notas de rodapé, \ldots). Em alguns casos, pode desejar mudar
os tipos ou tamanho de letras à mão. Para fazer isto, pode usar os comandos
listados nas tabelas~\ref{fonts} e~\ref{sizes}. O tamanho de cada tipo de
letra é uma definição que depende na classe de documento e nas suas opções.
A tabela~\ref{tab:pointsizes} mostra o tamanho absoluto em pontos para
estes comandos como implementados nas classes standard.

\begin{example}
{\small Os pequenos e
\textbf{gordos} Romanos mandaram}
{\Large em toda a grande
\textit{Itália}.}
\end{example}

Uma propriedade importante do \LaTeXe{} é que os atributos de letras
são independentes. Isto significa que pode mandar alterar o tipo ou
tamanho de letra e, no entanto, manter os atributos de \emph{negrito} ou
\emph{itálico} que tinha feito anteriormente.

Em \emph{modo matemático} pode usar os \emph{comandos} de mudança de
letra para sair temporariamente do \emph{modo matemático} e entrar em
texto normal. Se precisar de mudar para outro tipo de letra para
escrever matemática, existe outro conjunto de comandos
especiais: consulte a tabela~\ref{mathfonts}.

\begin{table}[!bp]
\caption{Letras.} \label{fonts}
\begin{lined}{12cm}
%
% Alan suggested not to tell about the other form of the command
% eg \verb|\sffamily| or \verb|\bfseries|. This seems a good thing to me.
%
\begin{tabular}{@{}rl@{\qquad}rl@{}}
\fni{textrm}\verb|{...}|        &      \textrm{\wi{romano}}&
\fni{textsf}\verb|{...}|        &      \textsf{\wi{sans serif}}\\
\fni{texttt}\verb|{...}|        &      \texttt{à maquina}\\[6pt]
\fni{textmd}\verb|{...}|        &      \textmd{médio}&
\fni{textbf}\verb|{...}|        &      \textbf{\wi{negrito}}\\[6pt]
\fni{textup}\verb|{...}|        &       \textup{\wi{em pé}}&
\fni{textit}\verb|{...}|        &       \textit{\wi{itálico}}\\
\fni{textsl}\verb|{...}|        &       \textsl{\wi{para a frente}}&
\fni{textsc}\verb|{...}|        &       \textsc{\wi{Maiúsculas}}\\[6pt]
\ci{emph}\verb|{...}|          &            \emph{salientado} &
\fni{textnormal}\verb|{...}|    &    \textnormal{texto} normal
\end{tabular}

\bigskip
\end{lined}
\end{table}


\begin{table}[!bp]
\index{tamanho de letra}
\caption{Tamanho de Letra.} \label{sizes}
\begin{lined}{12cm}
\begin{tabular}{@{}ll}
\fni{tiny}      & \tiny        minúscula\\
\fni{scriptsize}   & \scriptsize  muito pequena\\
\fni{footnotesize} & \footnotesize  bastante pequena\\
\fni{small}        &  \small            pequena \\
\fni{normalsize}   &  \normalsize  normal \\
\fni{large}        &  \large       largas
\end{tabular}%
\qquad\begin{tabular}{ll@{}}
\fni{Large}        &  \Large       maiores \\[5pt]
\fni{LARGE}        &  \LARGE       muito grandes \\[5pt]
\fni{huge}         &  \huge        enormes\\[5pt]
\fni{Huge}         &  \Huge        as maiores
\end{tabular}

\bigskip
\end{lined}
\end{table}

\begin{table}[!tbp]
\caption{Tamanhos Absolutos nas Classes Padrão.}\label{tab:pointsizes}
\label{tab:sizes}
\begin{lined}{12cm}
\begin{tabular}{lrrr}
\multicolumn{1}{c}{tamanho} &
\multicolumn{1}{c}{10pt (omissão) } &
           \multicolumn{1}{c}{opção 11pt}  &
           \multicolumn{1}{c}{opção 12pt}\\
\verb|\tiny|       & 5pt  & 6pt & 6pt\\
\verb|\scriptsize| & 7pt  & 8pt & 8pt\\
\verb|\footnotesize| & 8pt & 9pt & 10pt \\
\verb|\small|        & 9pt & 10pt & 11pt \\
\verb|\normalsize| & 10pt & 11pt & 12pt \\
\verb|\large|      & 12pt & 12pt & 14pt \\
\verb|\Large|      & 14pt & 14pt & 17pt \\
\verb|\LARGE|      & 17pt & 17pt & 20pt\\
\verb|\huge|       & 20pt & 20pt & 25pt\\
\verb|\Huge|       & 25pt & 25pt & 25pt\\
\end{tabular}

\bigskip
\end{lined}
\end{table}


\begin{table}[!bp]
\caption{Letras Matemáticas.} \label{mathfonts}
\begin{lined}{0.7\textwidth}
\begin{tabular}{@{}ll@{}}
\fni{mathrm}\verb|{...}|&     $\mathrm{Tipo\ Romano}$\\
\fni{mathbf}\verb|{...}|&     $\mathbf{Tipo\ Negrito}$\\
\fni{mathsf}\verb|{...}|&     $\mathsf{Tipo\ Sans\ Serif}$\\
\fni{mathtt}\verb|{...}|&     $\mathtt{Tipo\ dactilografo}$\\
\fni{mathit}\verb|{...}|&     $\mathit{Tipo\ Italico}$\\
\fni{mathcal}\verb|{...}|&    $\mathcal{TIPO\ CALIGRÁFICO}$\\
\fni{mathnormal}\verb|{...}|& $\mathnormal{Tipo\ Normal}$\\
\end{tabular}

\bigskip
\end{lined}
\end{table}

Em ligação com os comandos de mudança de tamanho, as \wi{chavetas}
têm um papel bastante importante. São usados para construir \emph{grupos}. Os grupos
limitam a zona de quase todos os comandos \LaTeX{}.\index{agrupar}

\begin{example}
Ele gosta de letras
{\LARGE grandes e
{\small pequenas}}. 
\end{example}
 
Os comandos de mudança de tamanho de letra também mudam o espaçamento
entre linhas, mas apenas se o parágrafo acaba dentro do alcance do
comando de mudança de tamanho.  A chaveta a fechar \verb|}| não deve,
portanto, aparecer cedo demais. Note a posição do comando \ci{par}
nos dois exemplos seguintes. \footnote{\texttt{\bs{}par} é equivalente
a uma linha em branco}

\begin{example}
{\Large Não leia isto! Isto não é
verdade. Tem de acreditar
em mim!\par}
\end{example}

\begin{example}
{\Large Isto também não é verdade.
Mas lembre-se que sou
um mentiroso.}\par
\end{example}

Se quer activar o comando de mudança de tamanho de letra para um
parágrafo inteiro de texto ou mesmo mais, deve usar a sintaxe de
ambiente para estes comandos.

\begin{example}
\begin{Large} 
Isto não é verdade.
Mas mais uma vez, o que são
estes dias \ldots
\end{Large}
\end{example}

\noindent Isto irá facilitar a contagem das muitas chavetas.

\subsection{Perigo, Will Robinson, Perigo}

Como foi referido no início deste capítulo, é perigoso infestar os
seus documentos com comandos explícitos como estes, porque funcionam
em oposição à ideia básica do \LaTeX{}, que é separar a estrutura
lógica e visual dos documentos. Isto significa que se usar o mesmo
comando de mudança de letra em vários sítios de forma a desenhar um
tipo especial de informação, deve usar o \verb|\newcommand| para
definir um ``comando lógico'' para o comando de mudança de letras.

\begin{example}
\newcommand{\oops}[1]{\textbf{#1}}
Não \oops{entre} neste quarto,
está ocupado por uma \oops{máquina}
de origem desconhecida.
\end{example}

Esta abordagem tem a vantagem de que pode decidir mais tarde se quer
utilizar uma outra representação visual do perigo sem ser o
\verb|\textbf| sem ter de alterar todo o seu documento, identificando
as ocorrências de \verb|\textbf| e descobrindo, para cada uma, de é ou
não um dos casos em que está a apontar perigo, ou se foi usado por
qualquer outra razão.

Repare na diferença entre \emph{enfatizar} (\verb.\emph.) um bocado de
texto, ou alterar directamente o tipo \emph{de letra}! O comando
\ci{emph} é sensível ao contexto, enquanto que os comandos de tipo de
letra têm comportamentos absolutos.

\begin{example}
\textit{Também pode
  \emph{enfatizar} texto que
 está em itálico,}
\textsf{num tipo de letra
  \emph{sans-serif},}
\texttt{ou num estilo
  \emph{máquina de escrever}.}
\end{example}


\subsection{Aviso}

Para concluir esta jornada na terra das letras, aqui está uma
pequena palavra de aviso:\nopagebreak

\begin{quote}
  \underline{\textbf{Lembre-se\Huge!}} \textit{QUANTOS}
  \textsf{M\textbf{\LARGE A} \texttt{I}\textsl{S}} tipos de letra \Huge você
  \tiny usar \footnotesize \textbf{num} \small \texttt{documento},
  \large \textit{o} \normalsize mais \textsc{legível} e
  \textsl{\textsf{bonito} ele fic\large a\Large r\LARGE a\huge !}
\end{quote}

\section{Espaçamento}
 
\subsection{Espaço entre linhas}

\index{espaçamento de linhas} Se quer usar um espaço maior entre linhas num documento,
pode alterar o seu valor colocando o comando
\begin{lscommand}
\ci{linespread}\verb|{|\emph{factor}\verb|}|
\end{lscommand}
\noindent no preâmbulo do seu documento.  Use \verb|\linespread{1.3}|
para um espaçamento de ``um e meio'', e \verb|\linespread{1.6}| para
um espaçamento ``duplo''. Normalmente as linhas não estão espalhadas,
pelo que o factor por omissão é~1.\index{espaçamento duplo}

Note que o efeito do comando \ci{linespread} é demasiado drástico e
não é apropriado para trabalho publicado. Se tem uma boa razão para
mudar o espaçamento entre linhas poderá preferir o comando:
\begin{lscommand}
\verb|\setlength{\baselineskip}{1.5\baselineskip}|
\end{lscommand}

\begin{example}
{\setlength{\baselineskip}%
           {1.5\baselineskip}
Este parágrafo está escrito com
um intervalo de 1.5 vezes maior
do que o valor anterior. Repare
no comando 'par' no final do 
parágrafo.\par}

Este parágrafo tem um objectivo 
claro: mostra que depois de
fechar a chaveta tudo voltou
ao normal.
\end{example}


 
\subsection{Formatação de Parágrafos}\label{parsp}

No \LaTeX, existem dois parâmetros que influenciam o formato dos
parágrafos. Ao colocar uma definição como
\begin{code}
\ci{setlength}\verb|{|\ci{parindent}\verb|}{0pt}| \\
\verb|\setlength{|\ci{parskip}\verb|}{1ex plus 0.5ex minus 0.2ex}|
\end{code}
no preâmbulo do seu documento, pode alterar o formado dos parágrafos.
Estes dois comandos aumentam o espaço entre dois parágrafos colocando
a indentação a zero. 

As partes \texttt{plus} e \texttt{minus} do comprimento acima instrui
o \TeX{} de que pode comprimir e expandir o espaçamento entre parágrafos
pela quantidade especificada se for necessário para colocar os 
parágrafos de forma correcta na página.

Na Europa continental, os parágrafos são,
normalmente, separados por algum espaço a mais e não indentados.  Mas,
cuidado, isto também afecta a tabela de conteúdos. As suas linhas irão
aparecer mais espaçadas. Para isto não acontecer, pode mover os dois
comandos do preâmbulo até a um ponto do seu documento abaixo do
\verb|\tableofcontents| ou, simplesmente, não os usar de todo, porque
irá reparar que a maior parte dos livros profissionais usam indentação
e não espaço para separar os parágrafos.

Se quer indentar um parágrafo que não o está, pode usar o comando
\begin{lscommand}
\ci{indent}
\end{lscommand}
\noindent no início do parágrafo.\footnote{Para indentar o primeiro
parágrafo após cada título de secção, use o pacote \pai{indentfirst}q
que vem no conjunto de pacotes `tools'} Obviamente, isto irá apenas
afectar o texto quando o \verb|\parindent| não está a zero.

Para criar um parágrafo não indentado, pode usar
\begin{lscommand}
\ci{noindent}
\end{lscommand}
\noindent como o primeiro comando do parágrafo. Isto pode ser útil
quando começa um documento com texto e não com um comando que seccione
o documento.

\subsection{Espaço Horizontal}

\label{sec:hspace}
O \LaTeX{} determina os espaços entre palavras e frases automaticamente.
Para adicionar espaço adicional, use: \index{horizontal!espaço}
\begin{lscommand}
\ci{hspace}\verb|{|\emph{comprimento}\verb|}|
\end{lscommand}
Se um destes espaços deve ser mantido mesmo que atinja o fim ou i\-ní\-cio duma
linha, use \verb|\hspace*| em vez de \verb|\hspace|. O
\emph{comprimento} é, no caso mais simples, apenas um número e uma unidade.
As unidades mais importantes estão listadas na tabela~\ref{units}.
\index{unidades}\index{dimensões}

\begin{example}
Este\hspace{1.5cm}é um espaço
de 1.5 cm.
\end{example}
\suppressfloats
\begin{table}[tbp]
\caption{Unidades do \TeX{}.} \label{units}\index{unidades}
\begin{lined}{9.5cm} 
\begin{tabular}{@{}ll@{}}
\texttt{mm} & milímetro $\approx 1/25$~polegadas \quad \demowidth{1mm} \\
\texttt{cm} & centímetro = 10~mm  \quad \demowidth{1cm}                     \\
\texttt{in} & polegada $=$ 25.4~mm \quad \demowidth{1in}                    \\
\texttt{pt} & ponto $\approx 1/72$~polegada $\approx \frac{1}{3}$~mm  \quad\demowidth{1pt}\\
\texttt{em} & aprox largura de um `M' no tipo de letra actual \quad \demowidth{1em}\\
\texttt{ex} & aprox altura de um `x' no tipo de letra actual \quad \demowidth{1ex}
\end{tabular}

\bigskip
\end{lined}
\end{table}

\label{cmd:stretch} 
O comando
\begin{lscommand}
\ci{stretch}\verb|{|\emph{n}\verb|}|
\end{lscommand} 
\noindent gera um espaço especial. Ele estica até que todo o espaço
restante na linha fique completo. Se vários
\verb|\hspace{\stretch{|\emph{n}\verb|}}| forem invocados na mesma
linha, irão ocupar todo o espaço disponível, de forma proporcional aos
seus factores de elasticidade ($n$).

\begin{example}
x\hspace{\stretch{1}}
x\hspace{\stretch{3}}x
\end{example}

Quando se usa espaço horizontal juntamente com texto, pode fazer sentido obrigar
o espaço a ajustar-se relativamente ao tamanho actual do tipo de letra. Pode fazer
isto usando unidades relativas ao texto: \texttt{em} e \texttt{ex}.

\begin{example}
{\Large{}gran\hspace{1em}de}\\
{\tiny{}peque\hspace{1em}no}
\end{example}


\subsection{Espaço Vertical}
O espaço entre parágrafos, secções, subsecções, \ldots\ é determinado
automaticamente pelo \LaTeX. Se necessário, pode adicionar espaço
vertical adicional \emph{entre dois parágrafos} com o comando:
\begin{lscommand}
\ci{vspace}\verb|{|\emph{comprimento}\verb|}|
\end{lscommand}

Este comando deve ser normalmente usado entre duas linhas vazias. Se
o espaço deve ser preservado no inicio ou no fim de uma página, utilize
a versão estrelada do comando: \verb|\vspace*| em vez de \verb|\vspace|.
\index{espaço vertical}

O comando \verb|\stretch| em conexão com o comando \verb|\pagebreak| pode
ser usado para imprimir texto na última linha de uma página, ou para
centrar texto verticalmente numa página.
\begin{code}
\begin{verbatim}
Algum texto \ldots

\vspace{\stretch{1}}
Isto aparece na última linha da página.\pagebreak
\end{verbatim}
\end{code}

Espaço adicional entre duas linhas do \emph{mesmo} parágrafo ou
dentro de uma tabela é especificado com o comando
\begin{lscommand}
\ci{\bs}\verb|[|\emph{comprimento}\verb|]|
\end{lscommand}

Com \ci{bigskip} e \ci{smallskip} pode saltar uma quantidade pré definida
de espaço vertical sem ter de se preocupar com os números exactos.


\section{Formato da Página}

\begin{figure}[!hp]
\begin{center}
\makeatletter\@mylayout\makeatother
\end{center}
\vspace*{1.8cm}
\caption[Parâmetros de formato usados neste livro.]{Parâmetros de formato usados neste livro. Experimente o pacote \pai{layouts} para imprimir o formato dos seus documentos.}
\label{fig:layout}
\end{figure}

\cih{footskip}
\cih{headheight}
\cih{headsep}
\cih{marginparpush}
\cih{marginparsep}
\cih{marginparwidth}
\cih{oddsidemargin}
\cih{paperheight}
\cih{paperwidth}
\cih{textheight}
\cih{textwidth}
\cih{topmargin}


\index{formato da página}
O \LaTeXe{} permite especificar o \wi{tamanho do papel} no comando
\verb|\documentclass|. Depois, automaticamente selecciona as \wi{margens}
de texto correctas. Mas, por vezes, pode não estar contente com
os valores pré-definidos. Naturalmente, pode alterá-los.
%no idea why this is needed here ...
\thispagestyle{fancyplain}
A figura~\ref{fig:layout} mostra todos os parâmetros que podem ser alterados.
A figura foi produzida com o pacote \pai{layout} do conjunto `tools'.%
\footnote{\CTANref|macros/latex/required/tools|}

\textbf{ESPERE!} \ldots antes de se lançar freneticamente a ``Toca a
fazer as páginas estreitas um pouco mais largas'', tire alguns
segundos para pensar. Como na maioria dos casos, existe uma boa razão
para que o formato da página seja o que é.

Claro, comparado com a sua página tirada do Microsoft Word, parece muito
mais estreita. Mas dê uma olhadela ao seu livro favorito\footnote{Quero dizer,
um livro realmente produzido por uma editora de reputação.} e conte o
número de caracteres numa linha de texto normal. Irá notar que não existem
mais do que 66 caracteres em cada linha. Agora, faça o mesmo nas páginas
do seu documento \LaTeX. A experiência mostra que a leitura se torna difícil
assim que existem mais caracteres numa única linha. Isto é porque é difícil
aos olhos mover do fim de uma linha para o inicio da próxima. Esta também 
é a razão pela qual os jornais são escritos em múltiplas colunas.

Então, se aumentar a largura do texto do seu livro, lembre-se que
está a tornar a vida mais difícil aos seus leitores. Mas chega de
avisos, prometi que dizia como se faz isso \ldots
 
O \LaTeX{} dispõe de dois comandos para mudar estes parâmetros. São usados
normalmente no preâmbulo do documento.

O primeiro comando atribuí um valor fixo a qualquer um dos parâmetros:
\begin{lscommand}
\ci{setlength}\verb|{|\emph{parâmetro}\verb|}{|\emph{comprimento}\verb|}|
\end{lscommand}

O segundo comando adiciona um valor a qualquer um dos parâmetros:
\begin{lscommand}
\ci{addtolength}\verb|{|\emph{parâmetro}\verb|}{|\emph{comprimento}\verb|}|
\end{lscommand} 

Este segundo comando é, normalmente, mais útil que o \ci{setlength}
porque funciona de uma forma relativa aos valores já existentes.  Para
adicionar um centímetro para a largura normal do texto, utilize o
comando seguinte no preâmbulo do seu documento:
\begin{code}
\verb|\addtolength{\hoffset}{-0.5cm}|\\
\verb|\addtolength{\textwidth}{1cm}|
\end{code}

Neste contexto, pode querer olhar para o pacote \pai{calc}, que
permite usar operações aritméticas no argumento de este e de
outros comandos onde deveria introduzir valores.

\section{Mais divertimento com comprimentos}

Sempre que possível, tento não usar comprimentos absolutos em documentos
\LaTeX{}. Prefiro tentar basear as coisas na largura ou altura de outros
elementos das páginas. Para a largura de uma figura, podia relacionar
com \verb|\textwidth| de forma a que ela coubesse numa página.

Os seguintes 3 comandos permitem determinar a largura, altura e
profundidade de um texto.

\begin{lscommand}
\ci{settoheight}\verb|{|\emph{variável}\verb|}{|\emph{texto}\verb|}|\\
\ci{settodepth}\verb|{|\emph{variável}\verb|}{|\emph{texto}\verb|}|\\
\ci{settowidth}\verb|{|\emph{variável}\verb|}{|\emph{texto}\verb|}|
\end{lscommand}

\noindent O seguinte exemplo mostra uma possível aplicação para estes comandos.

\begin{example}
\flushleft
\newenvironment{vardesc}[1]{%
  \settowidth{\parindent}{#1:\ }
  \makebox[0pt][r]{#1:\ }}{}

\begin{displaymath}
a^2+b^2=c^2
\end{displaymath}

\begin{vardesc}{Onde}$a$, 
$b$ -- são adjuntos do ângulo
recto de um triângulo rectângulo.

$c$ -- é a hipotenusa do
triângulo e sente-se sozinha.

$d$ -- finalmente, nem sequer
aparece. Não é curioso?
\end{vardesc}
\end{example}

\section{Caixas}

O \LaTeX{} constrói as suas páginas movendo caixas. A principio, cada
letra é uma pequena caixa, que é depois colada a outras letras para
formar palavras. Estas são de novo coladas a outras palavras, mas com
cola especial, que é elástica e portanto uma série de palavras pode
ser encolhida ou esticada para preencher exactamente uma linha de
texto na página.

Admito, esta é uma versão muito simplista do que realmente acontece,
mas na verdade, o \TeX{} opera com cola e caixas. Não é só uma letra que
pode ser uma caixa. Pode colocar virtualmente tudo numa caixa,
incluindo outras caixas. Cada caixa irá depois ser manuseada pelo
\LaTeX{} como se fosse uma simples letra.

Nos capítulos anteriores, já encontrou algumas caixas, no entanto, não
lhe disse. O ambiente \ei{tabular} e o \ci{includegraphics}, por
exemplo, produzem ambos uma caixa. Isto significa que pode colocar
facilmente duas tabelas ou imagens lado a lado. Só tem de ter a
certeza que a sua largura não é mais larga que a largura do texto.

Também pode empacotar um parágrafo da sua escolha numa caixa com o
comando

\begin{lscommand}
\ci{parbox}\verb|[|\emph{pos}\verb|]{|\emph{largura}\verb|}{|\emph{texto}\verb|}|
\end{lscommand}

\noindent ou com o ambiente

\begin{lscommand}
\verb|\begin{|\ei{minipage}\verb|}[|\emph{pos}\verb|]{|\emph{largura}\verb|}| texto
\verb|\end{|\ei{minipage}\verb|}|
\end{lscommand}

\noindent O parâmetro \texttt{pos} pode tomar uma das letras
\texttt{c, t} ou \texttt{b} para controlar o alinhamento vertical da caixa,
relativamente à linha base do texto circundante. A \texttt{largura} toma
um valor que especifica a largura da caixa. A principal diferença entre
\ei{minipage} e \ci{parbox} é que não pode usar todos os comandos e ambientes
dentro de uma \ei{parbox} enquanto quase tudo é possível numa \ei{minipage}.

Enquanto \ci{parbox} empacota um parágrafo fazendo quebras de linha e
tudo o mais, existe também uma classe de comandos para caixotes que
operam apenas em material alinhado horizontalmente. Já conhecemos um
deles. É chamado \ci{mbox}, e empacota simplesmente uma série de
caixas dentro de uma outra, e pode ser usado para prevenir a
hifenização de palavras. Como pode colocar caixas dentro de qualquer caixa,
estes empacotadores horizontais dão-lhe uma flexibilidade ilimitada.

\begin{lscommand}
\ci{makebox}\verb|[|\emph{largura}\verb|][|\emph{pos}\verb|]{|\emph{texto}\verb|}|
\end{lscommand}

\noindent A \texttt{largura} define a largura da caixa resultante vista do lado
de fora.\footnote{Isto significa  que pode ser mais pequena do que o
  material lá dentro. Pode até colocar a largura a 0pt de forma a que o 
  texto dentro da caixa irá ser escrita sem influenciar as caixas
  circundantes.} Além do comprimento das expressões, pode também usar
\ci{width}, \ci{height}, \ci{depth} e \ci{totalheight} no parâmetro
de largura. Todos eles são valores obtidos medindo o \emph{texto} escrito.
O parâmetro \emph{pos} toma um valor de entre as letras: \textbf{c}entro,
à esquerda (\textbf{l}eft), à direita (\textbf{r}ight) ou \textbf{s} que
espalha o texto dentro da caixa para a preencher.

O comando \ci{framebox} funciona exactamente da mesma forma que \ci{makebox}, mas
desenha uma caixa à volta do texto.

O seguinte exemplo mostra algumas coisas que pode fazer com os comandos
\ci{makebox} e \ci{framebox}.

\begin{example}
\makebox[\textwidth]{%
    c e n t r a d o}\par
\makebox[\textwidth][s]{%
    e s p a l h a d o}\par
\framebox[1.1\width]{Agora
    estou encaixilhado!} \par
\framebox[0.8\width][r]{Bolas, 
    estou tão largo} \par
\framebox[1cm][l]{esquece,
    Eu sou assim} 
Consegue ler isto?
\end{example}

Agora que controlamos a horizontal, o próximo passo óbvio é ir para o
  vertical.\footnote{O controlo total é obtido apenas controlando
  a horizontal tão bem como a vertical...\ldots}
 Sem problemas para o \LaTeX{}. O comando

\begin{lscommand}
\ci{raisebox}\verb|{|\emph{içar}\verb|}[|\emph{acima-da-linha-base}\verb|][|\emph{abaixo-da-linha-base}\verb|]{|\emph{texto}\verb|}|
\end{lscommand}

\noindent permite definir as propriedades verticais de uma caixa.
Pode usar o \ci{width}, \ci{height}, \ci{depth} e \ci{totalheight} nos
primeiros três parâmetros, de forma a actual de acordo com o tamanho
da caixa dentro do argumento \emph{texto}.

\begin{example}
\raisebox{0pt}[0pt][0pt]{\Large%
\textbf{Aaaa\raisebox{-0.3ex}{a}%
\raisebox{-0.7ex}{aa}%
\raisebox{-1.2ex}{r}%
\raisebox{-2.2ex}{g}%
\raisebox{-4.5ex}{h}}}
ele gritou mas nem sequer o mais
próximo notou que alguma coisa
terrível lhe tinha acontecido.
\end{example}

\section{Réguas}
\label{sec:rule}

Algumas páginas atrás deve ter reparado no comando

\begin{lscommand}
\ci{rule}\verb|[|\emph{içar}\verb|]{|\emph{largura}\verb|}{|\emph{altura}\verb|}|
\end{lscommand}

\noindent Normalmente ele produz uma simples caixa preta.
\begin{example}
\rule{3mm}{.1pt}%
\rule[-1mm]{5mm}{1cm}%
\rule{3mm}{.1pt}%
\rule[1mm]{1cm}{5mm}%
\rule{3mm}{.1pt}
\end{example}

\noindent Isto é útil para desenhar linhas horizontais e verticais.
A linha na página de título, por exemplo, foi criada com um comando
\ci{rule}.
{\flushright FIM.\par}
%
% TeX-master: "lshort2e"
% mode: latex
% mode: flyspell


