> 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/sv/fler-amnen/39-mltex-enctex-and-synctex-tex-extensions.md).

# MLTeX-, EncTeX- och SyncTeX-tillägg till TeX

## Några bakgrundsuppgifter om TeX-tillägg

TeX har en lång utvecklingshistoria — nu över 4 decennier! Under den tiden har nya ”versioner” av TeX utvecklats — såsom e-TeX, pdfTeX, XeTeX, LuaTeX och så vidare. Förutom helt nya motorer, med en hel uppsättning extra funktioner, har det funnits olika *tillägg* som vanligtvis fokuserar på att implementera en specifik funktion för att förbättra Knuths ursprungliga programvara.

Med moderna TeX-motorers intåg, såsom XeTeX och LuaTeX, har behovet av, och användningen av, vissa äldre TeX-tillägg minskat eftersom de nyare TeX-motorerna ger kraftfull extra funktionalitet — såsom inbyggt stöd för UTF-8-kodad text. Syftet med den här sidan är att ge några anteckningar om tillägg, inklusive MLTeX och EncTeX, som du kanske fortfarande ser refererade i en [TeX-motorns kommandoradsalternativ](/latex/sv/fler-amnen/44-tex-engine-command-line-options-for-pdftex-xetex-and-luatex.md). MLTeX och EncTeX utvecklas båda inte längre, men ett mycket användbart tillägg, SyncTeX, utvecklas fortfarande aktivt och stöds av Overleaf.

## MLTeX

*Flerspråkig TeX*, eller MLTeX, utvecklades under åren 1992–5 som en modifiering av TeX för att tillåta avstavning av ord med accenttecken med vanliga Computer Modern (CM)-typsnitt.

### Aktivera (möjliggöra) MLTeX

MLTeX är utformat för att fungera som en del av en så kallad `.fmt` (formatfil) som i praktiken är en förkompilerad binär version av en uppsättning TeX-makron. För att skapa formatfiler sätter du en TeX-motor i dess så kallade `INI` läge, bearbetar makrosamlingen och utfärdar sedan `\dump` kommandot för att skriva ut `.fmt` filen. Se [den här artikeln](/latex/sv/fordjupade-artiklar/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md) för en diskussion om INI-lägen.

För att aktivera MLTeX, *för de motorer som stöder det*, såsom pdfTeX, skriver du

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

där `pdfetex.ini` är en fil som ingår i TeX Live-distributionen.

**Varför asterisken (`*`)?** Asterisken sätter pdfTeX i så kallat ”utökat läge”, vilket aktiverar stöd för e-TeX-primitiverna. Om du utelämnar den och skriver `pdftex -ini -mltex pdfetex.ini` får du ett felmeddelande:

```
Detta är pdfTeX, Version 3.14159265-2.6-1.40.19 (INITEX)
 \write18 aktiverat.
MLTeX v2.2 aktiverad
(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

! e-TeX allvarligt fel: den här filen kan endast bearbetas i utökat läge;
  glömde du kanske asterisken?
```

**Obs**: I stället för att använda en asterisk för att aktivera ”utökat läge” kan du använda `kommandoradsalternativet för TeX-motorer` kommandoradsalternativet i stället:

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

**Obs**: Om du använder `-mltex` alternativet på kommandoraden med en `.fmt` fil som *inte genererades* med MLTeX aktiverat kommer det inte att *inte* fungera: MLTeX måste ”aktiveras” via en lämplig formatfil.

När du använder `-mltex` alternativet under `.fmt` skapandet av filen skrivs en boolesk variabel med värdet ”sant” in i `.fmt` filen som talar om för TeX-motorn att MLTeX-tilläggen har aktiverats och ska göras tillgängliga för användaren. Om du inte uttryckligen sätter `-mltex` alternativet blir motsvarande variabel ”falsk”. Om variabelns värde identifieras som ”falskt” (när den `.fmt` filen läses in igen under en TeX-körning) kommer ett försök att använda MLTeX-tilläggen att resultera i ett `Odefinierat kommando...` fel — eftersom MLTeX-primitiverna inte har registrerats (laddats) och därför inte känns igen.

Efter att ha kört `pdftex -ini -mltex *pdfetex.ini` på kommandoraden kommer du att se något liknande följande text, som visar att MLTeX v2.2 är aktiverat:

```
Detta är pdfTeX, Version 3.14159265-2.6-1.40.19 (INITEX)
\write18 aktiverat.
går in i utökat läge
MLTeX v2.2 aktiverad
....
....
....
Börjar skriva till filen pdfetex.fmt
....
Inga sidor genererades.
Transkript skrivet till pdfetex.log.
```

Detta resulterar i en `.fmt` fil som kallas `pdfetex.fmt` som gör att du kan använda MLTeX-kommandona:

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

där `<dinfil.tex>` kan använda de MLTeX-specifika primitiverna

MLTeX distribuerades ursprungligen som en separat förändringsfil, [mltex.ch](http://tug.ctan.org/systems/generic/mltex/mltex.ch), som kunde slås samman med Knuths huvudkällkod ([`tex.web`](https://ctan.org/tex-archive/systems/knuth/dist/tex?lang=en)) för att härleda en ny version av TeX, kallad MLTeX, som innehöll ett antal nya primitiver. I dag är MLTeX-koden från `mltex.ch` inordnad i den huvudsakliga `tex.ch` förändringsfilen som används för att bygga nästan alla TeX-motorer.

### MLTeX-primitiver

Följande anteckningar är huvudsakligen förberedda och återgivna från filen `web2c.info` som ingår i [TeX Live](https://tug.org/texlive/) distributionen.

* **`\charsubdef`**: Teckensubstitutionsdefinitioner. Anger hur man konstruerar en accentuerad tecken-glyf (som inte nödvändigtvis finns i den aktuella fonten) med hjälp av två tecken-glyfer (som faktiskt finns).

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

  Var och en av COMPOSITE, ACCENT och BASE är fontglyfnummer, uttryckta i den vanliga TeX-syntaxen: \`\e\` symboliskt, '145 för oktal, "65 för hex, 101 för decimal. Därmed anger det om en tecken-glyfkod, antingen inskriven som ett enskilt tecken eller med hjälp av `\char` primitiven, kommer att mappas till en fontglyf eller till en `\accent` glyfkonstruktion.

  Om du till exempel antar glyfkod 138 (decimal) för ett e-circumflex och du använder Computer Modern-typsnitten, som har circumflex-accenten i position 18 och gemena 'e' i den vanliga ASCII-positionen 101 decimal, skulle du använda `\charsubdef` på följande sätt:

  ```
  \charsubdef 138 = 18 101
  ```
* **`\charsubdefmax`**: Sätter det största värdet i `\charsubdef` listan. Till exempel:

  ```
  \charsubdefmax=-1 % inaktivera alla substitutioner
  \charsubdefmax=256 % aktivera alla substitutioner
  ```
* **`\tracingcharsubdef`**: Spårning av substitutioner. För att hjälpa till att diagnostisera problem med `\charsubdef`, tillhandahåller MLTeX en primitiv parameter, `\tracingcharsubdef`. Om den är positiv kommer varje användning av `\charsubdef` att rapporteras. Detta kan hjälpa till att spåra när ett tecken omdefinieras.

## EncTeX

EncTeX utvecklades under åren 1997–2004 som ett TeX-tillägg som tillhandahåller flexibel omkodning av indata/utdata genom tillägg av nya primitiver — till exempel ett sätt att översätta indata på väg in i TeX. Det tillåter till exempel översättning av flertbytesekvenser, såsom UTF-8-kodning, för användning i standardiserade 8-bitars TeX-motorer.

### Aktivera (möjliggöra) EncTeX

Precis som med MLTeX är EncTeX också utformat för att fungera som en del av en så kallad `.fmt` (formatfil) — se [MLTeX](#mltex), ovan, för en förklaring av formatfiler/INI-läge.

För att aktivera EncTeX, *för de motorer som stöder det*, såsom pdfTeX, skulle du skapa en EncTeX-aktiverad formatfil genom att skriva

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

där `pdfetex.ini` är en fil som ingår i TeX Live-distributionen.

**Varför asterisken (`*`)?** Asterisken sätter pdfTeX i så kallat ”utökat läge”, vilket aktiverar stöd för e-TeX-primitiverna. Om du utelämnar den och skriver `pdftex -ini -mltex pdfetex.ini` får du ett felmeddelande:

```
Detta är pdfTeX, Version 3.14159265-2.6-1.40.19 (INITEX)
 \write18 aktiverat.
MLTeX v2.2 aktiverad
(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

! e-TeX allvarligt fel: den här filen kan endast bearbetas i utökat läge;
  glömde du kanske asterisken?
```

**Obs**: I stället för att använda en asterisk för att aktivera ”utökat läge” kan du använda `kommandoradsalternativet för TeX-motorer` kommandoradsalternativet i stället:

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

Den `-enc` kommandoradsalternativet får pdfTeX-motorn att aktivera EncTeX genom att skriva viss data till den resulterande `pdfetex.fmt` formatfilen.

**Obs**: Om du använder `-enc` alternativet på kommandoraden med en `.fmt` fil som *inte genererades* med aktiverat EncTeX kommer *inte* att fungera: EncTeX måste ”aktiveras” via en lämpligt genererad formatfil.

### EncTeX-primitiver

EncTeX lägger till 10 nya primitiva kommandon till en TeX-motor:

* 3 primitiver i den första utgåvan (1997):
* `\xordcode`
* `\xchrcode`
* `\xprncode`
* 7 ytterligare primitiver (för UTF-8-stöd) år 2003:
* `\mubyte`
* `\endmubyte`
* `\mubytein`
* `\mubyteout`
* `\mubytelog`
* `\specialout`
* `\noconvert`

Användningen och beteendet hos dessa primitiver är väl dokumenterade i [EncTeX-referensmanualen](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf), skriven av EncTeX:s författare, Petr Olšák. För att undvika onödig upprepning här hänvisas intresserade läsare till det dokumentet.

### Ytterligare information om EncTeX

* [EncTeX:s andra version: UTF-8-stöd](http://mirrors.ctan.org/systems/enctex/eurotex2003-enctex.pdf): en artikel av EncTeX:s författare, Petr Olšák.
* [EncTeX-referensmanualen](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf) (på engelska).

### Aktivera (möjliggöra) både MLTeX och EncTeX

För att aktivera både MLTeX och EncTeX skulle du generera en lämplig formatfil med ett kommandoradsanrop såsom

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

där `pdfetex.ini` är en fil som ingår i TeX Live-distributionen.

**Varför asterisken (`*`)?** Asterisken sätter pdfTeX i så kallat ”utökat läge”, vilket aktiverar stöd för e-TeX-primitiverna. Om du utelämnar den och skriver `pdftex -ini -enc -mltex pdfetex.ini` får du ett felmeddelande:

```
Detta är pdfTeX, Version 3.14159265-2.6-1.40.19 (INITEX)
 \write18 aktiverat.
MLTeX v2.2 aktiverad
(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

! e-TeX allvarligt fel: den här filen kan endast bearbetas i utökat läge;
  glömde du kanske asterisken?
```

**Obs**: I stället för att använda en asterisk för att aktivera ”utökat läge” kan du använda `kommandoradsalternativet för TeX-motorer` kommandoradsalternativet i stället:

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

Efter att ha kört ovanstående kommandorad skulle du se ett meddelande, såsom följande, som informerar dig om att MLTeX och EncTeX båda är aktiverade:

```
Detta är pdfTeX, Version 3.14159265-2.6-1.40.19 (INITEX)
 \write18 aktiverat.
går in i utökat läge
MLTeX v2.2 aktiverad
 encTeX v. Jun. 2004, omkodning aktiverad.
....
....
....
Börjar skriva till filen pdfetex.fmt
....
Inga sidor genererades.
Transkript skrivet till pdfetex.log.
```

och `pdfetex.fmt` formatfil, som aktiverar både MLTeX och EncTeX, skulle skapas.

## SyncTeX

SyncTeX-tillägget har varit tillgängligt sedan 2008 och fortsätter att utvecklas aktivt av sin skapare, Jérôme Laurens. Det används i stor utsträckning, inklusive av Overleaf, och stöds av alla TeX-motorer som används i dag.

### Vad gör SyncTeX?

När du tittar på ett dokument som satts med TeX, kanske för korrekturläsning/kontroll före inlämning till en utgivare, kan du upptäcka ett fel och behöva rätta det i TeX-källkoden. Att hitta rätt plats i TeX-filen kan dock vara knepigt, särskilt om det är ett omfattande dokument. Lika gärna kanske du vill gå åt andra hållet: hoppa från en position i en TeX-källfil direkt till sidplatsen i den slutliga satta PDF-filen. I båda fallen finns det ett behov av att *synkronisera* en viss plats i en TeX-fil och dess motsvarande plats i en visning av de satta resultaten: och det är precis vad SyncTeX tillhandahåller — ett sätt att automatiskt länka platser i TeX-filer med sidpositionerna i satta dokument.

Om SyncTeX är aktiverat skriver det ut en särskild fil med tillägget `.synctex.gz` (gz-komprimerad) eller `.synctex` (okomprimerad) beroende på de [kommandoradsalternativ som anges för SyncTeX](#synoptions). SyncTeX-aktiverade textredigerare och (oftast) PDF-visare kan använda dessa filer för att utföra nödvändig synkronisering mellan indata (TeX-kod) och utdata (visning av den satta PDF-filen). Uppenbarligen kan detta inte bara ”hända” utan att användarens textredigerare och PDF-dokumentvisare har lämplig funktionalitet som möjliggör kommunikation av platsinformation för textfil/PDF-visare — baserad på data som finns i den `.synctex.gz` (eller `.synctex`) fil som skrivs ut av SyncTeX.

Förutom funktionalitet i TeX-motorn — för att generera `.synctex.gz` filer — tillhandahåller SyncTeX också en särskild [tolk](https://github.com/jlaurens/synctex/) som läser `.synctex.gz` (eller `.synctex`) filer för att extrahera relevant information om sida/rad-positioner. Program använder den tolken för att ge stöd för SyncTeX.

### Aktivera (möjliggöra) SyncTeX

SyncTeX-aktiverade TeX-motorer har två sätt att aktivera/inaktivera SyncTeX:

* ett kommandoradsalternativ: `-synctex=NUMBER`
* ett kommando i `.tex` filen: `\synctex` primitiva

### Användning av SyncTeX på kommandoraden

Du kan använda `-synctex=NUMBER` alternativet när du kör en TeX-motor som stöder SyncTeX, såsom pdfTeX.

#### Exempel

* Aktivera SyncTeX: utdata `.synctex.gz` (gz-komprimerad fil):

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

Ger `myfile.synctex.gz`

* Aktivera SyncTeX: utdata `.synctex` (okomprimerad fil):

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

Ger `myfile.synctex`

* Inaktivera SyncTeX:

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

Ingen SyncTeX-utdata genereras.

### SyncTeX:s enda primitiv

SyncTeX tillhandahåller en primitiv, `\synctex`, som användare kan lägga till i sina `.tex` fil:

* Aktivera SyncTeX: `\synctex=1`
* Inaktivera SyncTeX: `\synctex=0`

### Ytterligare information om SyncTeX

* [En TUGBoat-artikel av Jérôme Laurens](http://www.tug.org/TUGboat/tb29-3/tb93laurens.pdf), SyncTeX:s författare.
* Den [GitHub-repositorium](https://github.com/jlaurens/synctex) för SyncTeX-tolken.


---

# 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/sv/fler-amnen/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.
