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

# Utiliser LuaTeX pour exécuter des outils et utilitaires installés sur les serveurs d’Overleaf

## Les serveurs d’Overleaf : faire fonctionner et exécuter des logiciels

Les puissants serveurs d’Overleaf compilent votre projet dans un bac à sable basé sur [la technologie de conteneurs Linux de Docker](https://www.docker.com/). Chaque projet dispose de son propre bac à sable, ce qui garantit que tout code que nous exécutons dans le cadre de la compilation du projet est isolé des autres projets — et c’est la première de plusieurs couches de protection que nous utilisons pour compiler les projets en toute sécurité. Pour les utilisateurs de TeX, cela signifie que vous pouvez accéder en toute sécurité aux outils et utilitaires présents sur nos serveurs et les utiliser — mais comment ? Dans cet article court, nous montrons comment utiliser un script Lua (via LuaTeX) pour exécuter un programme externe et capturer tout texte qui serait normalement affiché dans une fenêtre de terminal. Par exemple, supposons que vous souhaitiez convertir certains fichiers DVI en SVG à l’aide de `dvisvgm` utilitaire, mais vous ne vous souvenez pas des différentes options de ligne de commande ? Ne serait-il pas agréable de composer rapidement une liste de celles-ci pour rafraîchir votre mémoire ? Si oui, poursuivez votre lecture — mais si vous préférez voir cela en action, rendez-vous sur ce [exemple de projet de galerie](https://www.overleaf.com/latex/examples/using-luatex-to-run-software-installed-on-overleafs-servers/nnvfvnfhzwsy) pour voir comment cela fonctionne.

![Capture d’écran d’un projet Overleaf](/files/c528c09dd50db2ac0309724f79b2703c45fa7014)

### Utiliser LuaTeX pour exécuter un programme externe via un script Lua

Comme LuaTeX intègre le langage de script Lua dans le moteur TeX, il devient presque trivial d’écrire un court script qui non seulement exécute un programme externe, mais capture aussi et enregistre dans un fichier tout texte que ce programme afficherait autrement dans une fenêtre de terminal. Une fois ce texte enregistré dans un fichier, vous pouvez utiliser le `verbatim` package pour l’importer dans votre document TeX principal. Voici le code complet nécessaire pour faire cela avec LuaTeX :

```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}
```

La ligne clé dans le code ci-dessus est `local sout=runcommand("dvisvgm --help")` qui exécute `dvisvgm` avec l’option de ligne de commande `--help` pour demander à `dvisvgm` d’afficher toutes ses options de ligne de commande. Le texte d’aide est capturé et enregistré dans un fichier texte appelé `command.txt`. Une fois que le code Lua contenu dans `\directlua{...}` a terminé son exécution, le contenu de `command.txt` est inséré dans le document TeX principal à l’aide de `\verbatiminput{command.txt}`. Il est important d’insérer tout texte capturé sous forme verbatim, car des caractères tels que `$, #, \\, _, ^` etc. peuvent être présents dans le texte importé.

N’hésitez pas à modifier le code dans `runcommand("dvisvgm --help")` et à explorer l’exécution d’autres programmes — comme GhostScript — ou tout autre logiciel TeX Live que vous souhaiteriez utiliser.


---

# 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/fr/articles-approfondis/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.
