English · 中文 · Español · Português · Français · Русский · Deutsch
Предисловие: Всё нижеизложенное основывается на моём личном опыте в колледже и различных прочитанных мной материалах. Я не профессионал и не эксперт, а студент, который очень увлекается этим языком. Любой может начать дискуссию в разделе Issues или создать Pull Request в случае, если что-то следует изменить или добавить. Если вы оценили мой труд, пожертвования весьма приветствуются.
- Что такое LaTeX?
- Почему стоит использовать LaTeX?
- Установка LaTeX
- Первый файл LaTeX
- Погружение
- Использование разных языков
- Списки
- Параграфы и разделы
- Создание оглавления
- Сноски
- Что такое пакет?
- Таблица
- Добавление иллюстраций
- Вставка кода в LaTeX
- Несколько файлов в LaTeX
- Дополнительный инструментарий
LaTeX (произносится «Ла-тэх» или «Лэй-тэх») — это система подготовки высококачественных типографских документов. Чаще всего её используют для технических и научных документов среднего и крупного размера, но она может применяться практически для любых публикаций.
- LaTeX бесплатный и поддерживает многие платформы.
- LaTeX — это просто текстовый документ (который можно открыть любым текстовым редактором), без труда конвертируемый в PDF.
- LaTeX отделяет содержимое от оформления. Задайте оформление один раз и сконцентрируйтесь на содержимом.
- Рабочий процесс быстрее в сравнении с MS Word.
- LaTeX широко используется в научных кругах.
- LaTeX является непревзойдённым инструментом набора математических выражений.
LaTeX не лишён недостатков, но всё равно стоит того, чтобы его изучить.
Вам потребуется следующее:
- Дистрибутив LaTeX. Я использую MiKTeX на Windows.
- Редактор LaTeX. Я пользуюсь TeXMaker для большего удобства редактирования, хотя файл LaTeX можно создать или изменить в любом текстовом редакторе.
- Программа для просмотра PDF. (опционально) Любая программа для просмотра PDF подойдёт. Она понадобится для просмотра конечного результата.
В дополнение необходимо выбрать компилятор. В большинстве редакторов компилятором по умолчанию является pdfLaTeX, но если требуется поддержка Юникода или шрифтов TTF/OTF, установленных на Вашей системе, используйте LuaLaTeX.
Также Вы можете выбрать простое он-лайн решение наподобие ShareLaTeX. Более полный перечень альтернатив Вы найдёте в разделе Дополнительный инструментарий.
Давайте начнём с традиционного Hello World в LaTeX.
Если Вы уже установили TexMaker, в первую очередь создайте новый файл с расширением .tex
. Затем наберите в нём нижеприведённый код для вывода фразы "Hello World!" и нажмите кнопку "Быстрая сборка". В других редакторах LaTeX не должно составить труда выполнить такую же процедуру.
\documentclass[a4paper]{article}
\begin{document}
Hello World ! % Это Ваше содержимое
\end{document}
Вот как это должно выглядеть в TexMaker:
👀 Приглядевшись к Вашему первому файлу LaTeX Вы с лёгкостью заметите, что:
- Первая строка говорит Интерпретатору, что Вы работаете над статьёй (article) размера A4. Другие типы документов, над которыми Вы могли бы работать — это отчёт (report), книга (book)... и так далее.
- Сам документ обёрнут в \begin{document} (начало документа) и \end{document} (конец документа). Это сердце документа, как
main()
в Java или C++... без которого документ не может быть отображён. - Часть между началом и концом документа (в нашем случае
Hello World !
) просто является Вашим содержимым. - Знак процента (%) обозначает комментарий, который LaTeX проигнорирует.
- Оглядываясь назад на \begin{document}, \end{document}, \documentclass[a4paper]{article} Вы можете заметить закономерность. Это так называемые команды (обычно начинающиеся с “\”) и их аргументы (помещённые в фигурных скобках “{}”). LaTeX по сути является обыкновенным текстом, усиленным этими командами.
- Пока Вы следуете этому руководству, всё должно идти гладко. Однако в будущем, в случае, если что-то пойдёт не так, не паникуйте. Сообщения об ошибках дружелюбны и понятны. Если Вы не сможете устранить их сами, поисковик вроде Google будет Вашим лучшим другом.
- Некоторые символы имеют особый смысл в LaTeX. Вам следует использовать обратную косую черту (\) перед этими символами для ожидаемого результата.
Некоторые языки не будут работать прямо из коробки. Чтобы использовать TeX с этими языками, у Вас есть несколько вариантов.
Первый способ заключается в добавлении пакетов ("packages", о них Вы узнаете чуть позже), потому что pdfLaTeX, компилятор по умолчанию, ограничен 256-ю символами и различными проблемами с кодировками. К примеру:
\documentclass[a4paper]{article}
\usepackage[T5]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
Xin chào thế giới. This is Hello World in Vietnamese.
\end{document}
Здесь мы используем пакеты usepackage[T5]{fontenc}
и usepackage[utf8]{inputenc}
. Это просто и понтятно — пакет импортирует кодировщики шрифтов для правильного отображения Вашего содержимого. Если Вы используете TexMaker, то вот что Вы увидите в результате выполнения кода выше:
Сравните с вариантом без пакетов 📦:
☔ Хитрая ситуация возникает, когда дело касается китайского, японского или корейского. Тут на помощь приходят usepackage{CJKutf8}
с \begin{CJK}{UTF8}
и \end{CJK}
. Вот японский 🇯🇵:
\documentclass[a4paper]{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{min}
この記事を読んでいただきありがとうございます。
%Спасибо, что читаете эту статью.
\end{CJK}
\end{document}
Так же просто как есть 🍣 и 🍱:
Второй способ достижения цели состоит в смене компилятора TeX на LuaLaTeX (или XeLaTeX). С использованием fontspec
и polyglossia
, Юникод заработает из коробки:
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{polyglossia}
%\setmainfont[]{DejaVu Serif}
\begin{document}
Xin chào thế giới. This is Hello World in Vietnamese.
\end{document}
Шрифт по умолчанию (Latin Modern) не поддерживает все символы. Вы, однако, можете использовать почти любой шрифт, установленный на Вашей системе, раскомментировав строку с \setmainfont
. (Шрифты TTF и OTF полностью поддерживаются).
📏 Очень важно организовать Ваш документ как следует. Посему, давайте начнём с составления списка. Два распространённых типа списков — это неупорядоченный и упорядоченный списки. Они оба легко добавляются в документ LaTeX:
- Неупорядоченный список
Неупорядоченный список требует только перечислить ("itemize") элементы. (непереводимая игра слов)
\begin{itemize}
\item Элемент.
\item Другой Элемент.
\end{itemize}
- Упорядоченный список
Упорядоченный список, однако, заставляет нас пронумеровать ("enumerate") их. (непереводимая игра слов)
\begin{enumerate}
\item Первый Элемент.
\item Второй Элемент.
\end{enumerate}
Вот как эти два типа списков будут выглядеть на выходе:
📘 Раздел мы начинаем с помощью \section
, а параграф — с помощью \paragraph
.
:orange_book: Ещё Вы можете добавить подраздел командой \subsection
или подпараграф командой \subparagraph
.
🤘 Полезно начинать разделы и подразделы с \tableofcontents
.
Например:
\newpage
, если Вы хотите начать с новой страницы.
Проще простого создавать разного рода сноски и ссылки с помощью команд footnote+label+ref. К примеру:
Привет, позвольте представиться\footnote{\label{myfootnote}Здравствуй, ссылка}.
... (позже)
Я говорю о себе \ref{myfootnote}.
👇 👇 Видите? 👇 👇
\newline
для начала новой строки.
LaTeX и сам по себе предоставляет много возможностей, но в некоторых ситуациях полезными оказываются так называемые пакеты. Для импорта пакета в LaTeX Вы просто добавляете \usepackage
📦
Здесь приведён пример использования пары пакетов для вывода математики:
Ещё более впечатляюще выглядят электрические схемы:
🚧 Поищите в Google пакет, который будет удовлетворять Вашим требованиям. Например, amsmath широко используется для математики и открывает много новых возможностей для набора математических выражений, circuitikz — для конструирования электрических цепей, и так далее.. Данное общее руководство не в силах осветить каждый из них.
Практический пример 💭:
\begin{table}[h!]
\centering
\caption{Заголовок таблицы.}
\label{tab:table1}
\begin{tabular}{l|c||r}
1 & 2 & 3\\
\hline
a & b & c\\
\end{tabular}
\end{table}
🌟 И то, как он выглядит 🌟:
Теперь давайте взглянем поближе 👀:
- Для таблиц нам в первую очередь нужно окружение table, поэтому у нас есть
\begin{table}
и\end{table}
. - Об h! Вы узнаете позже в разделе об иллюстрациях. Это вместе с
\centering
помогает разместить таблицу посередине страницы. - Заголовок (caption) служит для описания. Метка (label) — для ссылок. Вы увидите их в действии в разделе про иллюстрации.
- Самое главное заключается в tabular. Окружение table всегда должно иметь окружение tabular внутри.
- в части
{l|c||r}
мы описываем, как форматировать содержимое внутри таблицы. Тут мы видим:- l или c или r означает то, что содержимое внутри каждой ячейки будет выровнено по левому краю, по центру или по правому краю соответственно.
- вертикальная черта | или || — это не что иное как формат вертикальных разделителей между колонками таблицы.
- 1 & 2 & 3 => 1 2 3 — это содержимое ячеек. Амперсанд & служит для разделения содержимого ячеек в ряду.
\hline
добавляет горизонтальную линию для разделения рядов.
- в части
\usepackage{booktabs}
для более привлекательных на вид таблиц.
Для того, чтобы добавить иллюстрацию в документ LaTeX, необходимо использовать окружение figure и пакет graphicx. Используйте \usepackage{graphicx}
и
\begin{figure}
\includegraphics[width=\linewidth]{имя_файла.jpg}
\caption{О чём это?}
\label{fig:некая_метка}
\end{figure}
\begin{figure}[h!]
🛂 Разрешённые значения:
- h (here) — здесь
- t (top) — вверху страницы
- b (bottom) — внизу страницы
- p (page) — на отдельной странице
- ! (override) — настаивает на указанном позиционировании
Вот как будет выглядеть изображение:
Один из аспектов составления текстов, который особенно важен программистам и разработчикам — это насколько профессионально будет выглядеть код, вставленный в документ.
В случае LaTeX процесс прост и очень профессионален. Мы просто оборачиваем код заранее оговоренными командами и вперёд.
Пример:
\documentclass[a4paper]{article}
\begin{document}
Hello world!
\begin{verbatim}
#include <iostream>
int main()
{
std::cout << "hello world!\n";
return 0;
}
\end{verbatim}
\end{document}
💬 LaTeX поддерживает синтаксис следующих языков 💬
Как видите, с оборачиванием в {verbatim} Вы можете легко вставлять код, не задумываясь о том, как он отформатирован. Вот как это выглядит из коробки, опрятно и профессионально:
Этот способ предоставляет Вам больше возможностей, как то вставка кода прямо в текст, создание собственных стилей кода, выбор конкретного языка для кода, импорт кода из другого файла в той же директории.... В рамках этого метода Вы не пользуетесь {verbatim}, а включаете пакет 📦 по имени listings.
Рассмотрим такой пример:
\documentclass[a4paper]{article}
\usepackage{listings}
\usepackage{color}
\lstdefinestyle{mystyle}{
keywordstyle=\color{magenta},
backgroundcolor=\color{yellow},
commentstyle=\color{green},
basicstyle=\footnotesize,
}
\lstset{style=mystyle}
\begin{document}
Hello world!
\begin{lstlisting}[language=Python]
print "Hello World!"
\end{lstlisting}
\lstinputlisting[language=C++]{hello.cpp}
Lorem ipsum dolor sit amet \lstinline{print "Hello World"} , consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\end{document}
Отсюда видно, что:
- Для вставки блока кода Вы начинаете его с
\begin{lstlisting}
и заканчиваете его\end{lstlisting}
- Для импорта кода из другого файла в этой же директории можно использовать
lstinputlisiting{имя_файла}
- Для указания языка, на котором написан код используется
[language=C++]
- Для вставки кода прямо посередине текста используется
\lstinline
- Для применения особых стилей используется
\usepackage{color}
и определяется собственно Ваш стиль, после чего Вы используете listing с Вашим оформлением (Пожалуйста, загляните в код, приведённый ниже). Вы можете изменить очень многое в Вашем собственном стиле, но для правильного имени свойства Вам придётся обратиться к документации. - Заинтересовались ?? Больше здесь.
Вот как вышеизложенный код компилируется в TexMaker:
При использовании LaTeX можно столкнуться с такой проблемой, что документ становится слишком большим, чтобы им манипулировать. Следовательно, нам следует поделить файл так, чтобы с его содержимым можно было легче справиться.
Давайте посмотрим на примере:
% main.tex
\documentclass[a4paper]{article}
\begin{document}
Привет, Latex, это моя первая часть.
Привет, Latex, это моя вторая часть.
\end{document}
Это просто обычный файл LaTeX. Теперь давайте разделим его на две части с помощью ключевого слова \input
:
% основной_файл.tex
\documentclass[a4paper]{article}
\begin{document}
Привет, Latex, это моя первая часть.
\input{второй_файл}
\end{document}
% второй_файл.tex
Привет, Latex, это моя вторая часть.
Теперь основной файл выглядет иначе, но он лучше задокументирован. Вот результат в TexMaker:
- MiKTeX для Windows.
- TeX Live для Linux и Unix-подобных систем.
- MacTeX для macOS.
- ShareLaTeX — онлайн редактор.
- Overleaf — онлайн редактор с возможностью совместного редактирования.
- StackEdit — браузерный редактор markdown.
- TeXMaker — кроссплатформенный редактор LaTeX.
- TeXStudio — продвинутый форк TeXMaker с дополнительными возможностями.
- TeXShop и TeXworks (минималистичные редакторы)
- Большинство редакторов предоставляют возможность выбора компилятора по умолчанию. Вот, например:
🎉 Спасибо Вам, что добрались до конца этого руководства. По большому счёту, это всё, что Вам требуется знать о LaTeX. 🔨
Если Вы заинтересовались, больше о LaTeX Вы сможете найти здесь или по всей паутине, в зависимости от Ваших потребностей.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Copyright (C) 2016 Luong Vo Любому разрешается копировать и распространять дословные или измененные копии этого лицензионного документа, и его изменение допускается при условии, что имя изменено. УСЛОВИЯ ДЛЯ КОПИРОВАНИЯ, РАСПРОСТРАНЕНИЯ И МОДИФИКАЦИИ: Просто ДЕЛАЙТЕ ВСЁ ЧТО Вам ЗАБЛАГОРАССУДИТСЯ.