Repositori ini berisi daftar alat, praktik terbaik, tip, dan pedoman lain yang kami anggap berguna/penting saat menulis karya ilmiah. Beberapa di antaranya adalah masalah gaya (kami cenderung mengikuti pedoman Chicago Manual of Style), dan kami sangat menyadari bahwa orang lain lebih suka melakukan sesuatu secara berbeda, namun kami tetap mencantumkannya untuk mendapatkan panduan yang konsisten. Jangan ragu untuk mengadaptasi, mengubah, mengabaikan, atau bahkan menantang semua yang kami tulis!
Typesetting adalah penyusunan teks dengan cara mengatur jenis-jenisnya, yaitu huruf dan simbol. Ini sebagian besar adalah masalah estetika, tetapi tipografi yang indah membuat dokumen lebih mudah dan menyenangkan untuk dibaca, membantu pembaca memahami pesannya.
Di bawah ini kami mencantumkan beberapa tip dan alat penyusunan huruf untuk membantu Anda saat menyusun dokumen. Beberapa tip khusus untuk LaTeX, namun tip lainnya berlaku apa pun yang Anda gunakan.
Saat menulis dokumen LaTeX, masukkan satu kalimat per baris di file sumber Anda. Menulis:
This is my first sentence.
This is the second one.
dan bukan:
This is my first sentence. This is the second one.
Alasan utama untuk hal ini adalah kontrol sumber dan kolaborasi: ketika melihat perubahan pada sebuah commit, akan lebih mudah untuk mengidentifikasi kalimat apa yang diubah jika masing-masing berada pada baris yang berbeda. Dengan demikian, rekan kerja Anda akan dapat melihat perubahannya dengan lebih mudah.
Manfaat lainnya adalah Anda akan dapat mengidentifikasi kesalahan dengan lebih baik ketika hanya diberi nomor baris oleh kompiler LaTeX kami.
Di bawah ini kami akan merujuk pada dua jenis kapitalisasi:
Gunakan format judul untuk semua judul bagian, subbagian, dll. Untuk membantu Anda menggunakan huruf besar pada kata yang tepat, ada situs web praktis: capitalizemytitle.com.
Terkadang, nama suatu objek (seperti Gambar, Tabel, Grafik, atau Algoritma) dan nomor referensinya dipecah menjadi dua baris. Misalnya, nama objek boleh ada pada satu baris, sedangkan nomor referensinya ada pada baris berikutnya.
Untuk memastikan bahwa LaTeX menyimpan nama objek dan referensinya pada baris yang sama, Anda dapat menggunakan karakter ~
antara objek dan referensi. Dengan menggunakan karakter tilde ~
dengan cara ini, Anda dapat menghindari jeda baris yang canggung dan mempertahankan format yang konsisten untuk nama objek dan nomor referensi Anda dalam dokumen LaTeX.
Figure~ ref { fig:example } displays that the project ...
Untuk memastikan Anda tidak lupa menggunakan karakter tilde, Anda dapat menyederhanakan prosesnya dengan membuat perintah khusus untuk otomatisasi. Berikut ini contohnya:
newcommand { refalg }[1]{Algorithm~ ref {# 1 }}
newcommand { refapp }[1]{Appendix~ ref {# 1 }}
newcommand { refchap }[1]{Chapter~ ref {# 1 }}
newcommand { refeq }[1]{Equation~ ref {# 1 }}
newcommand { reffig }[1]{Figure~ ref {# 1 }}
newcommand { refsec }[1]{Section~ ref {# 1 }}
newcommand { reftab }[1]{Table~ ref {# 1 }}
Setelah perintah ini ditentukan, alih-alih menulis:
Figure~ ref { fig:example }
cukup ketik:
reffig {fig:example}
(contoh lengkap)
tab buku dapat membantu Anda menghasilkan tabel yang bersih dan terlihat bagus.
usepackage { booktabs }
% --
begin { table }
centering
begin { tabular }{lcc}
toprule
& multicolumn {2}{c}{Data} \ cmidrule (lr){2-3}
Name & Column 1 & Another column \
midrule
Some data & 10 & 95 \
Other data & 30 & 49 \
addlinespace
Different stuff & 99 & 12 \
bottomrule
end { tabular }
caption {My caption.}
label { tab-label }
end { table }
Secara umum, hindari penggunaan garis vertikal pada tabel Anda. Sebaliknya, jika Anda ingin mengelompokkan kolom, lakukan di header menggunakan cmidrule
. Anda juga dapat mengganti garis horizontal dengan spasi menggunakan addlinespace
.
Kepala kolom harus menggunakan huruf besar dalam format kalimat (lihat http://www.chicagomanualofstyle.org/15/ch13/ch13_sec019.html).
Anda dapat menemukan saran lebih lanjut tentang pemformatan tabel di sini: http://www.inf.ethz.ch/personal/markusp/teaching/guides/guide-tables.pdf. Berikut ini GIF bagus yang menggambarkan beberapa aturan ini:
(contoh lengkap)
Gunakan paket siunitx untuk memformat semua angka, mata uang, satuan, dll:
usepackage { siunitx }
% ---
This thing costs SI {123456}{ $ }.
There are num {987654} people in this room, SI {38}{ percent } of which are male.
Anda juga dapat menggunakannya untuk membulatkan angka:
usepackage { siunitx }
% ---
sisetup {
round-mode = places,
round-precision = 3
} %
You can also round numbers, for example num {1.23456}.
Terakhir, ini dapat membantu Anda menyelaraskan angka dalam tabel dengan lebih baik:
usepackage { booktabs }
usepackage { siunitx }
% ---
begin { table }
centering
begin { tabular }{lS}
toprule
Name & {Value} \ % headers of S columns have to be in {}
midrule
Test & 2.3456 \
Blah & 34.2345 \
Foo & -6.7835 \
Bar & 5642.5 \
bottomrule
end { tabular }
caption {Numbers alignment with texttt { siunitx }.}
end { table }
(contoh lengkap)
Saat menulis persamaan, akan sangat membantu jika memiliki cara yang koheren dan konsisten dalam menulis variabel, vektor, matriks, dll. Ini membantu pembaca mengidentifikasi apa yang Anda bicarakan dan mengingat semantik setiap simbol.
Kami mengusulkan aturan berikut untuk menulis matematika:
$x$
)$mathbold{x}$
)$mathbold{X}$
)$X$
) Perintah mathbold
berasal dari paket fixmath
dan mirip dengan boldmath
atau bm
, hanya saja semua simbol dicetak miring, bahkan huruf Yunani (paket lain tidak mencetak huruf Yunani miring).
Saat menambahkan indeks atau eksponen ke variabel, pastikan Anda menambahkannya di luar gaya variabel, yaitu menulis $mathbold{x}_i$
dan bukan $mathbold{x_i}$
.
Karena kami sering merujuk pada variabel, kami menyarankan untuk mendefinisikan dua perintah berikut:
renewcommand { vec }[1]{ mathbold {#1}}
newcommand { mat }[1]{ mathbold {#1}}
Anda kemudian dapat menggunakan $vec{x}$
dan $mat{X}$
di dokumen Anda. Jika Anda memutuskan untuk mengubah cara format matriks yang Anda inginkan, Anda cukup mengubah perintah mat
, dan perintah tersebut akan memperbarui seluruh dokumen.
Kami juga menyarankan untuk menentukan perintah untuk variabel yang paling sering Anda gunakan. Misalnya, jika Anda sering menggunakan vec{x}
dan mat{X}
, pertimbangkan untuk mendefinisikan perintah berikut:
newcommand { vx }{ vec {x}}
newcommand { vX }{ mat {X}}
Anda kemudian dapat menulis persamaan yang lebih ringkas: $vx^T vy = vZ$
.
Perhatikan bahwa Anda harus selalu mengatur gaya variabel sesuai dengan tipenya. Misalnya, elemen ke-$i$ dari vektor vx
adalah x_i
dan bukan vx_i
(yaitu bilangan). Demikian pula, jika Anda memiliki matriks vX
, dapat memanggil kolom ke i vx_i
(itu adalah vektor, jadi dicetak tebal) dan satu jika elemennya x_{ij}
, bukan vX_i
dan vX_{ij}
.
Gunakan (...)
untuk menulis persamaan inline. Anda juga dapat menggunakan $...$
, tetapi ini adalah perintah TeX dan memberikan pesan kesalahan yang lebih tidak jelas.
Untuk menulis persamaan terpusat pada barisnya sendiri, jangan gunakan $$...$$
(ini adalah salah satu dosa mematikan penggunaan LaTeX). Ini berfungsi, tetapi memberikan spasi yang salah. Gunakan begin{equation*}
atau begin{align*}
sebagai gantinya.
(contoh lengkap)
Untuk dokumen yang lebih panjang, seperti tesis master atau PhD, akan berguna untuk memiliki referensi belakang dalam bibliografi, untuk menunjukkan di mana referensi tersebut dikutip. Untuk melakukannya, cukup tambahkan opsi backref=page
ke paket hyperref
:
usepackage [ backref=page ]{ hyperref }
Anda dapat menyesuaikan tampilan referensi belakang dengan perintah berikut:
renewcommand *{ backref }[1]{}
renewcommand *{ backrefalt }[4]{{ footnotesize [ %
ifcase #1 Not cited. %
or Cited on page~#2 %
else Cited on pages #2 %
fi %
]}}
Gambar merupakan komponen penting dalam makalah apa pun karena dapat mengkomunikasikan hasil Anda kepada pembaca. Anda harus mempertimbangkan apa yang disampaikan oleh informasi pada setiap gambar kepada pembaca Anda, dan bahwa informasi yang ada cukup untuk mendukung pesan Anda, tidak lebih. Misalnya, jika Anda ingin menampilkan pola dalam titik 2d (ada dua cluster yang terpisah dengan baik), tidak perlu memberi tanda centang dan nilai pada sumbu (skala tidak terlalu penting)? Angka tidak boleh terlalu rumit. Lebih baik memiliki beberapa gambar yang menyampaikan satu atau dua pesan, (metode A lebih baik daripada B, namun menyatu lebih lambat) daripada memiliki satu gambar besar yang berantakan.
Beberapa gambar dibuat dengan tangan, misalnya untuk menjelaskan suatu sistem atau memberikan gambaran global, sedangkan gambar lainnya dibuat berdasarkan data, misalnya untuk mengilustrasikan beberapa data. Gambar berdasarkan data ini harus dibuat skripnya sebanyak mungkin: idealnya, jika data Anda berubah, Anda hanya perlu menjalankan skrip satu kali untuk memperbarui gambar Anda, tanpa intervensi lain (mengatur tampilan, memperbesar, menyimpan/memotong gambar , dll). Demikian pula, jika data yang diperlukan untuk menghasilkan angka memerlukan waktu lebih dari beberapa detik untuk dihasilkan, Anda harus memiliki skrip pertama yang menghitung dan menyimpan data, dan skrip kedua yang memplotnya. Dengan cara ini, Anda akan menghemat banyak waktu saat mengerjakan plot: Anda tidak perlu menunggu setelah setiap perubahan kecil pada gambar untuk melihat efeknya.
Kami juga menyarankan untuk menyimpan perintah yang digunakan untuk menghasilkan gambar di file LaTeX, misalnya sebagai komentar di atas gambar, terutama jika skrip memerlukan argumen.
documentclass { article }
usepackage { graphicx }
begin { document }
% python figure_example.py --save ../../examples/figure/figure.eps
begin { figure }
centering
includegraphics {figure.eps}
caption {Example of a sigmoid function}
end { figure }
end { document }
Jika memungkinkan, semua gambar harus menggunakan font yang sama untuk label, sumbu, dll. Secara khusus, Anda tidak boleh memiliki satu gambar dengan label/tanda centang besar, dan gambar lainnya dengan label/tanda centang yang lebih kecil. Salah satu solusi untuk mencapai hal ini adalah dengan menentukan ukuran gambar Anda di skrip yang menghasilkannya, dan tidak mengubah skalanya di dokumen Anda (misalnya, jangan mengubah setel lebar gambar menjadi textwidth
di dokumen LaTeX Anda).
Untuk mendapatkan angka yang konsisten, sebaiknya gunakan skrip pembantu, mirip dengan plot_utils.py
kami. Dengan menggunakan skrip ini, Anda cukup memanggil fungsi figure_setup()
untuk menentukan semua ukuran, lalu membuat gambar dengan ukuran yang Anda inginkan, dan menyimpannya.
import argparse
import matplotlib . pyplot as plt
import numpy as np
import plot_utils as pu
def main ( args ):
x = np . linspace ( - 6 , 6 , 200 )
y = 1 / ( 1 + np . exp ( - x ))
pu . figure_setup ()
fig_size = pu . get_fig_size ( 10 , 5 )
fig = plt . figure ( figsize = fig_size )
ax = fig . add_subplot ( 111 )
ax . plot ( x , y , c = 'b' , lw = pu . plot_lw ())
ax . set_xlabel ( '$x$' )
ax . set_ylabel ( '$ \ sigma(x)$' )
ax . set_axisbelow ( True )
plt . grid ()
plt . tight_layout ()
if args . save :
pu . save_fig ( fig , args . save )
else :
plt . show ()
if __name__ == '__main__' :
parser = argparse . ArgumentParser ()
parser . add_argument ( '-s' , '--save' )
args = parser . parse_args ()
main ( args )
Kami menyarankan untuk menyimpan semua gambar dalam format EPS
. Dengan cara ini, Anda dapat menggunakan latex
dan pdflatex
untuk menghasilkan dokumen Anda, dan menikmati grafik dan teks vektor yang indah.
Mulai September 2015, di Mac OS X dan dengan versi terbaru Python, Matplotlib, dan TeX Live, terjadi penurunan kualitas saat mencetak gambar yang langsung disimpan sebagai PDF
dari Matplotlib. Menjadi jelas saat dicetak di kertas asli; cobalah sendiri. Ini adalah alasan lain untuk memilih menyimpan gambar yang dihasilkan Matplotlib di EPS
. Jika Anda benar-benar ingin menyimpan hanya versi PDF dari gambar tersebut, gunakan alat baris perintah epspdf
---PDF yang dihasilkan akan lebih baik daripada yang dihasilkan langsung oleh Matplotlib.
Untuk kelengkapannya, perhatikan bahwa ada backend Matplotlib lain, PGF, yang memberikan hasil sedikit lebih unggul. Namun, pada September 2015, PDF yang dihasilkan dua kali lebih berat dibandingkan yang diperoleh dengan backend default dan epspdf
.
Matplotlib, meskipun menggunakan fitur tata letak yang ketat, terkadang menambahkan terlalu banyak ruang kosong di margin. Alat baris perintah yang bagus untuk memotong PDF ke kotak pembatas paling ketat pdfcrop
.
Jika Anda memiliki banyak titik data dalam plot Anda, file EPS yang dihasilkan mungkin berukuran sangat besar. Anda dapat menyimpan gambar Anda sebagai file PNG, tetapi ini akan menghasilkan teks yang buram. Solusinya adalah dengan melakukan rasterisasi pada bagian gambar Anda, yaitu memberi tahu matplotlib
bahwa titik data harus dirender sebagai bitmap dalam file EPS, sedangkan sisanya dalam format vektor.
Anda dapat meneruskan kata kunci rasterized=True
ke sebagian besar fungsi plot di matplotlib
. Anda juga dapat menggunakan lapisan berbeda menggunakan zorder
dan memberi tahu matplotlib
untuk melakukan rasterisasi semua lapisan di bawah zorder
tertentu menggunakan metode sumbu set_rasterization_zorder()
. Lihat figure_rasterized_example.py dan http://matplotlib.org/examples/misc/rasterization_demo.html untuk contoh rasterisasi.