LaTeX для новичков. Часть 2:Движки и преамбула

LaTeX для новичков. Часть 2:Движки и преамбула Латех, Совет, LaTeX ПО, Длиннопост

Часть 0 --- http://pikabu.ru/story/latex_dlya_novichkov_vvedenie_4999494

Часть 1 --- http://pikabu.ru/story/latex_dlya_novichkov_chast_1redaktory...



Поскольку LaTeX это текст, обрабатывать его можно по разному. За 30 с лишним лет истории международного использования было написано несколько движков которые превращают текст в профессионально выглядящий документ.

LaTeX для новичков. Часть 2:Движки и преамбула Латех, Совет, LaTeX ПО, Длиннопост

TeX. Он же Plain TeX. Самый старый движок, созданный задолго до появления PDF, поэтому работающий с собственным форматом файлов DVI (правда с последущей ковертацией в PDF).

+Минимальное потребление ресурсов

+Был портирован под все актуальные и не очень платформы

-Про PDF он действительно ничего не знает

-Использует 8-битное представление символов. Поэтому поддержка кириллицы в нём это целая череда хаков и костылей

-Шрифты. Поддерживает только шрифты в архаичном формате Type 1 Font

LaTeX для новичков. Часть 2:Движки и преамбула Латех, Совет, LaTeX ПО, Длиннопост

PDFTeX. Как PlainTeX, только работающий напрямую с PDF. Долгое время (все 200Х годы) являлся основным движком для LaTeX.

+Работа напрямую с PDF, поэтому при использовании доп. пакетов возможно получить рабочие ссылки и полноценный векторный PDF со встроенными картинками

+Так же портирован на многие платформы

-Всё те же "8-бит хватит всем". Требует плясок с бубном аналогичных plain TeX для поддержки кириллицы

-Шрифты. Теоретически поддерживает Type 1 и TrueType. Но для поддержки последнего требуется конвертация шрифтов в Type 1 и использование неочевидных хаков

LaTeX для новичков. Часть 2:Движки и преамбула Латех, Совет, LaTeX ПО, Длиннопост

XeTeX. Первый движок с полноценной поддержкой Unicode. Родная поддержка всех языков мира, включая языки с написанием право-налево (автор видел историю студента из Израиля который очень радовался что открыл для себя LaTeX, избавивший его от багов MS Word при работе со смешанным направлением написания).

+Работа напрямую с PDF (точнее через xdv, но он без проблем конвертируется в PDF самим движком). Ссылки, корректный текст в названии файла (привет MS Word 2007), копипаст текста --- работают идеально. Полноценная поддержка векторных изображений в выходном файле (например график или схема начерченная прямо в LaTeX будут смотреться правильно на любом формате)

+Полноценная поддержка Unicode. Кириллица везде, даже в названиях команд и метках. Требуется лишь написать преамбулу правильно

+Поддержка шрифтов --- OpenType, TrueType и архаичные Type 1. Без конвертаций, допиливаний и прочего

+Продвинутая типографика. Поддержка лигатур, кернинга и прочих вкусностей. Подробности здесь (ост. английский) http://nitens.org/taraborelli/latex

Автор использует именно этот движок, из-за его неприхотливости и обратной совместимости со старыми пакетами.

LaTeX для новичков. Часть 2:Движки и преамбула Латех, Совет, LaTeX ПО, Длиннопост

LuaTeX. Модный и молодёжный. Bleeding-edge от Legacy системы. Активно разрабатывается на сегодняшний день. Предполагается что совместим с XeTeX.

+Скриптуется на Lua. Полный доступ к внутренностям движка из скриптов. Возможно даже игнорирование самого LaTeX, и описание всего документа в Lua.

+Поддержка шрифтов

+Поддержка Unicode

+Хорошо интегрирован с грандиозной рисовалкой-чертилкой, позволяет чертить бОльшие объемы данных чем остальные движки

-Заскриптован изнутри, небыстро стартует и неторопясь собирает документы

-Потребление ресурсов

-Сломана совместимость со старыми русскоязычными пакетами

LaTeX для новичков. Часть 2:Движки и преамбула Латех, Совет, LaTeX ПО, Длиннопост

Проект LaTeX состоит из двух основным частей:

1) Преамбула --- объявление класса документа в первой строке и включение пакетов с их настройкой в последующих

2) Сам документ --- ограничен \begin{document} \end{document}


Автор в своей практике использует следующие классы документов:

article, extarticle --- основной класс документов, имеет ограниченную структуру (не включает в себя главы). Прост, отлажен, легко допиливается под отчёты по лабораторным. оригинальный article позволяет использовать основной размер шрифта до 12pt включительно. Для использования нестандартных размеров основного шрифта требуется использовать класс extarticle.

eskdx --- старый пакет, позволяющий быстро оформить текстовые документы с гостовскими рамками. Поддерживает форматы А4-А1. Автор использовал сей пакет для оформления плакатов к курсовым проектам, что позволило сэкономить примерно час на вёрстке каждого листа (в сравнении с использованием фотошопа и компаса).

G7-32 --- ГОСТ 7.32-2001 Р. Основной ГОСТ для оформления НИР и курсовых в университетах. Не входит в стандартную поставку. Довольно сложен. Включает в себя дополнительные стили библиографии и расширенную систему сборки (для студентов IT-специальностей). В комплекте идёт весьма подробная "рыба", с занимательными примерами оформления (например длинные таблицы).


Подключение пакетов в LaTeX осуществляется типовой командой:

\usepackage[опция1,опция2...]{название_пакета}

Стоит обратить внимание, что все команды в LaTeX имеют аналогичный порядок использования:

\название_команды[доп.опция1,доп.опция2...]{аргумент команды}

Аргумент команды может быть пустым, или включать в себя другие команды.


Также приведем преамбулу для XeLaTeX, с поддержкой кириллицы везде-где-можно и минимально заданным внешним видом. Данная преамбула может быть использована с LuaLaTeX если убрать использование пакета cleveref. Данный пакет использует старый костыль для представления кириллицы в восьмибитной кодировке, а именно \cyra = "а", \cyrb = "б" и т.д. Поддержку этого костыля из LuaLaTeX убрали, поэтому использующие это вызывают ошибки при сборке. Кто знает как вернуть, прошу написать в комментариях.



Сама преамбула и Hello World. Если у вас не собирается пример, ругаясь на undefined command, проверьте переносы --- при копипасте с пикабу могли появиться лишние.

\documentclass[a4paper]{article}%Размер страницы и тип документа

\usepackage[a4paper,top=1.5cm, bottom=1.5cm, left=2cm, right=1cm]{geometry} %Настройка полей документа

\usepackage{xecyr}

\usepackage{xunicode}

\usepackage{mathtext}

\usepackage{amsmath, amsfonts, amssymb}%Математические вкусности (нумерованные формулы)

\usepackage{xltxtra}%Поддержка полезностей

\usepackage{unicode-math}%Поддержка любых символов в формулах, например кириллицы в индексах

\usepackage{mathtools}%Прямое указание типа дробей и прочее

\usepackage{etoolbox}

\usepackage{polyglossia}%Включение переносов

\setdefaultlanguage[babelshorthands=true]{russian}

\setotherlanguage{english}

\usepackage{fontspec}

\defaultfontfeatures{Ligatures={TeX,Historic},Renderer=Basic} %Свойства шрифтов по умолчанию

\setmainfont{CMU Serif}%Основной шрифт

\setsansfont{CMU Sans Serif}%Шрифт без засечек (для выделения)

\setmonofont{CMU Typewriter Text}%Моноширинный шрифт (Для кода)

%\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{Latin Modern Math}

\DeclareSymbolFont{letters}{\encodingdefault}{\rmdefault}{m}{m}%Магия прямого шрифта в индексах и кирилиццы в них же. Для замены прямого на курсив, поменять вторую m на it

\usepackage{graphicx}%Вставка картинок правильная

\usepackage{wrapfig}%Обтекание фигур (таблиц, картинок и прочего)

\usepackage[export]{adjustbox}%Обрезка, подгонка картинок

\usepackage{longtable}%Многостраничные таблицы

\RequirePackage{caption}

\DeclareCaptionLabelSeparator{defffis}{ --- } %Разделитель в подписях к рисункам

\captionsetup{justification=centering,labelsep=defffis}

\usepackage{subfig} % Подкартинки, с собственными подписями и ссылками


\usepackage{tikz}%Встроенная рисовалка

\usetikzlibrary{calc,shapes,arrows,chains,fit}%Библиотеки для рисовалки. DSP требует установки отдельно http://www.texample.net/tikz/examples/fir-filter/

\usepackage{pgfplots}%Встроенная чертилка. Работает внутри рисовалки.

\tikzset{every picture/.style={line width=1pt}}%Смена толщины линий на более толстые

\tikzset{

ultra thin/.style= {line width=0.2pt},

very thin/.style= {line width=0.4pt},

thin/.style= {line width=1pt},% 0.4 thin is the default

semithick/.style= {line width=1.3pt},

thick/.style= {line width=1.6pt},

very thick/.style= {line width=2pt},

ultra thick/.style={line width=2.5pt}

}

\usepackage{pgfplotstable}%Черчение данных из файлов

\usepgfplotslibrary{groupplots}%Множественные графики. График над графиком.

\usetikzlibrary{external} %Ускоряет сборку документов с картинками (?)

%\pagenumbering{gobble}%Когда включено, отключает нумерацию страниц

\usepackage{lscape}%Вставка страниц в ландшафтной ориентации

\usepackage{pdflscape}%Корректная работа ландафтных страниц в PDF

\usepackage{hyperref} %Поддержка ссылок в PDF. Делает все ссылки в PDF рабочими

\usepackage[russian]{cleveref} %Умные ссылки -- \cref{fig:123} ссылается на картинку, "рис. 123". Умеет ссылки на список, причем умные

\title{УмноеНазваниеДокумента} %Название документа

\author{Ленивый Автор} %Автор

\begin{document}

\maketitle

\end{document}



p.s. Если кто-то дочитал до сюда из-за фотки собачки, прошу эти храбрые души отписаться в комментариях.

p.p.s. Указания на ошибки и дополнения, по прежнему приветствуются

p.p.p.s У меня уже целых шесть подписчиков! Так и L4ever догоню ^_^