Definindo comandos
Origem: Tex-Br, a enciclopédia livre.
A definição de novos comandos e a redefinição de comandos já existentes são o trabalho fundamental de uma classe ou um pacote. No entanto, mesmo em documentos às vezes é útil definir um novo comando para facilitar o trabalho, ou fazer alguma alteração no comportamento dos comandos já existentes.
Há duas formas de se definir novos comandos: a forma LaTeX, mais simples, porém mais limitada, e a forma TeX, mais poderosa, porém mais difícil de usar. A não ser que você esteja escrevendo um documento em TeX puro, é recomendado usar as facilidades do LaTeX sempre que possível.
Conteúdo |
Definindo comandos no LaTeX
O comando mais simples para definição de novos comandos é o \newcommand. Em sua forma mais básica, ele recebe dois argumentos: o comando a ser definido e o que será substituído em lugar do comando quando este for encontrado. Por exemplo:
\newcommand{\ufpr}{Universidade Federal do Paraná}
Esse comando cria o comando \ufpr. Sempre que ele for usado, será trocado pelo nome da instituição. Esse tipo de comando é útil quando há algo que se repete muitas vezes no texto, permitindo assim a abreviação.
É possível fazer com que o novo comando tenha argumentos. Para criar um comando com argumentos, usa-se uma sintaxe como a do exemplo a seguir:
\newcommand{\deriv}[1]{\frac{d #1}{dx}}
Definimos aqui o comando \deriv, para nos auxiliar a escrever derivadas. Ele gera o símbolo
seguido do que for passado como argumento. Assim, usar \deriv{(x^2 + 3x)} gerará
, simplificando o trabalho. Note que ao definirmos o comando, há um argumento extra, entre o nome do comando e a definição, dizendo quantos argumentos o comando terá. Dentro da definição, esses argumentos são acessados com #1, #2, etc.
Sintaxe completa e outros comandos
A sintaxe completa de \newcommand é
\newcommand{\nome}[nargs][opt]{definição}
Como em qualquer comando LaTeX, argumentos entre colchetes são opcionais. nome é o nome do comando a ser criado. nargs é o número de argumentos que o novo comando aceitará. opt, se informado, especifica que o primeiro argumento do novo comando será opcional, e, se este argumento opcional não for informado ao se usar o novo comando, #1 terá o valor de opt. Finalmente, definição é a definição do novo comando.
Além de \newcommand, há outros comandos similares. Todos têm a mesma sintaxe:
- \renewcommand: redefinir comando previamente definido.
- \providecommand: definir comando se ele não existe, se ele existe não faz nada.
- \DeclareRobustCommand: definir um comando robusto, possivelmente já definido.
Definindo comandos com *
No LaTeX, uma série de comandos tem duas versões: \comando e \comando*, que fazem coisas parecida.
Para definirmos este comando, usamos o comando \@ifstar do LaTeX. Esse comando verifica se o comando foi chamado na versão básica ou na versão com *, e chama então outros comandos (que fazem o serviço) dependendo de como ele foi chamado.
É mais fácil entender através de um exemplo:
\newcommand{\comando}{\@ifstar\@scomando\@comando}
\newcommand{\@comando}[1]{versão sem asterisco}
\newcommand{\@scomando}[2]{versão com asterisco}
Note que as duas versões (com * e sem) são independentes, e podem inclusive ter argumentos distintos. Além disso, como o comando \@ifstar tem um @ no nome (e também os comandos que definimos, mas estes podem ser chamados do nome que quisermos), esse código deve estar num pacote/classe ou entre \makeatletter e \makeatother.
Definindo comandos no TeX
Podemos também usar os comandos primitivos do TeX para definir comandos, mais ricos que os comandos de LaTeX (porém mais perigosos). Conhecer esses comandos supõe um maior conhecimento sobre TeX, o programa sobre o qual o LaTeX é construído. Os comandos são
- \def: definir comandos locais, curtos, sem expandir argumentos.
- \edef: definir comandos locais, curtos, expandindo completamente os argumentos.
- \gdef: definir comandos globais, curtos, sem expandir argumentos.
- \gdef: definir comandos globais, curtos, expandindo completamente os argumentos.
- \let: fazer cópias de comandos.
Um exemplo de uso de \def:
\def\vv<#1>{\langle #1 \rangle}
Então, ao utilizarmos \vv<a, b> no texto, será produzido
.
Um exemplo de uso de \let:
\let\D\displaystyle
Isso apenas torna \D uma maneira equivalente e mais curta de chamar \Displaystyle,
