> 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/el/se-vathos-arthra/52-using-luatex-to-run-tools-and-utilities-installed-on-overleaf-s-servers.md).

# Χρήση του LuaTeX για εκτέλεση εργαλείων και βοηθητικών προγραμμάτων που είναι εγκατεστημένα στους διακομιστές του Overleaf

## Οι διακομιστές του Overleaf: εκτέλεση και λειτουργία λογισμικού

Οι ισχυροί διακομιστές του Overleaf μεταγλωττίζουν το έργο σας σε ένα sandbox βασισμένο στο [την τεχνολογία κοντέινερ Linux του Docker](https://www.docker.com/). Κάθε έργο αποκτά το δικό του sandbox, γεγονός που διασφαλίζει ότι οποιοσδήποτε κώδικας εκτελούμε στο πλαίσιο της μεταγλώττισης του έργου απομονώνεται από άλλα έργα—και αυτό είναι το πρώτο από αρκετά επίπεδα προστασίας που χρησιμοποιούμε για να μεταγλωττίζουμε τα έργα με ασφάλεια. Για τους χρήστες του TeX, αυτό σημαίνει ότι μπορείτε να έχετε ασφαλή πρόσβαση και να χρησιμοποιείτε εργαλεία και βοηθητικά προγράμματα που περιέχονται στους διακομιστές μας—αλλά πώς; Σε αυτή τη σύντομη ανάρτηση δείχνουμε πώς να χρησιμοποιήσετε ένα Lua script (μέσω LuaTeX) για να εκτελέσετε ένα εξωτερικό πρόγραμμα και να καταγράψετε οποιοδήποτε κείμενο που συνήθως θα εμφανιζόταν σε ένα παράθυρο τερματικού. Για παράδειγμα, ας υποθέσουμε ότι σας ενδιαφέρει να μετατρέψετε ορισμένα αρχεία DVI σε SVG χρησιμοποιώντας το `dvisvgm` βοηθητικό πρόγραμμα, αλλά δεν θυμάστε τις διάφορες επιλογές της γραμμής εντολών; Δεν θα ήταν ωραίο να στοιχειοθετήσετε γρήγορα μια λίστα με αυτές για να ανανεώσετε τη μνήμη σας; Αν ναι, συνεχίστε την ανάγνωση—αλλά αν προτιμάτε να το δείτε αυτό σε δράση, περάστε σε αυτό το [παράδειγμα έργου γκαλερί](https://www.overleaf.com/latex/examples/using-luatex-to-run-software-installed-on-overleafs-servers/nnvfvnfhzwsy) για να δείτε πώς γίνεται.

![Στιγμιότυπο οθόνης ενός έργου Overleaf](/files/e0df0174dc03701fa3d454e70b2157417b20deb2)

### Χρήση του LuaTeX για την εκτέλεση ενός εξωτερικού προγράμματος μέσω ενός Lua script

Επειδή το LuaTeX έχει ενσωματωμένη τη γλώσσα scripting Lua στη μηχανή TeX, γίνεται σχεδόν τετριμμένο να γράψετε ένα σύντομο script που όχι μόνο εκτελεί ένα εξωτερικό πρόγραμμα αλλά και καταγράφει, και αποθηκεύει σε ένα αρχείο, οποιοδήποτε κείμενο θα έβγαζε διαφορετικά αυτό το πρόγραμμα σε ένα παράθυρο τερματικού. Μόλις αυτό το κείμενο αποθηκευτεί σε ένα αρχείο, μπορείτε να χρησιμοποιήσετε το `verbatim` πακέτο για να το εισαγάγετε στο κύριο έγγραφο TeX σας. Ακολουθεί ο πλήρης κώδικας που χρειάζεται για να γίνει αυτό με το 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}
```

Η βασική γραμμή στον παραπάνω κώδικα είναι `local sout=runcommand("dvisvgm --help")` η οποία εκτελεί `dvisvgm` με την επιλογή γραμμής εντολών `--help` για να δώσει εντολή στο `dvisvgm` να παραθέσει όλες τις επιλογές της γραμμής εντολών του. Το κείμενο βοήθειας καταγράφεται και αποθηκεύεται σε ένα αρχείο κειμένου που ονομάζεται `command.txt`. Αφού ο κώδικας Lua μέσα στο `\directlua{...}` έχει ολοκληρώσει την εκτέλεσή του, το περιεχόμενο του `command.txt` εισάγεται στο κύριο έγγραφο TeX χρησιμοποιώντας το `\verbatiminput{command.txt}`. Είναι σημαντικό να εισάγετε οποιοδήποτε κείμενο έχει καταγραφεί ως verbatim υλικό, επειδή χαρακτήρες όπως `$, #, \, _, ^` κ.λπ. ενδέχεται να υπάρχουν μέσα στο εισαγόμενο κείμενο.

Μη διστάσετε να τροποποιήσετε τον κώδικα στο `runcommand("dvisvgm --help")` και να εξερευνήσετε την εκτέλεση άλλων προγραμμάτων—όπως το GhostScript—ή οποιουδήποτε λογισμικού TeX Live που θα σας ενδιέφερε να χρησιμοποιήσετε.


---

# 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/el/se-vathos-arthra/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.
