# TeX

O TeX é um sistema de tipográfico produzido (desenhado e escrito) principalmente por Donald Knuth e lançado em 1978, junto com a linguagem computacional para a descrição de fontes Metafont e a família de tipos de letras "Computer Modern"; o TeX foi projetado tendo em vista dois objetivos principais: permitir que qualquer pessoa produza livros de alta qualidade com o mínimo esforço e fornecer um sistema que produza exatamente os mesmos resultados em todos os computadores em qualquer momento. O TeX é um software livre, o que o torna mais acessível a um número maior de pessoas.
O TeX é uma alternativa conhecida para se digitar fórmulas matemáticas complexas, apontada como um dos sistemas de tipografia mais sofisticados do mundo. O TeX é popular na academia, especialmente em matemática, ciências da computação, economia, engenharia, física, estatística e psicologia quantitativa. O TeX tem desbancado o Unix Troff, outro sistema de formatação usado em muitas instalações Unix. O TeX também é usado para muitas outras tarefas de tipografia, especialmente na forma de LaTeX, ConTeXt, entre outros pacotes. O MIME Type amplamente usado para TeX is application/x-tex. No sistema de tipografia, seu nome é sintetizado como TeX.

## História

Quando o primeiro volume de The Art of Computer Programming de Donald Knuth foi publicado em 1968, o livro tinha sido tipografado com uma composição de metal quente da Monotype Corporation. Este método datado do século XIX tinha um bom estilo clássico, que agradava Knuth. Quando a segunda edição foi publicada em 1976, todo o trabalho precisou ser tipografado novamente porque a tecnologia da Monotype Corporation tinha sido substituída pela fotocomposição e as fontes originais não estavam mais disponíveis. Quando Knuth recebeu as provas da nova versão em 30 de março de 1977, ele as achou terríveis. Naquela época, Knuth viu pela primeira vez a saída de um sistema de tipografia digital de alta qualidade e se interessou pela tipografia digital. O desapontamento com as provas deram a Knuth a motivação final para resolver o problema de uma vez por todas, com o desenvolvimento do seu próprio sistema de tipografia. Em 13 de maio de 1977, ele escreveu um memorando para si mesmo descrevendo as características básicas do TeX.
Knuth planejou terminar o memorando em seu sabático em 1978, mas a linguagem ficou pronta em 1989, mais de dez anos depois. Guy Steele estava em Stanford durante o verão norte-americano de 1978, quando Knuth estava desenvolvendo a primeira versão do TeX. Quando Steele retornou para Massachusetts Institute of Technology no outono do mesmo ano, ele reescreveu a entrada / saída do TeX para ser executado no sistema operacional Incompatible Timesharing System (ITS). A primeira versão do TeX foi escrita na linguagem de programação SAIL para ser executado em um PDP-10, no sistema operacional de Stanford WAITS. Para as últimas versões do TeX, Knuth inventou o conceito de literate programming, uma forma de produzir código-fonte compilável e documentação tipografada em TeX a partir do mesmo arquivo original. A linguagem utilizada é denominada WEB e produz programas em DEC PDP-10 Pascal.
Uma nova versão do TeX, reescrita a partir do zero e chamada de TeX82, foi lançada em 1982. Entre outras mudanças, o algoritmo de hifenização original foi substituído por um novo algoritmo escrito por Frank Liang. O TeX82 também usa aritmética de ponto fixo em vez de ponto flutuante para garantir a reprodutibilidade dos resultados em diferentes hardwares e inclui um programa de linguagem Turing completo depois do lobby intenso de Steele. Em 1989, Knuth lançou novas versões do TeX e do METAFONT. Apesar do desejo de manter estável o TeX, Knuth percebeu que 128 diferentes caracteres para a entrada de texto não eram suficientes para acomodar línguas estrangeiras. Então, a principal mudança na versão 3.0 do TeX é a capacidade de trabalhar com entradas 8-bit, permitindo 256 diferentes caracteres na entrada de texto.
Desde a versão 3.0, o TeX tem usado uma versão idiossincrática de um sistema numérico, em que atualizações têm sido indicadas pela adição de um dígito extra no final do decimal. Então, o número da versão se aproxima assintoticamente de $\pi$. Isto é reflexo do fato que o TeX agora é muito estável (apenas pequenas atualizações são antecipadas). A versão atual do TeX é 3.14159265, tendo sido atualizada pela última vez em 12 de janeiro de 2014. O design foi congelado depois da versão 3.0, sem a adição de novos recursos ou alterações fundamentais. Portanto, as versões mais recentes conterão somente correções de bugs. Da mesma forma, versões de METAFONT depois da versão 2,0 abordam assintoticamente $e$ (mudanças similares serão aplicadas após o falecimento de Knuth).
Uma vez que o código-fonte do TeX está em domínio público, outros programas podem e são explicitamente encorajados a melhorar o sistema. Entretanto, os programas são obrigados a usar outro nome para distribuir o TeX modificado, o que significa que o código-fonte pode evoluir continuadamente. Por exemplo, o projeto Omega foi desenvolvido depois de 1991 principalmente para melhorar a capacidade tipográfica multilíngua do TeX. Knuth criou versões modificadas não oficiais como TeX-XeT, que permite o usuário misturar textos escritos em sistemas de escrita da esquerda para a direita ou da direita para a esquerda no mesmo documento.

## Sistema de tipografia

Os comandos do TeX comumente começam com uma barra inversa e são agrupados com colchetes. Praticamente todas as propriedades sintáticas do TeX podem ser modificadas rapidamente, o que torna a entrada do TeX difícil de ser analisada. O TeX é uma linguagem baseada em macros e tokens: muitos comandos, incluindo a maioria dos definidos pelo usuário, são expandidos rapidamente até que permaneçam apenas tokens não expansíveis, que são então executados. A expansão em si é praticamente livre de efeitos colaterais. A recursão de cauda de macros não tem memória e as construções if-then-else estão disponíveis. Isto faz do TeX uma linguagem Turing completa mesmo em nível de expansão. O sistema pode ser dividido em quatro estágios.
No primeiro estágio, os caracteres são lidos a partir de um arquivo de entrada e atribuídos a um código de categoria (às vezes chamado de catcode, para abreviar). As combinações de barras invertidas (caractere de categoria zero) seguidas por letras (caracteres de categoria 11) ou um único outro caractere são substituídos por um token de sequência de controle. Este estágio é como uma análise lexical, embora não forme números a partir de dígito. No segundo estágio, as sequências de controle expansíveis (como condicionais de macros) são substituídas por seu texto de substituição. No terceiro estágio, há o fluxo de caracteres (incluindo caracteres com significado especial) e sequências de controle não expansíveis (normalmente comandos de atribuição ou comandos visuais). Neste estágio os caracteres são montados em um parágrafo. O algoritmo de quebra de parágrafo do TeX funciona otimizando pontos de interrupção em todo o parágrafo. No quarto estágio, a lista vertical de linhas e e outros materiais em páginas são quebrados.
O TeX tem conhecimento preciso do tamanho de todos os caracteres e símbolos. Usando esta informação, calcula a disposição ideal de letras por linha e linhas por página. Então, produz um arquivo DeVice Independent (DVI) com as localizações finais de todos os caracteres. O sistema base do TeX compreende cerca de 300 comandos, chamados de primitives. Estes comandos de baixo nível são raramente usados diretamente pelos usuários e a maioria das funcionalidades é fornecida por formatos de arquivos (imagens de memória predispostas do TeX depois do carregamento de grandes coleções de macro). O formato padrão original de Knuth, que adiciona cerca de 600 comandos, é o Plain TeX. O formato mais usado é o LaTeX, desenvolvido originalmente por Leslie Lamport, que incorpora estilos de documentos para livros, cartas, slides, entre outros, e adiciona suporte para referência e numeração automática de seções e equações. Outro formato amplamente utilizado AMS-TeX é produzido pela American Mathematical Society e fornece muitos comandos mais fáceis de usar, que podem ser alterados por diários para se adequarem ao estilo de diferentes publicações. A maioria dos recursos do AMS-TeX pode ser usada no LaTeX por meio de pacotes AMS. Isto é então referido como AMS-LaTeX. Outros formatos incluem ConTeXt, usado principalmente para editoração e redação eletrônica, sobretudo por Hans Hagen na Pragma.

### Funcionamento

Um exemplo de Programa Olá Mundo em TeX é:
Isto pode estar em um arquivo myfile.tex, na medida em que .tex é uma extensão de arquivo comum em arquivos TeX. Por padrão, tudo que segue um sinal de porcentagem em uma linha é um comentário, ignorado pelo TeX. Executar TeX neste arquivo (por exemplo, digitando tex myfile.tex em um interpretador de linha de comando ou chamando-o a partir de uma interface gráfica de usuário) criará um arquivo de saída chamado de myfile.dvi, representando o conteúdo da página em um formato DVI. Então, um arquivo DVI pode ser visto na tela ou convertido em um formato adequado para qualquer uma das várias impressoras para as quais existia um driver de dispositivo (o suporte à impressora geralmente não era um recurso dos sistemas operacionais no momento em que o TeX foi criado). Knuth disse que não há nada inerente no TeX que exija DVI como formato de saída. Todas as versões posteriores do TeX, nomeadamente pdfTeX, XeTeX e LuaTeX, tinham suporte de saída diretamente para PDF.

### Exemplo matemático

O TeX fornece uma sintaxe de texto diferente, especificamente para fórmulas matemáticas. Por exemplo, a fórmula quadrática (que é a solução da equação quadrática) aparece como:
| Marcação | Renderiza como |
| <syntaxhighlight lang="latex" inline> A fórmula quadrática é $-b \pm \sqrt{b^2 - 4ac} \over 2a$ \bye </syntaxhighlight> | ${\hbox{A fórmula quadrática é}}\textstyle {-b\pm {\sqrt {b^{2}-4ac}} \over 2a}$ |
A fórmula é impressa de maneira que uma pessoa possa escrever à mão ou tipografar a equação. Em um documento, a entrada no modo de matemática é feita começando com um símbolo $, depois inserindo uma fórmula na sintaxe TeX e encerrando novamente com outro símbolo $. Em tom de brincadeira, Knuth explicou que ele escolheu o cifrão para indicar o início e fim do modo matemático no TeX, porque tipografar matemática deveria ser tradicionalmente caro. Display mathematics (matemática apresentada centrada em uma nova linha) é semelhante, mas usa dois símbolos ($$) em vez de um único símbolo ($). Por exemplo, o caso acima com a fórmula quadrática:
| Marcação | Renderiza como |
| <syntaxhighlight lang="latex" inline> A fórmula quadrática é $$-b \pm \sqrt{b^2 - 4ac} \over 2a$$ \bye </syntaxhighlight> | ${\hbox{A fórmula quadrática é}}\,$$-b\pm {\sqrt {b^{2}-4ac}} \over 2a$ |

## Uso do TeX

Em várias áreas técnicas, em particular nas ciências da computação, na matemática, na engenharia e na física, o TeX se tornou fundamental. Milhares de livros são publicados usando TeX, incluindo livros de editoras como Addison-Wesley, Cambridge University Press, Elsevier, Oxford University Press e Springer. Várias publicações também são produzidas utilizando TeX ou LaTeX, permitindo que os autores submetam seus manuscritos em TeX (embora publicações de outras áreas como dicionários ou conteúdos jurídicos tenham sido produzidas utilizando o TeX, elas não fizeram tanto sucesso quanto as publicação das áreas mais técnicas porque o TeX foi desenhado primeiramente para a matemática). Quando projetou o TeX, Knuth não acreditava que um único sistema de tipografia poderia atender a todas as necessidades. Em vez disto, ele inseriu vários ganchos dentro do programa para que fosse possível produzir extensões e divulgar o código-fonte, esperando que editores criassem versões adaptadas às suas necessidades. Emboras algumas extensões tenham sido desenvolvidas (inclusive, algumas pelo próprio Knuth), a maioria das pessoas estendeu o TeX apenas usando macros e o TeX continuou a ser um sistema associado a uma tipografia técnica.
É possível usar o TeX para gerar automaticamente layout sofisticado para dados XML. As diferenças de sintaxe entre as duas linguagens podem ser superadas com a ajuda do TeXML. No contexto de publicações XML, o TeX então pode ser considerado uma alternativa ao XSL-FO. O TeX permitiu que artigos científicos em disciplinas matemáticas fossem reduzidos a arquivos relativamente pequenos e trocados no início da Internet e da World Wide Web mesmo quando o envio de arquivos grandes era difícil. Isto abriu caminho para a criação de repositórios de artigos científicos como arXiv, por meio dos quais os trabalhos podiam ser publicados com um editor intermediário. As fórmulas em TeX podem ser inseridas em páginas MediaWiki usando a tag <math>.

## Pronúncia e ortografia

O nome TeX corresponde a /tɛx/, com consoante final de Bach. As letras do nome representam as letras gregas maiúsculas tau, epsilon e chi, uma vez que TeX é uma abreviatura de τέχνη (ΤΕΧΝΗ - technē), que significa arte e ofício em grego e também é raiz da palavra technical. Os falantes de inglês muitas vezes pronunciam /tɛk/, como a primeira sílaba de technical. Knuth instrui que a letra E ficasse abaixo da linha de base com espaçamento reduzido entre as letras. Isto é feito, como menciona Knuth em seu TeXbook, para distinguir o TeX de outros sistemas como TEX, o processador Text EXecutive (desenvolvido pela Honeywell Information Systems). Os fãs gostam de criar nomes a partir da palavra TeX como TeXnician (usuário do software TeX), TeXhacker (programador TeX), TeXmaster (programador TeX competente), TeXhax e TeXnique.

## Comunidade

As entidades notáveis na comunidade TeX incluem o TeX Users Group, que publica TUGboat e The PracTeX Journal, cobrindo uma ampla variedade de tópicos de tipografia digital relevantes para TeX. O Deutschsprachige Anwendervereinigung TeX é um grande grupo de usuários na Alemanha. O grupo de usuários de TeX fundado em 1980 para fins educacionais e científicos fornece uma organização para aqueles que têm interesse em tipografia e design de fontes e são usuários do sistema de tipografia inventado por Knuth. O TeX Users Group representa os interesses dos usuários TeX em todo o mundo. O TeX Users Group publica a revista TUGboat três vezes por ano. Tex.stackexchange.com é um site de perguntas e respostas para usuários TeX novos e experientes.