Lição 6

Carregando múltiplos pacotes

O comando \usepackage entende uma lista de pacotes separada por vírgula, então você pode carregar vários de uma vez só: \usepackage{color,graphicx} por exemplo. Se você estiver passando opções para um pacote, elas se aplicarão para cada um dos pacotes na lista. Também é mais fácil remover pacotes comentando-os se eles forem carregados separadamente. Assim, vamos adotar como prática carregar cada pacote em uma linha separada.

O pacote babel

Nós mostramos o pacote babel na lição principal como uma forma de escolher diferentes padrões de hifenização. Mas babel faz muito mais do que isso, dependendo dos idiomas sendo utilizados. Por exemplo, em Alemão, babel fornece atalhos para criar hífens ‘flexíveis’, e também uma forma rápida de digitar tremas sem ter uma tecla especial no teclado. Veja também como o título da seção Table of Contents gerada pelo comando \tableofcontents muda para o Alemão Inhaltsverzeichnis:

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage[ngerman]{babel} % Note que o nome da opção é 'ngerman'

\begin{document}

\tableofcontents

\section{"Uber "Apfel und Birnen}

\subsection{Äpfel}
Äpfel sind rot.

\subsection{Birnen}
Birnen sind gelb.

\end{document}

Outras configurações de linguagem fazem mudanças de design: por exemplo, em tipografia Francesa tradicional, há um espaço antes de alguns sinas de pontuação, como :, e esse espaço é adicionado automaticamente se você carregar o pacote babel com a opção french.

Opções globais

Às vezes, você quer que uma opção fique disponível para todos os pacotes que você carregar. Isso é feito ao passar a opção na linha do \documentclass: todos os pacotes podem ‘ver’ essa lista. Então para passar o idioma de um documento para todos os pacotes podemos usar:

\documentclass[ngerman]{article} % Note que o nome da opção é 'ngerman'
\usepackage[T1]{fontenc}

\usepackage{babel}

\begin{document}

\tableofcontents

\section{"Uber "Apfel und Birnen}

\subsection{Äpfel}
Äpfel sind rot.

\subsection{Birnen}
Birnen sind gelb.

\end{document}

Mais definições

O \newcommand permite comandos com até nove argumentos, em que o primeiro pode ser opcional.

Se pegarmos o exemplo da lição principal, podemos tornar a cor opcional, sendo o padrão azul:

\usepackage[T1]{fontenc}

\usepackage{xcolor}

\newcommand\kw[2][blue]{\textcolor{#1}{\itshape #2}}

\begin{document}

Algo sobre \kw{maçãs} e \kw[red]{laranjas}.

\end{document}

Argumentos opcionais são delimitados por [] e, se omitidos, o padrão especificado na definição é usado.

\NewDocumentCommand

A partir da versão de Outubro de 2020 do LaTeX, um sistema estendido de definições está disponível. Em versões anteriores esse sistema estava disponível no pacote xparse que incluímos aqui por compatibilidade.

Podemos reproduzir o exemplo acima usando \NewDocumentCommand:

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage{xparse} % Necessário apenas em versões antigas do LaTeX
\usepackage{xcolor}

\NewDocumentCommand\kw{O{blue} m}{\textcolor{#1}{\itshape #2}}

\begin{document}

Algo sobre \kw{maçãs} e \kw[red]{laranjas}.

\end{document}

Assim como com o \newcommand, o \NewDocumentCommand pega o comando a ser definido (aqui \kw) e o corpo da definição usando #1 a #9 para os argumentos, no entanto a diferença está em como os argumentos são especificados.

Ao contrário do \newcommand, onde apenas o número de argumentos é dado, opcionalmente dando um valor padrão para o primeiro, com o \NewDocumentCommand cada argumento é especificado com uma letra, então um comando de dois argumentos é especificado com {mm} ao invés de [2]. Essa forma é um pouco mais longa, mas permite muito mais flexibilidade nos comandos a serem definidos. Aqui damos apenas esse simples exemplo onde o primeiro argument é opcoinal, com padrão azul (O{blue}) e o segundo é obrigatório (m).