PerlTeX
-
Upload
hirwanto-iwan -
Category
Education
-
view
220 -
download
1
Transcript of PerlTeX
Membuat Dokumen PerlTEX
Edisi Pertama
Hirwanto
DAFTAR ISI
PART I
PerlTEX 11 Pendahuluan 2
I
DAFTAR ISI
PART I
PerlTEX 1
1 Pendahuluan 2
1.1 Pendahuluan 2
1.2 Motivasi 2
1.3 Penggunaan 5
1.4 Definisi dan Mendefinisikan ulang makro Perl5
1.5 Membuat Pilihan Perltex.pl 6
II
BAGIAN I
PERLTEX
BAB DALAM BAGIAN INI:
1 Pendahuluan
Perl TEX merupakan kombinasi dari skripPerl(perltex.pl) dengan paket LATEX yaituperltex.sty yang bekerja bersama dalam
satu tempat. Ini memberikan kemampuan penggu-na dalammendefinisikan makro LATEX ke dalam kon-disi kode Perl. Salah satu yang menjadi lebih sing-kat dalam pengaturan kode di LATEX. Selain itu, Per-lTEXmelakukan kombinasi antara TEX sebagai baha-sa pemrograman yang digunakan dalam pengatur-an teks dengan pemrograman Perl.
Paket dan skrip Perl ini diciptakan oleh Scott Pa-kin dirilis pada tanggal 10 Juli 2010. Paket ini padadasarnya menambah nilai guna LATEX agar dapat be-kerja dengan program -program lainnya.
BAB
1 Pendahuluan
1.1 PENDAHULUAN
Program TEX merupakan suatu sistem pengaturan teks yang bersifat professional. Ba-gaimanapun, bahasa pemrograman ini lebih digunakan untuk segalanya namun bentuk pa-ling sederhana adalah tentang pergantian teks. Meskipun LATEX mempunyai kebanyakanmakro paket untuk TEX tetapi sedikit sekali dalam hal kesederhanaan pemrograman TEX.
Perl adalah bahasa pemrograma yang secara umum baik dalam hal memanipulasi teks.Bagaimanapun, program ini tidak dukungan terhadap pengaturan teks seperti halnya, TEX.
1.2 MOTIVASI
Salah satu motivasi diciptakannya PerlTEX adalah membantu benteng kedua dunia ini.Ini mampu melakukan kontruksi dokumen utama didasarkan pada TEX tetap membuatmodifikasi dengan bahasa pemrograman Perl. PerlTEX meningkatkan kode Perl atau ter-integrasi dengan dokumen LATEX yang mampu digunakan oleh pengguna untuk mendefi-nisikan makro pada bagian tubuh kode Perl didalam atau diantar kode TEX dan LATEX yangdibuat. Misalkan saja, kamu menginginkan membuat suatu susunan kalimat terbalik yaitu”Saya cinta Kamu” dan dalam urutan terbalik menjadi ”Kamu cinta Saya”. Meskipun initerlihat sederhana namun sedikit pengguna LATEX atau penulis LATEX menyarankan untukmenggunakan sebuah makro TEX. Bagaimanapun, fungsi kata yang terbalik adalah mu-dah bila menggunakan Perl hanya perlu sebaris string kedalam kode LATEX yaitu sebagaiberikut :
\perlnewcommand{\reversewords}[1]{join " ", reverse split " ", $_[0]}
Misalkan kita menggunakan kalimat seperti ini
\perlnewcommand{\reversewords}[1]{join " ", reverse split " ", $_[0]}\reversewords{Saya cinta Kamu}
Akan menghasilkan seperti ini :Kamu cinta Saya
2
1.2. MOTIVASI 3
Untuk contoh yang lainnya, pikirkanlah bagaimana menuliskan sebuah makro di LATEXyang berguna untuk menampilkan string atau karakter tertentu sesuai dengan urutan daripanjangnya karakter. Perl mempunyai suatu fungsi yang bernama substr dan PerlTEXmembuat dapat berguna dalam menjalankan fungsi ini di LATEX, misalkan contoh sebagaiberikut :
\perlnewcommand{\substr}[3]{substr $_[0], $_[1], $_[2]}
\substr bisa digunakan hanya seperti makro LATEX lainnya sebagai fungsi substr diPerl.
\perlnewcommand{\substr}[3]{substr $_[0], $_[1], $_[2]}\newcommand{\str}{superlative}A sample substring of ‘‘\str’’ is ‘‘\substr{\str}{2}{4}’’.
Maka akan menghasilkan keluaran seperti ini : A sample substring of ”superlative” is”perl”.
Perintah ini menunjukkan bagaimana menampilkan suatu karakter tertentu yang telahdidefinisikan menggunakan substr dan sintaks ini memberikan hasil dari karakter yangingin ditampilkan. Untuk contoh yang lainnya, misalkan kita menginginkan menampilk-an karakter tertentu dari ”Elementary” yaitu hanya kata ”men”, kita bisa menggunakanperintah substr seperti ini :
\newcommand{\sing}{Elementary}Ini merupakan perintah dasar atau "\sing" sehinggasaya berharap kamu menjadi seorang laki- lakiatau "\substr{\sing}{3}{3}"
Akanmenghasilkan keluaran seperti ini : Ini merupakan perintah dasar atau ”Elementary”sehingga saya berharap kamu menjadi seorang laki- laki atau ”men”
Kita akan memberikan contoh yang lebih kompleks, misalkan kita akan menampilkansuatu matriks yang entrynya berulang denganmenggunakan kode Perl jadi lebih sederhanadibanding dengan menggunakan makro LATEX, seperti ini contoh nya :
\perlnewcommand{\hilbertmatrix}[1]{my $result = '\[\renewcommand{\arraystretch}{1.3}';$result .= '\begin{array}{' . 'c' x $_[0] . "}\n";foreach $j (0 .. $_[0]-1) {my @row;foreach $i (0 .. $_[0]-1) {push @row, ($i+$j) ? (sprintf '\frac{1}{%d}', $i+$j+1) : '1';}$result .= join (' & ', @row) . " \\\\\n";}$result .= '\end{array}\]';return $result;}\hilbertmatrix{20}
Akan menghasilkan keluaran seperti ini :
4 BAB 1. PENDAHULUAN
1 12
13
14
15
16
17
18
19
110
111
112
113
114
115
116
117
118
119
120
12
13
14
15
16
17
18
19
110
111
112
113
114
115
116
117
118
119
120
121
13
14
15
16
17
18
19
110
111
112
113
114
115
116
117
118
119
120
121
122
14
15
16
17
18
19
110
111
112
113
114
115
116
117
118
119
120
121
122
123
15
16
17
18
19
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
16
17
18
19
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
17
18
19
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
18
19
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
19
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
Perintah \perlnewcommand dan \perlrenewcommand, PerlTEX juga mendukung ter-hadap makro \perlnewenvironment dan \perlrenewenvironment. Lingkungan inimampu didefinisikan dengan menggunakan kode Perl. Contoh dibawah ini merupakancontoh dari lingkungan pemrogram Ms. Excel atau Spreadsheet yang digunakan untukmenampilkan tabel dan ditambah dengan judul pada baris. Contoh ini seharusnya akanlebih sulit bila tidak menggunakan PerlTEX jika hanya menggunakan perintah LATEX saja.
\newcounter{ssrow}\perlnewenvironment{spreadsheet}[1]{my $cols = $_[0];my $header = "A";my $tabular = "\\setcounter{ssrow}{1}\n";$tabular .= '\newcommand*{\rownum}{\thessrow\addtocounter{ssrow}{1}}' . "\n";$tabular .= '\begin{tabular}{@{}r|*{' . $cols . '}{r}@{}}' . "\n";$tabular .= '\\multicolumn{1}{@{}c}{} &' . "\n";foreach (1 .. $cols) {$tabular .= "\\multicolumn{1}{c";$tabular .= '@{}' if $_ == $cols;$tabular .= "}{" . $header++ . "}";if ($_ == $cols) {$tabular .= " \\\\ \\cline{2-" . ($cols+1) . "}"}else {$tabular .= " &";}$tabular .= "\n";}return $tabular;}{
1.3. PENGGUNAAN 5
return "\\end{tabular}\n";}\begin{center}\begin{spreadsheet}{4}\rownum & 1 & 8 & 10 & 15 \\\rownum & 12 & 13 & 3 & 6 \\\rownum & 7 & 2 & 16 & 9 \\\rownum & 14 & 11 & 5 & 4\end{spreadsheet}\end{center}Akan menghasilkan keluaran seperti ini :
A B C D1 1 8 10 152 12 13 3 63 7 2 16 94 14 11 5 4
1.3 PENGGUNAAN
PerlTEXmerupakan kombinasi dari dua program yaitu TEX dan Perl. Hal ini bisa berjal-an jika ada suatu jembatan antara keduanya maka terciptalah PerlTEX. Perangkat ini bisadikatakan sebagai paket di LATEX dan skrip di Perl. Jika di LATEX, maka Perl memerlukansuatu paket dengan nama perltex.sty. Paket ini yang menjalankan perintah kode Perldi LATEX, sedangkan skrip di Perl merupakan perintah yang menjalankan perintah LATEXdi Perl. Kedua hal ini dipertemukan dengan nama PerlTEX. Jika kamu ingin mengguna-kann PerlTEX, terlebih kamu perlu mendefinisikan suatu paket pada bagian preamble didokumen LATEX yaitu sebagai berikut :
\usepackage{perltex}
Untuk menjalankan perintah Perl di LATEX, kamu perlu juga mendefinisikan perintahsebagai berikut :
\perlnewcommand\perlrenewcommand\perlnewenvironment\perlrenewenvironmentUntuk menghasilkan dokumen LATEX serta hasil kode Perl maka kamu perlu menjalankansuatu perintah pada perltex.pl yang merupakan skrip dari Perl.
1.4 DEFINISI DAN MENDEFINISIKAN ULANG MAKRO PERL
perltex.stymendefinisikan limamakro yaitu \perlnewcommand, \perlrenewcommand,\perlnewenvironment, \perlrenewenvironment, dan \perldo
PerlTEX mendukung pilihan argumen dari perintah diatas seperti \perlnewcommand*,\perlrenewcommand*, \perlnewenvironment, dan \perlrenewenvironment*. Un-tuk perintah \perldo yang tidak ada di makro LATEX digunakan untuk melakukan ekseku-si blok kode Perl tanda didefinisikan ulang sebarang makro atau lingkungannya. PerlTEXmendefinisikan makro atau lingkungan adalah suatu proses konversi ke name bagian Perlsetelah makro/lingkungan terdefinisi dengan diawal perintah LATEX. Untuk contoh, Per-lTEX mendefinisikan suatu makro LATEX yang disebut dengan \myMacro dan didalamnyadiproduksi sebuah kode Perl bagian dengan nama latex_myMacro. Argument makro inidikonversi ke bagian argumen. Macor LATEX untuk #1 ini disamakan dengan kode Perlsebagai $_[0], #2 untuk $_[1] dan seterusnya.
6 BAB 1. PENDAHULUAN
Sebarang kode resmi Perl bisa digunakan dibagian tubuh makro. Bagaimanapun, Per-lTEXmelakukan eksekusi kode Perl dengan keamanan. Ini mengartikan bahwa berpotensi-al pada operasi Perl, seperti unlink, rmdir, dan sistem juga akanmenghasilkan kesalahandalam prosesnya. Ini kemungkinan bisa diatas denganmematikan cek keamanan pada pro-gram. Dengan mempunyai keamanan dapat menjawab bahwa keamanan untuk membuatdokumen PerlTEXyang ditulis oleh orang lain tanpa khawatir bahwa mereka bisa mela-kukan untuk sistem komputermu. Keamanan tunggal yang digunakan untuk menjalankanlatex. Ini mengartikan bahwamakro ganda yang didefinisikan oleh \perlnewcommand bi-sa mempengaruhi yang lainnya. Itu juga mengartikan bahwa variabel umum tetap berlakupada pemanggilan makro. Misalkan diberikan suatu contoh berikut ini :
\perlnewcommand{\setX}[1]{$x = $_[0]; return ""}\perlnewcommand{\getX}{'$x$ was set to ' . $x . '.'}\setX{123}\getX\setX{456}\getX\perldo{$x = 789}\getX
Akan menghasilkan keluaran seperti ini : 𝑥 was set to 123. 𝑥 was set to 456. 𝑥 was setto 789.
Argumen makro diperluas menggunakan LATEX sebelum kode tersebut dijalankan olehPerl. Misalkan diberikan contoh definisi makro dibawah ini :
\begin{verbatim*}. . . \end{verbatim*}:\perlnewcommand{\verbit}[1]{"\\begin{verbatim*}\n$_[0]\n\\end{verbatim*}\n"}
.␣.␣.␣
: Perintah diatas digunakan untukmempersingkat, diberikan contoh seperti ini : ”\verbit{\TEX}”
T\kern␣-.1667em\lower␣.5ex\hbox␣{E}\kern␣-.125emX\spacefactor␣\@m
yang akan memperluas ”TEX” dengan nama ”
T\kern-.1667em\lower.5ex\hbox {E}\kern-.124emX\spacefactor\@m
” dan ini sesuatu yang sedikit tidak diharapkan. Solusinya adalah dengan menggunakanperintah \noexpand:\verbit{\noexpand\TeX} akan menghasilkan :
\TeX
Makro ”Robust sebagai \begin dan \end yang dijelaskan secara implisit oleh \noexpand.
1.5 MEMBUAT PILIHAN PERLTEX.PL
Umumnya, paket perltex.sty akan muncul pesan kesalahan ” Document must becompiled using perltex jika dokumen yang menggunakan spesifikasi paket yang di-berikan \usepackage{perltex} tetapi tidak dilakukan kompilasi menggunakan skripperltex.pl. Bagaimanapun, PerlTEX perlu mengatur format dokumen tanpa melakukankompilasi dokumen. Untuk seperti kasus ini, diperlukan suatu pilihan paket yang mela-kukan instruksi perltex.sty hanya untuk catatan bahwa pilihan dokumen dikompilasitanpa menggunakan perltex tanpa dilakukan kompilasi juga. Penulis bisa menggunakanmakro \ifperl untuk melakukan tes jika \ifperl dan lingkungannya didefinisikan de-ngan perintah \pernewcommand dan \perlnewenvironment. Untuk contoh yang lebih
1.5. MEMBUAT PILIHAN PERLTEX.PL 7
luas, gunakan pilihan dan \ifperl untuk mendefinisikan lingkungan dalam satu cara ji-ka perltex.pl terdeteksi dan cara yang lainnya jika tidak. Contoh teks juga menunjukkanbagaiman mengaktifkan dokumen untk dilakukan kompilasi meskipun tidak dilakukan in-stalasi perltex.sty.