Pemrograman LuaTeX dengan ConTeXt
Pemrograman di LuaTeX melalui sistem pengaturan ConTeXt yaitu interaksi antara ConTeXt dan Lua. Kamu dapat memulai kode Lua, selanjutnya fungsi tambahan untuk mengambilnya kedalam sistem TeX. Dua jalan utama dalam melakukan eksekusi kode Lua didalam dokumen ConTeXt yaitu perintah \ctxlua dan lingkungan \startluacode...\stopluacode. Keduanya merupakan wrappers untuk primitif LuaTeX, \directlua, kamu seharusnya tidak perlu menggunakannya. Secara umum, kamu akan mendefinisikan suatu fungsi dalam blok \startluacode dan kemudian mendefinisikan perintah TeX sehingga memanggil fungsi dengan menggunakan \ctxlua khususnya karena \ctxlua mempunyai sedikit idiosyncracies. Hal utama tentang kode Lua dalam dokumen TeX adalah ini ; kode diperluas oleh TeX sebelum Lua mendapatkan. Ini mengartikan semua kode Lua, meskipun komentar harus resmi kode TeX. String seperti \undefined bisa menyebabkan kesalahan tiba-tiba.
Perintah untuk inline Lua
Perintah \ctxlua digunakan untuk kode pendek Lua seperti ini :
\ctxlua beroperasi dimana kategori kode normal, TeX atau catcodes. Ini mengartikan dua hal dibawah ini untuk kode Lua didalamnya yaitu :
- semua baris baru dianggap spasi.
- karakter khusus seperti &, #, $, {,{, dan lain -lain perlu dikembalikan.
Masalah dengan karakter khusus TeX. (#t) adalah Lua untuk panjang array t).
Cetakan Sederhana
context(),tex.print() dan tex.sprint. Menggunakan context(...) untuk kebanyakan hal adalah ekuivalen dengan menggunakan tex.print(string.format(...)), sehingga
Lebih primitif lagi, kamu mempunyai tex.print() dan tex.sprint(). Salah satunya bisa diambil sebagai argumen atau banyak string atau array string dan akan disisipkan string kedalam TeX. Hanya perbedaannya adalah tex.print() yang melakukan setiap string sebagai baris masukan terpisah, sementara tex.sprint tidak. Jadi seperti baris dibawah ini :
Keduanya akan diinterprestasi oleh TeX sebagai : a b. Tetapi ketika kita menggunakan tex.print, salah satu baris dibawah ini :
\ctxlua{tex.sprint("a", "b")}
\ctxlua{tex.sprint({"a", "b"})}
Akan dibawah oleh TeX sebagai ab. Tanpa ada spasi diantaranya.
Perhitungan Sederhana
Melakukan perhitungan sederhana menjadi hal yang sulit ketika kita menggunakan TeX. Dengan Lua, perhitungan ini menjadi mudah. Untuk contoh
\def\COSINE#1%
{\ctxlua{context(math.cos(#1*2*math.pi/360))}}
Fungsi diatas adalah fungsi math.cos yang kita asumsikan dispesifikasikan dalam radian, sehingga kita bisa konversi dari derajat ke radian. Jika kamu ingin memasukan nilai dalam artikel kamu masukan
$\pi = \ctxlua{context(math.pi)}$
Atau, jika kamu ingin sedikit presisi :
$\pi = \ctxlua{context("\%.6f", math.pi)}$
Komentar
Posting Komentar