Tentang LaTeX, Vimtex dan Zathura

Penerangan lebih terperinci mengenainya


geeky stuff
#archlinux | #latex | #vimtex | #zathura

PENGENALAN
Saya pernah menulis sebelum ini perihal [1] Mencipta resume dengan LaTeX (ditulis dalam bahasa Melayu) dan [2] Vimtex and Zathura (ditulis dalam bahasa Inggeris).

Di dalam kedua-dua pos, tidak ada penerangan menyeluruh berkenaan LaTeX itu sendiri.

Yalah. Awalannya, saya fikirkan, sudah begitu banyak penulisan berkenaan apa itu LaTeX boleh didapati melalui kajian dan carian di Internet, malahan buku yang menerangkan dengan begitu terperinci akan kegunaan-nya juga sudah sekian banyak dikeluarkan.

Tetapi kali ini saya fikir tidak mengapalah. Penulisan ini, jikalau saya menulis dengan lebih lanjut tentang ketiga-tiga perisian ini, sudah tentunya saya juga yang akan termanfaat daripadanya di masa akan datang. Selain saya boleh membuat rujukan kembali dengan membaca pos ini, saya juga boleh meneliti untuk menilai sejauh mana perkembangan saya dalam menulis hal-hal keilmuan seperti ini.

Baiklah, tanpa berlengah lagi, saya sentuh dahulu berkenaan LaTeX. Saya pada asalnya mencari perisian yang boleh digunakan sebagai pengganti kepada Microsoft Word untuk Linux, namun akhirnya terjebak dengan bahasa komputer nan satu ini setelah terbaca sebuah komentar yang menyebut, “Sudah pakai Linux, kenapa pula mahu guna perisian ala-ala Microsoft Office? LaTeX kan ada!” Begitulah kata beliau yang tidak pernah saya kenali pun sebenarnya.

Jadi berbalik kepada topik utama, apa itu LateX? Hurm, sepertinya boleh baca sendiri saja dari [sini]? Bhahaha! Anyway. Menurut halaman yang pautan-nya sudah saya kongsikan di dalam ayat sebelum ini, LaTeX, yang cara menyebutnya adalah “Lah-Tek” ataupun “Lei-Tek”, ialah sebuah sistem untuk menyediakan dokumen bagi penataan huruf berkualiti tinggi. Sistem ini selalunya digunapakai dalam menyediakan dokumen bersifat teknikal atau saintifik akan tetapi boleh digunakan untuk apa jua jenis penerbitan sebenarnya.

Katanya lagi, LaTeX bukanlah sejenis pemproses ayat! Sebaliknya, LaTeX menggalakkan penulis untuk tidak terlalu menumpukan perhatian kepada penampilan dokumen dan hanya fokus ke arah mendapatkan isi yang tepat, WHICH I AGREE, NOT! Lol!

Kenapa saya katakan begini? Kerana melalui kajian dan eksperimen yang saya jalankan sendiri, anda boleh melakukan apa sahaja bentuk penggayaan/seni dengan LaTeX, mengikut kesukaan anda, tanpa disekat oleh sebarang limitasi! Hebat bunyinya-kan? Nah, kerana itulah saya amat tertarik untuk mempelajari proses menyediakan dokumen melalui sistem LaTeX ini!

PASANG ‘TEX LIVE’ UNTUK MENGOPERASIKAN LATEX
Untuk menggunakan sistem LaTeX ini secara tempatan di Arch Linux (di dalam mana-mana edaran Linux juga boleh), saya ikuti sahaja langkah-langkah pemasangan (texlive-most) seperti yang sudah diterangkan di [archwiki: TeX Live] ini.

Sesudah itu, saya pun belajarlah bagaimana untuk menghasilkan dokumen dengan menggunakan bahasa LaTeX dan kemudiannya belajar pula untuk mengkompilasi fail latex tersebut bagi menjana fail pdf sebagai terjemahan kepada dokumen itu.

STRUKTUR DOKUMEN LATEX

Saya terangkan serba sedikitlah apa yang perlu ada untuk menjadikan dokumen LaTeX itu sempurna:-

  1. Preamble:
    • \documentclass[options]{class}: Wajib ada di permulaan setiap dokumen LaTeX.
      Senarai [options] dan {class} boleh didapati [di sini].
    • \usepackage[options]{package}: Diperlukan jika mahu menambah penggayaan yang tidak boleh didapati daripada LaTeX asas. Contohnya untuk menambah kotak dengan fungsi warna:-
      \usepackage[many]{tcolorbox}
  2. Dokumen:
    Teks diletakkan di antara dua arahan/perintah ini:-
    \begin{document}
    Letakkan teks di ruang ini.
    \end{document}


MENGKOMPILASI FAIL LATEX

Selesai urusan menyempurnakan dokumen, bolehlah teruskan dengan menyusun fail tersebut untuk dijana menjadi pdf.

Setakat yang saya faham melalui kajian sendiri, ada tiga jenis penyusun untuk menukar fail latex ini kepada pdf; pdflatex, xelatex dan lualatex.

  1. Pdflatex: Sesuai digunakan apabila dokumen tidak mengandungi karakter-karakter yang kompleks seperti yang terdapat di dalam bahasa lain ie. bahasa Korea. Sebahagian pakej pada dokumen LaTeX hanya membenarkan pdflatex sebagai penyusun, contohnya pakej gaya huruf {times}. Baris perintahnya adalah seperti berikut:-
    pdflatex sample-resume.tex
  2. Xelatex dan Lualatex: Digunakan apabila mengandungi pakej-pakej daripada pihak ketiga seperti penggunaan huruf Arial (sebagaimana yang terkandung di dalam resume saya) ataupun penggunaan bahasa lain, sebagai contoh dokumen yang dikeluarkan dalam bahasa Arab atau Jepun. Baris perintahnya adalah seperti berikut:-
    xelatex sample-resume.tex

    lualatex sample-resume.tex
Alhamdulillah. Ada insan yang besar jasanya mencipta 'plugin' yang memudahkan untuk proses penyusunan. Saya menggunakan Vim sebagai penyunting teks yang utama. Sebelum ini, saya gunakan Neovim namun atas faktor [kestabilan], saya bertukar kembali kepada Vim. Jadi, di sinilah gunanya Vimtex, sebuah 'plugin' untuk penyunting teks Vim yang saya maksudkan di atas.
Untuk menggunakan vimtex ini, perlu adanya satu lagi perisian lain iaitu pembaca pdf. Ada banyak jenis pembaca pdf seperti MuPDF dan Zathura. Saya gunakan Zathura. Seperti yang sudah saya nyatakan di bahagian [pengenalan] di atas, saya pernah menulis mengenainya [di sini] ('Vimtex and Zathura'). Jika sebelum ini saya memasang zathura dari sumber, sekarang saya memuatnaik dan memasang pembaca pdf ini dari pakej binari yang telah disediakan oleh Arch Linux sendiri untuk memudahkan proses menaiktaraf perisian.
Kesemua perisian wajib (dependencies) yang perlu ada untuk memastikan perisian zathura mampu berjalan dengan baik tanpa sebarang masalah adalah sama kecuali libmupdf. Pakej libmupdf diperlukan sekiranya anda memasang zathura dari sumber tetapi jika dipasang melalui pakej binari, maka bolehlah jimat sedikit ruang cakera.
Saya ada sebut di atas bahawa dokumen latex boleh disusun menggunakan pdflatex, xelatex atau lualatex. Perlu diketahui bahawa ada ketikanya kaedah secara manual ini mesti dilakukan berulang kali terutama apabila melibatkan bibliografi. Saya berikan contoh melalui dua fail di bawah ini; [1] sample.tex dan [2] sample.bib:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}

\title{Bibliography management: BibTeX}
\author{Share\LaTeX}

\begin{document}

\maketitle

This document is an example of BibTeX using in bibliography management. Three items are cited: \textit{The \LaTeX\ Companion} book \cite{latexcompanion}, the Einstein journal paper \cite{einstein}, and the Donald Knuth's website \cite{knuthwebsite}. The \LaTeX\ related items are \cite{latexcompanion,knuthwebsite}. 

\medskip

\bibliographystyle{unsrt}%Used BibTeX style is unsrt
\bibliography{sample}

\end{document}
Sumber dari ShareLaTex: [bibtex-template]
@article{einstein,
  author =       "Albert Einstein",
  title =        "{Zur Elektrodynamik bewegter K{\"o}rper}. ({German})
                 [{On} the electrodynamics of moving bodies]",
  journal =      "Annalen der Physik",
  volume =       "322",
  number =       "10",
  pages =        "891--921",
  year =         "1905",
  DOI =          "http://dx.doi.org/10.1002/andp.19053221004"
}

@book{latexcompanion,
    author    = "Michel Goossens and Frank Mittelbach and Alexander Samarin",
    title     = "The \LaTeX\ Companion",
    year      = "1993",
    publisher = "Addison-Wesley",
    address   = "Reading, Massachusetts"
}
 
@misc{knuthwebsite,
    author    = "Donald Knuth",
    title     = "Knuth: Computers and Typesetting",
    url       = "http://www-cs-faculty.stanford.edu/\~{}uno/abcde.html"
}


Untuk menjana fail pdf daripada dokumen sample.tex di atas, ada empat baris perintah yang perlu dijalankan iaitu seperti berikut:-

  1. Baris perintah pertama adalah untuk menjana fail sample.aux:
    pdflatex sample.tex
    Imej 1: Pemandangan daripada fail pdf yang kali pertama dijana.
  2. Baris perintah kedua adalah untuk menjana fail sample.bbl:
    bibtex sample
  3. Baris perintah ketiga adalah untuk mengesahkan janaan fail .aux dan .bbl sebelum ini.
    pdflatex sample.tex
    Imej 2: Pemandangan daripada fail pdf yang kali kedua dijana.
  4. Manakala baris perintah terakhir adalah untuk mendapatkan fail pdf yang lengkap dengan semua isi termasuk petikan rujukan daripada bahagian bibliografi.
    pdflatex sample.tex
    Imej 3: Pemandangan daripada fail pdf yang kali ketiga (terakhir) dijana.


Baik, di sini kelebihan vimtex menyerlah. Kerana dengan ‘plugin’ inilah kerja berulang kali itu dapat dipermudahkan. ‘Plugin’ vimtex menetapkan sama ada latexmk (iaitu skrip perl dan saya gunakan ini) atau latexrun yang membantu menjalankan kesemua baris perintah diperlukan secara automatik.

Walaubagaimanapun, ada sedikit kerja tambahan untuk mendapatkan fungsi ini; sunting / cipta jika tiada dua fail ini:-

  1. .vimrc:-

    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " VIMTEX
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    let &rtp  = '~/.vim/bundle/vimtex,' . &rtp
    let &rtp .= ',~/.vim/bundle/vimtex/after'
    let g:tex_flavor = 'latex'
    
    " Starting to use vimtex and it needs several configurations to work correctly
    "let g:vimtex_latexmk_progname= '/usr/bin/nvr'
    "let g:vimtex_latexmk_options="-pdf -pdflatex='pdflatex -file-line-error -shell-escape -synctex=1'"
    let g:vimtex_latexmk_options="-pdf -pdflatex='xelatex -file-line-error -synctex=1 -interaction=nonstopmode -shell-escape %S %O -verbose'"
    let g:vimtex_fold_enabled = 0
    let g:vimtex_toc_resize = 0
    let g:vimtex_toc_hide_help = 1
    let g:vimtex_indent_enabled = 1
    let g:vimtex_latexmk_enabled = 1
    let g:vimtex_latexmk_callback = 1
    let g:vimtex_complete_recursive_bib = 0
    "let g:vimtex_view_method = 'mupdf'
    let g:vimtex_view_method = 'zathura'
    let g:vimtex_complete_close_braces = 1
    let g:vimtex_quickfix_mode = 2
    let g:vimtex_quickfix_open_on_warning = 1
    let g:vimtex_quickfix_ignored_warnings = [
            \ 'Underfull',
            \ 'Overfull',
            \ 'specifier changed to',
          \ ]
    call vimtex#imaps#add_map({
      \ 'lhs' : '<m-i>',
      \ 'rhs' : '\item ',
      \ 'leader' : '',
      \ 'wrapper' : 'vimtex#imaps#wrap_environment',
      \ 'context' : ["itemize", "enumerate", "compactitem"],
      \})
  2. .latexmkrc.
Ambil perhatian kepada baris ini di dalam fail .vimrc:
let g:vimtex_latexmk_options="-pdf -pdflatex='xelatex -file-line-error -synctex=1 -interaction=nonstopmode -shell-escape %S %O -verbose'"
dan juga baris ini di dalam fail .latexmkrc:
$pdflatex = 'xelatex -file-line-error -synctex=1 -interaction=nonstopmode -shell-escape %S %O -verbose';
Dua baris kod inilah yang akan bertindak sebagai arahan untuk mengkompilasi dokumen latex kepada pdf secara automatik. Sila rujuk pos saya yang bertajuk "Vimtex and Zathura" sebelum ini untuk maklumat lanjut.
Saya kira, cukup sampai di sini sahaja penerangan berkenaan ketiga-tiga perisian ini.
SEMOGA BERMANFAAT. 😄


Kali terakhir halaman ini dikemaskini/disemak semula adalah pada .
Top