View on GitHub

Begin-Latex-in-minutes

📜 Brief Intro to LaTeX for beginners that helps you use LaTeX with ease.

English · 中文 · Español · Português · Français · Русский · Deutsch · 日本語 · Polski


Введение в LaTeX за считанные минуты

Предисловие: Всё нижеизложенное основывается на моём личном опыте в колледже и различных прочитанных мной материалах. Я не профессионал и не эксперт, а студент, который очень увлекается этим языком. Любой может начать дискуссию в разделе Issues или создать Pull Request в случае, если что-то следует изменить или добавить. Если вы оценили мой труд, пожертвования весьма приветствуются.

Оглавление

Что такое LaTeX?

LaTeX (произносится «Ла-тэх» или «Лэй-тэх») — это система подготовки высококачественных типографских документов. Чаще всего её используют для технических и научных документов среднего и крупного размера, но она может применяться практически для любых публикаций.

Почему стоит использовать LaTeX?

LaTeX не лишён недостатков, но всё равно стоит того, чтобы его изучить.

Установка LaTeX

Вам потребуется следующее:

  1. Дистрибутив LaTeX. Я использую MiKTeX на Windows.
  2. Редактор LaTeX. Я пользуюсь TeXMaker для большего удобства редактирования, хотя файл LaTeX можно создать или изменить в любом текстовом редакторе.
  3. Программа для просмотра PDF. (опционально) Любая программа для просмотра PDF подойдёт. Она понадобится для просмотра конечного результата.

В дополнение необходимо выбрать компилятор. В большинстве редакторов компилятором по умолчанию является pdfLaTeX, но если требуется поддержка Юникода или шрифтов TTF/OTF, установленных на Вашей системе, используйте LuaLaTeX.

Также Вы можете выбрать простое он-лайн решение наподобие ShareLaTeX. Более полный перечень альтернатив Вы найдёте в разделе Дополнительный инструментарий.

Первый файл LaTeX

Давайте начнём с традиционного Hello World в LaTeX. Если Вы уже установили TexMaker, в первую очередь создайте новый файл с расширением .tex. Затем наберите в нём нижеприведённый код для вывода фразы “Hello World!” и нажмите кнопку “Быстрая сборка”. В других редакторах LaTeX не должно составить труда выполнить такую же процедуру.

\documentclass[a4paper]{article}

\begin{document}

Hello World !  % Это Ваше содержимое

\end{document}

Вот как это должно выглядеть в TexMaker:

Погружение

:eyes: Приглядевшись к Вашему первому файлу LaTeX Вы с лёгкостью заметите, что:

:zap: Внимание :zap:

Использование разных языков

Некоторые языки не будут работать прямо из коробки. Чтобы использовать TeX с этими языками, у Вас есть несколько вариантов.

:white_check_mark: Способ первый :white_check_mark:

Первый способ заключается в добавлении пакетов (“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, то вот что Вы увидите в результате выполнения кода выше:

Сравните с вариантом без пакетов :package::

:umbrella: Хитрая ситуация возникает, когда дело касается китайского, японского или корейского. Тут на помощь приходят usepackage{CJKutf8} с \begin{CJK}{UTF8} и \end{CJK}. Вот японский :jp::

\documentclass[a4paper]{article}
\usepackage{CJKutf8}

\begin{document}

\begin{CJK}{UTF8}{min}
この記事を読んでいただきありがとうございます。
%Спасибо, что читаете эту статью.
\end{CJK}

\end{document}

Так же просто как есть :sushi: и :bento::

:white_check_mark: Способ второй :white_check_mark:

Второй способ достижения цели состоит в смене компилятора 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 полностью поддерживаются).

Списки

:straight_ruler: Очень важно организовать Ваш документ как следует. Посему, давайте начнём с составления списка. Два распространённых типа списков — это неупорядоченный и упорядоченный списки. Они оба легко добавляются в документ LaTeX:

Вот как эти два типа списков будут выглядеть на выходе:

Параграфы и разделы

:blue_book: Раздел мы начинаем с помощью \section, а параграф — с помощью \paragraph. :orange_book: Ещё Вы можете добавить подраздел командой \subsection или подпараграф командой \subparagraph.

Создание оглавления

:metal: Полезно начинать разделы и подразделы с \tableofcontents.

Например:

:bangbang: Подсказка: можно использовать команду \newpage, если Вы хотите начать с новой страницы.

Сноски

Проще простого создавать разного рода сноски и ссылки с помощью команд footnote+label+ref. К примеру:

Привет, позвольте представиться\footnote{\label{myfootnote}Здравствуй, ссылка}.
... (позже)
Я говорю о себе \ref{myfootnote}.

:point_down: :point_down: Видите? :point_down: :point_down:

:bangbang: Подсказка: используйте \newline для начала новой строки.

Что такое пакет?

LaTeX и сам по себе предоставляет много возможностей, но в некоторых ситуациях полезными оказываются так называемые пакеты. Для импорта пакета в LaTeX Вы просто добавляете \usepackage :package:

Здесь приведён пример использования пары пакетов для вывода математики:

Ещё более впечатляюще выглядят электрические схемы:

:construction: Поищите в Google пакет, который будет удовлетворять Вашим требованиям. Например, amsmath широко используется для математики и открывает много новых возможностей для набора математических выражений, circuitikz — для конструирования электрических цепей, и так далее.. Данное общее руководство не в силах осветить каждый из них.

Таблица

Практический пример :thought_balloon::

\begin{table}[h!]
  \centering
  \caption{Заголовок таблицы.}
  \label{tab:table1}
  \begin{tabular}{l|c||r}
    1 & 2 & 3\\
    \hline
    a & b & c\\
  \end{tabular}
\end{table}

:star2: И то, как он выглядит :star2::

Теперь давайте взглянем поближе :eyes::

:bangbang: Подсказка: Вы можете воспользоваться пакетом :package: под названием booktabs \usepackage{booktabs} для более привлекательных на вид таблиц.

Добавление иллюстраций

Для того, чтобы добавить иллюстрацию в документ LaTeX, необходимо использовать окружение figure и пакет graphicx. Используйте \usepackage{graphicx} и

\begin{figure}
  \includegraphics[width=\linewidth]{имя_файла.jpg}
  \caption{О чём это?}
  \label{fig:некая_метка}
\end{figure}

:bangbang: Подсказка: Задайте [width=\linewidth] для того, чтобы смасштабировать изображение на всю ширину документа. Для позиционирования изображения необходимо задать определённые аттрибуты в начале. Кстати, fig может в дальнейшем использоваться для ссылок, поэтому стоит позаботиться о подходящем имени.

\begin{figure}[h!]

:passport_control: Разрешённые значения:

Вот как будет выглядеть изображение:

Вставка кода в LaTeX

:white_check_mark: Способ первый :white_check_mark:

Один из аспектов составления текстов, который особенно важен программистам и разработчикам — это насколько профессионально будет выглядеть код, вставленный в документ.

В случае 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}

:speech_balloon: LaTeX поддерживает синтаксис следующих языков :speech_balloon:

Как видите, с оборачиванием в {verbatim} Вы можете легко вставлять код, не задумываясь о том, как он отформатирован. Вот как это выглядит из коробки, опрятно и профессионально:

:white_check_mark: :white_check_mark: Способ второй :white_check_mark: :white_check_mark:

Этот способ предоставляет Вам больше возможностей, как то вставка кода прямо в текст, создание собственных стилей кода, выбор конкретного языка для кода, импорт кода из другого файла в той же директории…. В рамках этого метода Вы не пользуетесь {verbatim}, а включаете пакет :package: по имени 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}

Отсюда видно, что:

  1. Для вставки блока кода Вы начинаете его с \begin{lstlisting} и заканчиваете его \end{lstlisting}
  2. Для импорта кода из другого файла в этой же директории можно использовать lstinputlisiting{имя_файла}
  3. Для указания языка, на котором написан код используется [language=C++]
  4. Для вставки кода прямо посередине текста используется \lstinline
  5. Для применения особых стилей используется \usepackage{color} и определяется собственно Ваш стиль, после чего Вы используете listing с Вашим оформлением (Пожалуйста, загляните в код, приведённый ниже). Вы можете изменить очень многое в Вашем собственном стиле, но для правильного имени свойства Вам придётся обратиться к документации.
  6. Заинтересовались ?? Больше здесь.

Вот как вышеизложенный код компилируется в TexMaker:

Несколько файлов в LaTeX

При использовании 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:

:bangbang: Подсказка: Для читаемости, ясности и простоты поддержки весьма рекомендуется разделять Ваш основной файл систематически, иерархически и руководствуясь здравым смыслом. Не разделяйте без причин, иначе со временем получится беспорядок.

Дополнительный инструментарий

Дистрибутивы

Редакторы LaTeX

Компиляторы LaTeX

УРА!!

:tada: Спасибо Вам, что добрались до конца этого руководства. По большому счёту, это всё, что Вам требуется знать о LaTeX. :hammer:
Если Вы заинтересовались, больше о LaTeX Вы сможете найти здесь или по всей паутине, в зависимости от Ваших потребностей.

Лицензия

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Copyright (C) 2016 Luong Vo Любому разрешается копировать и распространять дословные или измененные копии этого лицензионного документа, и его изменение допускается при условии, что имя изменено. УСЛОВИЯ ДЛЯ КОПИРОВАНИЯ, РАСПРОСТРАНЕНИЯ И МОДИФИКАЦИИ: Просто ДЕЛАЙТЕ ВСЁ ЧТО Вам ЗАБЛАГОРАССУДИТСЯ.

На стоимость пива в Вашей стране в моей можно пообедать.