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

# Menggunakan LuaTeX untuk menjalankan alat dan utilitas yang diinstal di server Overleaf

## Server Overleaf: menjalankan dan mengeksekusi perangkat lunak

Server kuat Overleaf mengompilasi proyek Anda di dalam sandbox yang berbasis pada [teknologi kontainer Linux Docker](https://www.docker.com/). Setiap proyek mendapat sandbox-nya sendiri, yang memastikan bahwa kode apa pun yang kami jalankan sebagai bagian dari pengompilan proyek terisolasi dari proyek lain—dan ini adalah lapisan perlindungan pertama dari beberapa lapisan yang kami gunakan untuk mengompilasi proyek dengan aman. Bagi pengguna TeX, ini berarti Anda dapat dengan aman mengakses dan menggunakan alat serta utilitas yang terdapat di server kami—tetapi bagaimana caranya? Dalam tulisan singkat ini kami menunjukkan cara menggunakan skrip Lua (melalui LuaTeX) untuk menjalankan program eksternal dan menangkap teks apa pun yang biasanya akan dikeluarkan ke jendela terminal. Sebagai contoh, misalkan Anda ingin mengonversi beberapa file DVI menjadi SVG menggunakan `dvisvgm` utilitas tetapi Anda tidak ingat berbagai opsi baris perintahnya? Bukankah menyenangkan jika dapat dengan cepat menata huruf daftar opsi tersebut untuk menyegarkan ingatan Anda? Jika ya, lanjutkan membaca—tetapi jika Anda lebih suka melihatnya langsung, buka [contoh proyek galeri](https://www.overleaf.com/latex/examples/using-luatex-to-run-software-installed-on-overleafs-servers/nnvfvnfhzwsy) untuk melihat bagaimana itu dilakukan.

![Tangkapan layar proyek Overleaf](/files/371ec21a97723022a1f54636561d17e661012c1c)

### Menggunakan LuaTeX untuk menjalankan program eksternal melalui skrip Lua

Karena LuaTeX memiliki bahasa skrip Lua yang tertanam di dalam mesin TeX, menjadi hampir sepele untuk menulis skrip pendek yang tidak hanya menjalankan program eksternal tetapi juga menangkap, dan menyimpan ke file, teks apa pun yang seharusnya dikeluarkan program tersebut ke jendela terminal. Setelah teks itu disimpan ke file, Anda dapat menggunakan `verbatim` paket untuk mengimpornya ke dokumen TeX utama Anda. Berikut adalah seluruh kode yang diperlukan untuk melakukannya dengan 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}
```

Baris kunci dalam kode di atas adalah `local sout=runcommand("dvisvgm --help")` yang menjalankan `dvisvgm` dengan opsi baris perintah `--help` untuk memerintahkan `dvisvgm` untuk menampilkan semua opsi baris perintahnya. Teks bantuan ditangkap dan disimpan ke file teks bernama `command.txt`. Setelah kode Lua di dalam `\directlua{...}` selesai dijalankan, isi dari `command.txt` dimasukkan ke dalam dokumen TeX utama menggunakan `\verbatiminput{command.txt}`. Penting untuk memasukkan teks yang ditangkap apa adanya karena karakter seperti `$, #, \\, _, ^` dll. mungkin terdapat di dalam teks yang diimpor.

Silakan ubah kode pada `runcommand("dvisvgm --help")` dan coba jalankan program lain—seperti GhostScript—atau perangkat lunak TeX Live apa pun yang mungkin ingin Anda gunakan.


---

# 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/id/artikel-mendalam/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.
