PerlTeX

10
Membuat Dokumen PerlT E X Edisi Pertama Hirwanto

Transcript of PerlTeX

Page 1: PerlTeX

Membuat Dokumen PerlTEX

Edisi Pertama

Hirwanto

Page 2: PerlTeX

DAFTAR ISI

PART I

PerlTEX 11 Pendahuluan 2

I

Page 3: PerlTeX

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

Page 4: PerlTeX

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.

Page 5: PerlTeX

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

Page 6: PerlTeX

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 :

Page 7: PerlTeX

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;}{

Page 8: PerlTeX

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.

Page 9: PerlTeX

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

Page 10: PerlTeX

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.