Sejak belajar di universitas, saya menggunakan LaTeX untuk merancang laboratorium dan makalah. Saya bertemu LaTeX untuk pertama kalinya di Coursera, pada kursus " Dokumen dan Presentasi di LaTeX ".
Pada artikel ini, saya akan menjelaskan bagaimana saya menulis diploma menggunakan LaTeX dan mengapa saya menggunakan GitHub, Docker, dan TravisCI.

Kata Pengantar
Jalur saya untuk mengedit dan membuat dokumen dimulai dengan Microsoft Word, mungkin seperti banyak. Setelah beralih dari Windows ke Linux, saya dengan mudah mulai menggunakan OpenOffice dan kemudian LibreOffice, yang dalam tugas saya tidak kalah fungsionalnya dengan Word.
Rasanya sedikit menyakitkan ketika saya menulis beberapa esai di ruang komputer perpustakaan di OpenOffice dan membawanya ke cetakan di komputer admin dengan Microsoft Word, dan semua format lalat. Pada waktu sekolah itu, tidak ada yang menjelaskan kepada saya bahwa Anda dapat menyimpan dokumen dalam PDF dan mencetak tanpa masalah, saya sudah tahu ketika saya masih di universitas dan perlu mencetak dokumen hampir setiap hari.
Mari kita kembali ke LaTeX, sebelum menggunakannya, yang pernah saya dengar tentang LaTeX adalah mereka menggunakannya untuk menulis artikel di jurnal ilmiah karena sangat nyaman untuk bekerja dengan formula. Mereka yang berpikiran sama, saya sarankan menonton kursus di Coursera, mungkin itu akan berubah pikiran, misalnya saya sangat menyukainya.
Halo, Dunia di LaTeX:
\documentclass{article} \begin{document} Hello, World! \end{document}
Ngomong-ngomong, dengan bantuan LaTeX Anda dapat membuat presentasi. Di sini Anda dapat melihat banyak contoh bagaimana tampilan presentasi ini.
Gelar sarjana dengan LaTeX
Pada akhir tahun ketiga, saya sudah secara aktif menggunakan LaTeX untuk menyusun hampir semua dokumen, diputuskan untuk menulis ijazah sarjana dengan itu .
Pada awalnya, saya menggunakan LaTeXila sebagai IDE, di mana proyek dibangun dengan satu tombol, saya bisa menghubungkan pemeriksa ejaan, tetapi kadang-kadang macet dan melambat, jadi saya mulai menggunakan Teks Sublime dengan Makefile.
Contoh makefile:
all: build run build: latexmk -xelatex -synctex=1 main.tex run: xreader main.pdf & clean: rm *.aux *.fdb_latexmk *.fls *.log *.out *.synctex.gz *.toc
Semua sumber disimpan di git, untuk kenyamanan kolaborasi dengan pengawas yang saya gunakan GitHub. Struktur proyek sangat sederhana, mukadimah dan bab-bab lain yang disimpan dalam direktori terpisah terhubung ke file main.tex
.
main.tex:
\documentclass[a4paper,14pt]{extarticle}
Deskripsi semua gaya dan pemformatan ada di file preamble.tex
, yang preamble.tex
di bagian paling awal dokumen.
Sangat nyaman untuk tidak khawatir memformat konten, daftar pustaka dan bagian lain dari diploma.

Isi
Saya akan menjelaskan kelebihan saya ketika bekerja dengan LaTeX, dibandingkan dengan editor WYSIWYG:
- kemudahan versi yang mudah digunakan (alih-alih diploma.odt , diploma_01.01.2015.odt , diploma_fix_print.odt - versi di git dan kemampuan untuk kembali ke komit apa pun)
- ketika Anda secara tidak sengaja mengklik sesuatu, tata letak tidak crash (itu terjadi pada saya)
- pengaturan fleksibel (yang tidak selalu tersedia di editor WYSIWYG atau tidak jelas)
- lingkungan homogen untuk semuanya (sumber presentasi berada dalam repositori yang sama dengan diploma)
- kemungkinan kolaborasi (manajer pascasarjana dapat melihat di repositori apa yang telah berubah sejak pemeriksaan terakhir)
- nyaman digunakan sebagai templat untuk banyak dokumen berbeda
- akan lebih mudah untuk memasukkan sisipan seperti kode sumber misalnya atau file PDF tambahan
Berikut adalah contoh betapa mudahnya untuk menyertakan file sumber dalam dokumen:
\lstinputlisting[numbers=left]{inc/ddos-deflate/ddos.sh}

Kode sumber yang terhubung dalam dokumen
Hanya ada satu minus menggunakan LaTeX untuk saya - Anda perlu menghabiskan waktu untuk memoles semuanya ke hasil yang diinginkan. Saya bahkan ingin bingung sejenak untuk menggambar ulang semua diagram dan diagram secara native menggunakan TikZ , tetapi butuh banyak waktu, jadi saya dengan tenang menggunakan Google Drawings dan draw.io untuk ini.
Setelah berhasil mempertahankan diploma sarjana saya dan memperoleh pengetahuan tentang bekerja dengan git, GitHub, Makefile, LaTeXStackExchange google dalam bahasa Inggris, saya lupa tentang diploma selama beberapa tahun untuk menggunakan template saya untuk menulis diploma master.
Gelar master
Pada waktu itu ketika saya belajar di magistracy, saya mulai terlibat dalam alat-alat teknik, seperti Docker, mulai berlatih dengan alat Integrasi Berkelanjutan, dan mempelajari praktik-praktik DevOps. Menarik juga bagi saya untuk mendesain proyek open-source peliharaan saya dengan indah dengan file README yang indah.
Secara umum, ketika saya mulai menulis ijazah master , persyaratan untuk pendaftaran tidak banyak berubah, jadi saya mengambil templat untuk ijazah sarjana saya dan menyelesaikannya dalam hal-hal sepele, misalnya barang-barang seperti daftar bahan ilustrasi, daftar singkatan, dan sebagainya. Saat mempertahankan diploma sarjana, kami menggunakan poster berukuran A1, dan di master, kami sudah diizinkan untuk menggunakan presentasi dalam bentuk slide, jadi saya juga membuat slide menggunakan LaTeX dan beamer.

Layout dengan LaTeX dan beamer
Dibawa oleh konsep CI, saya pikir, mengapa tidak mengumpulkan PDF baru setiap kali Anda berkomitmen pada repositori? Menghubungkan GitHub ke TravisCI hanya membutuhkan waktu beberapa menit. Meskipun TravisCI tidak tahu cara bekerja secara langsung dengan LaTeX, tetapi ia bekerja sangat baik dengan Docker. Keren, saya pikir, saya akan membunuh beberapa burung dengan satu batu:
- berlatih menulis buruh pelabuhan
- Saya akan memigrasi semua paket LaTeX ke Docker (dan ada banyak dari mereka dan mereka cukup berat)
- berlatih menggunakan TravisCI
- Saya akan membantu mereka yang tiba-tiba suatu hari ingin menggunakan template saya pada OS non-Linux
Menulis file konfigurasi untuk TravisCI, Dockerfile dan mengedit Makefile tidak butuh waktu lama dan ternyata dengan nyaman.
Bagian dari Makefile untuk menjalankan pembangunan proyek di Docker:
... docker: docker build -t docker-latex . docker run -ti -v ${PWD}:/master-thesis:Z docker-latex bash -c "make build && make clean" docker run -ti -v ${PWD}:/master-thesis:Z docker-latex bash -c "make -C presentation && make -C presentation clean"
Sekarang, supervisor lulusan tidak bisa hanya melihat perubahan saya dalam kode, tetapi juga versi dokumen yang dibuat-buat.

Rilis
Setelah menyelesaikan diploma dalam formulir yang saya butuhkan, saya memutuskan untuk membagikan templat tersebut kepada masyarakat, dengan analogi dengan gelar sarjana saya. Diputuskan untuk dengan indah mengatur file README dari repositori, karena ini adalah wajah proyek. Orang yang menemukan proyek Anda di Internet harus segera mencari tahu cara merakit proyek dan apa yang harus dilakukan dengan menggunakan file README.

File README.md
Segera saya harus menulis diploma ketiga dan saya pikir pendekatan saya untuk menulisnya tidak akan berubah sama sekali dan saya akan menghabiskan waktu yang sangat sedikit pada desainnya. Mengingat bahwa saya pindah dari Linux ke Mac OS, transisi akan sepenuhnya tidak menyakitkan, karena ada Docker.
Ringkasan
Ketertarikan yang biasa pada LaTeX memungkinkan saya untuk menyelam lebih dalam ke area ini:
- "Dapat bantuan" ketika bekerja dengan LaTeX, yang kemudian membantu menghemat waktu saat membuat dokumen dan presentasi
- mendapatkan pengalaman bekerja dengan git dan GitHub saat bekerja dengan proyek-proyek kesayangan ini
- digunakan dalam praktek hal-hal seperti Docker dan TravisCI, yang memberi saya dorongan yang baik ketika terbenam di DevOps
- belajar bagaimana mengatur proyek hewan peliharaan mereka dengan rapi
Jawaban untuk Pertanyaan Potensial
Mengapa Anda menyimpan file PDF di repositori?
Semata-mata agar orang yang masuk ke dalam repositori tidak hanya dapat melihat sumbernya, tetapi juga melihat hasil dari semua ini tanpa mengunduh rilisnya.
Mengapa tidak banyak hal yang sepenuhnya otomatis, seperti bibliografi?
Karena satu dan lain alasan, saya tidak membahas lebih jauh, mungkin mereka yang memiliki ratusan sumber literatur bekas akan terluka.
Apakah templat mematuhi GOST / DSTU?
Saya hanya dibimbing oleh persyaratan normocontroller, jadi tidak juga.
Terjemahan artikel ke dalam Bahasa Inggris ke Bahasa Medium .