Thursday, July 6, 2017

Standalone: Dokumen yang Menyendiri

Mukadimah

(Disebabkan oleh sesuatu hal) Pernahkah terpikirkan bagaimana bila gambar-gambar yang menyertai suatu dokumen disusun satu persatu secara mandiri (terpisah dari dokumen utama)? 
Ya, kita dapat melakukan hal itu dengan menggunakan kelas dokumen standalone. Standalone adalah kelas dokumen yang mencetak dokumen hanya untuk satu halaman berupa gambar. Kelas ini dapat menjadi pilihan jika kita bermaksud untuk membuat gambar dalam dokumen terpisah kemudian hasilnya (PDF) disertakan ke dalam dokumen utama oleh perintah
\includegraphics[opsi] {*.pdf}
Pada kelas ini, hal-hal di dalam mukadimah sama berlakunya seperti pada kelas dokumen lainnya, kecuali paket geometry dan teks pada naskah. Karena hanya untuk satu halaman maka keberadaan teks harus dalam lingkup perintah gambar, misalnya tikzpicture. Kelas ini juga tidak memerlukan paket geometry. Margin pada kelas ini diatur oleh opsi border yang akan memberikan "ruang kosong" dari gambar ke tiap tepi halaman (kertas).


Teknis Penulisan

Suatu ketika, di dalam media perpesanan Telegram, saya melihat suatu "logo" seperti tampak pada gambar di atas. Karena saya akan membuat satu gambar pada satu halaman di dalam satu dokumen, maka saya pilih kelas dokumen standalone.

Apa yang harus dilakukan?
Baris pertama pada struktur dokumen kita nyatakan kelas dokumen sebagai
\documentclass[border=15pt]{standalone}
Nilai pada opsi border tentu dapat diubah sesuai dengan keinginan kita.

Hal pokoknya hanya itu, kelas dokumen. Hal-hal berikutnya yang perlu kita cantumkan pada mukadimah semata hal-hal yang berkaitan dengan keperluan untuk menggambar, dalam hal ini oleh paket TikZ.
Perhatikan kembali gambar di atas. Bayangkanlah, kita akan menggambar suatu lingkaran besar (tanpa menggambarkan garis tepinya) yang diisi oleh warna merah (yang khas). Sedangkan di dalamnya digambar suatu persegi dalam kedudukan seperti itu dan pada kedua sisinya masing-masing dibuat lingkaran dan setengah lingkaran berjari-jari sama, yaitu setengah dari panjang sisi persegi itu. Semua bangun di dalam lingkaran besar itu diwarnai putih.
Untuk hal tersebut, kita memerlukan paket TikZ beserta kepustakaannya sebagai berikut.
\usepackage{tikz}
\usetikzlibrary{calc,decorations.text}
Kepustakaan calc diperlukan untuk menetapkan koordinat titik tengah dari sisi persegi sebagai pusat lingkaran dan menetapkan jari-jari lingkarannya, sedangkan kepustakaan decorations.text diperlukan untuk meletakkan teks yang melengkung mengikuti kelengkungan lingkaran besar.
Pewarnaan oleh paket xcolor dan dicantumkan sebelum paket TikZ. Warna merah itu dipinjam dari seseorang di forum yang dinamainya sebagai merah dari kota Cincinnati dan ditetapkan sebagai
\definecolor{CincinnatiRed}{RGB}{224,1,34}
Sedangkan warna teks ditetapkan oleh
\definecolor{bistref}{RGB}{133, 109, 77}
Pada contoh ini, dokumen kita kompilasi oleh mesin (engine) pengolah dokumen, compiler,  XeLaTeX agar kita dapat menggunakan jenis huruf Gecko dari sana dan kita cantumkan sebagai 
\usepackage{fontspec}
\setmainfont[Ligatures={TeX}]{Gecko.ttf}


Teknis Menggambar

Naskah/badan dokumen (main body) pada kelas dokumen standalone berupa lingkup perintah (environment) gambar tikzpicture
\begin{tikzpicture}[line join=round]
...
\end{tikzpicture}
Opsi line join=round diperlukan agar sudut persegi tidak runcing.
Mula-mula kita tetapkan koordinat titik-titik sudut persegi sebagai
\coordinate (A) at (-3,0);
\coordinate (B) at (0,-3);
\coordinate (C) at (3,0);
\coordinate (D) at (0,3);
Kemudian kita tetapkan dua pusat lingkaran masing-masing sebagai titik tengah dari $\overline{AD}$ dan $\overline{AD}$.
\coordinate (O1) at ($(A)!.5!(D)$);
\coordinate (O2) at ($(C)!.5!(D)$);
Urutan pertama dalam gambar adalah membuat lingkaran tanpa menggoreskan kelilingnya, hanya mengisinya oleh suatu warna. Ini dilakukan lebih dulu agar gambar persegi dan lingkaran kecil di dalamnya tampak (menimpa pewarnaan tersebut).
\fill[CincinnatiRed] (0,0.5) circle (5);
Kita buat lingkaran besar itu berpusat pada koordinat $(0,0.5)$ dan berjari-jari $5\,\textrm{cm}$.
Berikutnya kit gambarkan perseginya.
\draw[line width=3pt,white] (A)--(B)--(C)--(D)--cycle;
Persegi $ABCD$ (tanpa menunjukkan nama titik sudutnya) itu dibuat dengan ketebalan sisi $3\,\textrm{pt}$ dan diwarnai putih.
Sekarang kita akan menggambar lingkaran berpusat di $O_1$ dan berjari-jari $AO_1$.
\draw[line width=3pt,white] 
  let 
  \p1=($(A)-(O1)$), %jari-jari
  \n1={veclen(\x1,\y1)} %panjang jari-jari
  in
  (O1) circle (\n1);
Bila kita akan menggambar suatu lingkaran dengan diketahui koordinat pusat dan satu koordinat pada lingkaran itu, maka perintah untuk menggambar lingkaran tersebut harus seperti itu. Perintah \p1=... menetapkan ruas garis sebagai jari-jari dan perintah \n1=... menetapkan panjang jari-jarinya. 
Selanjutnya kita akan menggambar busur setengah lingkaran. Perhatikan bahwa pusat setengah lingkaran itu bukan di $O(0,0)$. Kita menetapkannya pada koordinat $O_2$. Untuk hal itu kita harus menambahkah opsi shift={(O2)} pada perintah menggambarnya.
\draw[line width=3pt,shift={(O2)},white] (D) arc(135:-45:{1.5*sqrt(2)});
Bayangkanlah, kita berada di $O_2$. Busur itu kita gambar busur dari $D$ ke arah $C$. Dalam arah mendatar, dari kanan $O_2$ ke $D$ membentuk sudut sebesar $135^\circ$ dan dari kanan $O_2$ ke $C$ membentuk sudut sebesar $-45^\circ$. Sedangkan panjang jari-jarinya senilai $\frac{3}{2}\sqrt{2}$. 
Terakhir kita akan meletakkan teks seperti tampak pada gambar di atas. Untuk melakukan itu kita memerlukan kepustakaan decorations.text
\path [postaction={
          decorate,
         decoration={
                     raise=-1.5ex,text along path,text align=center,pre length=15.7cm,
                     text={|\footnotesize\color{bistref}|Diberdayakan oleh {\LaTeX} 
                          {$\textrm{\textcopyright}$}2017 Sulaeman, S.Pd. 
                          {$\textrm{@}$}SMKN 2 Sumbawa Besar
                           }
                     }}] (0,.5) circle (5);
Pada dasarnya, kita menetapkan path lingkaran besar itu tanpa menggambarnya, kemudian oleh opsi postaction kita letakkan suatu teks. Dalam perintah decoration,

  • nilai raise menyatakan jarak teks terhadap lingkaran itu; tanda negatif untuk teks di luar lingkaran dan tanda postitif untuk teks di dalam lingkaran;
  • text along path memerintahkan $\LaTeX$ untuk menempatkan teks mengikuti bentuk kurva lingkaran;
  • text align memerintahkan $\LaTeX$ untuk menetapkan kedudukan teks pada path tersebut;
  • nilai pre length menyatakan penggeseran teks dari kedudukan awalnya pada path itu.
  • text={...} memuat teks dimaksud; bila teks berupa lambang atau rumus matematis maka harus diletakkan di dalam {...}; opsi untuk teks, misalnya ukuran huruf, pewarnaan, dll harus diletakkan di dalam |...|.

Hal-hal lainnya tentang penggunaan kepustakaan decorations.text dapat dipelajari pada dokumentasi paket PGF/TikZ.
Oleh seluruh rangkaian langkah menggambar di atas, kita akan memperoleh gambar seperti tampak pada awal tulisan ini.


Penutup

Bagian "paling rumit" dari gambar tersebut adalah peletakkan teks sepanjang kurva. Kita harus mengingat urutan perintah postaction, decorate, dan decoration beserta opsi-opsinya. Kita dapat menggunakan teknis perintah tersebut untuk jenis/bentuk kurva lainnya.
Demikian semoga bermanfaat.

$\square$ Adjie Gumarang Pujakelana 2017

No comments:

Post a Comment