diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/lshort-russian/src/typeset.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/lshort-russian/src/typeset.tex | 1635 |
1 files changed, 1635 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/lshort-russian/src/typeset.tex b/Master/texmf-dist/doc/latex/lshort-russian/src/typeset.tex new file mode 100644 index 00000000000..635c516c728 --- /dev/null +++ b/Master/texmf-dist/doc/latex/lshort-russian/src/typeset.tex @@ -0,0 +1,1635 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Contents: Typesetting Part of LaTeX2e Introduction +% $Id: typeset.tex,v 1.3 1998/03/26 15:36:54 oetiker Exp oetiker $ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Верстка текста} + +\begin{intro} +После прочтения предыдущей главы вы должны представлять, из чего +состоит документ \LaTeX{}. Вторая глава заполняет эту структуру всем +необходимым для производства реальных материалов. +\end{intro} + +\section{Структура текста и языка} +\secby{Hanspeter Schmid}{hanspi@schmid-werren.ch} + +Основная цель написания текста~--- передать читателю идеи, информацию +или знания. Читатель лучше поймет текст, если эти идеи +структурированы, и намного лучше увидит и почувствует эту структуру, +если типографская форма отражает логическую и смысловую структуру +содержания. + +\LaTeX{} отличается от других систем верстки в том, что вам нужно лишь +задавать ему логическую и смысловую структуру текста. Он затем +выбирает типографскую форму текста в соответствии с <<правилами>>, +заданными в файле класса документа и в различных стилевых файлах. + +Самый важный элемент текста в \LaTeX{} (и в наборе вообще)~--- +абзац. Он называется <<элементом текста>>, потому что абзац является +той типографской формой, в которую облекается одна связная мысль или +идея. В следующих разделах вы узнаете, как вы можете вызвать перевод +строки, например, при помощи \texttt{\bs\bs} и начало абзаца, +например, оставив пустую строку. Поэтому, если начинается новая мысль, +должен начинаться новый абзац, а, если нет,~--- используйте переводы +строки. Если вы сомневаетесь в вашем разбиении на абзацы, подумайте о +вашем тексте как о носителе идей и мыслей. Если вы начали новый абзац, +продолжая изложение той же мысли,~--- убирайте начало нового +абзаца. Если на протяжении абзаца начинается совершенно новая +мысль~--- разбивайте его на два. + +Большинство людей совершенно не понимает важности разумного разбиения +текста на абзацы. Многие не задумываются о значении разрыва абзацев +или, особенно в \LaTeX{}, начинают абзацы, не зная этого. Последнюю +ошибку особенно легко сделать, когда в текст включаются +уравнения. Посмотрите на следующие примеры и разберитесь, почему +иногда в них используются пустые строчки (разрывы параграфов), а +иногда~--- нет. (Если вы еще не понимаете всех команд достаточно, +чтобы понять примеры, прочтите, пожалуйста, эту и следующую главы и +затем вернитесь к примерам снова.) + +% Example 1 +\begin{example} +\ldots когда Эйнштейн +ввел свою формулу +\begin{equation} + e = m \cdot c^2 \; , +\end{equation} +которая является самой +широко известной и самой +мало понятной физической +формулой. +\end{example} + +% Example 2 +\begin{example} +\ldots откуда следует +закон тока Кирхгофа: +\begin{equation} + \sum_{k=1}^{n} I_k = 0 \; . +\end{equation} + +Закон напряжения Кирхгофа +может быть выведен \ldots +\end{example} + +% Example 3 +\begin{example} +\ldots который имеет +несколько преимуществ. + +\begin{equation} + I_D = I_F - I_R +\end{equation} +является ядром совершенно +другой модели транзистора. +\ldots +\end{example} + +Следующая, более маленькая, единица текста~--- предложение. В +английском тексте после точки, завершающей предложение, ставится +б\'ольший пробел, чем после точки, стоящей после сокращения. \LaTeX{} +старается определить, какую из них вы имели в виду. Если он ошибается, +вы должны ему подсказать. Это объяснено далее в этой главе. + +Структура текста охватывает даже отдельные части +предложений. Большинство языков использует очень сложные правила +пунктуации, но во многих языках (включая немецкий и английский) вы +расставите почти все запятые на места, просто помня, что они означают: +короткую остановку в потоке изложения. Если вы не уверены в своих +запятых, прочтите предложение вслух, останавливаясь на каждой +запятой. Если где-то это прозвучит странно, уберите эту запятую, если +вы почувствуете необходимость остановки в другом месте, вставьте +запятую.\trfootnote{Все это мало применимо для русского, но я решил не + выбрасывать этих абзацев из перевода, вдруг они кому-нибудь помогут писать + по-английски.} + +Наконец, абзацы текста должны быть также логично структурированы на +более высоком уровне, объединяясь в главы, разделы, и так +далее. Однако, типографский эффект записи, например, +\verb|\section{|\texttt{Структура текста и языка}\verb|}| +обычно достаточно очевиден, чтобы было сразу ясно, как использовать +эти высокоуровневые структуры. + +\section{Разбиение на строки и страницы} + +\subsection{Выровненные абзацы} + +Книги часто верстаются так, чтобы все строчки имели одинаковую длину. +\LaTeX{} вставляет необходимые разрывы строк\index{разрывы строк} и +пробелы между словами, оптимизируя форматирование абзаца как целого. +При необходимости он также переносит слова, которые не помещаются на +строке. От класса документа зависит то, как верстаются абзацы. Обычно +каждый абзац начинается с красной строки, а дополнительного интервала +между ними нет. Подробности смотрите в разделе~\ref{parsp}. + +В некоторых случаях может быть необходимо указать \LaTeX{} разорвать +строку: +\begin{lscommand} +\ci{\bs} или \ci{newline} +\end{lscommand} +\noindent начинают новую строку, не начиная нового абзаца. + +\begin{lscommand} +\ci{\bs*} +\end{lscommand} +\noindent запрещает, кроме того, разрыв страницы после вставленного +разрыва строки. + +\begin{lscommand} +\ci{newpage} +\end{lscommand} +\noindent начинает новую страницу. + +\begin{lscommand} +\ci{linebreak}\verb|[|\emph{n}\verb|]|, +\ci{nolinebreak}\verb|[|\emph{n}\verb|]|, +\ci{pagebreak}\verb|[|\emph{n}\verb|]| и +\ci{nopagebreak}\verb|[|\emph{n}\verb|]| +\end{lscommand} +\noindent разрывают строку, запрещают разрыв строки, разрывают +страницу и запрещают разрыв страницы, соответственно. Необязательный +аргумент \emph{n} позволяет автору влиять на их действие. Он может +быть равен числу от нуля до четырех. Устанавливая \emph{n} в значение, +меньшее~4, вы оставляете \LaTeX{} возможность игнорировать вашу +команду, если результат будет очень плох. Не путайте эти команды +<<разрыва (break)>> с командами <<начала (new)>>. Даже если вы +зададите команду <<разрыва>>, \LaTeX{} попытается выровнять правую +границу страницы и общую высоту страницы, как описано в следующей +секции. Если вы действительно хотите начать <<новую строчку>>, +используйте соответствующую команду. + +\LaTeX{} всегда пытается производить наилучшее из возможных разбиений +строк. Если он не может найти способ разбить строки в соответствии со +своими стандартами, он позволяет одной строке выступать из абзаца +вправо. \LaTeX{} затем выводит диагностику (<<\wi{overfull hbox}>>) во +время обработки входного файла. Чаще всего это случается, когда +\LaTeX{} не может найти место для переноса слова.\footnote{Хотя + \LaTeX{} и дает вам предупреждение, такие строки не всегда легко + найти. Если вы в команде \ci{documentclass} используете опцию + \texttt{draft}, такие строки будут отмечены толстой черной линией на + правых полях.} Давая команду \ci{sloppy}, вы можете сказать, чтобы +\LaTeX{} несколько ослабил свои стандарты. Тогда он сможет +предотвратить такие слишком длинные строки, увеличивая интервалы между +словами~--- даже если конечный вывод будет не оптимален. В этом случае +пользователь получит предупреждение (<<\wi{underfull hbox}>>). В +большинстве случаев результат выглядит не очень хорошо. Команда +\ci{fussy} действует в обратную сторону. + + +\subsection{Переносы} \label{hyph} + +\LaTeX{} переносит слова, когда это необходимо. Если алгоритм +переносов не находит правильных точек переноса, вы можете исправить +положение, сказав \TeX{} об исключении при помощи следующих команд. + +Команда +\begin{lscommand} +\ci{hyphenation}\verb|{|\emph{список слов}\verb|}| +\end{lscommand} +\noindent вызывает перенос слов, перечисленных в ее аргументе, только +в местах, отмеченных <<\verb|-|>>. Эта команда должна даваться в +преамбуле входного файла, и должна содержать только слова, состоящие +из обычных букв. Правила переноса запоминаются для языка, активного в +момент обратки команды \ci{hyphenation}. Это значит, что, если вы +поместите ее в преамбулу документа, она будет влиять на английские +переносы. Если вы поместите ее после команды \verb|\begin{document}|, + используя при этом поддержку национальных языков, например, + \pai{babel}, то переносы будут запомнены для языка, + активизированного при помощи \pai{babel}. + + Следующий пример разрешает переносы в слове <<hyphenation>>, так же, + как и в слове <<Hyphenation>>, и запрещает переносы в словах + <<FORTRAN>>, <<Fortran>> и <<fortran>>. В аргументе не допускаются + специальные символы. + +Пример: +\begin{code} +\verb|\hyphenation{FORTRAN Hy-phen-a-tion}| +\end{code} + +Команда \ci{-} вставляет в слово выборочный перенос. Он также +становится единственной разрешенной точкой переноса в этом слове. Эта +команда в особенности полезна для слов, содержащих специальные символы +(например, символы с акцентами), потому что \LaTeX{} не переносит +такие слова автоматически. +%\footnote{Unless you are using the new +%\wi{DC fonts}.} + +\begin{example} +I think this is: su\-per\-cal\-% +i\-frag\-i\-lis\-tic\-ex\-pi\-% +al\-i\-do\-cious +\end{example} + +Несколько слов можно удержать вместе на одной строке командой +\begin{lscommand} +\ci{mbox}\verb|{|\emph{текст}\verb|}| +\end{lscommand} +\noindent Она будет в любом случае сохранять свой аргумент вместе. + +\begin{example} +Номер моего телефона скоро сменится. +Он будет \mbox{0116 291 2319}. + +Параметр +\mbox{\emph{имя файла}} должен +содержать имя файла. +\end{example} + +Команда~\ci{fbox} аналогична команде \ci{mbox}, но вокруг ее +содержимого будет нарисована видимая рамка. + +\section{Специальные строки} + +В некоторых предыдущих примерах вы уже встречали простые команды +\LaTeX{} для набора специальных текстовых строк: + +\vspace{2ex} + +\noindent +\begin{tabular}{@{}lll@{}} +Команда & Пример & Описание\\ +\hline +\ci{today} & \today & Текущая дата на текущем языке\\ +\ci{TeX} & \TeX & Название вашей любимой системы верстки\\ +\ci{LaTeX} & \LaTeX & Название \LaTeX \\ +\ci{LaTeXe} & \LaTeXe & Текущая инкарнация \LaTeX\\ +\end{tabular} + + +\section{Специальные буквы и символы} + +\subsection{Знаки кавычек} + +Для набора кавычек\index{кавычки} вы \emph{не должны} использовать +знак~\verb|"|\index{""@\texttt{""}}, как на пишущей машинке. При +верстке существуют специальные знаки открывающей и закрывающей +кавычек. В \LaTeX{} используйте два знака~\verb|`| в качестве +открывающей кавычки и два знака~\verb|'| в качестве +закрывающей.\trfootnote{При верстке обычно требуются две пары кавычек, + на случай <<\glqq кавычек\grqq{} в кавычках>>. При верстке на + русском языке обычно вместо ``таких'' и `таких' кавычек используют + <<эти>> и \glqq эти\grqq. Какими командами они задаются~--- зависит + от используемой русификации, но обычно это \ci{flqq}, \ci{frqq} + (вместо этой пары часто используют лигатуры \texttt{<{}<} и + \texttt{>{}>}\index{<<}\index{>>}) и \ci{glqq}, \ci{grqq}.} + +\begin{example} +``Пожалуйста, нажмите клавишу `x' '' +\end{example} + +\subsection{Тире и дефисы} + +\LaTeX{} знает про четыре вида \wi{тире}. Три из них вы можете +получить различным числом последовательных знаков~\verb|-|. Четвертое +на самом деле не тире вовсе, а математический знак минус: + +\index{-} \index{--} \index{---} \index{-@$-$} +\index{математический!минус} + +\begin{example} +мальчик-с-пальчик, X-лучи\\ +страницы 13--67\\ +да~--- или нет?\\ +$0$, $1$ и $-1$ +\end{example} + +Эти тире называются так: \texttt{-} \wi{дефис}, \texttt{-{}-} +\wi{короткое тире}, \texttt{-{}-{}-} \wi{длинное тире} и \verb|$-$| +\wi{знак минуса}.\index{тире!короткое}\index{тире!длинное} + + +\subsection{Тильда ($\sim$)} +\index{www}\index{URL}\index{тильда} + +Тильда часто встречается в WWW-адресах. Для генерации ее в \LaTeX{} +можно использоват \verb|\~|, но результат (\~) будет не тем, что вам +нужен. Взамен попробуйте вот что: + +\begin{example} +http://www.rich.edu/\~{}bush \\ +http://www.clever.edu/$\sim$demo +\end{example} + + +\subsection{Знак градуса ($\circ$)} + +Как напечатать \wi{знак градуса} в \LaTeX{}? + +\begin{example} +Температура уже +$-30\,^{\circ}\mathrm{C}$. +Скоро наступит сверхпроводимость. +\end{example} + +%\subsection{Символ Евро \texorpdfstring{(\EUR)}{}} +\subsection{Символ Евро \texorpdfstring{(\texteuro)}{}} +В наше время, говоря о валюте, вам понадобится символ +евровалюты. Многие современные шрифты содержат символ Евро. После +загрузки пакета \pai{textcomp} в преамбуле документа +\begin{lscommand} +\ci{usepackage}\verb|{textcomp}| +\end{lscommand} +\noindent вы можете пользоваться командой +\begin{lscommand} +\ci{texteuro} +\end{lscommand} +\noindent для доступа к этому символу. + +Если ваш шрифт не имеет собственного символа Евро, или вам не +нравится, как он выглядит, у вас есть еще два выхода. + +Первый~--- использование пакета \pai{eurosym}. Он предоставляет +официальный символ Евро: +\begin{lscommand} +\ci{usepackage}\verb|[|\emph{official}\verb|]{eurosym}| +\end{lscommand} + +Если вы предпочитаете официальному символ Евро, соответствующий вашему +шрифту, вместо опции \texttt{official} используйте опцию \texttt{gen}. + +Пакет \pai{marvosym} включает множество разных символов, в том числе и +Евро, доступный таким образом: +\begin{lscommand} +\ci{EUR} +\end{lscommand} + +\begin{example} +Символы \texteuro{}, +\euro{} и \EUR{} все +выглядят по-разному. +\end{example} + +\subsection{Многоточие ( \ldots )} + +На пишущей машинке \wi{точка} или \wi{запятая} занимают то же +пространство, что и любая другая буква. Напечатанные в книге, эти +символы занимают очень мало места и верстаются очень близко к +предшествующей букве. Поэтому вы не можете ввести \wi{многоточие} +просто напечатав три точки, так как расстояние между ними будет +неправильным. Кроме того, для многоточия есть специальная команда, +называющаяся + +\begin{lscommand} +\ci{ldots} +\end{lscommand} +\index{...@\ldots} + +\begin{example} +Не так ... а вот так:\\ +Нью-Йорк, Токио, Будапешт, \ldots +\end{example} + +\subsection{Лигатуры} + +Некоторые комбинации букв верстаются не просто набором разных букв +друг за другом, а с использованием специальных +символов.\trfootnote{Лигатуры широко используются при верстке текстов на + английском языке. Насколько мне известно, при верстке на русском + языке лигатур не используется. Однако, механизм лигатур \TeX{} + используется для генерации, например, кавычек и тире.} +\begin{code} +{\large ff fi fl ffi\ldots}\quad +вместо\quad {\large f{}f f{}i f{}l f{}f{}i \ldots} +\end{code} +Эти так называемые \index{лигатура}лигатуры могут быть запрещены +вставкой \ci{mbox}\verb|{}| между двумя соответствующими буквами. Это +может быть необходимо для слов, образованных из двух частей. +\begin{example} + \Large Не ``shelfful''\\ + а ``shelf\mbox{}ful'' +\end{example} + +\subsection{Акценты и специальные символы} + +\LaTeX{} поддерживает использование \index{акценты}акцентов и +специальных символов\index{специальные символы} из многих языков. +Таблица~\ref{accents} показывает всевозможные акценты в применении к +букве о. Понятно, что ее месте могут быть и другие буквы. + +Чтобы поместить знак акцента над буквами i или j, точки над ними +должны быть удалены. Это достигается набором \verb|\i| и \verb|\j|. +\begin{example} + H\^otel, na\"\i ve, \'el\`eve,\\ + sm\o rrebr\o d, !`Se\~norita!,\\ + Sch\"onbrunner Schlo\ss{} + Stra\ss e +\end{example} + +\begin{table}[!hbp] +\caption{Акценты и специальные символы} \label{accents} +\begin{lined}{10cm} +\begin{tabular}{*4{cl}} +\A{\`o} & \A{\'o} & \A{\^o} & \A{\~o} \\ +\A{\=o} & \A{\.o} & \A{\"o} & \B{\c}{c}\\[6pt] +\B{\u}{o} & \B{\v}{o} & \B{\H}{o} & \B{\c}{o} \\ +\B{\d}{o} & \B{\b}{o} & \B{\t}{oo} \\[6pt] +\A{\oe} & \A{\OE} & \A{\ae} & \A{\AE} \\ +\A{\aa} & \A{\AA} \\[6pt] +\A{\o} & \A{\O} & \A{\l} & \A{\L} \\ +\A{\i} & \cm{\j} & \verb|\j| & \cm{!`} & \verb|!`| & \cm{?`} & \verb|?`| +\end{tabular} +\index{i и j без точек@\cm{\i} и \cm{\j} без точек}\index{буквы!европейские} +\index{ae@\ae}\index{акценты!umlaut}\index{акценты!grave}\index{акценты!acute} +\index{oe@\oe} + +\bigskip +\end{lined} +\end{table} + +\section{Поддержка иностранных языков} +\index{другие языки}Если вам нужно писать документы на отличных от +английского языках, то \LaTeX{} должен быть соответствующим образом +сконфигурирован в двух пунктах: + +\begin{enumerate} +\item Все генерируемые автоматически текстовые + строки\footnote{Содержание, Список иллюстраций, Библиография \ldots} + должны быть переведены на другой язык. Для многих языков эти + изменения достигаются использованием пакета \pai{babel} (автор + Johannes Braams). + +\item \LaTeX{} должен знать \wi{правила переноса} для нового + языка. Подключение правил переноса к \LaTeX{} более сложно. Оно + включает перестроение форматного файла с другими разрешенными + образцами переноса. Ваш \guide{} должен содержать больше информации + об этом. + +\item Специфичные для языка типографские правила. Скажем, для + французского перед каждым символом двоеточия (:) должен стоять + пробел. +\end{enumerate} + +Если ваша система уже соответствующим образом сконфигурирована, вы +можете активизировать пакет \pai{babel} добавлением команды +\begin{lscommand} +\ci{usepackage}\verb|[|\emph{язык}\verb|]{babel}| +\end{lscommand} +\noindent после команды \verb|\documentclass|. Какие \emph{язык}и +поддерживает ваша система, также может быть указано в \guide{}. +\texttt{Babel} автоматически активизирует правильные правила переноса +для выбираемых вами языков. Если форматный файл вашего \LaTeX{} не +поддерживает переносов для выбранного языка, \texttt{babel} будет +работать, но запретит переносы, что негативно скажется на внешнем виде +документа. + +Для некоторых языков \pai{babel} вводит новые команды, упрощающие ввод +специальных символов. Например, \wi{немецкий язык} содержит множество +диакритических знаков (\"a\"o\"u). С использованием \pai{babel} вы +можете вводить \"o, печатая \verb|"o| вместо~\verb|\"o|. + +Если вы вызываете \pai{babel}, указывая несколько языков, +\begin{lscommand} +\ci{usepackage}\verb|[|\emph{язык1}\verb|,|\emph{язык2}\verb|]{babel}| +\end{lscommand} + +\noindent то для выбора текущего языка используйте команду + +\begin{lscommand} +\ci{selectlanguage}\verb|{|\emph{язык1}\verb|}| +\end{lscommand} + +%Input Encoding +\newcommand{\ieih}[1]{% +\index{кодировка!входная!#1@\texttt{#1}}% +\index{входная кодировка!#1@\texttt{#1}}% +\index{#1@\texttt{#1}}} +\newcommand{\iei}[1]{% +\ieih{#1}\texttt{#1}} +%Font Encoding +\newcommand{\feih}[1]{% +\index{кодировка!шрифта!#1@\texttt{#1}}% +\index{кодировка шрифта!#1@\texttt{#1}}% +\index{#1@\texttt{#1}}} +\newcommand{\fei}[1]{% +\feih{#1}\texttt{#1}} + +Большинство современных компьютерных систем позволяет вам вводить специальные +символы прямо с клавиатуры. \LaTeX{} может обрабатывать такие +символы при помощи пакета \pai{inputenc}: + +\begin{lscommand} +\ci{usepackage}\verb|[|\emph{кодировка}\verb|]{inputenc}| +\end{lscommand} + +При использовании этого пакета вы должны понимать, что другие могут +неправильно видеть ваши входные файлы на своем компьютере из-за +использования другой кодировки. Например, немецкий акцент \"a в +системе IBM~OS/2 кодируется как 132, а на некоторых Unix системах, +использующих кодировку ISO-LATIN~1,~--- как 228. Поэтому используйте +эту возможность с осторожностью. В зависимости от вашей системы, могут +использоваться, например, следующие кодировки: + +\begin{center} +\begin{tabular}{l | r} +Операционная система & Кодировка\\ +\hline +Mac & \texttt{applemac} \\ +Unix & \texttt{latin1} \\ +Windows & \texttt{ansinew} \\ +DOS, OS/2 & \texttt{cp850} +\end{tabular} +\end{center} + +Если вы пишете многоязычный документ с конфликтующими входными +кодировками, можно переключиться на Unicode при помощи пакета +\pai{ucs}: +\begin{lscommand} +\ci{usepackage}\verb|{ucs}|\\ +\ci{usepackage}\verb|[|\iei{utf8}\verb|]{inputenc}| +\end{lscommand} +Это позволит вам генерировать файлы \LaTeX{} в \iei{utf8}, +многобайтовой кодировке, где каждый символ кодируют от одного до +четырех байт. + +Иной случай~--- с кодировкой шрифта. Она определяет, в какой позиции в +пределах шрифта \TeX{} находится каждая буква. Множество входных +кодировок можно отобразить на одну кодировку шрифта, что уменьшает +число необходимых наборов шрифтов. Кодировки шрифтов обрабатываются +пакетом \pai{fontent}:\label{fontenc} +\begin{lscommand} +\ci{usepackage}\verb|[|\emph{кодировка}\verb|]{fontenc}| +\index{кодировка шрифта} +\end{lscommand} +\noindent где \emph{кодировка}~--- требуемая кодировка шрифта. Можно +одновременно загружать несколько кодировок. + +Кодировка \LaTeX{} по умолчанию~--- \fei{OT1}, кодировка оригинального +шрифта \TeX{} Computer Modern. Она содержит только 128 символов +7-битного набора символов ASCII. Когда требуются акцентированные +символы, \TeX{} создает их, комбинируя нормальный символ с акцентом. +Несмотря на то, что результирующая верстка выглядит прекрасно, этот +подход не дает автоматическим переносам работать внутри слов, +использующих акцентированные символы. Кроме того, некоторые знаки +латинских языков не получается создать таким образом, не говоря уже о +буквах не-латинских алфавитов, скажем, греческого или кириллицы. + +Для борьбы с этими ограничениями было создано несколько 8-битных +наборов шрифтов, похожих на CM. \emph{Extended Cork} (EC) шрифты в +кодировке \fei{T1} содержат специальные символы для большинства +акцентированных букв, используемых в европейских языках, основанных на +латинице. Набор шрифтов LH содержит символы языков, основанных на +кириллице. Ввиду большого числа кириллических знаков, они организованы +в четыре кодировки шрифтов: \fei{T2A}, \fei{T2B}, \fei{T2C} и +\fei{X2}.\footnote{Перечень языков, поддерживаемых каждой из этих + кодировок можно найти в \cite{cyrguide}.} Пакет CB содержит шрифты в +кодировке \fei{LGR} для набора греческих текстов. + +Используя эти шрифты, вы можете улучшить или вообще сделать возможными +переносы в не-английских документах. Еще одно преимущество +использования новых CM-подобных шрифтов~--- в том, что они +предоставляют шрифты семейства CM во всех яркостях, формах и оптически +масштабированных размерах шрифта. + +\subsection{Поддержка португальского} +\secby{Demerson Andre Polli}{polli@linux.ime.usp.br} + +Для включения переносов и смены автоматически генерируемого текста на +португальский\index{Португальский}, пользуйтесь командой +\begin{lscommand} +\verb|\usepackage[portuguese]{babel}| +\end{lscommand} +Или, для работы с бразильскими текстами, ставьте в качестве языка +\texttt{brazilian}\index{Бразильский}. + +Поскольку в португальском множество акцентированных букв, вам может +быть удобно использовать +\begin{lscommand} +\verb|\usepackage[latin1]{inputenc}| +\end{lscommand} +для того, чтобы корректно их вводить. Для работы переносов задайте +\begin{lscommand} +\verb|\usepackage[T1]{fontenc}| +\end{lscommand} + +Преамбулу, необходимую для работы с португальским языком, смотрите в +таблице~\ref{portuguese}. Заметьте, что мы здесь используем кодировку +latin1, так что эта преамбула не будет работать на Mac или в +DOS. Просто подставьте кодировку, правильную для вашей системы. + +\begin{table}[btp] +\caption{Преамбула для португальских документов} \label{portuguese} +\begin{lined}{5cm} +\begin{verbatim} +\usepackage[portugese]{babel} +\usepackage[latin1]{inputenc} +\usepackage[T1]{fontenc} +\end{verbatim} +\bigskip +\end{lined} +\end{table} + +\subsection{Поддержка французского} +\secby{Daniel Flipo}{daniel.flipo@univ-lille1.fr} + +Несколько советов для создания в \LaTeX{} +французских\index{Французский} документов. Загрузите поддержку +французского языка командой + +\begin{lscommand} +\verb|\usepackage[frenchb]{babel}| +\end{lscommand} + +Заметьте, что по историческим причинам название опции \pai{babel} для +французского языка~--- \emph{frenchb} или \emph{francais}, а не +\emph{french}. + +Это включит французские переносы, если ваша \LaTeX{}-система правильно +настроена. Кроме того, весь автоматический текст будет тоже +французским: \verb+\chapter+ печатает Chapitre, \verb+\today+ печатает +текущую дату по-французски, и так далее. Становится доступным набор +новых команд, позволяющих легче набирать французские тексты. Для +пояснения смотрите таблицу~\ref{cmd-french}. + +\begin{table}[!htbp] +\caption{Специальные команды для французского языка} \label{cmd-french} +\begin{lined}{9cm} +%%\selectlanguage{french} +\begin{tabular}{ll} +\verb+\og guillemets \fg{}+ \quad &\og guillemets \fg \\[1ex] +\verb+M\up{me}, D\up{r}+ \quad &M\up{me}, D\up{r} \\[1ex] +\verb+1\ier{}, 1\iere{}, 1\ieres{}+ \quad &1\ier{}, 1\iere{}, 1\ieres{}\\[1ex] +\verb+2\ieme{} 4\iemes{}+ \quad &2\ieme{} 4\iemes{}\\[1ex] +\verb+\No 1, \no 2+ \quad &\No 1, \no 2 \\[1ex] +\verb+20~\degres C, 45\degres+ \quad &20~\degres C, 45\degres \\[1ex] +\verb+\bsc{M. Durand}+ \quad &\bsc{M.~Durand} \\[1ex] +\verb+\nombre{1234,56789}+ \quad &\nombre{1234,56789} +\end{tabular} +%%\selectlanguage{english} +\bigskip +\end{lined} +\end{table} + +Вы также заметите изменение вида списков. Чтобы полностью изучить +изменения, вносимые \pai{babel} при работе с французским, прогоните +через \LaTeX{} файл \texttt{frenchb.dtx} и прочтите полученный +\texttt{frenchb.dvi}. + +\subsection{Поддержка немецкого} + +Несколько советов тем, кому нужно создавать в \LaTeX{} +немецкие\index{Немецкий} документы. Загрузите поддержку немецкого +языка командой + +\begin{lscommand} +\verb|\usepackage[german]{babel}| +\end{lscommand} + +Это включит немецкие переносы, если ваша \LaTeX{}-система правильно +настроена. Кроме того, автоматически генерируемый текст станет +немецким, например, ``Chapter'' станет ``Kapitel''. Включается набор +новых команд, ускоряющих набор немецкого текста, даже если не +используется пакет \pai{inputenc}. Для пояснения смотрите +таблицу~\ref{german}. С использованием inputenc все это становится не +нужным, но ваш текст сможет использовать только одну кодировку. + +\begin{table}[!htbp] +\caption{Специальные символы немецкого языка} \label{german} +\begin{lined}{8cm} +%%\selectlanguage{german} +\begin{tabular}{*2{ll}} +\verb|"a| & "a \hspace*{1ex} & \verb|"s| & "s \\[1ex] +\verb|"`| & "` & \verb|"'| & "' \\[1ex] +\verb|"<| or \ci{flqq} & "< & \verb|">| or \ci{frqq} & "> \\[1ex] +\ci{flq} & \flq & \ci{frq} & \frq \\[1ex] +\ci{dq} & " \\ +\end{tabular} +%%\selectlanguage{english} +\bigskip +\end{lined} +\end{table} + +В немецких книгах часто встречаются французские знаки кавычек +(\flqq{}guillemets\frqq). Немецкие типографы, однако, используют их +по-другому. Цитата в немецкой книге обычно выглядит \frqq{}так\flqq. В +немецкоговорящей части Швейцарии типографы используют +\flqq{}guillemets\frqq так же, как и во Франции. + +Большая проблема связана с командами типа \verb+\flq+: в шрифтах OT1 +(а они включаются по умолчанию) эти кавычки выглядят как +математический символ ``$\ll$'', от чего у типографов будет +истерика. Шрифты в кодировке T1, с другой стороны, имеют требуемые +символы. Так что, если вам нужны такие кавычки, убедитесь, что +включили кодировку T1 (\verb|\usepackage[T1]{fontenc}|). + +\subsection[Поддержка корейского]{Поддержка + корейского\footnotemark}\label{support_korean}% +\footnotetext{% +Рассматриваются несколько моментов, касающихся корейских пользователей +\LaTeX{}. Этот раздел написал Karnes Kim от имени корейской команды +переводчиков lshort. Раздел переведен на английский Shun Jungshik и +сокращен Tobi Oetiker.} + +Используя \LaTeX{} для набора корейского языка\index{Корейский}, нам +нужно разрешить три проблемы: + +\begin{enumerate} +\item Нужно научиться редактировать входные файлы на корейском. Они + должны быть в формате плоского текста, но, поскольку символы + корейского языка не входят в набор US-ASCII, они будут странно + выглядеть в стандартных редакторах ASCII. Две самых популярных + кодировки корейских текстовых файлов~--- EUK-KR и ее совместимое + расширение, используемое в корейской системе MS Windows, + CP949/Windows-949/UHC. Эти кодировки включают ASCII как + подмножество, аналогично кодировкам ISO-8859-\textit{x}, EUC-JP, + Shift\_JIS и Big5. С другой стороны, слоги Hangul, знаки Hanjas + (используемые в Корее китайские символы), Hangul Jamos, хиракана, + катакана, греческие, кириллица и прочие символы из KS~X~1001 + представляются двумя байтами. Первый байт имеет установленным + старший бит. До середины 90-х годов установка корейского окружения в + нелокализованной ОС требовала значительных усилий и времени. Вы + можете просмотреть сильно устаревший \url{http://jshin.net/faq}, + чтобы получить представление об этиъ усилиях. В наше время все три + основные операционные системы (Mac OS, Unix, Windows) включают + вполне приличную многоязыковую поддержку и возможности + интернационализации, так что редактирование корейских текстов уже не + является проблемой, даже в нелокализованной системе. + +\item \TeX{} и \LaTeX{} были изначально созданы для письменностей, + имеющих в алфавите не более 256 символов. Для того, чтобы они + работали с языками, где гораздо больше символов, например, + корейским\footnote{Корейский алфавит Hangul~--- буквенная + письменность с 14 основными согласными и 10 основными гласными + (Jamos). В отличие от латиницы или кириллицы, отдельные символы + должны быть размещены в прямоугольных блоках примерно такого же + размера, как и китайские. Каждый блок представляет слог. Из этого + небольшого количества гласных и согласных можно сформировать + бесконечное число слогов. Однако, современные орфографические + стандарты (как в Южной Корее, так и в Северной) налагают некоторые + ограничения на формирование этих блоков. Следовательно, существует + конечное число орфографически правильных слогов. Корейские кодировки + символов определяют индивидуальные коды для каждого из этих слогов + (KS~X~1001:1998 и KS~X~1002:1992). Таким образом, Hangul, будучи + буквенным, трактуется, тем не менее, так же, как письменности Китая + и Японии, с тысячами идеографических знаков. Стандарт + ISO~10646/Unicode предлагает оба способа представления Hangul, + использумых в \emph{современной} Корее, кодируя, в дополнение ко + всем орфографически разрешенным слогам Hangul + (\url{http://www.unicode.org/charts/PDF/UAC00.pdf}), еще и + Conjoining Hangul Jamos (алфавит: + \url{http://www.unicode.org/charts/PDF/U1100.pdf}). Одна из самых + устрашающих задач в наборе корейского текста в \LaTeX{} и + аналогичных системых~--- поддержка средневековых корейских (а, + возможно, и будущих корейских) слогов, которые можно представить + только комбинацией знаков Jamos в Unicode. Есть надежда, что будущие + варианты \TeX, например, $\Omega$ и $\Lambda$ в конце концов + предоставят решение для этой задачи, так что корейские лингвисты и + историки смогут сбежать из MS Word, где уже есть довольно неплохая + поддержка средневекового корейского.} и китайским, был разработан + механизм подшрифтов. Он делит единый шрифт CJK с тысячами или + десятками тысяч знаков на набор подшрифтов с 256 знаками в + каждом. Для корейского языка есть три широко используемых пакета: + \wi{H\LaTeX} (автор Un~Koanghi), \wi{h\LaTeX{}p} (автор + Cha~Jaechoon) и \wi{пакет CJK} (автор Werner~Lemberg).\footnote{% + Их можно получить по адресам \CTANref|language/korean/HLaTeX/|\\ + \CTANref|language/korean/CJK/| и + \texttt{http://knot.kaist.ac.kr/htex/}} +H\LaTeX{} и h\LaTeX{}p специфичны для корейского языка и предлагают + корейскую локализацию, помимо шрифтовой поддержки. Оба они + обрабатывают входные файлы в кодировке EUK-KR. H\LaTeX{} может + обрабатывать файлы в кодировках CP949/Windows-949/UHC и UTF-8, если + используется вместе с $\Lambda$, $\Omega$. + +Пакет CJK не специфичен для корейского языка. Он обрабатывает входные +файлы в UTF-8, а также в различных кодировках CJK, включая EUK-KR и +CP949/Windows-949/UHC. Его можно использовать для набора документов с +многоязычным содержанием (особенно китайским, японским и +корейским). Пакет CJK не содержит корейской локализации, аналогичной +той, что есть в H\LaTeX{}, и также не содержит такого множества +специальных корейских шрифтов. + +\item Конечная цель использования программ набора, включая \TeX{},~--- + получить документы, сверстанные <<эстетически>> + удовлетворительно. Можно утверждать, что наиболее важный элемент + верстки~--- это набор хорошо спроектированных шрифтов. Дистрибутив + H\LaTeX{} включает \index{корейский шрифт!UHC шрифт}UHC \PSi{} + шрифты десяти различных семейств и TrueType шрифты + Munhwabu\footnote{Министерство культуры Кореи} пяти различных + семейств. Пакет CJK работает с набором шрифтов, использовавшихся в + старых версиях H\LaTeX{}, а также может использовать TrueType шрифт + cyberbit компании Bitstream. +\end{enumerate} + +Для загрузки пакета H\LaTeX{} поместите в преамбуле следующее: +\begin{lscommand} +\verb+\usepackage{hangul}+ +\end{lscommand} + +Эта команда включает корейскую локализацию. Заголовки глав, разделов, +подразделов, оглавления и перечня иллюстраций будут переведены на +корейский, и форматирование документа изменится так, чтобы следовать +принятым в Корее правилам. Пакет также предоставляет автоматический +<<выбор частиц>>. В корейском языке существуют пары постфиксных +частиц, грамматически эквивалентных, но отличных по форме. Какая +частица из пары корректна, зависит от того, заканчивается ли +предыдущий слог на гласную или согласную. (На самом деле, правило чуть +сложнее, но общая идея такова.) Корейцам не составляет никакого труда +выбирать правильную частицу, однако невозможно заранее определить, +какую частицу использовать в ссылках и других местах с автоматически +генерируемым текстом, меняющимся при редактировании +документа. Вставлять при каждом изменении текста правильную частицу +везде вручную~--- решение совершенно ужасное. H\LaTeX{} автоматизирует +этот процесс. + +Если вам не нужна корейская локализация, а вы просто хотите набрать +корейский текст, поместите взамен в преамбулу следующее: +\begin{lscommand} +\verb+\usepackage{hfont}+ +\end{lscommand} + +Полная и подробная информация о верстке корейского текста при помощи +H\LaTeX{} приведена в \emph{Руководстве по H\LaTeX}. Смотрите веб-сайт +группы корейских пользователей \TeX{} (KTUG) по адресу +\url{http://www.ktug.or.kr/}. Существует также корейский перевод +настоящего документа. + + +\subsection{Поддержка кириллицы} +\secby{Maksym Polyakov}{polyama@myrealbox.com} + +Пакет \pai{babel}, начиная с версии~3.7, включает поддержку +кодировок~\fei{T2*} и поддержку верстки болгарских, русских и +украинских текстов с использованием кириллических +символов.\index{Болгарский}\index{Русский}\index{Украинский} + +Поддержка кириллицы основана на стандартных механизмах \LaTeX{}: +пакетах \pai{fontenc} и \pai{inputenc}. Но, если вам нужно +использовать кириллицу в математическом режиме, загрузите до пакета +\pai{fontenc} пакет \pai{mathtext}:\footnote{Если вы пользуетесь + пакетами \AmS-\LaTeX{}, загружайте их также до пакетов \pai{fontenc} + и \pai{babel}.} +\begin{lscommand} +\verb+\usepackage{mathtext}+\\ +\verb+\usepackage[+\fei{T1}\verb+,+\fei{T2A}\verb+]{fontenc}+\\ +\verb+\usepackage[+\iei{koi8-r}\verb+]{inputenc}+\\ +\verb+\usepackage[english,bulgarian,russian,ukranian]{babel}+ +\end{lscommand} + +Вообще говоря, \pai{babel} автоматически выберет кодировку шрифтов по +умолчанию. Для трех перечисленных языков это будет \fei{T2A}. Однако, +документы не ограничены только одной кодировкой шрифта. Для +многоязыковых документов, использующих языки, базирующиеся на +кириллице и латинице, имеет смысл явно подключить латинскую кодировку +шрифтов. \pai{babel} позаботится о переключении на правильную +кодировку, когда вы меняете язык в документе. + +В дополнение ко включению переносов, трансляции автоматически +генерируемых строк и активации некоторых специфичных для языка +типографских правил (например, \ci{frenchspacing}), \pai{babel} +предоставляет несколько команд для верстки в соответствии со +стандартами болгарского, русского или украинского языков. + +Для всех трех языков предоставляется специфическая пунктуация: +кириллическое тире для теста (оно слегка \'уже латинского тире и +окружено крошечными пробелами), тире для прямой речи, кавычки и +команды управления переносами. Смотрите таблицу~\ref{Cyrillic}. + +% Table borrowed from Ukrainian.dtx +\begin{table}[htb] + \begin{center} + \index{""-@\texttt{""}\texttt{-}} + \index{""---@\texttt{""}\texttt{-}\texttt{-}\texttt{-}} + \index{""=@\texttt{""}\texttt{=}} + \index{""`@\texttt{""}\texttt{`}} + \index{""'@\texttt{""}\texttt{'}} + \index{"">@\texttt{""}\texttt{>}} + \index{""<@\texttt{""}\texttt{<}} + \caption[Болгарский, русский и украинский]{Дополнительные + определения, вводимые опциями \pai{babel} для болгарского, + русского и украинского языков}\label{Cyrillic} + \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} + \hline + \verb="|= & запрещает лигатуру в этой позиции. \\ + \verb|"-| & дефис, разрешающий переносить остаток слова. \\ + \verb|"---| & кириллическое тире в обычном тексте. \\ + \verb|"--~| & кириллическое тире в составных фамилиях. \\ + \verb|"--*| & кириллическое тире для обозначения прямой речи. \\ + \verb|""| & как |"-|, но не генерирует знака дефиса + (для составных слов с дефисом, например, |x-""y|.\\ + \verb|"~| & отмечает составное слово без разрыва. \\ + \verb|"=| & отмечает составное слово с разрывом, разрешая перенос в + словах-компонентах. \\ + \verb|",| & пробел для инициалов с разрешением переноса в следующей + за ними фамилии. \\ + \verb|"`| & немецкая левая двойная кавычка + (выглядит так: ,\kern-0.08em,). \\ + \verb|"'| & немецкая правая двойная кавычка (выглядит так: ``). \\%'' + \verb|"<| & французская левая двойная кавычка (выглядит так: $<\!\!<$). \\ + \verb|">| & французская правая двойная кавычка (выглядит так: $>\!\!>$). \\ + \hline + \end{tabular} + \end{center} +\end{table} + +Русская и украинская опции пакета \pai{babel} вводят команды +\ci{Asbuk} и \ci{asbuk}, которые работают аналогично командам +\ci{Alph} и \ci{alph}, но генерируют прописные и строчные буквы +русского или украинского алфавитов (в зависимости от текущего языка +документа). Болгарская опция \pai{babel} вводит команды \ci{enumBul} и +\ci{enumLat} (\ci{enumEng}), которые заставляют \ci{Alph} и \ci{alph} +генерировать буквы либо болгарского, либо латинского (английского) +алфавитов. По умолчанию генерируются болгарские буквы. + +%Finally, math alphabets are redefined and as well as the commands for math +%operators according to Cyrillic typesetting traditions. + +\section{Пробелы между словами} + +Для получения ровного правого края вывода \LaTeX{} вставляет различные +интервалы между словами. В конце предложения он вставляет слегка +больший интервал, делая текст более читабельным.\trfootnote{В + соответствии с традициями верстки, принятыми в английском + языке.} \LaTeX{} предполагает, что +предложения заканчиваются точками, вопросительными или +восклицательными знаками. Если точка следует за буквой в верхнем +регистре, она не считается концом предложения, так как точки после +букв верхнего регистра обычно используются для сокращений. + +Любое исключение из этих предположений должно быть явно оговорено +автором. Знак~<<\verb|\|>> перед пробелом дает в результате пробел, +который не будет увеличен. Знак~<<\verb|~|>> дает пробел, который не +может увеличиться и который, кроме того, запрещает разрыв строки. +Команда \verb|\@| перед точкой указывает, что эта точка заканчивает +предложение, несмотря на то, что стоит за буквой верхнего регистра. +\cih{"@} \index{~@ \verb.~.} \index{тильда@тильда (\verb.~.)} +\index{точка, пробел после} + +\begin{example} +Mr.~Smith was happy to see her\\ +cf.~Fig.~5\\ +I like BASIC\@. What about you? +\end{example} + +Дополнительный пробел после точек можно запретить командой +\begin{lscommand} +\ci{frenchspacing} +\end{lscommand} +\noindent которая указывает \LaTeX{} \emph{не} вставлять пробела после +точки более, чем после обычных символов. Это обычно для языков, +отличных от английского, за исключением библиографий. Если вы +используете \ci{frenchspacing}, команда \verb|\@| не нужна. + +\section{Заголовки, главы и разделы} + +Чтобы помочь читателю ориентироваться в вашей работе, вы должны +разделять ее на главы, разделы и подразделы. \LaTeX{} поддерживает это +специальными командами, принимающими в качестве аргумента заголовок +раздела. Ваше дело~--- использовать их в надлежащем порядке. + +Класс \texttt{article} включает следующие команды секционирования: + +\begin{code} +\ci{section}\verb|{...} |\ci{paragraph}\verb|{...}|\\ +\ci{subsection}\verb|{...} |\ci{subparagraph}\verb|{...} |\\ +\ci{subsubsection}\verb|{...}| +\end{code} + +В классах \texttt{report} и \texttt{book} вы можете использовать +дополнительную команду \ci{chapter}\verb|{...}|. + +Если вы хотите разбить ваш документ на части без изменения нумерации +разделов/глав, используйте команду \ci{part}\verb|{...}|. + +Так как глав (chapters) в классе \texttt{article} нет, то +статьи довольно легко добавлять в книгу в качестве глав. Интервалы +между разделами, нумерация и размер шрифта заголовков устанавливаются +\LaTeX{} автоматически. + +Две из команд секционирования~--- особенные: +\begin{itemize} +\item Команда \ci{part} не влияет на последовательность нумерования + глав. +\item Команда \ci{appendix} аргумента не имеет. Она просто начинает + нумеровать главы буквами вместо цифр.\footnote{В классе + \texttt{article} меняется нумерация разделов.} +\end{itemize} + + + +\LaTeX{} создает оглавление, беря заголовки разделов и номера страниц +из предыдущего цикла компиляции документа. Команда +\begin{lscommand} +\ci{tableofcontents} +\end{lscommand} +\noindent вставляет оглавление в то место, где она вызвана. Чтобы +получить правильное \wi{оглавление}, новый документ должен быть +обработан \LaTeX{} дважды. В особых случаях может быть необходим и +третий проход. Когда это потребуется, \LaTeX{} вас предупредит. + +Все вышеперечисленные команды секционирования существуют также в +вариантах со звездочкой. Такой вариант получается добавлением \verb|*| +к имени команды. Они генерируют заголовки разделов, которые не +нумеруются и не включаются в оглавление. Например, команда +\verb|\section{Справка}| становится \verb|\section*{Справка}|.\sloppypar + +Обычно заголовки разделов появляются в оглавлении точно в том же виде, +в каком они вводятся в тексте. Иногда это невозможно из-за того, что +заголовок слишком длинен для оглавления. Элемент оглавления может в +этом случае указываться необязательным аргументом перед собственно +заголовком. +\begin{code} +\verb|\chapter[Заголовок для оглавления]{Это~--- длинный,|\\ +\verb| длинный и очень нудный заголовок, появляющийся в тексте}| +\end{code} + +Титульный лист +\index{лист!титульный}\index{титульный лист} +документа в целом генерируется при помощи команды +\begin{lscommand} +\ci{maketitle} +\end{lscommand} +\noindent Его содержимое должно быть определено командами +\begin{lscommand} + \ci{title}\verb|{...}|, \ci{author}\verb|{...}| и + \ci{date}\verb|{...}| +\end{lscommand} +\noindent до момента вызова \verb|\maketitle|. Аргумент команды +\ci{author} может содержать несколько имен, разделенных командами +\ci{and}. + +Пример некоторых из упомянутых команд может быть найден на +иллюстрации~\ref{document} на странице~\pageref{document}. + +Помимо описанных выше команд секционирования, \LaTeXe{} вводит три +дополнительных команды для использования с классом \texttt{book}. +Они полезны для деления вашей публикации. Команды изменяют заголовки +глав и нумерацию страниц так, как это ожидается от +книги: + +\begin{description} +\item[\ci{frontmatter}] должна быть самой первой командой после + \verb|\begin{document}|. Она переключает нумерацию страниц на + использование римских цифр. Для вводной части часто используют + команды секционирования со звездочками (например, + \verb|\chapter*{Предисловие}|), чтобы \LaTeX{} не нумеровал эти + разделы. + \item[\ci{mainmatter}] указывается сразу перед первой главой + книги. Она включает нумерацию страниц цифрами и сбрасывает счетчик + страниц. + \item[\ci{appendix}] отмечает начало дополнительного материала в + вашей книге. После этой команды главы будут нумероваться буквами. + \item[\ci{backmatter}] указыватеся перед самыми последними частями + книги, например, перед библиографией и предметным указателем. В + стандартных классах документов видимого эффекта она не имеет. +\end{description} + +\section{Перекрестные ссылки} + +В книгах, отчетах и статьях часто встречаются \wi{перекрестные ссылки} +на иллюстрации, таблицы и отдельные части текста. Для этого \LaTeX{} +предоставляет следующие команды: +\begin{lscommand} +\ci{label}\verb|{|\emph{метка}\verb|}|, \ci{ref}\verb|{|\emph{метка}\verb|}| +и \ci{pageref}\verb|{|\emph{метка}\verb|}| +\end{lscommand} +\noindent где \emph{метка}~--- выбранный пользователем +идентификатор. \LaTeX{} заменяет \verb|\ref| номером раздела, +подраздела, иллюстрации, таблицы или уравнения, где была использована +соответствующая команда \verb|\label|. \verb|\pageref| печатает номер +страницы, соответствующей команде \verb|\label|.\footnote{Заметьте, что + эти команды не знают, на что именно они ссылаются. \ci{label} просто + сохраняет последний автоматически генерируемый номер.} Так же, как +и в случае с заголовками разделов, здесь также используются номера из +предыдущего прохода. + +\begin{example} +Ссылка на этот +раздел~\label{sec:this} +выглядит так: <<см. +раздел~\ref{sec:this} на +стр.~\pageref{sec:this}.>> +\end{example} + +\section{Сноски} + +Команда +\begin{lscommand} +\ci{footnote}\verb|{|\emph{текст сноски}\verb|}| +\end{lscommand} +\noindent печатает сноску внизу текущей страницы. Сноски всегда должны +помещаться после слова или предложения, к которым они относятся. В +русском языке сноски, относящиеся к предолжению, должны ставиться +сразу перед точкой или запятой\footnote{Заметьте, что сноски отвлекают + читателя от основного текста документа. Все всегда читают сноски, + потому что мы~--- любопытные создания. Поэтому старайтесь включать + все, что вы хотите сказать, в основной текст документа.}. +%не понял юмора. BT. + +\begin{example} + Пользователи \LaTeX{} + часто употребляют + сноски.\footnote{% + Это~--- сноска.} +\end{example} + + +\section{Выделенные слова} + +В рукописи, напечатанной на машинке, \texttt{важные слова выделяются + \underline{подчеркиванием}}: + +\begin{lscommand} +\ci{underline}\verb|{|\emph{текст}\verb|}| +\end{lscommand} + +В печатных изданиях, однако, эти слова выделяются \emph{курсивом}. Команда для +переключения на шрифт \emph{выделения} называется +\begin{lscommand} +\ci{emph}\verb|{|\emph{текст}\verb|}| +\end{lscommand} +\noindent Ее аргументом является текст для +выделения\index{выделение}. Что на самом деле делает эта команда, +зависит от контекста: + +\begin{example} +Если вы используете +\emph{выделение в уже +выделенном тексте, то +\LaTeX{} использует +\emph{прямой} шрифт.} +\end{example} + +Отметьте отличие между командами \emph{выделения} и смены +\emph{шрифта}: + +\begin{example} +\textit{Вы можете также + \emph{выделить} текст, + набрав его курсивом,} +\textsf{шрифтом без + \emph{засечек}} +\texttt{или в стиле + \emph{пишущей машинки}.} +\end{example} + +\section{Окружения} \label{env} + +Для верстки специальных видов текста \LaTeX{} определяет множество +\index{окружение}окружений для разных типов форматирования: +\begin{lscommand} +\ci{begin}\verb|{|\emph{название}\verb|}|\quad + \emph{текст}\quad +\ci{end}\verb|{|\emph{название}\verb|}| +\end{lscommand} +\noindent где \emph{название} определяет окружение. Окружения можно +вызывать внутри окружений, соблюдая порядок вызова и возврата: +\begin{code} +\verb|\begin{aaa}...\begin{bbb}...\end{bbb}...\end{aaa}| +\end{code} + +\noindent В следующих разделах рассказывается обо всех важных +окружениях. + +\subsection{Список, перечисление и описание} + +Окружение \ei{itemize} подходит для простых списков, окружение +\ei{enumerate}~--- для нумерованных списков, а окружение +\ei{description}~--- для описаний. +\cih{item} + +\begin{example} +\flushleft +\begin{enumerate} +\item Вы можете как угодно +смешивать окружения списков: +\begin{itemize} +\item Но это может смотреться +глупо. +\item[-] С минусом. +\end{itemize} +\item Поэтому помните: +\begin{description} +\item[Глупые] вещи не станут +умнее от помещения в список. +\item[Умные] вещи, однако, +вполне можно представить +списком. +\end{description} +\end{enumerate} +\end{example} + +\subsection{Выравнивание влево, вправо и по центру} + +Окружения \ei{flushleft} и \ei{flushright} форматируют абзацы, +выровненные влево или вправо.\index{выравнивание!вправо или влево} +Окружение \ei{center} дает центрированный текст. Если вы не +используете \ci{\bs} для указания разрывов строк, \LaTeX{} определит +их автоматически. + +\begin{example} +\begin{flushleft} + Этот текст\\ выровнен влево. + \LaTeX{} не старается сделать + все строки одинаковой длины. +\end{flushleft} +\end{example} + +\begin{example} +\begin{flushright} + Этот текст\\ выровнен вправо. + \LaTeX{} не старается сделать + все строки одинаковой длины. +\end{flushright} +\end{example} + +\begin{example} +\begin{center} + В центре\\Земли +\end{center} +\end{example} + +\subsection{Цитаты и стихи} + +Окружение \ei{quote} полезно для цитат, важных фраз и примеров. + +\begin{example} +Типографское правило для +длины строки: +\begin{quote} + Обычно строки должны + содержать не больше + 66~символов. +\end{quote} + +Поэтому \LaTeX{} делает такими +широкими поля страниц. Поэтому +в газетах часто применяют набор +в несколько колонок. +\end{example} + +Существуют еще два похожих окружения: \ei{quotation} и \ei{verse}. +Окружение \texttt{quotation} полезно для более длинных цитат, +охватывающих несколько абзацев, потому что оно начинает абзацы с +красной строки. Окружение \texttt{verse} используют для стихов, где +важны разрывы строк. Строки разделяются при помощи \ci{\bs} в конце +строки и пустой строки после каждой строфы. + +\begin{example} +Я знаю только одно английское +стихотворение наизусть: про +Шалтая-Болтая: +\begin{flushleft} +\begin{verse} +Humpty Dumpty sat on a wall:\\ +Humpty Dumpty had a great fall.\\ +All the King's horses and all +the King's men\\ +Couldn't put Humpty together +again. +\end{verse} +\end{flushleft} +\end{example} + +\subsection{Буквальное воспроизведение} + +Текст, заключенные между \verb|\begin{|\ei{verbatim}\verb|}| и +\verb|\end{verbatim}| будет напрямую напечатан, как набранный на +пишущей машинке, со всеми пробелами и возвратами каретки, без +выполнения каких бы то ни было команд \LaTeX{}. + +Внутри абзаца аналогичную функцию выполняет команда +\begin{lscommand} +\ci{verb}\verb|+|\emph{текст}\verb|+| +\end{lscommand} +\noindent Здесь <<\verb|+|>>~--- это только пример +символа-ограничителя. Вы можете использовать любой символ, кроме букв, +<<\verb|*|>> или пробела. Многие примеры на \LaTeX{} в этом буклете +набраны этой командой. + +\begin{example} +Команда \verb|\ldots| \ldots + +\begin{verbatim} +10 PRINT "HELLO WORLD "; +20 GOTO 10 +\end{verbatim} +\end{example} + +\begin{example} +\begin{verbatim*} +вариант окружения +verbatim со +звездочкой выделяет +пробелы в тексте +\end{verbatim*} +\end{example} + +Команду \ci{verb} тоже можно использовать аналогичным образом со +звездочкой: + +\begin{example} +\verb*|вот так :-) | +\end{example} + +Окружение \texttt{verbatim} и команду \verb|\verb| нельзя использовать +внутри параметров других команд. + + +\subsection{Таблицы} + +Окружение \ei{tabular} используют для верстки таблиц, возможно, с +горизонтальными и вертикальными линиями. \LaTeX{} автоматически +определяет ширину столбцов. + +Аргумент \emph{спецификация} команды +\begin{lscommand} +\verb|\begin{tabular}[|\emph{позиция}\verb|]{|\emph{спецификация}\verb|}| +\end{lscommand} +\noindent определяет формат таблицы. Используйте \texttt{l} для +столбца текста, выровненного влево, \texttt{r} для текста, +выровненного вправо и \texttt{c} для центрированного текста, +\verb|p{|\emph{ширина}\verb|}| для столбца, содержащего выровненный +текст с переносом строк, и \verb.|. для вертикальной линии. + +\emph{Позиция} определяет вертикальное положение всего табличного +окружения: \texttt{t}, \texttt{b} и \texttt{c} означают выравнивание +по верхнему краю, нижнему краю или по центру окружения. + +Внутри окружения \texttt{tabular} знак~<<\verb|&|>> переходит к +следующему столбцу, команда~\ci{\bs} начинает новую строку, а +\ci{hline} вставляет горизонтальную линию.\index{"|@\verb."|.} Вы +можете добавлять неполные линии при помощи команды +\ci{cline}\verb|{j-i}|, где \texttt{j} и \texttt{i}~--- номера +столбцов, над которыми должна проходить линия. + +\begin{example} +\begin{tabular}{|r|l|} +\hline +7C0 & шестнадцатеричное \\ +3700 & восьмеричное \\ \cline{2-2} +11111000000 & двоичное \\ +\hline \hline +1984 & десятичное \\ +\hline +\end{tabular} +\end{example} + +\begin{example} +\begin{tabular}{|p{4.7cm}|} +\hline +Добро пожаловать в абзац в +рамочке. Надеемся, вам всем +тут понравится.\\ +\hline +\end{tabular} +\end{example} + +Разделитель столбцов можно задать конструкцией \verb|@{...}|. Эта +команда удаляет пробел между столбцами и заменяет его на то, что +включено в фигурные скобки. Одно из частых использований этой команды +показано ниже, при рассказе о проблеме выравнивания по десятичной +точке. Другое возможно использование~--- для подавления ведущего +пробела в таблице при помощи \verb|@{}|: + +\begin{example} +\begin{tabular}{@{} l @{}} +\hline +нет ведущего пробела\\ +\hline +\end{tabular} +\end{example} + +\begin{example} +\begin{tabular}{l} +\hline +ведущий пробел слева и справа\\ +\hline +\end{tabular} +\end{example} + +% +% This part by Mike Ressler +% + +\index{выравнивание!по десятичной точке} Поскольку встроенный способ +выровнять числовые столбцы по десятичной точке +отсутствует,\footnote{Если на вашей системе установлен комплект + `tools', обратите внимание на пакет \pai{dcolumn}.} мы можем +<<обмануть>> \TeX{} и добиться этого при помощи двух столбцов: +выровненной вправо целой части и выровненной влево дробной. Команда +\verb|@{.}| в строке \verb|\begin{tabular}| заменяет нормальный пробел + между столбцами просто на <<.>>, давая эффект одного столбца, + выровненного по десятичной точке. Не забудьте заменить в ваших + числах точку на разделитель столбцов (\verb|&|)! Метку столбца можно + поместить над нашим числовым <<столбцом>> командой \ci{multicolumn}: + +\begin{example} +\begin{tabular}{c r @{.} l} +Выражение с $\pi$ & +\multicolumn{2}{c}{Значение} \\ +\hline +$\pi$ & 3&1416 \\ +$\pi^{\pi}$ & 36&46 \\ +$(\pi^{\pi})^{\pi}$ & 80662&7 \\ +\end{tabular} +\end{example} + +\begin{example} +\begin{tabular}{|c|c|} +\hline +\multicolumn{2}{|c|}{Ene} \\ +\hline +Mene & Muh! \\ +\hline +\end{tabular} +\end{example} + +Материал, набираемый в окружении \texttt{tabular}, всегда верстается +на одной странице. Если вам нужно набирать длинные таблицы, +используйте окружения \pai{supertabular} или \pai{longtable}. + +\section{Плавающие объекты} +Большинство публикаций в наши дни содержат множество иллюстраций и +таблиц. Эти элементы нуждаются в специальном обращении с ними, так как +они не могут быть разбиты между страницами. Одним из выходов было бы +начинать новую страницу каждый раз, когда встречается иллюстрация или +таблица, слишком большая, чтобы поместиться на текущей странице. Этот +подход привел бы к тому, что страницы оставались бы частично пустыми, +что смотрится очень плохо. + +Для решения этой проблемы любая иллюстрация или таблица, не умещающаяся +на текущей странице, может `плавать', перемещаясь на следующую +страницу в процессе заполнения текстом текущей. \LaTeX{} предлагает +для плавающих объектов\index{плавающие объекты} два окружения, одно для таблиц и одно для +иллюстраций. Чтобы полностью использовать их преимущества, важно +примерно представлять, как \LaTeX{} обрабатывает плавающие +объекты. Иначе они могут стать источником разочарования из-за того, +что \LaTeX{} помещает их не туда, куда вы хотите. + +Давайте вначале рассмотрим команды, предоставляемые \LaTeX{} для +плавающих объектов. + +Любой материал, включенный в окружения \ei{figure} или \ei{table}, +трактуется как плавающий. Оба окружения имеют необязательный +параметр +\begin{lscommand} +\verb|\begin{figure}[|\emph{спецификация размещения}\verb|]| или\\ +\verb|\begin{table}[|\emph{спецификация размещения}\verb|]| +\end{lscommand} +\noindent называемый \emph{спецификацией размещения}. Этот параметр +используется для указания \LaTeX{}, куда можно перемещать плавающий +объект. \emph{Спецификация размещения} конструируется путем собирания +в строчку \emph{ключей размещения плавающего объекта}. См. +таблицу~\ref{tab:permiss}. + +\begin{table}[!bp] +\caption{Ключи размещения плавающего объекта}\label{tab:permiss} +\noindent \begin{minipage}{\textwidth} +\medskip +\begin{center} +\begin{tabular}{@{}cp{10cm}@{}} +Ключ&Разрешает помещать объект \ldots\\ +\hline +\rule{0pt}{1.05em}\texttt{h} & \emph{здесь же}, в том самом месте +текста, где он появился. Обычно используется для маленьких объектов.\\[0.3ex] +\texttt{t} & \emph{наверху} страницы\\[0.3ex] +\texttt{b} & \emph{внизу} страницы\\[0.3ex] +\texttt{p} & на \emph{специальной странице}, содержащей только +плавающие объекты.\\[0.3ex] +\texttt{!} & не рассматривать большинство внутренних +параметров,\footnote{Таких, как максимальное число плавающих объектов, + разрешенных на одной странице} которые могут предотвратить +размещение этого объекта. +\end{tabular} +\end{center} +\end{minipage} +\end{table} + +Замечание: \texttt{0pt} и \texttt{1.05em}~--- единицы измерения длин +\TeX{}. Подробности о единицах и размерностях смотрите в +таблице~\ref{units} на странице~\pageref{units}. + + +Например, таблицу можно начать следующей строкой: +\begin{code} +\verb|\begin{table}[!hbp]| +\end{code} +\noindent Спецификация размещения \index{спецификация размещения} \verb|[!hbp]| позволяет +\LaTeX{} разместить таблицу прямо по месту (\texttt{h}), или внизу той +же страницы (\texttt{b}), или на выделенной странице (\texttt{p}), и +все это~--- даже если это будет смотреться не так уж хорошо +(\texttt{!}). Если никакой спецификации размещения не задано, +стандартные классы предполагают \verb|[tbp]|. + +\LaTeX{} размещает каждый встреченный плавающий объект в соответствии +с заданной автором спецификацией. Если объект нельзя поместить на +текущей странице, он откладывается, помещаясь в очередь +иллюстраций\index{иллюстрации} или в очередь +таблиц.\index{таблицы}\footnote{Эти очереди подчиняются дисциплине + \emph{fifo}: `первым вошел~--- первым вышел'.} Когда начинается +новая страница, \LaTeX{} проверяет, можно ли заполнить специальную +страницу плавающими объектами из очередей. Если нет, то первый объект +из каждой очереди считается только что встретившимся в тексте: +\LaTeX{} снова пытается разместить их в соответствии с их +спецификациями (за исключением `h', что уже невозможно). Новые +встреченные в тексте плавающие объекты помещаются в соответствующие +очереди. \LaTeX{} сохраняет порядок, в котором встретились плавающие +объекты соответствующего типа. Поэтому иллюстрация, которую не удается +разместить, отталкивает все дальнейшие иллюстрации к концу документа. +Следовательно: + +\begin{quote} + Если \LaTeX{} не размещает плавающие объекты, как вы этого ожидаете, + то часто это только один объект устроил затор в одной из очередей. +\end{quote} + +Хотя и возможно задавать в \LaTeX{} конкретную спецификацию размещения +плавающего объекта, это может вызвать проблемы. Если объект не +помещается в указанном месте, он <<застревает>>, блокируя последующие +плавающие объекты. В частности, никогда не используйте ключ +\texttt{[h]}; это настолько плохо, что в современных версиях \LaTeX{}, +он автоматически заменяется \texttt{[ht]}. + +\bigskip +\noindent После объяснения этих механизмов остается еще несколько +замечания про окружения \ei{table} и \ei{figure}. Командой + +\begin{lscommand} +\ci{caption}\verb|{|\emph{текст заголовка}\verb|}| +\end{lscommand} + +\noindent вы можете задать заголовок для объекта. Увеличивающийся +номер и строка <<Рисунок>> или <<Таблица>> добавляются \LaTeX{}. + +Две команды + +\begin{lscommand} +\ci{listoffigures} и \ci{listoftables} +\end{lscommand} + +\noindent работают аналогично команде \verb|\tableofcontents|, печатая +список иллюстраций или таблиц, соответственно. В этих списках +заголовки повторяются целиком. Если вы используете длинные заголовки, +то вы должны предоставить их краткий вариант для включения в списки. +Это делается помещением краткого варианта в квадратные скобки после +команды \verb|\caption|. +\begin{code} +\verb|\caption[Короткий]{Дддддллллллиииинннннныыыыыыыыыыыыыыййй}| +\end{code} + +При помощи \verb|\label| и \verb|\ref| можно делать ссылки из вашего +текста на плавающий объект. + +Следующий пример рисует квадрат и вставляет его в документ. Подобную +технику можно использовать, чтобы оставить в документе место под +изображения, которые вы вставите позже. + +\begin{code} +\begin{Verbatim} +Рисунок~\ref{white} является примером Поп-Арта. +\begin{figure}[!hbp] +\makebox[\textwidth]{\framebox[5cm]{\rule{0pt}{5cm}}} +\caption{Пять на пять сантиметров} \label{white} +\end{figure} +\\\end{Verbatim} +\end{code} + +\noindent В этом примере \LaTeX{} будет \emph{очень сильно}~(\texttt{!}) стараться +разместить иллюстрацию прямо \emph{по + месту}~(\texttt{h}).\footnote{Предполагая, что очередь иллюстраций + пуста} Если это невозможно, он попытается разместить ее \emph{внизу + страницы}~(\texttt{b}). Если ему не удастся поместить иллюстрацию на +текущей странице, он выяснит, можно ли создать страницу плавающих +объектов, содержащую эту иллюстрацию и, возможно, некоторые таблицы из +очереди таблиц. Если для отдельной страницы материала еще не +накопилось, \LaTeX{} начинает новую страницу и снова рассматривает +иллюстрацию, как если бы она только что появилась в тексте. + +В определенных случаях может быть необходимо использовать команду +\begin{lscommand} +\ci{clearpage} или даже \ci{cleardoublepage} +\end{lscommand} + +\noindent Она указывает \LaTeX{} немедленно разместить все плавающие +объекты, остававшиеся в очередях, и затем начать новую страницу. +\ci{cleardoublepage}, помимо этого, начинает новую правостороннюю +страницу. + +Позже вы узнаете, как включать в ваши документы \LaTeX{} рисунки в +формате \textsc{PostScript}. + + +\section{Защита хрупких команд} + +Текст, заданный в аргументах команд наподобие \ci{caption} или +\ci{section}, появляется в документе больше одного раза (например, в +оглавлении, в колонтитулах и в теле документа). Некоторые команды не +работают, будучи использованы в аргументах команд типа \ci{section}. +Их называют хрупкими командами\index{команды!хрупкие}. В частности, +хрупкими являются команды \ci{footnote} или \ci{phantom}. Для того, +чтобы они работали как предполагается, необходимо перед ними поставить +команду \ci{protect}. + +Команда \ci{protect} относится только к команде, непосредственно +следующей за ней; даже не к ее аргументам. В большинстве случаев +лишняя команда \ci{protect} не повредит. + +\begin{code} +\verb|\section{Я внимателен|\\ +\verb| \protect\footnote{и защищаю свои сноски}}| +\end{code} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "lshort" +%%% End: |