12/08/2008

Как оформить текст в LaTeX: структура текста

Этот пост является частью большой статьи
"Как оформить диплом в LaTeX?",
которую написал virens,
ведущий блога "Записки дебианщика".

В этом посте показывается, как сделать текст структурированным в LaTeX. Рассматривается создание разделов, глав и списков.

Структура текста
Большое количество вордолюбов просто не подозревает о наличии такой простой вещи, как стили. Отчасти потому, что Word так потворствует бардаку в документе и отсутствии у него логической структуры. Документ превращается в единый поток текста, разбавленный вечно прыгающими картинками, уродливыми формулами и библиографическими ссылками и намертво вбитыми номерами.

LaTeX, наоборот, вынуждает автора текста в какой бы то ни было форме структурировать документ, иначе на выходе будет сгенерирован именно тот бесформенный поток текста, который набьёт нерадивый автор. Команды \section{}, \subsection{} и \chapter{} есть то, чему учат книжки по ЛаТеХу буквально с первых же страниц, и незадачливый латехник просто вынужден их использовать.
Этот материал написал Михаил Конник aka virens и опубликовал на своём блоге Записки дебианщика.


Главы и разделы
Начинаем с логической структуры - так проще писать текст, ибо структура его ясна. Перед написанием диплома (и не только) нужно обязательно проработать логическую структуру - ни в коем случае не пишите текст ``от фонаря''.
Самая крупная структура в дипломе это Глава, и сделать её можно с помощью команды \chapter{Это глава}. Начинается глава с новой страницы. Глава присутствует в классе документов report, который и используется в нашем примере для написания диплома. Есть и другие классы документов, но для диплома вам они не нужны.

Глава - это очень крупная часть текста, их у вас будет от 3 до 5. Дальше текст логически делится на разделы, которые в ЛаТеХе обозначаются естественным английским словом:
\section{Я - большой раздел}.

Разделы могут содержать подразделы:
\subsection{Я - подраздел поменьше},

и ещё меньшие единицы - подподразделы:
\subsubsection{А я - самый маленький раздельчик}

а так же абзацы:
\paragraph{Ну совсем крошечный кусочек}.

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

Ссылки на разделы и главы
Естественно, что на разделы вы будете время от времени ссылаться. Поэтому хорошей морской практикой считается постановка ссылок на все разделы. Для этого на раздел нужно поставить метку командой (кто бы мог подумать, правда?) \label{Textssylki}.
Этот материал написал Михаил Конник aka virens и опубликовал на своём блоге Записки дебианщика.


Советую сразу же ставить понятные и информативные ссылки, чтобы вы сами смогли потом понять, где то место, куда вы ссылаетесь. Не бойтесь ставить длииииииииииинные имена ссылок - лишь бы вам было удобно. Вот например, в этом тексте я поставил ссылку \label{sec:textformatting} на подраздел ``Начертание шрифта'' (см. подраздел 1.1.1), и я всегда могу на неё сослаться: ссылки на метки ставятся командой \ref{Textssylki}. Чтобы ссылка не уехала на другую строку в одиночестве, ставим к ней неразрывный пробел, как я уже говорил в разделе 1.1, вот так: раздел~\ref{Textssylki}.

Многим говорят так: ``мне лень думать и я лучше поставлю ссылку \label{UR1}, а потом найду поиском''. Заканчивается это бардаком в документе. Ссылки на литературу, равно как и на уравнения, должны быть осмысленными. Не надо уподобляться вордописцам с их склонностью "быстрей да попроще" и переделыванием по сто раз. В общем, плохая ссылка на уравнение выглядит так: \ref{ur2}, а хорошая ссылка \ref{eq:equation_of_convolution}.

То же самое, как я уже говорил, с ссылками на главы и разделы. Правила хорошего тона такие: метка на раздел \label{sec:opisanierazdela}, метка на уравнение \label{eq:opisanie}, метка на таблицу \label{tab:tabliza}.
А теперь, товарищи, самый смак: все ссылки в наших ЛаТеХовских документах относительные, так что текст можно перетаскивать кусками по всему диплому, и при перекомпиляции документа всё автоматически за нас сделает LaTeX.
Этот материал написал Михаил Конник aka virens и опубликовал на своём блоге Записки дебианщика.



Перечни
В конце диплома у вас обязательно будут выводы - вот тут-то и пригодятся перечни. Делать их просто:
\begin{enumerate}
\item это первое,
\item а это второе,
\item и последнее.
\end{enumerate}

В результате увидите следующее:
1. это первое,
2. а это второе,
3. и последнее.


Списки и перечни можно друг в друга вкладывать, то есть можно делать так:
\begin{enumerate}
\begin{enumerate}
\item это первое,
\item а это второе,
\item и последнее.
\end{enumerate}
\item это первое,
\item а это второе,
\item и последнее.
\end{enumerate}

В результате получим:
1. это первое,
1. это первое,
2. а это второе,
3. и последнее.
2. а это второе,
3. и последнее.

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

Этот материал написал Михаил Конник aka virens и опубликовал на своём блоге Записки дебианщика.


Ненумерованные списки в научно-технической литературе не в почёте, но всё-таки приведу их:

\begin{itemize}
\item это первое,
\item а это второе,
\item и последнее.
\end{itemize}

И получим вот что:
  • это первое,
  • а это второе,
  • и последнее.
Ненумерованные списки можно использовать в презентациях, а в тексте обычно нежелательно.


Выводы
Прочитав это ураганное введение, вы сможете без проблем написать весьма навороченный в оформительском плане диплом. Правда, без таблиц, формул и рисунков - ими мы займёмся далее. Но в плане набора текстов те команды, которые указаны выше, достаточны в 95% случаев.

18 комментариев:

  1. тут бы сразу ещё и про автоматическое оглавление, и про то что если добавить * то раздел не попадёт в оглавление,
    как сделать чтобы список литературы добавлялся в оглавление я писал в комментариях к предыдущим постам.
    worldmind

    ОтветитьУдалить
  2. 2 Анонимный комментирует...
    тут бы сразу ещё и про автоматическое оглавление, и про то что если добавить * то раздел не попадёт в оглавление,
    как сделать чтобы список литературы добавлялся в оглавление я писал в комментариях к предыдущим постам.

    Да-да, я помню ваши комментарии и обязательно их добавлю - надеюсь, ближе к выходным будет время. Ещё раз спасибо!

    ОтветитьУдалить
  3. Облегчу тебе работу, в этот пост, как мне кажется, стоит добавить раздел "Оглавление", с примерно следующим содержанием:
    -------------------------------------------
    Оглавление
    Благодаря смысловой разметке текста оглавление (как и иные списки - литературы, предметный указатель и т.д.) можно сформировать автоматически, написав в нужном месте команду:

    \tableofcontents

    и если надо перевод на следующую страницу

    \newpage

    Понятное дело все разделы нумеруются автоматически
    Есть тонкость которую необходимо учитывать, введение обычно нумеровать не надо, но в оглавлении оно должно быть, решали мы это следующим способом:

    \section*{Введение}
    \addcontentsline{toc}{section}{\tocsecindent{Введение}}

    здесь звёздочка после section указывает latex что этот раздел не нужно нумеровать и добавлять в оглавление, а вторая команда добавляет в оглавление пункт "Введение", команда \tocsecindent делает отступ для этого пункта, чтобы он был выровнен как все, оно определена в преамбуле так:

    \newcommand{\tocsecindent}{\hspace{7mm}}

    Соответственно, перед списком литературы пишем:

    \addcontentsline{toc}{section}{\tocsecindent{Использованные источники}}

    А если использовать пакет hyperref

    \usepackage[unicode]{hyperref}

    то все элементы оглавления (да и все ссылки) будут гиперссылками - нажал и оказался на том объекте на который была ссылка, что весьма удобно если предполагается не только печать, но и работа с электронным документом (нечего бумагу переводить, носите преподам pdf), кстати, точно ссылки работаю при использовании pdflatex, если просто latex возможно какие-либо особенности
    В русском варианте список литературы так и зовётся, но в некоторых случаях требуют называть этот раздел "Использованные источники", это можно сделать добавив в преамбулу следующую команду

    \addto\captionsrussian{\def\refname{Использованные источники}}

    -------------------------------------------
    worldmind

    ОтветитьУдалить
  4. Ещё надо поправить небольшой косяк, переименовывая и добавляя в оглавление список литературы мы используем две команды:

    \addto\captionsrussian{\def\refname{Использованные источники}}
    \addcontentsline{toc}{section}{\tocsecindent{Использованные источники}}

    В обоих местах пишем "Использованные источники", это хардкод - потенциальный источник ошибок - в одном месте поменяем в другом забудем, посему надо определить команду

    \newcommand{\litracaption}{Использованные источники}

    и тогда эти две команды примут вид


    \addto\captionsrussian{\def\refname{\litracaption}}
    \addcontentsline{toc}{section}{\tocsecindent{\litracaption}}

    worldmind

    ОтветитьУдалить
  5. Все хорошо, но в плане диплома - надо таки смотреть рекомендации конкретного вуза.
    В нашем - строго определенно, что список первого уровня - ненумерованный, второго - нумерованный.
    Да и как правило такой крупной формой как "Глава" пользуются достаточно редко.

    ОтветитьУдалить
  6. Ольга правильно заметила.
    Но как для начала - заметка нормальная. Хотя лучше скачать учебник по LaTeX и заняться им серьёзно.

    ОтветитьУдалить
  7. «paragraph» по-английски означает вовсе не параграф, а абзац. Да и в тексте латеха команда \paragraph никакой параграф не задает, а именно немного выделяет тот абзац, который начинает. Проверьте

    ОтветитьУдалить
  8. 2 malistov

    ваш перевод слова paragraph, безусловно, правильный.

    Однако, формление раздела, заданного командой \paragraph{текст_заголовка}, определено в стилевом файле. Например, в article это ненумерованный заголовок, набранный в подбор с последующим текстом.

    В принципе, всё можно изменить при желании - добавить нумерацию и т.д.

    так что вы тоже проверяйте, прежде чем чего-то писать.

    Миша.

    ОтветитьУдалить
  9. 2 Анонимный комментирует...
    Облегчу тебе работу, в этот пост, как мне кажется, стоит добавить раздел "Оглавление", с примерно следующим содержанием:
    Спасибо!

    Я хочу сделать отдельный пост, посвящённый оглавлению и титульному листу. И я обязательно добавлю туда этот материал. Просто сейчас мне нужно собрать по Тайге все свои записи по ЛаТеХу и выложить тут. Шлифовка текста впереди.


    2 Анонимный комментирует...
    Ещё надо поправить небольшой косяк, переименовывая и добавляя в оглавление список литературы мы используем две команды:

    \addto\captionsrussian{\def\refname{Использованные источники}}

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


    2 Ольга комментирует...
    Все хорошо, но в плане диплома - надо таки смотреть рекомендации конкретного вуза.
    Эти посты, Ольга, рассчитаны на человека, который оформляет диплом в ТеХе в первый раз, и все тонкости вываливать считаю неправильным.

    Насчёт конкретных требований - они, как правило, носят рекомендательный характер.

    Да и как правило такой крупной формой как "Глава" пользуются достаточно редко.
    По крайней мере Введение и пара глав обязательны.

    2 Michael de`OZ комментирует...
    Но как для начала - заметка нормальная. Хотя лучше скачать учебник по LaTeX и заняться им серьёзно.
    Михаил, вот этого-то делать в первый раз и не хочется совершенно. Более того, учебники слишком общие и там полно мусора типа "набор стихов" и разные полиграфические тонкости. Дипломнику-физику нужно совсем другое.

    2 malistov комментирует...
    «paragraph» по-английски означает вовсе не параграф, а абзац.
    Упустил, но благодаря вам - исправил :-)

    Спасибо!

    2 Анонимный комментирует...
    Однако, формление раздела, заданного командой \paragraph{текст_заголовка}, определено в стилевом файле.
    В классе report, насколько я знаю, \paragraph действительно не выделяет абзац.

    Друзья, большое вам спасибо за дополнения, я их обязательно внесу в текст, когда закончу выкладывать материалы и начну подводить итоги уходящего года.

    Если есть ещё идеи - не стесняйтесь их выкладывать!

    ОтветитьУдалить
  10. Вопрос к многоуважаемому автору: есть ли возможность сделать нумерованные многоуровневые списки следующим образом:
    1. Пункт 1
    1.1. подпункт-1
    1.2. подпункт-2

    (т.е. с "полной" нумерацией подпунктов)?

    ОтветитьУдалить
  11. есть возможность, нужно просто сделать класс документа article

    ОтветитьУдалить
  12. После прочтения всей статьи остался непонятным такой вопрос: каким образом сделать абзац, начинающийся с команды \paragraph с красной строки. Аналогичная проблема с первым абзацем в разделе была решена с помощью \usepackage{indentfirst}.
    Подскажите, пожалуйста, а как быть в данном случае?

    ОтветитьУдалить
  13. Можно добавить раздел "Литература" в оглавление просто подключив пакет "tocbibind"

    \usepackage{tocbibind}

    ОтветитьУдалить
  14. Вопрос, как сделать оглавление следующего вида:

    1. Глава 1. Летающая рыба


    Т.е. что бы и наименование глав попадало в оглавление?

    ОтветитьУдалить
  15. почему ссылки выделяются в квадратных рамках? как это убрать

    ОтветитьУдалить
  16. Добрый день.
    Есть два вопроса:
    1) как можно сделать в перечислении выводов не ->
    1 бла бла
    2 бла бла
    3 бла бла
    ,а так ->
    1. бла бла
    2. бла бла
    3. бла бла
    ( т.е. добавить после номера точку)
    2) Можно ли настроить шрифт для \chapter и \section а то больно здоровый получается.
    Заранее благодарю, с уважением, Николай.

    ОтветитьУдалить
  17. Здравствуйте! Подскажите, пожалуйста, есть ли возможность в окружении itemize в случае, когда пользователь сам задает формат значка элемента перечня (скажем, "первый", "второй", "третий" вместо точек по умолчанию) выровнять заданные значки по левому краю?

    Большое спасибо!
    Галина

    ОтветитьУдалить
  18. Столкнулся с такой проблемой! Есть содержание в конце которого есть приложения А, Б, В и т.д. В содержании надо что бы были включены подразделы до 3 цифр (1.1 и 1.1.1), а в приложении подразделов А.1.1 или А.1 не должно быть. Как такое сделать в инете не нашел. МОЖЕТ КТО ЗНАЕТ

    ОтветитьУдалить