Ivan Veselov (dying_sphynx) wrote,
Ivan Veselov
dying_sphynx

Categories:

Как я готовил презентацию. Часть 1. LaTeX.

Когда наступила надобность сверстать слайды для следующей презентации — я наконец решил воспользоваться LaТеХ-ом (это уже далеко не первый мой подход, но пока самый продуктивный). В процессе работы у меня возникали различные мелкие задачи: нарисовать диаграмму, нарисовать синтаксическое дерево, нарисовать несколько деревьев "в разных позах", раскрасить исходный код, ну и наконец всё это представить в виде более или менее симпатичных слайдов.

Поскольку часто полученные знания были достойны того, чтобы ими делиться, а весь этот подход по сравнению с традиционным WYSIWYG (в лице Open или Microsoft Office) весьма любопытный и просветляющий — я решил написать на эту тему несколько постов. Они не будут претендовать на роль учебных, т.к. я постараюсь быть кратким и выражать самую суть, чтобы позволить прочувствовать эту атмосферу, заинтересовать и дать толчок к дальнейшему изучению. Кроме того, я сам только изучаю LaTeX, потому не могу служить авторитетом в данной области.

Итак, начнём с LaTeX. Про него написано множество хороших статей и книг, как технического, так и идеологического характера (например почему WYSIWIG — это плохо, а разделение содержания и представления во время создания документа — хорошо). LaTeX — это некая большая надстройка над системой компьютерного набора ТеХ, разработанной не кем иным, как Дональдом Кнутом, знакомым многим по объёмному труду по анализу алгоритмов и другим хорошим работам и высказываниям (мне например нравится "Premature optimization is the root of all evil"). Интересно, что версия ТеХ-а сходится к π (например сейчас у меня latex --version выдаёт 3.1415926).

Основная идея LaTeX-а проста: разделение содержания и представления. TeX-файл представляет собой обычный текстовый файл, в котором к собственно контенту добавляется некие указания, относящиеся, в основном, к логическому структурированию текста — разбиение на главы, разделы, определение сносок, набор формул, таблиц и прочего. Таким образом, в процессе создания документа автор мало отвлекается на визуальное оформление — это за него потом сделает система, да ещё и с помощью весьма умных алгоритмов вёрстки (Кнут же их создавал! И обещает $327.68 за найденный баг в системе, но их вроде с 1995-го не находят). В принципе, можно сравнить этот подход с "контент в HTML + стили в CSS".

Кроме того, система позволяет расширять себя с помощью макросов, что привело к появлению огромного числа наборов этих самых макросов, собранных в пакеты, способных удовлетворить многие нужды пользователей. Собственно LaTeX — и есть большая сборка различных пакетов, значительно упрощающая создание документов, но не превосходящая по возможностям сам ТеХ (то есть, теоретически, всё то, что можно сделать в LaTeX-e можно сделать и в чистом TeX-e).

Касательно технических подробностей и "как же всё это попробовать": LaTeX является свободно распространяется вместе с исходниками по лицензии LPPL (LaTeX Project Public License), доступен для Linux, MacOS, Windows и прочих. Я пробовал только под Linux: нужно поставить пакет texlive (у меня в ArchLinux минимальная дистрибуция LaTeX содержится в пакетах texlive-core и texlive-bin, размер пакетов примерно 70 мегабайт).

Окей, посмотрим теперь как выглядит в TeX-e одна очень простая статья:


\documentclass[11pt]{article} %% type of document -- we want article
\usepackage[utf8]{inputenc} %% we use utf8, because it rules

% defines the title
\author{Ivan N. Veselov}
\title{Minimalism in \LaTeX art}
\date{\today}

\begin{document}

% generates the title
\maketitle

% insert the table of contents
\tableofcontents

\section{Some Interesting Words}
Well, and here begins my lovely article. I hope you enjoy it, but I'm a bit
hesitating because it is so short \ldots{}

\begin{itemize} %% some list
  \item Item A
  \item Item B
  \item Item C
\end{itemize}

\section{Good Bye World}
\ldots{} and here it ends.

\end{document}



Как видно, команды LaTeX-a начинаются со знака "backslash" \. Некоторые из них принимают параметры, которые заключаются в фигурные скобки (обязательный параметр) или в квадратные (опциональные параметры). Сам документ состоит из преамбулы и тела документа. В преамбуле указывается класс документа (статья, книга, презентация, письмо и т.д.), используемые пакеты макросов, собственные макросы, информация об авторе и т.д. В теле документа, которое начинается после команды \begin{document}, находится собственно содержимое документа с командами разметки.

В результате, после команды
pdflatex example1.tex
мы получаем отличную статью в формате PDF :) А здесь приведу пример, конвертированный в PNG:



Кстати, если собираетесь писать в документе по-русски — необходимо использовать пакет babel:
\usepackage[russian]{babel}
и доставить кириллические шрифты (если вы устанавливали какую-нибудь минимальную сборку — их может не быть, и LaTeX не замедлит об этом напомнить).

Отдельная приятность LaTeX-а — очень мощная поддержка вёрстки математических формул, которую я с радостью использовал в дипломе. Я начал использовать LaTeX именно в качестве генератора красиво выглядящих и удобно набираемых формул, которые я потом превращал в картинки и вставлял в диплом. Кто пробовал набирать более или менее сложные формулы в Офисе — весьма оценят эту возможность LaTeX-a. Конечно же для того, чтобы научиться их писать — нужно вначале почитать учебник (ссылки на них находятся в конце статьи), однако всё довольно понятно и быстро запоминается. Кстати, формулы в Википедии задаются именно в формате ТеХ-а.

Вот несколько формул на закуску.

Исходник в .tex:


\documentclass{article}
\usepackage{amsmath}
\begin{document}
All of us know that $sin^2 x + cos^2 x = 1$    % simple inlined formula

But what about calculating this?
$$
\frac{\pi}{\sum\limits_{m=0}^{\infty}{\frac{2}{(4n + 1)(4n + 3)}}}
$$

Continued fraction (with further formulae numbering):
\begin{equation}
\cfrac{1}{\sqrt{2}+
 \cfrac{1}{\sqrt{2}+
  \cfrac{1}{\sqrt{2}+\dotsb
}}}
\end{equation}

And something more advanced:
\begin{equation}
\Re{z} =\frac{n\pi \dfrac{\theta +\psi}{2}}{
        \left(\dfrac{\theta +\psi}{2}\right)^2 + \left( \dfrac{1}{2}
        \log \left\lvert\dfrac{B}{A}\right\rvert\right)^2}.
\end{equation}
\end{document}



Результат:



Итак, подытожим. Что мы получаем, изучив LaTeX?


  • возможность верстать сложные документы в любимом текстовом редакторе (например vim или emacs). Хотя если хочется каких-то специализированных графических редакторов — их тоже полно, например Kile

  • отличные, профессиональные шаблоны для вёрстки just for free

  • инструмент для удобной генерации математических формул любой сложности

  • знание формата, который является стандартом де-факто для публикации статей многих математических и computer science конференций, журналов и т.п.

  • инструмент для быстрого создания презентаций

  • возможность последующей конвертации в PDF, PostScript, DocBook, HTML и другие форматы



Какие же могут возникнуть проблемы?

  • потеря возможности легко "копипэйстить" из чужих вордовских документов в свои, что довольно актуально для студентов :)

  • как всегда в чём-то хорошем — требуется некоторое время на изучение



В следующих постах я собираюсь перейти ближе к делу и рассказать о том, как я делал презентацию с помощью пакета beamer, генерировал картинки разных графов и деревьев для последующей вставки в ТеХ-овский документ, а также о том, как можно рисовать деревья средствами самого LaTeX-а. Stay tuned!

Полезные ссылки:

Tags: latex, typesetting
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 9 comments