> 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/nl/diepgaande-artikelen/52-using-luatex-to-run-tools-and-utilities-installed-on-overleaf-s-servers.md).

# LuaTeX gebruiken om tools en hulpprogramma's uit te voeren die op de servers van Overleaf zijn geïnstalleerd

## Overleaf-servers: software uitvoeren en laten draaien

De krachtige servers van Overleaf compileren je project in een sandbox gebaseerd op [Docker's Linux-containertechnologie](https://www.docker.com/). Elk project krijgt zijn eigen sandbox, waardoor alle code die we uitvoeren als onderdeel van het compileren van het project geïsoleerd is van andere projecten—en dit is de eerste van meerdere beveiligingslagen die we gebruiken om projecten veilig te compileren. Voor TeX-gebruikers betekent dit dat je veilig toegang kunt krijgen tot en gebruik kunt maken van hulpmiddelen en utilities op onze servers—maar hoe? In deze korte post laten we zien hoe je een Lua-script (via LuaTeX) gebruikt om een extern programma uit te voeren en alle tekst vast te leggen die normaal gesproken naar een terminalvenster zou worden uitgevoerd. Stel bijvoorbeeld dat je DVI-bestanden wilt omzetten naar SVG met behulp van de `dvisvgm` hulpprogramma, maar kun je je de verschillende opdrachtregelopties niet meer herinneren? Zou het niet fijn zijn om er snel een lijst van te zetten om je geheugen op te frissen? Lees dan verder—maar als je dit liever in actie ziet, ga dan naar dit [galerij-projectvoorbeeld](https://www.overleaf.com/latex/examples/using-luatex-to-run-software-installed-on-overleafs-servers/nnvfvnfhzwsy) om te zien hoe het werkt.

![Schermafbeelding van een Overleaf-project](/files/71f03ebbda59824b08baf335712bbae46dc06831)

### LuaTeX gebruiken om een extern programma uit te voeren via een Lua-script

Omdat LuaTeX de Lua-scripttaal ingebed heeft in de TeX-engine, wordt het bijna triviaal om een kort script te schrijven dat niet alleen een extern programma uitvoert, maar ook alle tekst opvangt en naar een bestand opslaat die dat programma anders naar een terminalvenster zou uitvoeren. Zodra die tekst in een bestand is opgeslagen, kun je het `verbatim` pakket gebruiken om het in je hoofd-TeX-document te importeren. Hier is de volledige code die hiervoor met LuaTeX nodig is:

```latex

\documentclass{article}
\usepackage{verbatim}
\begin{document}
\directlua{
function runcommand(cmd)
local fout = assert(io.popen(cmd, 'r'))
local str = assert(fout:read('*a'))
fout:close()
return str
end

local sout=runcommand("dvisvgm --help")
local marg = assert(io.open("command.txt","w"))
marg:write(sout)
marg:flush()
marg:close()
}
\verbatiminput{command.txt}
\end{document}
```

De belangrijkste regel in de bovenstaande code is `local sout=runcommand("dvisvgm --help")` die uitvoert `dvisvgm` met de opdrachtregeloptie `--help` om `dvisvgm` te laten al zijn opdrachtregelopties op te sommen. De helptekst wordt vastgelegd en opgeslagen in een tekstbestand met de naam `command.txt`. Nadat de Lua-code binnen `\directlua{...}` klaar is met uitvoeren, wordt de inhoud van `command.txt` ingevoegd in het hoofd-TeX-document met behulp van `\verbatiminput{command.txt}`. Het is belangrijk dat je alle vastgelegde tekst invoegt als letterlijke tekst, omdat tekens zoals `$, #, \, _, ^` enz. in de geïmporteerde tekst aanwezig kunnen zijn.

Voel je vrij om de code in `runcommand("dvisvgm --help")` aan te passen en andere programma's uit te voeren—zoals GhostScript—of andere TeX Live-software die je misschien wilt gebruiken.


---

# 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/nl/diepgaande-artikelen/52-using-luatex-to-run-tools-and-utilities-installed-on-overleaf-s-servers.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.
