LaTeX

индекс
144,89

Подготовка учебных и научных документов в LaTeX

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

Процесс будет рассматриваться со стороны Ubuntu/TeX Live, хотя всё рассказанное можно будет сделать и в Windows с использованием MikTeX и на Маке с использованием MacTeX. Также я затрону дополнительные open-source пакеты (версии которых, опять же, есть для всех операционных систем), которые помогут в процессе и опишу какие действия необходимо предпринять, чтобы получившийся в результате документ выглядел максимально близко к желаемому :). Это Inkscape, Gnumeric и пакеты pgfplots и pgfplotstable для LaTex.

Если вы в первый раз используете LaTeX, рекомендую стандартный вводный документ (англ., PDF) и небольшой справочник по форматированию текста (англ.).
В качестве документации к pgfplots подойдёт официальная: pgplots (англ., PDF), pgplotstable (англ., PDF).

Установка


Устанавливаем LaTeX:

$ sudo apt-get install tex-common texlive-base texlive-base-bin texlive-common texlive-doc-base texlive-fonts-recommended texlive-lang-cyrillic texlive-latex-base texlive-latex-recommended

Создадим тестовый документ в любом редакторе (для gedit вы можете установить gedit-latex-plugin). Условимся, что наш основной документ будет называться work_0001_2010.tex, а все относящиеся к нему файлы будут использовать это название + какой-либо постфикс:

$ touch ./work_0001_2010.tex
$ gedit ./work_0001_2010.tex

Вставим представленный текст в качестве содержимого, сохраним:

\documentclass[a4paper,12pt]{article}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc} % любая желаемая кодировка
\usepackage[russian,english]{babel}
\usepackage[pdftex,unicode]{hyperref}
\usepackage{indentfirst} % включить отступ у первого абзаца

\title{Заголовок документа}
\author{Имя автора}
\date{02/2010}

\begin{document} % начало документа

\maketitle % заголовок

Тестовый документ, подготовленный в \LaTeX
\end{document} % конец документа

Скомпилируем и посмотрим, что получилось:

$ pdflatex ./work_0001_2010.tex
$ evince ./work_0001_2010.pdf

Если всё было сделано правильно — перед нами готовый результат.

Титульная страница


Итак, генерируемая по умолчанию страница обычно не соответствует тому, что ожидают преподаватели или ученики. Я просто покажу шаблон и то, что должно из него получиться — результат больше похож на ожидания, но конечно, при желании или необходимости, вы можете изменить его как заблагорассудится.

\begin{document} % начало документа

\begin{titlepage} % начало титульной страницы

\begin{center} % включить выравнивание по центру

\large Российский технический институт <<ACME-ТЕХ>>\\[4.5cm]
% название института, затем отступ 4,5см

\huge Теоретическая работа \No 5\\[0.6cm] % название работы, затем отступ 0,6см
\large по~теме <<Хабраобщество. Внутреннее и внешнее влияние>>\\[3.7cm]
% тема работы, затем отступ 3,7см

\begin{minipage}{0.5\textwidth} % начало маленькой врезки в половину ширины текста
\begin{flushleft} % выровнять её содержимое по левому краю
\emph{Автор:} Цокотуха~Флай\\
\emph{Группа:} 7822\\
\emph{Факультет:} МХХПХХ\\
\emph{Преподаватель:} Шаманова~Эллина~Канделябровна
\end{flushleft} % конец выравнивания по левому краю
\end{minipage} % конец врезки

\vfill % заполнить всё доступное ниже пространство

{\large \today} % вывести дату
{\large \LaTeX} % вывести логотип LaTeX

\end{center} % закончить выравнивание по центру

\thispagestyle{empty} % не нумеровать страницу
\end{titlepage} % конец титульной страницы

\tableofcontents % содержание

\section{Глава I}
\section{Глава II}
\section{Глава III}
\section{Глава IV}

Тестовый документ, подготовленный в \LaTeX
\end{document} % конец документа

Содержание включено для примера и оно обновится в соотвествии с главами только при следующей компиляции — это правило для LaTeX. В результате всё это должно выглядеть так:



Схемы


Есть много способов вставить изображение в LaTeX-документ, и вам подойдёт любой из них, но так как я обо всём рассказываю, то должен рассказать хотя бы об одном. Я подготавливаю схемы в Inkscape (свободный векторный редактор), экспортирую их в PDF и затем вставляю в LaTeX-документ.

Inkscape очень удобен для подготовки схем — у прямых линий (да и у фигур и кривых) можно установить с любых концов стрелки или сделать их пунктирными (Object → Fill and Stroke → Stroke Style), сектора можно делать ограничивая углы развёртки у круга, любую фигуру можно залить стандартными для таких схем кистями (хоть в полька-точечку (Object → Fill and Stroke → Fill Style → Polka dots)), кривые удобно рисовать инструментом Кривая Безье и кроме всего прочего есть «примагничивание» (правда оно почему-то включается в свойствах документа (File → Document Properties → Snap)). Практически любой график или схему из методички/учебника можно перенести в векторный вид за полчаса.

Итак, экспорт из Inkscape. Исходный файл, по принятому ранее соглашению, назовём work_0001_2010_graph01.svg

В меню File → Save as… выберем формат *.pdf:



И отметим конвертацию шрифтов в пути (в Stroke Style → Width у надписей советую ставить значения 0.1-0.3, иначе надписи в pdf-файле получаются очень толстыми):



Теперь в шапку LaTeX-документа наряду с остальными пакетами нужно добавить пакет graphicx:

\usepackage{graphicx}

А в тело документа вставить новую картинку:

\newpage

Картинка:

\begin{figure}
\centering
\includegraphics[width=0.9\textwidth]{work_0001_2010_graph01.pdf}
\caption{Преломление света}
\label{fig:graph01}
\end{figure}

Заново компилируем:

$ pdflatex ./work_0001_2010.tex
$ evince ./work_0001_2010.pdf

И вот результат:



Пакеты pgf


Пакет pgfplotstable помогает очень гибко настраивать/составлять таблицы и позволяет считывать таблицу из csv-файла при компиляции.

Пакет pgfplots позволяет строить практически любые цветные настраиваемые графики на основе таблиц.

Установка пакетов на Windows/MikTex описана в документации (англ., PDF), в случае Ubuntu нужно сделать следующее:

$ sudo nano /etc/apt/sources.list

В конец файла добавить (заменять версию lucid на вашу не нужно):

deb ppa.launchpad.net/johannes-reinhardt/ppa/ubuntu lucid main

Выполнить:

$sudo apt-get update
$sudo apt-get install pgfplots


Таблицы


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

Создадим таблицу, в первых трёх столбцах которой будут различные значения, а в четвёртом столбце — среднее по этим трём значениям и сохраним её под именем work_0001_2010_table01.gnumeric (кстати, gnumeric умеет сохранять таблицы в формате LaTeX, но мы намереваемся использовать пакет pgfplotstable, поэтому не будем этого делать):



Теперь необходимо экспортировать таблицу в текстовый файл. Важно заметить две вещи, первая: в текстовый файл импортируется только текущий лист (Sheet), вторая: для того, чтобы удобно работать со столбцами при использовании пакета pgfplotstable, необходимо в первой строке таблицы указать короткие однословные названия (алиасы) для столбцов.

Таблицу можно сохранить в CSV, но если вы используете русскую локаль в операционной системе, то дробные числа в таблице будут представлены с использованием запятой. Так что лучше сохраним файл в формате Text (configurable), а назовём его, для удобства, work_0001_2010_table01.dat



После этого вас спросят о дополнительных настройках — символ конца строки установите в соответствии с вашей операционной системой, разделитель — «пробел» и отключите кавычки.



В результате должен получиться такой файл:

a b c mid
0.09 0.07 0.072 0.0773333333333333
0.15 0.073 0.073 0.0986666666666667
0.155 0.074 0.8 0.343
0.156 0.078 0.9 0.378
0.17 0.079 0.99 0.413
0.18 0.08 0.1 0.12
0.189 0.09 0.12 0.133
0.192 0.1 0.14 0.144
0.195 0.12 0.153 0.156
0.2 0.128 0.16 0.162666666666667

Теперь можно вставить таблицу в LaTeX-документ. Добавьте в заголовок:

\usepackage{pgfplotstable}

Теперь, в теле документа, настроим вывод у пакета pgf (запятые в качестве дробных разделитей, разделитель в файлах данных по умолчанию пробел, округление до шести знаков) и загрузим файл с данными, привязав его к алиасу midvalues:

\pgfkeys{/pgf/number format/.cd,precision=6,use comma,fixed,1000 sep={}}

\pgfplotstableread{work_0001_2010_table01.dat}\midvalues

Теперь опишем саму таблицу:

\newpage

Таблица

\begin{table}[h]
\centering
\caption{Средние числа}
\pgfplotstabletypeset[
    columns={a,b,c,mid}, % алиасы колонок, определённые в первой строке таблицы
    columns/a/.style={ column name=Значение $a$ }, % стиль столбца: определяем только заголовок
    columns/b/.style={ column name=Значение $b$ }, % стиль столбца: определяем только заголовок
    columns/c/.style={ column name=Значение $c$ }, % стиль столбца: определяем только заголовок
    columns/mid/.style={ column name=Среднее значение }, % стиль столбца: определяем только заголовок
    every head row/.style={ before row=\hline, after row=\hline\hline }, % одиночная линия над и двойная линия под первой строкой таблицы
    every last row/.style={ after row=\hline }, % одиночная линия под последней строкой таблицы
    every first column/.style={
        column type/.add={|}{} % вертикальная линия перед первым столбцом
    },
    every last column/.style={
        column type/.add={|}{|} % вертикальные линии с обоих сторон последнего столбца
    }
]\midvalues \\[0.5cm]
\label{tab:midvalues}
\end{table}

Снова перекомпилируем файл, и вот результат:



Графики


В завершение построим график по данной таблице.

Добавьте в заголовок документа:

\usepackage{pgfplots}
\pgfplotsset{compat=newest} % использовать новые возможности pgfplots

И, в тело документа:

\newpage

\begin{tikzpicture}
    \begin{axis}[ % начать график
        xlabel=Измерение, % метка для оси x
        ylabel=Значение, % метка для оси y
        xtick align=center, % риски оси x внутри графика
        yminorgrids, ymajorgrids, % линии для основных и второстепенных значений по оси y
        xmajorgrids, % линии для основных значений по оси x
        minor y tick num=4, % 4 второстепенных риски между каждыми основными рисками по оси y
        legend style={at={(0.74,0.74)}, anchor=south west} % позиционирование легенды относительно нижнего левого угла
    ],
        \addplot[green!40!black,mark=x] table[y=a] from \midvalues; % тёмно-зелёным отметить данные из столбца 'a' на оси таблицы midvalues
        \addlegendentry{$a$ (таб. \ref{tab:midvalues})} % добавить линию на легенду
        \addplot[red!60!black,mark=x] table[y=b] from \midvalues; % тёмно-красным отметить на оси y данные из столбца 'b' таблицы midvalues
        \addlegendentry{$b$ (таб. \ref{tab:midvalues})} % добавить линию на легенду
        \addplot[yellow!80!black,mark=x] table[y=c] from \midvalues; % тёмно-жёлтым отметить на оси y данные из столбца 'c' таблицы midvalues
        \addlegendentry{$c$ (таб. \ref{tab:midvalues})} % добавить линию на легенду
        \addplot[blue!80!black,mark=o,smooth] table[y=mid] from \midvalues; % тёмно-синей сглаженной линией отметить на оси y данные из столбца 'mid' таблицы midvalues
        \addlegendentry{Среднее (таб. \ref{tab:midvalues})} % добавить линию на легенду
    \end{axis}
\end{tikzpicture}

Мы указываем только значения для оси y и pgf автоматически подбирает значения на оси x, но в команде addplot также можно указать и столбец-источник для оси x: table[x=mid,y=b]

Снова перекомпиляция, и теперь мы видим отличный график-за-пять-минут по нашим значениям (значения я подбирал наугад, поэтому выглядят они не очень удачно (чуть лучше на графике с логарифмическими осями, однако задание сделать его таковым я лучше оставлю вам на дом), но надеюсь суть понятна).



Я привёл лишь простейший пример, но пакет pgfplots обладает настолько широкими возможностями, что если вы заинтересованы в данной теме, то вы просто обязаны хотя бы очень подробно рассмотреть всё руководство по пакету (англ., PDF).

Заключение


Итак, LaTeX и pgfplots — удобный способ оформлять не только текстовые документы с формулами, но и целые работы со схемами, графиками и таблицами. Причём делать их просто и удобно. Желаю вам большого количества полезных и легко созданных научных работ!
+91
20 февраля 2010, 23:54
178

комментарии (81)

+1
seiros #
Очень подробно! Спасибо!
По прочтении последних постов про латех, уже подумывваю об измене родному OOO…
+2
Ferroman #
Замечательная статья! За таблицы и графики — отдельное спасибо.
+6
qrazydraqon #
Ну прям всё в одну кучу.

Однако же два замечания:
1) Использование сторонних редакторов для схематичных изображений. Вас не пугает расхождение в шрифтах и сложности при использовании формул на картинках? Не лучше ли сразу ориентировать народ на PGF/TikZ или даже прямо на Metapost (да, второй вариант при наличии первого выглядит безумным, но для полноты картины можно и помянуть)?
2) Титульный лист. Несколько пугает ручной набор всего этого добра. Как-то не верится, что нет стандартных стилевых пакетов для подобного оформления. То есть AMS и все прочие имеют пакеты для принятого у себя оформления титульной страницы, неужто нет ничего для отечественных стандартов?
+2
bryndin #
обычно на развлечения с tikz нет времени. нужно быстро нарисовать и вставить.
в редакторе можно накидать, передвинуть, и все готово. для tikz его еще отрисовать на бумаге нужно сначала, ибо в нем хрен что подвигаешь руками.

так что tikz — это если уж очень много времени свободного.
+1
bryndin #
да, было бы неплохо, если бы на сайте университета лежал шаблон оформления рефератов, курсовиков и особенно дипломов.
это бы сняло весь геморрой с оформлением. хорошие журналы, например, обязуют использовать их шаблоны. и всем в итоге хорошо.
хотя учитывая ничтожный процент пользователей латеха в сравнении с офисами…

0
IoGA #
Мой факультет на своём сайте предоставляет файл стиля именно для публикаций в своих журналах.
А приличные журналы, как правило, либо берут деньги за переделку из различных офисных форматов, либо вовсе их не принимают…
+1
MaximKat #
юзайте пакет disser, там все по госту для дипломов
0
ulysses #
Для диплома нет ГОСТ, к сожалению.
0
MaximKat #
Не знаю ГОСТ или не ГОСТ, но disser сделан по всем правильным стандартам какие нужны для дипломов, никогда не было никаких проблем
+2
ulysses #
В том и сложность, что каждому учебному заведению практически всегда нужны свои особенные шаблоны для дипломов.
0
MaximKat #
ну значит это мне повезло :)
0
ivlis #
Я немного подогнал стандартный article и вполне проканало. Даже Computer Modern.
0
Sap_ru #
Уууу… дорогушека… ЕСКД, ЕСПД и иже с ними Вам в руки. Есть ГОСТ на дипломы. Там написаны шрифты, заголовки, отступы, подписи, абазцы, нумерация страниц и т.п.
0
ulysses #
Нет никакой свящи между ЕСКД и ГОСТами. Из ГОСТов самое близкое к диплому это ГОСТ «Отчёт о НИР» (7.32-91). Конструкторская документация же и подавно не имеет никакого непосредственного отношения к диплому. Если вашему вузу захочется, он может потребовать использовать 7.32-91 или ЕСКД, но это будет произвол конкретного вуза и ничего более.
+1
dimavs #
Еще PSTricks очень неплох для рисования.
+6
MAGNUS8 #
TeX — это, конечно, круто. Дональд Кнут и все такое прочее. Я все это очень уважаю, даже диплом и диссертацию по матмоделированию в LaTeXе делал.

НО! Слишком много заморочек и эстетствующего пикселодрочерства там, и ориентировано все на бумажный вывод, напр. А4. Т.е. на отпечатку на мертвых деревьях. Каждый думает, что он нетленки пишет и трясется над их внешним видом, и Кнут именно для этого создавал тех. Но не стоит оно того в подавляющем большинстве случаев.

Главное — смысл, а форма представления… Форма должна быть живой, изменчивой (не зажатой «бумажными проблемами» — жесткими отступами, границами, интервалами), доступной для быстрого и эффективного совместного одновременного редактирования и комментирования, отвязанной от формата (А4, А5 и вообще бумаги), в универсальном формате (XML и его производные), с возможностью моментального поиска и парсинга, агрегирования из нескольких источников, метаданные и семантическая разметка и т.д. Вы поняли, о чем я. Упрощенный пример. Если есть выбор — работать с книгой в формате chm или pdf — я выбираю chm. Чтобы она выглядела так, как я хочу, а не так, как нужно для распечатки на А4.

ТеХ ориентирован на типографскую печать. И напоминает в этом супер-пупер привод для прожига CD-дисков. Устаревшая технология, короче. Для электронной формы представления такая болезненная изощренность не нужна, зато нужно другое.

Хотя популярность ТеХа в научных кругах крайне высокая и растет. Не удивительно.
+2
John_Minority #
Just do It.
Сделайте транслятор теховый документов вместе с графикой и таблицами в какой нибудь xml формат документов, даже можно в xhtml + svg/ зачем пустословить.
+12
MaximKat #
> Если есть выбор — работать с книгой в формате chm или pdf — я выбираю chm
а я выбираю pdf, потому что он выглядит как хотел автор, а не как взбрело в голову рендереру
+2
Apostol #
Лихо вы pdf к А4 привязали. ;) Или имелась в виду резиновая вёрстка?
Да и «как я хочу» в отношении chm, тоже как-то не укладывается. Под линуксом какие только просмотровщики не перепробовал, везде из-за виндовой кодировки документа какие-то проблемы, как не с самим текстом, так с содержанием или индексацией. И без установки виндовых шрифтов тоже немного не то.
+1
ulysses #
kchmviewer лучше всего ест виндовые кодировки, так что рекомендую (хотя сам гномер).
+3
ivlis #
Смысл теха в том, что рендер одинаково выглядит на всех устройствах. Не хотите A4, ok, измените в преамбуле на a5 и будет вам A5. Если всё грамотно сделано, то ничего никуда не уедет. HTML+CSS до этого ещё далеко.
+2
MAGNUS8 #
Коллеги, я подчеркну, что я не считаю, что TeX must die. Просто со временем (точнее, с переходом от фанатствующего технарства и перманентной эрекции мозга к управленческой роли) лично у меня изменилось отношение к оформлению текста. Стал писать более короткие тексты, гораздо проще их оформлять, структурировать на уровне смысла, а не за счет выравниваний, виньеток и отбивок. Минимальность и достаточность, в противовес «заморочек и эстетствующего пикселодрочерства», «болезненной изощренности», тотального контроля над символами и миллиметрами.

Google Docs как средства оформления стало вполне достаточно. Не говоря уже о MS Office или OpenOffice (в режиме web layout). Или wiki-подобной системы работы с информацией, гибридов форума-блога-issue tracker'а.

Насчет ТеХа, верстки, бумаги, А4. Пример. Я владею фотографическим скорочтением, смотрю в центр параграфа и читаю сразу блок текста. Пока не могу так читать широкие параграфы мелкого текста, приходится скакать взглядом. Есть именно такая книга в pdf. Ну и что мне делать? Да, как автор или издатель хотели, ну а мне что с этого? Еще и переносы слов включили, мудаки, (чтобы текст красивее заполнял страницу), а это очень существенно затрудняет скорочтение. В chm я просто делаю крупнее шрифт и нужный размер окна. На рюшки и фенечки уже внимания не обращаю, мне нужен смысл, и быстро.

Да, это претензия не только к ТеХу, а вообще к ориентированному на печать оформлению текста. В противостоянии «типографская фундаментальность» vs «быстрая современная wiki-Web 2.0 форма представления информации» ТеХ льет воду на первую мельницу.

P.S. Так много написал, т.к. я любил ТеХ, но потом переосмыслил его роль.
+1
qrazydraqon #
Ну вы просто попали в ситуацию, для которой ТеХ не предназначен.
0
impersona #
Не знаю-не знаю.

Для математики (начиная от коротких пояснений в вики и заканчивая книгами) имхо это самое лучшее.
Более удобного языка, чтобы быстро набирать много формул имхо пока не придумали.

Таблицы-картинки — это не конёк latex, это факт.

Насчёт «пикселодрочерства» это по желанию, даже если ничего с layoutом не делать, всё равно всё будет читабельно.
+2
qrazydraqon #
Любые попытки сделать то, что Вы предлагаете, приводят к тому, что к смыслу не прорваться через ужасную форму.

> отвязанной от формата (А4, А5 и вообще бумаги)
А мы хотим вместо беспорядочной свалки иметь документ, который можно ЧИТАТЬ.

И, кстати, поиск по pdf легко устроить, если автор (или теховский компилятор) об этом позаботился.

> агрегирования из нескольких источников, метаданные и семантическая разметка
Собрать из нескольких теховских файлов один — не проблема, а семантичность теховской разметки (при правильном использовании) на раз уделывает любые другие (ну кроме разве что HTML+CSS в случае использования без рюшечек и строго по стандарту).

> Хотя популярность ТеХа в научных кругах крайне высокая и растет. Не удивительно.
И правильно делает. Потому что удобно, красиво и правильно.
–1
AlexBobkov #
Имеет смысл написать конвертер TeX->FB2, чтобы можно было удобно читать на е-буках.
0
VtD #
Удивительно, после многократных попыток найти нормальную читалку fb2 мне захотелось найти конвертер fb2-> TeX
0
proxor #
А если использовать XeLaTeX (встроен в MikTeX, кстати), то можно наслаждаться ttf-шрифтами и utf-8 без плясок с бубном. Особенно это полезно для тех, кто делает диплом с требованиями к шрифту «чтоб обязательно Times New Roman и ни-ни», как было у меня.
0
MaximKat #
\usepackage{times} — не оно?
0
proxor #
Нет. Шрифты похожи, но не идентичны. Могут прицепиться. Да и в любом случае, xelatex значительно мощнее в плане шрифтов.
0
ulysses #
> Шрифты похожи, но не идентичны. Могут прицепиться.
Где вы таких шрифтовых гурманов видели, хотел бы я знать.
+4
proxor #
Вам смешно, а у меня буквы линейкой измеряли :) Потом набирали тот же текст в Times New Roman и накладывали распечатку поверх. Так-то.
0
ivlis #
Вот это да! Даже ВАК не так строг.
0
toshnya #
Ко мне корректор привязался из-за неправильного внешнего вида знака % и ©. Пришлось вставлять эти символы как картинки.
+1
ulysses #
utf-8 сейчас можно наслаждаться и в стандартных утилитах (в Tex Live 2007, по крайней мере) (\inputenc{utf8}), другое дело, что в шрифтах может не быть соответствующих символов, а вот установка шрифтов (не в XeLaTeX) это, действительно, ужас, к сожалению.
0
proxor #
Да, в MikTex тоже utf-8 без проблем. Я имел ввиду именно шрифтовые заморочки с ней.
+1
ulysses #
Ой, имел ввиду \usepackage[utf8]{inputenc}, конечно.
+1
b3nd3r #
Может быть кому-то пригодится. Блок-схемы можно с помощью Dia рисовать, а затем сохранять (экспортировать) в LaTeX PGF macros и использовать в документе. Я выбрал PGF, но программа поддерживает много форматов, в которые можно сохранять полченный результат.
0
zoreslav #
выравнивание столбцов таблицы по центру выглядит некрасиво.
как бы сделать выравнивание по запятой?
0
zokotuhaFly #
в pfgplotstable в columns.style можно указать dec sep align
+2
ulysses #
Замечание к титульному листу: то, что вынесено влево (автор, факультет...) как-то очень близко к центру. Дата на английском, конечно, будет неприемлема если это для кого-то кроме себя готовится, кроме того, традиционно в дате на титуле должен быть только год; и под (над?) датой должен быть центрированный город обычно.

За рисование графиков по таблицам спасибо большое, не знал. К этому можно добавить какой-нибудь скриптик, который генерит такие текстовые файлы со значениями стандартных функций на заданных интервалах.
0
zokotuhaFly #
чтобы не было вынесения в центр — можно сделать так:

\begin{titlepage} % начало титульной страницы

\begin{center} % включить выравнивание по центру

\large Российский технический институт <<ACME-ТЕХ>>\\[4.5cm]
% название института, затем отступ 4,5см

\huge Теоретическая работа \No 5\\[0.6cm] % название работы, затем отступ 0,6см
\large по~теме <<Хабраобщество. Внутреннее и внешнее влияние>>\\[3.7cm]
% тема работы, затем отступ 3,7см

\end{center} % закончить выравнивание по центру <------

\begin{minipage}{0.5\textwidth} % начало маленькой врезки в половину ширины текста
\begin{flushleft} % выровнять её содержимое по левому краю
\emph{Автор:} Цокотуха~Флай\\
\emph{Группа:} 7822\\
\emph{Факультет:} МХХПХХ\\
\emph{Преподаватель:} Шаманова~Эллина~Канделябровна
\end{flushleft} % конец выравнивания по левому краю
\end{minipage} % конец врезки

\vfill % заполнить всё доступное ниже пространство

\begin{center} % включить выравнивание по центру <------

{\large \today} % вывести дату
{\large \LaTeX} % вывести логотип LaTeX

\end{center} % закончить выравнивание по центру


0
zokotuhaFly #
а дата зависит от вашей локали, у меня — английская, если у вас будет русская — всё будет нормально
0
Nashev #
А отключить зависимость локально на уровне документа там можно?
+2
qrazydraqon #
\usepackage[russian]{babel}

кроме собственно включения русских шрифтов он переопределяет основные команды типа вывода даты или заголовков.
0
korkholeh #
Спасибо, узнал кое-что новое.
+1
evgenyk #
Спасибо, отличная статья.
LaTeX — отличный инструмент. К сожалению для полноценного его использования сегодня не хватает значительной части — готовых шаблонов стандартных документов, выполненных в соответствии с конкретными требованиями.
Представьте, сколько лишней работы можно бы было не делать. Берешь готовый шаблон и пишешь документ. Практически никакой подгонки внешнего вида, как в в офисах. Когда ЧАСЫ уходят на то, чтобы привести документ в порядок. А потом подвинул картинку на 72 странице и надо просмотреть внимательно весь документ, чтобы отловить, где что уехало.
В общем, концепция LaTeX на порядок привлекательнее, чем концепция Офисов, будь то МСО или ОО.
+1
smirik #
На самом деле, шаблонов более чем достаточно. Например, revtex для подготовки статей в научные журналы. Шаблоны gost и прочие — для подготовки курсовых и дипломных работ, куча стилей для литературы в bst-файлах для bibtex и пр. Как раз благодаря их наличию TeX и является мощной системой.
+2
evgenyk #
Шаблонов много, но не достаточно. Достаточно будет тогда, когда на ЛЮБОЙ официальный или часто нужный документ, например инструкцию, диплом, курсовую, отчет в налоговую и так далее, можно будет взять готовый шаблон.
Вообще идеальная схема работы с документами должна ИМХО выглядеть так:
1) Простой язык логической разметки документов
2) Улиты для перевода в LaTeX
3) Шаблоны для LaTex
4) Утилиты для подготовки документов подготовленных в 1) (Никакого ВЗИВИГа, формы для заполнения)
5) Утилиты для автоматизированной обработки документов 1) Например для помещения документов в БД, или индексации в текстовом виде.
Сейчас эту нишу занял офис. Но, из-за его идеологии (ВИЗИВИГ) теряется ОГРОМНОЕ количество времени на подгонку внешнего вида документов. Вместо того, чтобы сделать это один раз, как в случае с системой с шаблонами. Очень затруднена автоматическая обработка документов.
0
smirik #
У каждой организации свои шаблоны. Общие бывают редко, также как и вообще некие другие стандарты.

> 1) Простой язык логической разметки документов
Привет, ТеХ.

> 2) Улиты для перевода в LaTeX
Откуда? Из html — есть, из openoffice или подобных — в какой-то мере, есть. Что ещё?

> 3) Шаблоны для LaTex
До бесу. Не на каждый случай, но часто хватает

> Сейчас эту нишу занял офис. Но, из-за его идеологии (ВИЗИВИГ) теряется ОГРОМНОЕ количество времени на подгонку внешнего вида документов.

Гм, а Вы пробовали учиться работать с офисом? Я, конечно, уже слабо помню Microsoft Office 2003, но я без особых сложностей делал на нём года 4 назад и курсовые, и дипломные, и технические задания, и пр. Как и сейчас я часто для отчётов использую Pages. И, знаете, никаких проблем с подгонкой. Как правильно замечено на в ролике Apple, «множество людей не знают, что такое разрывы страниц и разделов». Что же можно говорить об остальном?
+2
evgenyk #
Мне приходилось весьма плотно работать как с офисом (выпускать инструкции на предприятии объемом от 50 до 200 страниц), так и с LaTeX (два документа, объем примерно 150-200) страниц. В обоих случаях с иллюстрациями.
Так вот, мой опыт говорит, что при строгих требованиях к оформлению, а у нас были строгие требования к оформлению, подготовка большого документа с иллюстрациями в офисе — это изощренная пытка.
А если, большой документ это, как у нас в лаборатории, выпускали годовой отчет, с вставкой таблиц и графиков из других приложений офиса, то это УЖАС.
0
smirik #
Всё зависит, конечно, от конкретных требований. Иногда удобно использовать офис, иногда — ТеХ. Возможно, в Вашем случае в офисе действительно было сложно готовить подобный документ. Я же сталкивался и с обратными ситуациями, когда, например, подготовка статьи в ТеХе — это ужасно муторный процесс (статья в научный журнал), включающий в себя установку кучи дополнительных шаблонов и пр. Ей Богу, в Pages статья заняла менее 2 часов + несколько часов на подгонку.
0
evgenyk #
> У каждой организации свои шаблоны. Общие бывают редко, также как и вообще некие другие стандарты.

Так речь и идет о том, чтобы каждая организация имела такие шаблоны.
+1
smirik #
Обычно подгонка стандартных шаблонов (соответствующей тематики) к требованиям организации занимает не так много времени, если человек неплохо владет ТеХом. Например, подготовка диплома несколько лет назад по требованиям ГОСТа заняла менее 3 часов (при готовом ТеХ-файле).
+7
smirik #
Это всё, конечно, замечательно, но есть несколько «но» для научных документов. Например, для публикации статьи:

1. Картинки в формате pdf не принимает практически ни один журнал. eps, tiff, иногда png — в лучшем случае.

2. Таблицы через pgfplotstable также практически неприменимы для подготовки статей. longtable — де факто, стандарт.

3. Графики создают и подписывают на самих картинках, а не средствами ТеХа. В таком формате статью не примет практически ни один журнал (из встреченных мною и принимающих ТеХ).

Ей Богу, для графиков под Linux есть замечательная штука — gnuplot, для Windows — Origin. Используйте то, что создавалось специально для этого, а не ТеХ, являющийся издательской системой и не являющийся построителем графиков.
0
zokotuhaFly #
Похоже, я больше писал о лабораторных работах и всяческих дипломах, это ведь тоже в какой-то степени «научные работы», а не журнальных. Вообще не знал, что журналы иногда принимают что-либо в формате *.tex. Спасибо, это очень ценные знания.

По поводу графиков — иногда хочется чтобы документ строился автоматически после обновления данных, без запуска дополнительных приложений. Если считать, что какая-либо автоматическая программа даёт на вывод CSV (допустим, считывает данные с датчиков), то удобнее всё же использовать pgfplots. да и оформление графика, в результате, описано практически простым языком — в документе — где должны быть данные об оформлении (если следовать коцепции Model-View), а не дополнительным форматом со своим оформлением.

Из Inkscape можно импортировать в png/tiff — и никаких проблем по включению/конвертации в eps.

+1
smirik #
Большая часть научных журналов (особенно, зарубежных) с удовольствием берёт именно ТеХ, единственно, предъявляет свои требования к оформлению, в основном amstex + revtex.

А с графиками — чем всё-таки gnulot не устроил? Есть программа, она экспортировала данные в csv, запустите сразу после этого gnuplot в автоматическом режиме и создайте png, который просто включите как рисунок в TeX. ИМХО, гораздо проще.
0
zokotuhaFly #
согласен.
+1
qrazydraqon #
> Вообще не знал, что журналы иногда принимают что-либо в формате *.tex

Видимо, речь о разных журналах. Математические не хотят видеть ничего кроме теха вообще.
+1
Imposeren #
Замечу, что из Inkscape можно экспортировать в tex, а потом просто include делать. Но для этого понадобится использовать пакет pstricks.

А о таком методе вставки простых таблиц, а потом еще и построения графиков не знал. Прекрасно, спасибо
0
nikitad #
Пусть не совсем про латех, но все же.
Используя utf8 в качестве кодировки файла можно заиметь геморрой при обработке списка литературы bibtex — он про многобайтовые кодировки не знает, соответственно могут случиться следующие косяки: а) в списке литературы вместо букв (отличных от латинских) в будут escape-последовательности; б) потеря некоторых функций: например, я не смог заставить сокращать имя и отчество автора источника до инициалов, и по моему там еще были проблемы с сортировкой.

Скажу сразу — смотрел давно, где-то год назад, может сейчас починили. Но тогда я после дня геморроя перекодировал все в koi8r. Вроде можно как-то обойти вышеописанный баг с помощью перекодировки «на лету» при компиляции документа, используя makefile.
0
rengel_system #
LaTeX конечно хорошо, но иногда бесполезно: clck.ru/02A5 — правила оформления для аспирантов кафедры ПКС НИУ СПбГУ ИТМО. Требования для материалов на конференцию молодых ученых НИУ СПбГУ ИТМО clck.ru/02AP (doc) и clck.ru/02AR (doc)
0
zokotuhaFly #
Когда главный технический университет Петербурга перейдёт на TeX — он станет на один шаг ближе чтобы действительно стать главным техническим университетом.
0
smirik #
О_о а когда он стал главным? По теме: ГЛАВНЫЙ университет, математико-механический факультет — дипломы, по большей части, готовятся в TeX. Сложности возникают у тех, кто пытается готовить как раз в офисных пакетах.
+1
qrazydraqon #
_технический_
0
zokotuhaFly #
он среди программистов главный, победители олимпиад и всё прочее. извините, ГЛАВНЫЙ действительно главнее. и я рад, что там всё правильно, без иронии.
+1
smirik #
Простите, с каких пор образование, даваемое в ВУЗе, оценивается исключительно по олимпиадам? И когда олимпиадные задачи стали приближёнными к реальным? 239 школа, например, имеет наибольшее количество олимпиадников по математике, что не делает её лучшей в городе, а ставит в ряд с другими.
0
zokotuhaFly #
да он иронично главный, в том и дело. за эти «олимпиады и всё прочее» государство его считает за главный технический/программисткий — больше спонсирует и любит (хотя это лишь догадки, не буду ничего утверждать). а не очень хорошо разбирающиеся в предмете работодатели любят студентов из ИТМО, они субъективно «хорошо шарят».

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

впрочем, это как-то уже не про LaTeX…
+1
qrazydraqon #
в ИТМО студентов дрючат, и они учатся. модульная система жёсткая, но результат есть.
+1
rengel_system #
Какой? Наверное он такой faculty.ifmo.ru/csd/files/2009stasp.pdf
0
budda #
а кто пробовал pgfplots с utf8 дружит? а то в gnuplot обещают только в 4.3 будет utf8 поддерживать, не удобно перекодировать в koi а потом скармливать gnuplot, тем более не все символы получается перекодировать, ругается iconv и т.п.
0
zokotuhaFly #
дружит, вполне — в статье метки в легенде графика и названия столбцов на русском, а в заголовке документа (в начале статьи):

\usepackage[utf8]{inputenc}
+1
sigizmund #
Добавлю мои пять копеек (вдохновлялись мы видимо одним и тем же дизайном ;-) ):



\pagenumbering{alph}
\begin{titlepage}

\begin{center}

\textsc{\LARGE Birkbeck College}\\[0.5cm]
\textsc{\large University of London}\\[1.5cm]

Department of Computer Science\\[4.5cm]

\textsc{\huge Information Retrieval}\\[0.5cm]
\textsc{\large Coursework}\\[0.5cm]
\textsc{\large Part I}\\[3.0cm]

% Author and supervisor
\begin{minipage}{0.4\textwidth}
\begin{flushleft} \large
\emph{Author:}\\
Roman \textsc{Kirillov} \\
\small{\href{mailto:rkiril01@dcs.bbk.ac.uk}{rkiril01@dcs.bbk.ac.uk}}
\end{flushleft}
\end{minipage}
\begin{minipage}{0.4\textwidth}
\begin{flushright} \large
\emph{Supervisor:} \\
Sven \textsc{Helmer} \\
\small{\href{mailto:sven@dcs.bbk.ac.uk}{sven@dcs.bbk.ac.uk}} \\[0.5cm]

\end{flushright}
\end{minipage}

\vfill

% Bottom of the page
{\large \today}

\end{center}
\end{titlepage}


Это удобно вынести в отдельный документ (и закомментировать его включение на момент написания работы). В прологе должно быть:

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
%\usepackage{fullpage}
\usepackage{color}
\usepackage{boxedminipage}
\usepackage{listings}
\usepackage{minitoc}
\usepackage{ifpdf}
\usepackage{hyperref}
\usepackage{anysize}
\usepackage[pdftex]{graphicx}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows}
\usepackage{wrapfig}
\usepackage{titlesec}
\usepackage{fixltx2e}
0
zokotuhaFly #
многовато всего для титульной страницы в прологе ;)
–1
javamain #
а по мне, так юзайти LaTex, если хотите. Все равно всем наплевать с чем вы целыми днями возитесь с LaTex или опен офис, а может мелко софт офис. В универе у меня все преподы просят doc файлы. К слову о кнуте — его книга клево выглядит (монументальный труд). Но очень по детски он там описывает некоторые моменты, так сказать как сказку рассказывая (привирая и забывая что-то до рассказать… ). И еще, мне кажется (несколько раз перекрестился) из-за того, что он пишет свои книжки в LaTex, то и скорость написания искусства проганья крайне низкая.
0
Cardinal #
Спасибо за статью и весь цикл, очень полезно!

В мануале pgfplotstable сказано прямо, что пакет только для таблиц, содержащие числа. А как быть с большими текстовыми таблицами, есть способ автоматизировать их набор?
0
zokotuhaFly #
Хм. Вставку таблиц, содержащих текст, автоматизировать можно, обрамляя строки в кавычки в csv-файле (это можно настроить при экспорте) и, при необходимости, даже указывая LaTeX-команды (или обрамляя в \text{}). Просто к таким ячейкам нельзя будет применять то широкое форматирование, которое позволено числам. Но сам текст в таблицы, конечно же, придётся вводить вручную.
0
Cardinal #
Не могли бы вы помочь с простым примером? Допустим, есть элементарный csv их Excel, такого вида:

Main voltage;Freuqency;Hoist motor;Something
440/50;60 Hz;P3;123

Как настроить его для нормального вывода? В pgfkeys я настроил разделетель — точку с запятой, структура таблицы выводится, но во 2ой строке везде NaN. Такое:

Main voltage;Frequency;Hoist motor;Something
«440/50»;«60 Hz»;«P3»;«123»
\text{Main voltage};\text{Frequency};\text{Hoist motor};\text{Something}
\text{440/50};\text{60 Hz};\text{P3};\text{123}

приводит к аналогичному результату. Нужно задать еще какие-то пар-ры в pgfkeys?
0
zokotuhaFly #
да, насчёт кавычек я видимо был не прав. придётся обрамлять прямо в Excel этот текст в \text{}, либо попробовать обрамить такую строку аблицы после процессинга (пишу наугад, я делал подобное, но не сохранилось исходников — есть много способов, смотрите главу )

typeset cell/.style={
   /pgfplots/table/@cell content={<td>#1</td>}
},


0
zokotuhaFly #
… смотрите главу 3. Fine Tuning of Loaded Data, Preprocessing или Type Setting мануала, можно при препроцессинге добавить \text{ и } к содержимому ячеек в колонке/строке
0
Cardinal #
кавычки, разумеется, лапки — елочками стали при выводе на Хабре, прошу прощения. Вот так верно:

Main voltage;Frequency;Hoist motor;Something
"440/50";"60 Hz";"P3";"123"
\text{Main voltage};\text{Frequency};\text{Hoist motor};\text{Something}
\text{440/50};\text{60 Hz};\text{P3};\text{123}


Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.