> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/overleaf-learn-latex-pt/mais-topicos/39-mltex-enctex-and-synctex-tex-extensions.md).

# Extensões TeX MLTeX, EncTeX e SyncTeX

## Alguns detalhes de contexto sobre extensões do TeX

O TeX tem uma longa história de desenvolvimento — agora com mais de 4 décadas! Durante esse tempo, novas “versões” do TeX foram desenvolvidas — como e-TeX, pdfTeX, XeTeX, LuaTeX e assim por diante. Além de motores completamente novos, com todo um conjunto de funcionalidades extra, houve várias *extensões* que normalmente se concentram em implementar uma funcionalidade específica para melhorar o software original de Knuth.

Com o advento de motores TeX modernos, como XeTeX e LuaTeX, a necessidade e o uso de algumas extensões legadas do TeX diminuíram, uma vez que os motores TeX mais recentes trazem funcionalidades adicionais poderosas — como suporte integrado para texto codificado em UTF-8. O objetivo desta página é fornecer algumas notas sobre extensões, incluindo MLTeX e EncTeX, que ainda poderá ver referenciadas nas [opções de linha de comando do motor TeX](/latex/overleaf-learn-latex-pt/mais-topicos/44-tex-engine-command-line-options-for-pdftex-xetex-and-luatex.md). MLTeX e EncTeX já não são desenvolvidos, mas uma extensão muito útil, SyncTeX, continua a ser desenvolvida ativamente e é suportada pelo Overleaf.

## MLTeX

*TeX multilíngue*, ou MLTeX, foi desenvolvido entre 1992 e 1995 como uma modificação do TeX para permitir a hifenização de palavras com letras acentuadas usando as fontes ordinárias Computer Modern (CM).

### Ativar (habilitar) o MLTeX

O MLTeX foi concebido para funcionar como parte de um chamado `.fmt` (ficheiro de formato), que é, na prática, uma versão binária pré-compilada de um conjunto de macros TeX. Para criar ficheiros de formato, coloca-se um motor TeX no seu chamado `INI` modo INI, processa-se a coleção de macros e depois emite-se o `\dump` comando para gravar o `.fmt` ficheiro. Veja [este artigo](/latex/overleaf-learn-latex-pt/artigos-aprofundados/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md) para uma discussão dos modos INI.

Para ativar o MLTeX, *para os motores que o suportam*, como o pdfTeX, escreveria

```
pdftex -ini -mltex *pdfetex.ini
```

onde `pdfetex.ini` é um ficheiro contido na distribuição TeX Live.

**Por que o asterisco (`*`)?** O asterisco coloca o pdfTeX no chamado “modo estendido”, que ativa o suporte às primitivas e-TeX. Se o omitir e escrever `pdftex -ini -mltex pdfetex.ini` receberá um erro:

```
Isto é pdfTeX, Versão 3.14159265-2.6-1.40.19 (INITEX)
 \write18 ativado.
MLTeX v2.2 ativado
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

! erro fatal do e-TeX: este ficheiro só pode ser processado no modo estendido;
  talvez se tenha esquecido do asterisco?
```

**Nota**: Em vez de usar um asterisco para ativar o “modo estendido”, pode usar a `-etex` opção de linha de comando em vez disso:

```
pdftex -ini -etex -mltex pdfetex.ini
```

**Nota**: Usando a `-mltex` opção na linha de comando com um `.fmt` ficheiro que foi *não gerado* com o MLTeX ativado irá *contém* funcionar: o MLTeX tem de ser “ativado” através de um ficheiro de formato apropriado.

Quando usa a `-mltex` opção durante `.fmt` criação do ficheiro, uma variável booleana com o valor “true” é escrita no `.fmt` ficheiro, informando o motor TeX de que as extensões MLTeX foram ativadas e devem ser disponibilizadas ao utilizador. Se não definir explicitamente a `-mltex` opção, então a variável correspondente será “false”. Se o valor dessa variável for detetado como “false” (quando esse `.fmt` ficheiro for recarregado durante uma execução TeX), então tentar usar as extensões MLTeX resultará num `Comando indefinido...` erro — porque as primitivas MLTeX não terão sido registadas (carregadas) e, portanto, não são reconhecidas.

Depois de executar `pdftex -ini -mltex *pdfetex.ini` na linha de comando, verá algo semelhante ao texto seguinte, mostrando que o MLTeX v2.2 está ativado:

```
Isto é pdfTeX, Versão 3.14159265-2.6-1.40.19 (INITEX)
\write18 ativado.
a entrar no modo estendido
MLTeX v2.2 ativado
....
....
....
A iniciar a escrita no ficheiro pdfetex.fmt
....
Sem páginas de saída.
Transcrição escrita em pdfetex.log.
```

Isto resulta num `.fmt` ficheiro chamado `pdfetex.fmt` que lhe permite usar os comandos MLTeX:

```
pdftex -fmt=pdfetex <yourfile.tex>
```

onde `<yourfile.tex>` pode fazer uso das primitivas específicas do MLTeX

O MLTeX foi originalmente distribuído como um ficheiro de alteração separado, [mltex.ch](http://tug.ctan.org/systems/generic/mltex/mltex.ch), que podia ser fundido com o código-fonte mestre de Knuth ([`tex.web`](https://ctan.org/tex-archive/systems/knuth/dist/tex?lang=en)) para derivar uma nova versão do TeX, chamada MLTeX, que continha várias novas primitivas. Hoje, o código MLTeX de `mltex.ch` está incorporado no principal `tex.ch` ficheiro de alteração usado para construir quase todos os motores TeX.

### Primitivas do MLTeX

As notas seguintes foram em grande parte preparadas e reproduzidas a partir do ficheiro `web2c.info` contido na [TeX Live](https://tug.org/texlive/) distribuição.

* **`\charsubdef`**: Definições de substituição de caracteres. Declara como construir um glifo de carácter acentuado (não necessariamente existente na fonte atual) usando dois glifos de carácter (que existem).

  ```
  \charsubdef COMPOSITE [=] ACCENT BASE
  ```

  Cada um de COMPOSITE, ACCENT e BASE são números de glifos da fonte, expressos na sintaxe TeX habitual: \`\e simbolicamente, '145 para octal, \\"65 para hexadecimal, 101 para decimal. Assim, define se um código de glifo de carácter, seja introduzido como um único carácter ou usando a `\char` primitiva, será mapeado para um glifo da fonte ou para uma `\accent` construção de glifo.

  Por exemplo, se assumir o código de glifo 138 (decimal) para um e-circunflexo e estiver a usar as fontes Computer Modern, que têm o acento circunflexo na posição 18 e o ‘e’ minúsculo na posição ASCII habitual 101 decimal, usaria `\charsubdef` da seguinte forma:

  ```
  \charsubdef 138 = 18 101
  ```
* **`\charsubdefmax`**: Define o maior valor na `\charsubdef` lista. Por exemplo:

  ```
  \charsubdefmax=-1 % desativar todas as substituições
  \charsubdefmax=256 % ativar todas as substituições
  ```
* **`\tracingcharsubdef`**: Rastreio das substituições. Para ajudar a diagnosticar problemas com `\charsubdef`, o MLTeX fornece um parâmetro primitivo, `\tracingcharsubdef`. Se for positivo, cada utilização de `\charsubdef` será reportada. Isto pode ajudar a descobrir quando um carácter é redefinido.

## EncTeX

O EncTeX foi desenvolvido entre 1997 e 2004 como uma extensão do TeX que fornece recodificação flexível de entrada/saída através da adição de novas primitivas — por exemplo, um meio de traduzir a entrada no caminho para dentro do TeX. Permite, por exemplo, a tradução de sequências multibyte, como a codificação UTF-8, para utilização em motores TeX standard de 8 bits.

### Ativar (habilitar) o EncTeX

Tal como o MLTeX, o EncTeX também foi concebido para funcionar como parte de um chamado `.fmt` (ficheiro de formato) — veja [MLTeX](#mltex), acima, para uma explicação dos ficheiros de formato/modo INI.

Para ativar o EncTeX, *para os motores que o suportam*, como o pdfTeX, criaria um ficheiro de formato com EncTeX ativado escrevendo

```
pdftex -ini -enc *pdfetex.ini
```

onde `pdfetex.ini` é um ficheiro contido na distribuição TeX Live.

**Por que o asterisco (`*`)?** O asterisco coloca o pdfTeX no chamado “modo estendido”, que ativa o suporte às primitivas e-TeX. Se o omitir e escrever `pdftex -ini -mltex pdfetex.ini` receberá um erro:

```
Isto é pdfTeX, Versão 3.14159265-2.6-1.40.19 (INITEX)
 \write18 ativado.
MLTeX v2.2 ativado
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

! erro fatal do e-TeX: este ficheiro só pode ser processado no modo estendido;
  talvez se tenha esquecido do asterisco?
```

**Nota**: Em vez de usar um asterisco para ativar o “modo estendido”, pode usar a `-etex` opção de linha de comando em vez disso:

```
pdftex -ini -etex -mltex pdfetex.ini
```

O `-enc` a opção de linha de comando faz com que o motor pdfTeX ative o EncTeX escrevendo alguns dados no `pdfetex.fmt` ficheiro de formato resultante.

**Nota**: Usando a `-enc` opção na linha de comando com um `.fmt` ficheiro que foi *não gerado* com EncTeX ativado irá *contém* funcionar: o EncTeX tem de ser “ativado” através de um ficheiro de formato gerado apropriadamente.

### Primitivas do EncTeX

O EncTeX acrescenta 10 novos comandos primitivos a um motor TeX:

* 3 primitivas na versão inicial (1997):
* `\xordcode`
* `\xchrcode`
* `\xprncode`
* 7 primitivas adicionais (para suporte UTF-8) em 2003:
* `\mubyte`
* `\endmubyte`
* `\mubytein`
* `\mubyteout`
* `\mubytelog`
* `\specialout`
* `\noconvert`

A utilização e o comportamento destas primitivas estão bem documentados no [manual de referência do EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf), escrito pelo autor do EncTeX, Petr Olšák. Para evitar duplicações desnecessárias aqui, os leitores interessados são remetidos para esse documento.

### Mais informações sobre EncTeX

* [Segunda versão do EncTeX: suporte UTF-8](http://mirrors.ctan.org/systems/enctex/eurotex2003-enctex.pdf): um artigo do autor do EncTeX, Petr Olšák.
* [manual de referência do EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf) (em inglês).

### Ativar (habilitar) tanto o MLTeX como o EncTeX

Para ativar tanto o MLTeX como o EncTeX, geraria um ficheiro de formato adequado usando uma linha de comando como

```
pdftex -ini -enc -mltex *pdfetex.ini
```

onde `pdfetex.ini` é um ficheiro contido na distribuição TeX Live.

**Por que o asterisco (`*`)?** O asterisco coloca o pdfTeX no chamado “modo estendido”, que ativa o suporte às primitivas e-TeX. Se o omitir e escrever `pdftex -ini -enc -mltex pdfetex.ini` receberá um erro:

```
Isto é pdfTeX, Versão 3.14159265-2.6-1.40.19 (INITEX)
 \write18 ativado.
MLTeX v2.2 ativado
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

! erro fatal do e-TeX: este ficheiro só pode ser processado no modo estendido;
  talvez se tenha esquecido do asterisco?
```

**Nota**: Em vez de usar um asterisco para ativar o “modo estendido”, pode usar a `-etex` opção de linha de comando em vez disso:

```
pdftex -ini -etex -enc -mltex pdfetex.ini
```

Depois de executar a linha de comando acima, veria uma mensagem, como a seguinte, a informá-lo de que o MLTeX e o EncTeX estão ambos ativados:

```
Isto é pdfTeX, Versão 3.14159265-2.6-1.40.19 (INITEX)
 \write18 ativado.
a entrar no modo estendido
MLTeX v2.2 ativado
 encTeX v. Jun. 2004, recodificação ativada.
....
....
....
A iniciar a escrita no ficheiro pdfetex.fmt
....
Sem páginas de saída.
Transcrição escrita em pdfetex.log.
```

e `pdfetex.fmt` seria produzido um ficheiro de formato, ativando tanto o MLTeX como o EncTeX.

## SyncTeX

A extensão SyncTeX está disponível desde 2008 e continua a ser desenvolvida ativamente pelo seu criador, Jérôme Laurens. É amplamente utilizada, incluindo pelo Overleaf, e é suportada por todos os motores TeX em uso hoje.

### O que faz o SyncTeX?

Ao visualizar um documento composto pelo TeX, talvez para revisão/controlo antes da submissão a uma editora, poderá detetar um erro e precisar de o corrigir no código-fonte TeX. No entanto, encontrar a localização certa no ficheiro TeX pode ser complicado, especialmente se se tratar de um documento substancial. Da mesma forma, poderá querer fazer o caminho inverso: saltar de uma posição num ficheiro-fonte TeX diretamente para a localização da página no PDF final composto. Em ambos os casos, é necessário *sincronizar* uma localização particular num ficheiro TeX e a sua localização correspondente dentro de uma apresentação dos seus resultados compostos: e é isso que o SyncTeX fornece — uma forma de ligar automaticamente localizações em ficheiros TeX às posições das páginas em documentos compostos.

Se o SyncTeX estiver ativado, escreve um ficheiro especial com a extensão `.synctex.gz` (comprimido em gz) ou `.synctex` (sem compressão), dependendo das [opções de linha de comando fornecidas ao SyncTeX](#synoptions). Editores de texto com suporte SyncTeX e visualizadores de PDF (na sua maioria) podem usar esses ficheiros para realizar a sincronização necessária entre a entrada (código TeX) e a saída (apresentação do PDF composto). Obviamente, isto não pode simplesmente “acontecer” sem que o editor de texto do utilizador e o visualizador de documentos PDF disponham da funcionalidade apropriada que permite a comunicação das localizações do ficheiro de texto/visualizador de PDF — com base nos dados contidos no `.synctex.gz` (ou `.synctex`) ficheiro gerado pelo SyncTeX.

Para além da funcionalidade dentro do motor TeX — para gerar `.synctex.gz` ficheiros — o SyncTeX também fornece um [analisador](https://github.com/jlaurens/synctex/) que lê `.synctex.gz` (ou `.synctex`) ficheiros para extrair as informações relevantes de localização de página/linha. As aplicações usam esse analisador para fornecer suporte ao SyncTeX.

### Ativar (habilitar) o SyncTeX

Os motores TeX com SyncTeX ativado têm duas formas de ativar/desativar o SyncTeX:

* uma opção de linha de comando: `-synctex=NUMBER`
* um comando no `.tex` ficheiro: o `\synctex` primitivos

### Usando o SyncTeX na linha de comando

Você pode usar o `-synctex=NUMBER` opção ao executar um motor TeX que suporte SyncTeX, como o pdfTeX.

#### Exemplos

* Ativar SyncTeX: saída `.synctex.gz` (ficheiro comprimido em gz):

```
pdftex -synctex=1 myfile.tex
```

Produz `myfile.synctex.gz`

* Ativar SyncTeX: saída `.synctex` (ficheiro sem compressão):

```
pdftex -synctex=-1 myfile.tex
```

Produz `myfile.synctex`

* Desativar SyncTeX:

```
pdftex -synctex=0 myfile.tex
```

Não é produzida qualquer saída do SyncTeX.

### A única primitiva do SyncTeX

O SyncTeX fornece uma primitiva, `\synctex`, que os utilizadores podem adicionar aos seus `.tex` ficheiro:

* Ativar SyncTeX: `\synctex=1`
* Desativar SyncTeX: `\synctex=0`

### Mais informações sobre o SyncTeX

* [Um artigo da TUGBoat por Jérôme Laurens](http://www.tug.org/TUGboat/tb29-3/tb93laurens.pdf), autor do SyncTeX.
* O [repositório GitHub](https://github.com/jlaurens/synctex) do analisador do SyncTeX.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/overleaf-learn-latex-pt/mais-topicos/39-mltex-enctex-and-synctex-tex-extensions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
