
Considere o seguinte m(não-)nós:
\documentclass{standalone}
\begin{document}
Foo & Bar
\end{document}
A compilação falhará com
! Misplaced alignment tab character &.
enquanto irá gerar um PDF perfeitamente correto ao remover o &
caractere do código.
Mesmo o TeX simples se comporta assim e
Foo & Bar
\bye
produz o mesmo erro.
Eu só vi &
usado em ambientes tabulares e de array, nunca fora deles. Por que é que?
Não seria possível definir, por exemplo, \tabular
e \endtabular
então isso &
é especial apenas dentro do ambiente e apenas um personagem normal fora desses ambientes?
Por que &
fora dos ambientes tabulares e de array é necessário quebrar o documento?
Para reformular a pergunta: WTF é um caractere de tabulação de alinhamento e onde normalmente o colocamos?
Responder1
Vamos supor que o formato ou o usuário não defina o catcode de & (ou qualquer outro símbolo) globalmente como 4.
Quais seriam as consequências assumindo que você ainda deseja ter esse caractere localmente (e não usar comandos como \nc
"nova coluna" o tempo todo)?
- Todoambiente tabular teria que ter certeza de definir um caractere para ser a guia de alinhamento - e eles devem concordar qual deles usar. Isso envolveria muitos patches. Naturalmente, isso não é um argumento por que isso não foi feito quando o formato foi escrito.
- Não seria possível utilizar este caractere se o tabular fosse utilizado no argumento de algum comando. Por exemplo, você teria problemas ao usar tabulares em rodapés e cabeçalhos, em endereços de cartas, em listas de autores, em frames de projetores. Naturalmente, alguém poderia definir um comando como um substituto, mas os usuários teriam que entender quando esse comando é necessário.
Seria bastante difícil desabilitar localmente a guia de alinhamento. Por exemplo, atualmente você pode digitar facilmente uma tabela com muitos & assim:
\documentclass{article} \begin{document} \begingroup \catcode`\&=12 \catcode`!=4 \begin{tabular}{ll} a & b ! c & d \end{tabular} \endgroup \end{document}
Mas se a tabela redefinir o código de gato & ele não funcionará mais. Então você precisaria de alguns ganchos para permitir tais manipulações - e novamente em todos os ambientes tabulares.
No geral, muitas coisas ficariam muito mais difíceis para os criadores de pacotes e para os usuários. É mais fácil aprender a digitar \&
.
Responder2
Você pergunta:
Por que & é especial fora dos ambientes tabulares?
Acho que a questão não está bem colocada. Eu diria que isso &
é especialem todos os lugares, não apenas tabular
em ambientes externos. O personagem &
temcódigo de categoria 4-- "guia de alinhamento" -- em todos os formatos TeX e LaTeX que já encontrei. Esta configuração de catcode permite que ele seja usado como caractere de tabulação de alinhamento não apenas em tabular
ambientes semelhantes a - (por exemplo, tabular*
, tabularx
, longtable
, etc), mas também array
em ambientes, o eqnarray
ambiente obsoleto, alguns dos ambientes matemáticos de exibição do amsmath
pacote, o IEEEeqnarray
ambiente do IEEEtrantools
pacote e provavelmente alguns ambientes adicionais.
A vantagem de atribuir catcode 4 &
por padrão é que todos os criadores de pacotes podem (e, francamente,deve) escrevem seu código assumindo que ele &
tem catcode 4. Sem esse padrão, você teria alguns criadores de pacotes escolhendo &
como caractere de tabulação de alinhamento, enquanto outros poderiam escolher @
ou quem sabe o que mais. Tal resultado seria claramente inferior para a maioria dos usuários, uma vez que eles teriam que memorizar qual personagem, ou caracteres, servem como função de guia de alinhamento em quais ambientes.
Por outro lado, se alguém não quiser &
ser especial - e não quiser modificar seu código de gato - deve inseri-lo como \&
.