Базовані документи в LaTeX

Відкрили Microsoft Word і все поплило? Хочеться ригати? Створення документів викликає бажання викинутись у вікно? Вихід Є!

Що це взагалі таке? §

LaTeX [латèх] — це дуже зручна система верстки. Уся серйозна писанина зверстана мовою LaTeX, бо це забезпечує гнучкість роботи з файлами та отримання гарних, структурованих паперів. А ще Латехом називають мене в університеті (дійсно, чому?).

based png

Якщо коротко, то за допомогою LaTeX можна перетворити це

\newcommand{\entry}[3]{\markboth{##1}{#1}\textbf{#1}\ {$\bullet$}\ {#2};\ {\it#3}}

\entry{to pester}{набридати}{}

\entry{platter}{жорсткий магнетний диск, грамплатівка}{}

\entry{inexplicably}{незрозуміло, нез'ясовно}{}

\entry{anodyne}{болезаспокійлливий}{anodyne yodeling}

\entry{retort}{різка, дотепна відповідь; відповідати тим же}{}

\entry{terrific}{колосальний, чудовий, разючий, страшний}{He had a terrific ear for the hit song.}

\entry{clairvoyance}{ясновидіння, прозорливість, проникливість}{his pop music instincts approached clairvoyance.}

\entry{slum(s)}{нетрі, закутки; брудний закуток}{}

на це:

Можете переглянути приклади гарних документів тут і тут, або просто уважно роздивіться якусь серйозну книжку.

Це універсальна штука, яку використовують математики, мовознавці, хіміки, художні письменники, мітологи та всі, хто хоче легко створити гарний документ.

Нашо мені його вчити? §

LaTeX робить усе за вас (МАГІЯ!!!)
Компілятор автоматично нумерує рисунки, формули, елементи списків і т д; налаштовує перехресні посилання, генерує зміст, бібліографію та (майже) ідеально розставляє всі елементи твору. Просто подумайте, скільки це заощаджує часу та зусиль!
Тільки текст
Текстові файли займають мало місця, зручні для пошуку, переміщення та інших маніпуляцій.
Програмування в документах
ви можете використовувати оператори умовного переходу, створювати власні команди та взагалі робити, що заманеться.
Автоматизація роботи
Стандартні утиліти GNU безумовно перевершують графічні інструменти редакторів WYSIWG, але краще один раз відчути, побачити, понюхати, ніж недочитати, тому ось посилання на мій скрипт для генерації різнотипних документів у НУ “ЛП”.
Вічні документи
Ви можете знайти код для будь-якої дивної науково-мистецької штуки в інтернеті та використати у своїй роботі.
Необов’язково LaTeX
ви можете писати невеликі документи різними мовами розмітки, зокрема Markdown, і використовувати програми на кшталт Pandoc для перетворення їх на сирці LaTeX або готові PDF 1.
LaTeX легко вивчити
мова розмітки ЛаТеХ об’єктивно простіша за HTML, бо більшість синтаксису — просто англійські слова.

З чого почати? §

Отже, тепер ви хочете готувати документи за допомогою LaTeX, тож розгляньмо встановлення цього пакету та коротко основи мови.

Установлення §

Arch-подібні дистри GNU/Linux (Artix, Manjaro, Parabola)
pacman -S texlive-most texlive-lang
Debian-подібні (Ubuntu/Linux Mint)
apt-get install texlive-full

Деякі дистриб’юції (як Void) використовують tlmgr для керування пакетами TeX.

Для Windows
Getting MiKTeX
існує розширення для VSCodium
Для MacOS X?
MacTeX - TeX Users Group

Також існує пакунок texlive-most-doc, у якому міститься величезна кількість документації до пакетів latex. Скоріш за все, поки він скачається, ви заснете, але це часом стає в нагоді.

Загалом те, що треба, достатньо шукати в інтернеті. Ось кілька сайтів, які я для цього можу порадити:

Загальний вигляд команд §

омандабезаргументів
оманда[додаткові]{обов'язкові}{аргументи}

\begin{середовище}
	вміст
	оманда
	в більшість середовищ можна вкладати інші середовища
\end{середовище}

Нормальна преамбула §

Преамбула — це набір налаштувань перед умістом документу

Тут я наведу необхідну базу, а якщо вам знадобиться більше, можете поглянути на мою преамбулу для університетських паперів. Я б не сказав, що вона крута, але так ви можете дізнатися про кілька класних пакетів.

Також ось файл, набір якого я коментуватиму далі, також файл для бібера й картинка.

\documentclass[oneside,final,12pt]{extarticle} % клас документа й додаткові параметри
% команда \usepackage використовується для під'єднання пакунків
\usepackage[utf8]{inputenc} % кодування вводу % [koi8-r]
\usepackage[T2A]{fontenc} % кодування шрифта
\usepackage[ukrainian]{babel} % пакет для локалізації
\usepackage{indentfirst} % звичні для нас абзаци на початках розділів/секцій
\sloppy % бореться з залізанням на поля

\begin{document}
% ... Вміст документа тут ...
\end{document}

Для трохи більших документів замість extarticle можна використовувати клас extreport — у ньому вже з’являються розділи, до цього ми зараз дійдемо, адже тепер ми маємо преамбулу й можемо починати бавитись.

Дрібка синтаксису §

Я спробую стисло розглянути найпоширеніші команди. Але спочатку ось команда для компіляції документа:

pdflatex <назва файлу>

Рубрикація §

Усе транскрибую як є, щоб не виникало плутанини, хоча це точно не переклад.

%\chapter{розділ, extarticle не має}
\section{секція}

це   все       зверстається
як
одна стрічка. % а ще латех виправить пропуски

Щоб почати новий абзац,
достатньо пропустити рядок.

\subsection{підсекція}
\subsubsection{підпідсекція}
\paragraph{параграф}
\subparagraph{підпараграф}

до кінців назв команд рубрикації й узагалі будь-яких із лічильниками можна додавати * (напр. section*{...}), щоб прибрати номер

Трохи про сам текст §

\textbf{жирний}

\textit{курсив}

\emph{виділений текст, за замовчуванням курсивний}

\underline{підкреслення}

\subsection{Трохи про лапки}

"кожен символ значить те що значить"

``отак треба подвійні лапки''

`а так це наголос і апостроф'

Списки §

Списки створюються за допомогою середовищ enumerate (нумеровані) та itemize (ненумеровані)

\begin{enumerate} % номери підкреслюють важливість або послідовність
	\item щось
		\begin{itemize} % можна вкладати деякі середовища в інші
			\item ще щось % не нумерує
			\item ще щось
		\end{itemize}
	\item щось
		\begin{enumerate} % автоматично переходить на інший спосіб нумерації
			\item ще щось
		\end{enumerate}
\end{enumerate}

Картинки й рисунки §

бейзд латех

\begin{figure}[h] % рисунок ТУТ (Here), можна t (top), b (bottom), p(page), ! (ігнорувати деякі параметри LaTeX для розміщення)
	\centering % все після цього в середовищі відцентроване
	\includegraphics[width=.7\textwidth]{latex}
	\caption{латех база}
	\label{chadtex} % так само можна позначати рисунки
\end{figure}

Не додаємо суфікс .png, бо якщо є файл із суфіксом .eps, то використає його, а це краще, але тут ми такого не будем робити.

Більше про параметри розміщення для плавких об’єктів тут

Математика §

Для математики одразу краще використовувати пакет amsmath, додаємо до преамбули \usepackage{amsmath}

Ось способи відкриття математичного середовища без номера:

Математична формула $\phi=x-21e$ всередині стрічки

$$
	a+a_1=0  % багатосимвольний нижній індекс: _{qriu}
	\implies % очевидно імплікація (випливає).
	a=-a_1   % потрібні символи просто шукайте в літературі й інтернеті
$$

\[ % так краще, бо розумієте, де початок і кінець
	\sin^2 19x + \cos^2 19x = 1 % верхній^{індекс}
\]

До речі, верхній^{індекс} не зверстається, якщо не запхати його в \text{верхній}^{\text{індекс}}, бо ми в математичному середовищі. До речі, тут автоматично визначаються всі пропуски, тому як потрібно десь поставити, наприклад, пробіл, замість ' ' набираємо '~' — символ нерозривного пробілу. Насправді є більше нюансів, але я не просто так залишаю нижче посилання на кілька гарних джерел.

Деякі математичні середовища з лічильниками, паралельно дроби:

\begin{equation}
	\frac{\sin(3n)}{3^n}
	% дроби пишуть за
	% допомогою команди \frac,
	% 1-й аргумент --- чисельник
	% 2-й --- знаменник
\end{equation}

\begin{align} % це середовище нумерує все, розділене переведенням рядка, якщо не додати до `align` `*`
	xdy=(3y-2x)dx \\
	\frac{dy}{dx}=\frac{3y-2x}{x}
	\label{bruh} % можна так позначати...
\end{align}
	\ref{bruh} % ... і потім звертатися, і буде відображатися номер рівняння/рисунку/секції/(...)

Я залишаю між середовищами порожні рядки не просто так. Інакше можуть відбуватися дивні речі, хоча все потрібно вміти використати на свою користь — деколи прибирання пропусків може зекономити відносно багато паперу

Бібліографія §

Можна писати її безпосередньо в латех:

\begin{thebibliography}{00} % 00 вказує максимальну ширину номера посилання й використовуєтьтся для горизонтального вирівнювання елементів списку.
	\bibitem{latex2days} Дональд Е.~Кнут. \emph{Все про} Tex. Видання, Київ, 2929. % у [] можна вказати номер
\end{thebibliography}

Але значно зручніше використовувати Biber та BibTeX. (Не забудьте встановити Biber, в арчі це pacman -S biber).

Додаємо це до преамбули

\usepackage[backend=biber]{biblatex}
\addbibresource{bib.bib}

вміст bib.bib:

@book{test,
	author = "Автор Я",
	title = {Назва книжки},
	year = 2023,
	publisher = {видавець},
	address = {місто}
}
@book{other,
	author = "Хтось",
	title = {Назва книжки},
	year = 2023,
	publisher = {видавець},
	address = {місто}
}

Тепер звертаємося до нашої книжки, наприклад, за допомогою варіацій команд типу \cite:

\cite{test} % можна додати якісь нотатки
\textcite[ст.~21]{test} % наприклад, номер сторінки

% ...

\printbibliography % вивід бібліографії

Будуть надруковані тільки ті твори, на які ви посилалися. Якщо потрібно додати щось без відображення:

\nocite{other}
Трохи про компіляцію: §
  1. Звично збираємо документ.
  2. потім даємо Biber назву файлу, але без суфікса .tex)
  3. знову компілюємо й тішимося

Що далі? §

Ця стаття покликана лише дати вам загальне розуміння LaTeX та максимально продати вам його за безплатно. Тому тут я залишаю кілька посилань, за якими ви знайдете гарні джерела інформації.


  1. Узагалі за допомогою pandoc можна перетворювати значно більше типів. Дуже рекомендую цю програму. ↩︎