Perkembangan Terbaru ConTeXt
Enjin LUAMETATEX
PRAGMA ADE
mengumumkan dan sudah pun mengeluarkan enjin terbaru bagi ConTeXt
yang dinamakan sebagai LUAMETATEX
. LuaMetaTEX
ini terkandung di dalam versi ConTeXt
yang baru bernama LMTX
.
Memetik pengenalan mengenai LuaMetaTEX
melalui pautan LuaMetaTEX Reference Manual yang tidak akan saya terjemahkan ke dalam Bahasa Melayu ini,
(Perenggan ke-2) "... we could move on with a follow up tagged MetaTEX, a name we already had in mind for a while, but as Lua is an important component, it got expanded to LuaMetaTEX. This follow up is a lightweight companion to LuaTEX that will be maintained alongside."...(Perenggan ke-3 terakhir) “For ConTEXt users the LuaMetaTEX engine will become the default. As mentioned, the ConTEXt variant for this engine is tagged LMTX. The pair can be used in production, just as with LuaTEX and MkIV. In fact, most users will probably not really notice the difference. In some cases there will be a drop in performance, due to more work being delegated to Lua, but on the average performance is much be better, due to some changes below the hood of the engine. Memory consumption is also less. The timeline of development is roughly: from 2018 upto 2020 engine development, 2019 upto 2021 the stepwise code split between MkIV and LMTX, while in 2021 and 2022 we will (mostly) freeze MkIV and LMTX will be the default.”
Dengan adanya perubahan ini, saya putuskan untuk menyahpasang pakej texlive
yang disediakan di dalam repositori rasmi Arch Linux
. Sebaliknya saya dapatkan pemasangan pakej (stand alone) ConTeXt LMTX secara langsung yang diperolehi dari laman web rasmi PRAGMA ADE.
Juga pemasangan secara manual bagi pakej TeX Live yang diperolehi dari laman web TeX Users Group (TUG)
. Pemasangan adalah melalui pengguna biasa dengan penempatan di dalam $HOME
.
Kenapa? Kerana:-
- Pakej
texlive
dari repo Arch turut memasang pakejcontext
yang mengandungi versiMkIV
secara lalai. Paksaan untuk menggunakan enjinLuaMetaTEX
dengan opsyen--lmtx
tidak mendatangkan hasil. Saya boleh memilih untuk tidak memasang pakejcontext
melalui pemasang upstream. - Timbulnya konflik di antara pakej
ConTeXt LMTX
danTeX Live
.
Siap pemasangan, semakan versi
ConTeXt
(yang saya pasang di dalam direktori $HOME/context
) mengeluarkan output berikut:-1$ context --version
2mtx-context | ConTeXt Process Management 1.04
3mtx-context |
4mtx-context | main context file: $HOME/context/tex/texmf-context/tex/context/base/mkiv/context.mkiv
5mtx-context | current version: 2021.07.23 18:55
6mtx-context | main context file: $HOME/context/tex/texmf-context/tex/context/base/mkxl/context.mkxl
7mtx-context | current version: 2021.07.23 18:55
Manakala binari pakej yang terpasang pula ialah seperti berikut:-
1$ ls $HOME/context/tex/texmf-linux-64/bin
2context context.lua luametatex luatex mtxrun mtxrun.lua
Sebagaimana yang telah dijelaskan oleh PRAGMA ADE,
LuaTEX
juga disokong oleh versi baru ConTeXt yakni LMTX
ini.ESKPERIMEN:
Benar bahawa terdapat keadaan yang memerlukan pengguna memanfaatkan LuaTEX
berbanding LuaMetaTEX
.
Uji kaji yang saya jalankan sendiri melibatkan penggunaan MetaPost
bagi warna. Menggunakan dokumentasi colors-mkiv yang disediakan oleh PRAGMA ADE sebagai rujukan, saya cedok sebahagian kod arahan yang diambil dari topik MetaFun dengan opsyen ‘spot’ dan ‘multitone’ yang katanya (mengikut pemahaman sayalah) ditakrifkan / ditentukan secara langsung di dalam fungsi ini:-
\title{2) MetaFun}
\blank[2*big]
\dontleavehmode
\startMPcode
fill fullcircle scaled 3cm withcolor
.5 * spotcolor("whatever",(.3,.4,.5));
fill fullcircle scaled 2cm withcolor
spotcolor("whatever",(.3,.4,.5));
fill fullcircle scaled 1cm withcolor
spotcolor("whatever",(.3,.4,.5)/2);
\stopMPcode
\hskip.5cm
\startMPcode
fill fullcircle scaled 3cm withcolor
.5 * multitonecolor("whatever",(.3,.4,.5),(.5,.3,.4));
fill fullcircle scaled 2cm withcolor
multitonecolor("whatever",(.3,.4,.5),(.5,.3,.4));
fill fullcircle scaled 1cm withcolor
multitonecolor("whatever",(.3,.4,.5)/2,(.5,.3,.4)/2);
\stopMPcode
*
PERBEZAAN PENJANAAN DAN OUTPUT DI ANTARA KEDUA-DUA ENJIN:
- Perintah baris:
context filename
- Sebahagian baris log output:
system > ConTeXt ver: 2021.07.23 18:55 LMTX fmt: 2021.7.25 int: english/english mkiv lua stats > font engine: otf 3.118, afm 1.513, tfm 1.000, 9 instances, 3 shared in backend, 3 common vectors, 0 common hashes, load time 0.239 seconds mkiv lua stats > used engine: luametatex version: 2.0916, functionality level: 20210630, format id: 587, compiler: gcc mkiv lua stats > lua properties: engine: lua 5.4, used memory: 52 MB, ctx: 49 MB, max: 49 MB, symbol mask: utf (τεχ) mkiv lua stats > runtime: 0.803 seconds, 1 processed pages, 1 shipped pages, 1.245 pages/second
- Pengeluaran PDF:
- Dapatan:
~ Walaupun penggunaan memori adalah lebih rendah dan kelajuan pelaksanaan adalah lebih pantas, imej bulatan pertama
TIDAK DIHASILKAN
dengan tepat.
- Arahan:
context --luatex filename
- Sebahagian baris log output:
system > ConTeXt ver: 2021.07.23 18:55 MKIV fmt: 2021.7.25 int: english/english mkiv lua stats > font engine: otf 3.118, afm 1.513, tfm 1.000, 8 instances, 3 shared in backend, 3 common vectors, 0 common hashes, load time 0.296 seconds mkiv lua stats > used engine: luatex version: 1.13, functionality level: 7420, banner: this is luatex, version 1.13.0 (tex live 2021) mkiv lua stats > lua properties: engine: lua 5.3, used memory: 102 MB, ctx: 102 MB, max: unknown MB, hash chars: min(64,40), symbol mask: utf (τεχ) mkiv lua stats > runtime: 0.847 seconds, 1 processed pages, 1 shipped pages, 1.181 pages/second
- Pengeluaran PDF:
- Dapatan:
~ Walaupun penggunaan memori adalah lebih tinggi dan kelajuan pelaksanaan adalah lebih perlahan, imej bulatan pertama
DIHASILKAN
dengan tepat.
KEMAS KINI PAKEJ DISTRIBUSI TEX
Memandangkan pemasangan dibuat secara manual, kedua-dua distribusi TeX
ini perlu dikemaskini dengan cara manual jugalah. Kekerapan… pandai-pandailah nak ingat sendiri.
- Kemas kini
ConTeXt LMTX
:- cd
ke dalam direktorinya dan jalankan semula skrip;./install.sh
- Kemas kini
TeX Live
:- - untuk pakej
tlmgr
itu sendiri;tlmgr update --self
- untuk pakej
- untuk pakej-pakej
TeX Live
;tlmgr update --all
- untuk pakej-pakej
MEMASANG MODUL LUAR BAGI CONTEXT LMTX
Simpan fail modul di dalam direktori $HOME/context/tex/texmf-modules
.
- Kemudian jana semula
ConTeXt LMTX
dengan:- context --generate
ATAU
mtxrun --generate
context --make
Sekian, terima kasih.