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

# Używanie LuaTeX do uruchamiania narzędzi i programów zainstalowanych na serwerach Overleaf

## Serwery Overleaf: uruchamianie i wykonywanie oprogramowania

Potężne serwery Overleaf kompilują Twój projekt w piaskownicy opartej na [technologii kontenerów Linuxa firmy Docker](https://www.docker.com/). Każdy projekt otrzymuje własną piaskownicę, co zapewnia, że każdy kod wykonywany przez nas w ramach kompilacji projektu jest odizolowany od innych projektów — i jest to pierwsza z kilku warstw ochrony, których używamy, aby bezpiecznie kompilować projekty. Dla użytkowników TeX oznacza to, że możesz bezpiecznie uzyskiwać dostęp do narzędzi i programów znajdujących się na naszych serwerach — ale jak? W tym krótkim wpisie pokazujemy, jak użyć skryptu Lua (przez LuaTeX), aby uruchomić zewnętrzny program i przechwycić dowolny tekst, który zwykle zostałby wypisany do okna terminala. Na przykład, załóżmy, że chcesz przekonwertować kilka plików DVI na SVG za pomocą programu `dvisvgm` narzędzia, ale nie pamiętasz różnych opcji wiersza poleceń? Czy nie byłoby miło szybko skomponować ich listę, aby odświeżyć pamięć? Jeśli tak, czytaj dalej — ale jeśli wolisz zobaczyć to w akcji, przejdź do tego [przykładu projektu galerii](https://www.overleaf.com/latex/examples/using-luatex-to-run-software-installed-on-overleafs-servers/nnvfvnfhzwsy) aby zobaczyć, jak to się robi.

![Zrzut ekranu projektu Overleaf](/files/8cfe436f351fd7f1b9b05ec0a108b9275af0a45c)

### Używanie LuaTeX do uruchamiania zewnętrznego programu za pomocą skryptu Lua

Ponieważ w silniku TeX język skryptowy Lua jest wbudowany w LuaTeX, napisanie krótkiego skryptu, który nie tylko uruchamia zewnętrzny program, ale także przechwytuje i zapisuje do pliku dowolny tekst, który ten program w przeciwnym razie wypisałby w oknie terminala, staje się niemal trywialne. Gdy ten tekst zostanie zapisany do pliku, możesz użyć pakietu `verbatim` do zaimportowania go do głównego dokumentu TeX. Oto cały kod potrzebny do zrobienia tego w 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}
```

Kluczowym wierszem w powyższym kodzie jest `local sout=runcommand("dvisvgm --help")` który wykonuje `dvisvgm` z opcją wiersza poleceń `--help` aby polecić `dvisvgm` mu wyświetlić listę wszystkich opcji wiersza poleceń. Tekst pomocy jest przechwytywany i zapisywany do pliku tekstowego o nazwie `command.txt`. Po zakończeniu wykonywania kodu Lua wewnątrz `\directlua{...}` zostało zakończone, zawartość `command.txt` jest wstawiana do głównego dokumentu TeX za pomocą `\verbatiminput{command.txt}`. Ważne jest, aby wstawiać każdy przechwycony tekst jako materiał dosłowny, ponieważ znaki takie jak `$, #, \\, _, ^` itd. mogą występować w zaimportowanym tekście.

Możesz dowolnie zmodyfikować kod w `runcommand("dvisvgm --help")` i wypróbować uruchamianie innych programów — takich jak GhostScript — lub dowolnego oprogramowania TeX Live, z którego chcesz skorzystać.


---

# 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/pl/artykuly-szczegolowe/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.
