TeΧ — система компьютерной вёрстки, разработанная американским почётным профессором информатики Дональдом Кнутом в целях создания компьютерной типографии. LaTeX - наиболее распространённое расширение макрокоманд для TeX. TeX используется главным образом при разработке классов и пакетов LaTeX. Для подготовки печатных документов лучше подходит LaTeX.
TeX общепризнанно считается наиболее качественной системой подготовки печатных публикаций.
TeX-документы набираются на собственном языке разметки в виде обычных текстовых файлов и позволяет автоматизировать многие задачи верстки текста: нумерацию разделов, формул, рисунков, таблиц, списков литературы; набор текста на нескольких языках; подготовку текста в нескольких форматах (статья, книга, презентация, письмо, постер) и др.
Многие зарубежные издания предлагают свои собственные стилевые файлы в LaTeX, что позволяет быстро оформить публикацию, соответствующую стандартам издания и сосредоточится на текста, а не на оформлении.
Сравнительная таблица MS Word vs LaTeX.
Содержание
Под Linux нам понадобиться дистрибутив TeX texlive, под Windows - MikTeX.
# под Arch Linux yaourt -S texlive-bin texlive-most texlive-langcyrillic texstudio # под Ubuntu sudo apt-get install texlive-base texlive-binaries texlive-latex-extra texlive-lang-cyrillic texstudio
Для себя я выбрал крос-платформенный редактор TexStudio который для Linux есть в репозитариях (см. раздел Установка), под Windows качаем exe-файл отсюдова. TexStudio привлек встроенной возможностью авто-дополнения, подсветкой синтаксиса, быстрым просмотром результата в pdf. Словари для проверки орфографии берем с сайта openoffice, файлы с расширением .aff и .dic распаковываем в /usr/share/texstudio.
Для Vim есть расширения
Эти расширения можно установить с помощью pathogen.
Для Sublime Text есть расширение LaTeXTools, ознакомительная видео-презентация latextools.
Онлайн редакторы:
Структура документа и форматирование
Структура любого TeX-документа состоит из
% преамбула \documentclass[a4paper]{article} \begin{document} % текст документа \end{document}
В преамбуле объявляется класс документа и параметры документа, подключаются пакеты с расширениями. В примере мы задали класс документа - статья, размер страниц - A4.
Формат команды documentclass
\documentclass[параметры класса](класс документа)
Параметры класса документа определяют размер листа, шрифта, режим вывода текста и т.д.
Существует шесть классов документов, которые описываются текстовыми файлами с расширением .cls:
Каждый из классов имеет свои особенности по формату и оформлению.
Пример класса книги с двумя колонками
\documentclass[a4paper,12pt,landscape,twocolumn]{book}
Пакет с расширениями это набор макрокоманд или макроопределений, расширяющих возможности системы и оформленных в виде отдельного стилевого файла package.sty.
В тексте документа пишется основной текст, в котором могут быть окружения определяющие определенный объект (например, формула, таблица и т.д.) или форматирование (например, выравнивание по правому краю, цитата и т.д.). Команды LaTeX, внутри текста документа, начинаются с \
. У команды могут быть параметры
\command[опциональные параметры]{обязательные параметры}
Одна или несколько пустых строк обозначают конец абзаца. Форматирование текста не зависит от числа пробелов или пустых строк - лишние просто игнорируются.
Пример документа с форматированием
\documentclass[a4paper]{article} % входная кодировка документа \usepackage[utf8]{inputenc} % поддержка русских букв % кодировка шрифта \usepackage[T2A]{fontenc} \usepackage{pscyr} % улучшенный поиск русских слов в полученном pdf-файле \usepackage{cmap} % установка полуторного интервала % \usepackage{setspace} % \onehalfspacing % использовать Times New Roman % \renewcommand{\rmdefault}{ftm} % языки используемые в документе % + возможность корректно расставлять переносы слов \usepackage[ukrainian,russian]{babel} % отступ для первого абзаца главы или параграфа %\usepackage{indentfirst} % модуль для вставки рыбы \usepackage{blindtext} \begin{document} % установка размера шрифта для всего документа % \fontsize{14pt}{18pt}\selectfont % вставка автоматического содержания \tableofcontents \section{Пример рыбы} \blindtext \section{Пример форматирования} \begin{tiny}Крошечный текст\end{tiny} \\ \begin{scriptsize}Индексный текст\end{scriptsize} \\ \begin{footnotesize}Подстрочный текст\end{footnotesize} \\ \begin{small}Маленький текст\end{small} \\ \begin{normalsize}Стандартный текст\end{normalsize} \\ \begin{large}Большой текст\end{large} \\ \begin{Large}Большой текст\end{Large} \\ \begin{LARGE}Большой текст\end{LARGE} \\ \begin{huge}Огромный текст\end{huge} \\ \begin{Huge}Огромный текст\end{Huge} \\ \end{document}
В LaTeX гарнитура шрифта задается такими признаками: семейство (family), насыщенность (series), начертание (shape) и размер (size).
Команды для управление начертанием и насыщенностью шрифтов
Описание | Команда | Декларация | Сокращенная декларация |
---|---|---|---|
Семейство (Гарнитура) | |||
Обычный (Roman) | \textrm{text} | {\rmfamily text} | {\rm text} |
Рубленный (Sans serif) | \textsf{text} | {\sffamily text} | {\sf text} |
Машинка (Typewriter) | \texttt{text} | {\ttfamily text} | {\tt text} |
Насыщенность | |||
Средняя (Medium) | \textmd{text} | {\mdseries text} | |
Жирный (Boldface) | \textbf{text} | {\bfseries text} | {\bf text} |
Начертание | |||
Прямое (Upright) | \textup{text} | {\upshape text} | |
Курсив (Italic) | \textit{text} | {\itshape text} | {\it text} |
Наклонное (Slanted) | \textsl{text} | {\slshape text} | {\sl text} |
Капитель (Small Caps) | \textsc{text} | {\scshape text} |
По умолчанию используется шрифт формы upright, серии medium, семейства roman.
Для изменения шрифта всего текста в документа необходимо подключить следующие пакеты:
\usepackage{helvet}
\usepackage{courier}
Для изменения шрифта для фрагмента текста:
{\fontfamily{phv}\selectfont фрагмент текста} текст документа
С таблицей семейств шрифтов можно ознакомится тут.
Каталог шрифтов - FontCatalogue.
Для управления разрывами предложений возможны такие команды
\\[3cm]
или \newline
- перенос текста на следующею строку, опциональный параметр [3cm] - величина вертикального отступа;\linebreak
- перенос текста на следующею строку с сохранением выравниванием по оба края;\mbox[text]
- запрет переноса текста по разрыву или по пробелу;Примеры горизонтальных пробелов
A\hfill B % пробел A\hrulefill B % горизонтальная линия A\dotfill B % точки
Примеры вертикальных пробелов
% вертикальный отступ в 1 см. \begin{flushleft} A \end{flushleft} \vspace{1cm} B % вертикальный заполнитель A\vfill B
Иногда может возникнуть необходимость вывести текст буквально, со всеми пробелами и знаками, для этого используется команда
\verb|text|
Кавычки (при подключенном пакете babel)
"<text"> или \flqq text \frqq - ёлочки
``text'' или \glqq text \grqq или \lq\lq text \rq\rq - лапки
\dq text\dq - кавычки
Полезные окружения:
Вывод текста в две колонки
\documentclass[a4paper]{article} \usepackage{multicol} \begin{document} \begin{multicols}{2} ... \end{multicols} \end{document}
Структура простой таблицы с тремя колонками и тремя строками. Колонки разделяются с помощью &, а ряды - \. У таблицы есть название (\caption
) и метка (\label
) для ссылки в тексте.
\begin{table}[t] \begin{tabular}{|r|c|l|} % горизонтальный разделитель \hline \No & Head & Head \\ \hline 1 & Text 1 & Text \\ \hline 2 & Text 3 & Text 4 \\ \hline \end{tabular} % название таблицы \caption{Table 1} % метка таблицы \label{table1} \end{table}
Окружение table принимает опциональный параметр с указанием места расположения таблицы.
Окружение tabular принимает опциональный параметр с указанием выравнивания в колонках (формат). Количество маркеров выравнивания указывает количеству столбцов, при указании символа | столбцы будут отделены вертикальной чертой.
Кроме выравнивания по горизонтали можно указать выравнивание по вертикали с помощью следующих маркеров, w - ширина столбца в одной из следующих метрик: in (дюйм), cm (сантиметр), em (внутренняя мера для LaTeX, равная букве m в текущем шрифте).
В таблице возможно рисовать разделяющие линии тремя способами
Пример ссылки на таблицу в тексте:
см. табл.\,\ref{table1} на странице \pageref{table1}
Столбцы и строки в таблице можно объединять с помощью следующих команд
Первый обязательный параметр соответствует числу объединённых колонок, второй — формату получившейся объединённой колонки, третий — тексту.
Возможно выделение строки с помощью цвета (пакет colortbl)
% пример окраски ряда в зеленый цвет \rowcolor{green}1 & 2 & 3 \\
Для добавления пустого места между рядами нужно добавить в преамбулу следующею команду
\renewcommand{\arraystretch}{yourvalue}
yourvalue - это множитель, значение по умолчанию 1.
У окружение tabular и его производных есть один недостаток - они не могут занимать больше одной страницы (т.к. рассматриваются LaTeX'ом как одна большая буква и не могут разбиваться постранично). Для поддержки таблицы с переносам на страницы нужны пакеты longtable или xtab.
Рассмотрим пример таблицы с окружением longtable. Это окружение позволяет задать три разных заголовка: для страницы с началом таблицы, для последующих страницах и для последней страницы с таблицей. Для подключения longtable нужно добавить в преамбулу \usepackage{longtable}
. Пример разметки таблицы:
\begin{longtable}[c]{|l|l|} \caption{Название таблицы} \label{tab:longtable} \\ \hline \textbf{Заголовок 1} & \textbf{Заголовок 2} \\ \hline \endfirsthead % конец заголовка на первой странице \hline \textbf{Заголовок 1} (продолжение) & \textbf{Заголовок 2} (продолжение) \\ \hline \endhead % заголовок для других страниц \hline Конец & Конец \\ \hline \endlastfoot % заголовок для последней страницы Столбец 1 & Столбец 2 \\ \hline Столбец 1 & Столбец 2 \\ \hline Столбец 1 & Столбец 2 \\ \hline \end{longtable}
Включение рисунков из внешних файлов происходит с помощью пакета graphics.
% добавить в преамбулу \usepackage{graphicx} \graphicspath{{images/}} % базовый путь к рисункам
В тексте документа подключаем файла командой \includegraphics[опции]{имя_файла}
, имя файла указывается без расширения.
Для TeX-файлов конвертируемых в pdf возможно подключение файлов png, jpg или pdf.
\begin{figure}[t] \centering \includegraphics[width=0.9\textwidth]{flowchart1} \caption{Блок-схема} \label{flowchart1} \end{figure}
Опциональный аргумент для окружения figure (table) предписывает (но не настаивает) где разместить рисунок (таблицу).
Набор математических формул в LaTeX одна из самых популярных возможностей. Из личного опыта могу это подтвердить формулы набираются быстрее и приятней чем в текстовых процессорах.
Для использования нам понадобятся пакеты amssymb, amsmath
% добавить в преамбулу \usepackage{amssymb,amsmath}
Математические формулы набираются в одном из трех окружений:
\( ... \), $ ... $
;\[ ... \], $$ ... $$
;Некоторые команды для формул:
\frac{a^2+1}{b+2}
- дробь;\sqrt{3}{a_i+4}
- квадратный корень;\int_a^b f(x) \, dx
- интеграл;\sum_{n=0}^{n} q_i
- сумма;\stackrel{*}{A}
- размещение объектов друг над другом;LaTeX игнорирует пробелы в формулах и расставляет их на свое усмотрение. Для добавления пробелов можно воспользоваться такими командами:
\;
широкий пробел;\:
средний пробел;\,
узкий пробел;\!
отрицательный узкий пробел;Дополнительное оформление:
\overline{text}
- горизонтальная черта над text;\underline{text}
- горизонтальная черта под text;\overbrace{text}
- фигурная скобка над text;\underbrace{text}
- фигурная скобка под text;Строки в матрице разделяются командой \\
, а столбцы &
\[ \left( \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{matrix} \right) \]
Система уравнений
\[ \left\{ \begin{aligned} &x+y=5 \\ &x-2y=2 \\ \end{aligned} \right. \]
Перечисление случаев
\[ |x| = \begin{cases} x, & x \ge 0, \\ -x, & x < 0 \end{cases} \]
Список символов
Греческие буквы
Дополнительный материал:
Пример вставки ненумерованного перечисление
\begin{itemize} \item Item 1 \item Item 2 \item Item 3 \end{itemsize}
Пример вставки нумерованного перечисление
\begin{enumerate} \item Item 1 \item Item 2 \item Item 3 \end{enumerate}
Для создания компактных списков (с меньшим количеством отступов по вертикали) можно воспользоваться пакетом paralist и соответствующими окружениями
# для нумерованного списка \begin{compactenum} \item point 1 \item point 2 \end{compactenum} # для ненумерованного списка \begin{compactitem} \item point 1 \item point 2 \end{compactitem}
Переназначение метки перед списком
\renewcommand{\labelitemi}{$\clubsuit$}
Список других символов можно посмотреть тут.
Для гибкой настройки списков можно воспользоваться пакетом enumitem, описание можно посмотреть тут.
Список с описанием
\begin{description} \item[Python] высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. \item[CVS] программный продукт, относящийся к разряду систем управления версиями. \end{description}
Для этого нам понадобиться пакет hyperref. В списке загружаемых пакетов hyperref, должен стоять последним, так как он модифицирует работу других пакетов.
\usepackage{xcolor} \usepackage{hyperref}
Настроим параметры пакета:
% цвета для гиперссылок \definecolor{linkcolor}{HTML}{799B03} % цвет ссылок \definecolor{urlcolor}{HTML}{799B03} % цвет гиперссылок \hypersetup{linkcolor=linkcolor, urlcolor=urlcolor, colorlinks=true}
Параметр colorlinks=true
указывает, что ссылки будут отображаться цветом, а не рамкой, вокруг них. Параметры linkcolor
и urlcolor
обозначают цвета ссылок и гиперссылок.
Команды вставки ссылок в тексте документа
\ref{label}
- ссылка на номер объекта с меткой label;\href{url}{text}
- ссылка на произвольный сайт с указанием имени ссылки;\url{url}
- просто ссылка на сайт;Подробнее про hyperref читаем тут.
При ссылке на объект с помощью \ref{prefix:label}
рекомендуется использовать следующие префиксы
Для вставки листинга кода можно воспользоваться встроенным окружением verbatim
\begin{verbatim} ... \end{verbatim}
Для вставки листинга с подсветкой кода понадобиться пакет listings
\usepackage{listings} \begin{lstlisting}[language=python] #!/usr/bin/python import sys import os os.system('meld "%s" "%s"' % (sys.argv[2], sys.argv[5])) \end{lstlisting}
Также пакет listings позволяет вставить исходники из файла
\lstinputlisting{listing.py}
Примеры настройки цвета листинга можно посмотреть в LaTeX syntax highlighting examples или Подсветка синтаксиса в Latex с кириллицей.
Команда для создания сноски
\footnote{текст сноски} \label{footnote1}
Ссылка на сноску
см. сноску\,\ref{footnote1} на стр.\,\pageref{footnote1}
В LaTeX есть окружение thebibliography для составления списка литературы. Оно очень похожа на процедуру enumerate, которая печатает список пронумерованных записей. В отличие от последнего, окружение thebibliography дополнительно печатает заголовок списка — слово "Литература" или что-то в этом роде, а каждая запись начинается с команды \bibitem
, совмещающей функции команд \item
и \label
. Отличается также команда для вывода ссылки на запись в списке литературы - \cite
.
Многие авторы используют гарвардский стиль для меток. В этом случае сначала указывают имя автора, а затем год издания, например Hellmann:2012.
Пример списка литературы с помощью thebibliography
% вставить в конце текста, на месте размещения списка литературы \begin{thebibliography}{9} \bibitem{book1} Author A.B. Book 1 \bibitem{book2} Author B.C. Book 2 \end{thebibliography}
Обязательный параметр 9 указывает на максимальное количество элементов в списке литературы.
В тексте на объявлению книгу можно сослаться так - \city{book1}
.
Список литературы thebibliography можно составлять заново для каждого документа либо поручить это занятие программе BibTEX. Она компилирует список цитируемой литературы, извлекая информацию из заранее составленной библиографической базы данных. BibTEX поставляется вместе с LATEX'ом. Библиографическую базу данных можно составить самостоятельно, а затем расширять по мере необходимости и подключать для каждого нового документа схожей тематики.
BibTEX умеет сортировать список литературы либо по очерёдности упоминания ссылок в тексте, либо по именам авторов.
Пример файла с литературой (lit.bib) для описания книги (с несколькими авторами), статьи и ссылки на сайт:
@book{authors:92, author = "Автор, А. А. and Автор, Б. Б.", title = "Книга 1", address = "М.", publisher = "Энергоиздат", year = 1992, numpages = 190, language = "russian" } @book{author:97, author = "Автор, В. В.", title = "Книга 2", address = "К.", publisher = "Вища школа", year = 1997, numpages = 230, language = "ukrainian" } @article{article:04, author={Author, X. X. and Author, Y. Y.}, title={Article 1}, journal={Naval Research Logistics Quarterly}, volume={8}, year = 1961, pages = {175-191} } @misc{proft:website, author = "Bloger", title = "the website title", month = feb, year = 2011, note = "\url{http://proft.me}" }
Пример TeX-документа с BibTEX
\documentclass[12pt]{article} \usepackage[utf8]{inputenc} \usepackage[T2A]{fontenc} \usepackage{natbib} \title{BibTeX in action} \author{proft} \date{\today} \begin{document} \maketitle \tableofcontents \section{Introduction} Lorem ipsum dolor sit amet, consectetur \cite{authors:92} adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim \cite[p. 57]{author:97} veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure \cite{article:04} dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint \cite{proft:website} occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \addcontentsline{toc}{section}{\bibname} \bibliographystyle{plain} \bibliography{lit} \end{document}
Обязательный параметр для \bibliographystyle
- стиль, который может быть одним из четырёх:
Ниже перечислены все типы записей со всеми обязательными полями:
Наполнять файл BibTEX списком литературы можно тут - выбираем тип записи, вбиваем данные в форму - получаем готовую запись для вставки в файл.
Сконвертировать специально сформированный текстовый файл в BibTEX можно с text2bib.
Пример создания макроопределения для выделения нотация (#1 - аргумент для команды \notion)
\newcommand\notion[1]{textit{#1}}
Пример создания макроопределения для выделения заголовков (#1 - аргумент для команды \head)
\newcommand\head[1]{textbf{#1}}
При работе с большими документами есть резон разбить одни файл на несколько составных и подключить
\documentclass{book} \input{preamble} \begin{document} \tableofcontents \include{chapter1} \include{chapter2} \end{document}
Дополнительное оформление, для трех основных частей документа
\frontmatter
- страницы нумеруются строчными римскими цифрами, для глав (chapters) генерится содержание без номеров;\mainmatter
- страницы нумеруются арабскими цифрами, для глав (chapters) генерится содержание с номерами;\backmatter
- страницы нумеруются арабскими цифрами, для глав (chapters) генерится содержание без номеров;\documentclass{book} \input{preamble} \begin{document} \frontmatter \include{dedication} \tableofcontents \listoftables \listoffigures \mainmatter \include{chapter1} \include{chapter2} \backmatter \include{proofs} \nocite{*} \bibliographystyle{plainnat} \bibliography{tex} \end{document}
Примеры оформления разных титульных страниц можно посмотреть в titlepages.
В заметке Equations in HTML (SVG + GIF) описаны способы вставки формул какgif, svg или с помощью javascript для специальных div-блоков. Пример вставки как gif-файла:
<img src="http://latex.codecogs.com/gif.latex?1+sin(x)" border="0"/>
Там же описаны способы вставки формул в редакторы FCK Editor, Tiny MCE, CK Editor.
Вставка формул с помощью Google Charts:
http://chart.apis.google.com/chart?cht=tx&chl=x^2
Поделиться формулами можно с помощью mathurl.com, по аналогии с tinyurl.com.
Вставка формул средствами javascript с помощью mathjax.com.
Конвертация LaTeX в изображения:
С помощью python.sty можно вставлять куски кода на python в TeX-документ. При компиляции TeX-документа результат работы python-скрипта будет вставлен в документ.
Подробности можно узнать в
Компиляция tex-документа в pdf/dvi
LaTeX преобразует размеченный исходный текст в печатный документ.
Для компиляции TeX в DVI
latex in.tex xdvi in.tex
Для компиляции TeX в PDF
pdflatex in.tex out.pdf
Оформление диссертации и автореферата
Для облегчения набора диссертации и автореферата по требованиям ВАК (Украина) можно воспользоваться пакетом vakthesis. Последние правки датированы 2009 годом. Обсуждение пакета ведется на форуме linux.org.ua.
Для облегчения набора диссертации и автореферата по требованиям ВАК (Россия) можно воспользоваться - Russian-Phd-LaTeX-Dissertation-Template .
В Arch Linux все установленные пакеты находятся в /usr/share/texmf-dist/tex/latex/.
Узнать путь к пакету можно так kpsewhich geometry.sty
.
Установка дополнительных пакетов описана в LaTeX/Installing Extra Packages.
Список пакетов по темам можно посмотреть в texcatalogue.sarovar.org. Также есть обзор популярных пакетов на русском языке.
Пример задания границ документа с помощью пакета geometry
% добавить в преамбулу \usepackage[left=1cm,right=1cm,top=1cm,bottom=1.5cm]{geometry}
Установка полуторного интервала для всего документа
% добавить в преамбулу \usepackage[onehalfspacing]{setspace}
Список интересных дополнительных пакетов:
Книги:
Справочная информация:
Блоги:
Полезные советы:
Подборка заготовок разных документов