> 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/cs/clanky-do-hloubky/52-using-luatex-to-run-tools-and-utilities-installed-on-overleaf-s-servers.md).

# Použití LuaTeXu ke spouštění nástrojů a utilit nainstalovaných na serverech Overleafu

## Servery Overleafu: běh a spouštění softwaru

Výkonné servery Overleafu překládají váš projekt v sandboxu založeném na [technologii linuxových kontejnerů Dockeru](https://www.docker.com/). Každý projekt má vlastní sandbox, což zajišťuje, že jakýkoli kód, který spouštíme jako součást kompilace projektu, je izolován od ostatních projektů — a to je první z několika vrstev ochrany, které používáme k bezpečné kompilaci projektů. Pro uživatele TeXu to znamená, že můžete bezpečně přistupovat k nástrojům a utilitám na našich serverech a používat je — ale jak? V tomto krátkém příspěvku ukazujeme, jak pomocí skriptu Lua (prostřednictvím LuaTeXu) spustit externí program a zachytit jakýkoli text, který by se obvykle vypisoval do okna terminálu. Představme si například, že chcete převést některé soubory DVI do SVG pomocí `nástroje dvisvgm` utility, ale nepamatujete si různé volby příkazové řádky? Nebylo by skvělé rychle vysázet jejich seznam a osvěžit si paměť? Pokud ano, čtěte dál — ale pokud to chcete vidět v akci, přejděte na tento [příklad galerie projektu](https://www.overleaf.com/latex/examples/using-luatex-to-run-software-installed-on-overleafs-servers/nnvfvnfhzwsy) abyste viděli, jak se to dělá.

![Snímek obrazovky projektu na Overleafu](/files/78ca6cb2db3df7ee56649d39d37bb96fa21ac3a1)

### Použití LuaTeXu ke spuštění externího programu pomocí skriptu Lua

Protože LuaTeX má jazyk Lua zabudovaný přímo do enginu TeXu, je téměř triviální napsat krátký skript, který nejen spustí externí program, ale také zachytí a uloží do souboru veškerý text, který by tento program jinak vypsal do okna terminálu. Jakmile je tento text uložen do souboru, můžete použít balíček `verbatim` k jeho vložení do hlavního dokumentu TeXu. Zde je celý kód potřebný k provedení tohoto v LuaTeXu:

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

Klíčový řádek ve výše uvedeném kódu je `local sout=runcommand("dvisvgm --help")` který spouští `nástroje dvisvgm` s volbou příkazové řádky `--help` aby `nástroje dvisvgm` vypsal všechny své volby příkazové řádky. Text nápovědy je zachycen a uložen do textového souboru s názvem `command.txt`. Poté, co kód Lua uvnitř `\directlua{...}` dokončí vykonávání, obsah `command.txt` je vložen do hlavního dokumentu TeXu pomocí `\verbatiminput{command.txt}`. Je důležité vložit veškerý zachycený text jako doslovný materiál, protože znaky jako `$, #, \\, _, ^` atd. se mohou v importovaném textu vyskytovat.

Neváhejte upravit kód v `runcommand("dvisvgm --help")` a vyzkoušet spouštění dalších programů — například GhostScriptu — nebo jakéhokoli softwaru TeX Live, který byste mohli chtít použít.


---

# 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/cs/clanky-do-hloubky/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.
