diff options
author | Karl Berry <karl@freefriends.org> | 2005-12-29 00:20:16 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2005-12-29 00:20:16 +0000 |
commit | 0f9fdf5c7a9303ad1ea935f55c0182143298fd10 (patch) | |
tree | 6977f0e84c9c51d1f330529cca00587a5b04d679 /Master/texmf-doc/doc/russian/lshort-russian/src/custom.tex | |
parent | 37b2dc3692509cddb99f58d16676eb89b1d283cf (diff) |
doc/some
git-svn-id: svn://tug.org/texlive/trunk@14 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-doc/doc/russian/lshort-russian/src/custom.tex')
-rw-r--r-- | Master/texmf-doc/doc/russian/lshort-russian/src/custom.tex | 862 |
1 files changed, 862 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/russian/lshort-russian/src/custom.tex b/Master/texmf-doc/doc/russian/lshort-russian/src/custom.tex new file mode 100644 index 00000000000..0dda290f8a0 --- /dev/null +++ b/Master/texmf-doc/doc/russian/lshort-russian/src/custom.tex @@ -0,0 +1,862 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Contents: Customising LaTeX output +% $Id: custom.tex,v 1.1.1.1 2002/02/26 10:04:20 oetiker Exp $ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Настройка \LaTeX} + +\begin{intro} + Произведенные с использованием изученных до сих пор команд документы + будут выглядеть вполне приемлемо для широкой аудитории. Они не + выглядят очень модно, подчиняясь зато всем правилам хорошего тона в + наборе, поэтому их легко читать и на них приятно смотреть. + + Но бывают ситуации, в которых \LaTeX{} не предоставляет команду или + окружение, удовлетворяющие вашим ожиданиям, или производимый + некоторой существующей командой вывод не отвечает вашим требованиям. + + В этой главе даются некоторые советы по обучению \LaTeX{} новым + вещам, и тому, как сделать его вывод отличающимся от того, что + производится по умолчанию. +\end{intro} + + +\section{Новые команды, окружения и пакеты} + +Как вы заметили, все вводимые в этой книге команды верстаются в рамке +и включаются в указатель в конце книги. Вместо того, чтобы напрямую +использовать необходимые для этого команды \LaTeX{}, автор создал +\wi{пакет}, в котором определил новые команды и окружения для этой +цели. Теперь можно просто писать: + +\begin{example} +\begin{lscommand} +\ci{dum} +\end{lscommand} +\end{example} + +В этом примере используются как новое окружение, называющееся +\ei{lscommand} и отвечающее за рисование рамки вокруг команды, так и +новая команда, называющаяся \ci{ci} и верстающая название команды и +заносящая соответствующий элемент в указатель. Вы можете в этом +убедиться, поискав команду \ci{dum} в указателе в конце книги, где вы +найдете запись для \ci{dum}, указывающую на эту страницу. + +Если автор когда-нибудь решит, что ему не нравятся больше команды, +сверстанные в рамке, он просто изменит определение окружения +\texttt{lscommand}. Это намного проще, чем пройти по всему документу, +выискивая все места, где использованы общие команды \LaTeX{} для +рисования рамки вокруг слов. + + +\subsection{Новые команды} + +Чтобы добавить ваши собственные команды, пользуйтесь командой + +\begin{lscommand} +\ci{newcommand}\verb|{|% + \emph{название}\verb|}[|\emph{число}\verb|]{|\emph{определение}\verb|}| +\end{lscommand} + +Обычно эта команда требует двух аргументов. \emph{Название} команды, +которую вы создаете, и \emph{определение} команды. Аргумент +\emph{число} в квадратных скобках не обязателен. Он применяется для +создания новых команды, которые, в свою очередь, принимают до 9 +аргументов. + +Следующие два примера должны вам помочь получить представление о +команде. Первый пример определяет новую команду, называющуюся +\ci{tnss}, что является сокращением от ``The Not So Short Introduction +to \LaTeXe''. Такая команда пригодится, если вам много раз приходится +писать название этой книги. + +\begin{example} +\newcommand{\tnss}{The not + so Short Introduction to + \LaTeXe} +% в теле документа: +``\tnss'' \ldots{} ``\tnss'' +\end{example} + +Следующий пример показывает, как определить новую команду, принимающую +один аргумент. Метка \verb|#1| заменяется на заданный аргумент. Если вы +хотите использовать более одного аргумента, пользуйтесь \verb|#2|, и +так далее. + +\begin{example} +\newcommand{\txsit}[1] + {\emph{#1} краткое + введение в \LaTeXe} +% в теле документа +\begin{itemize} +\item \txsit{Не очень} +\item \txsit{Очень} +\end{itemize} +\end{example} + +\LaTeX{} не позволит вам создать новую команду, которая бы изменяла +уже существующую. Но для случая, когда вы явно хотите изменить +существующую команду, есть специальная команда: \ci{renewcommand}. Она +имеет тот же синтаксис, что и команда \verb|\newcommand|. + +В некоторых случаях может пригодиться команда \ci{providecommand}. Она +работает так же, как \ci{newcommand}, но, если команда уже определена, +то \LaTeXe{} ее молча проигнорирует. + +Существуют определенные особенности, связанные с пробелами после +команд \LaTeX{}. Подробности смотрите на +странице~\pageref{whitespace}. + + +\subsection{Новые окружения} + +Аналогичная команде \verb|\newcommand|, существует команда для создания +вашего собственного окружения, \ci{newenvironment}, имеющая следующий +синтаксис: + +\begin{lscommand} +\ci{newenvironment}\verb|{|% + \emph{название}\verb|}[|\emph{номер}\verb|]{|% + \emph{начало}\verb|}{|\emph{конец}\verb|}| +\end{lscommand} + +Подобно команде \verb|\newcommand|, \ci{newenvironment} можно +использовать с необязательным аргументом, или без него. Материал, +заключенный в аргумент \emph{начало}, обрабатывается до обработки +текста внутри окружения. Материал, заключенный в аргумент +\emph{конец}, обрабатывается, когда встречается команда +\verb|\end{|\emph{название}\verb|}|. Следующий пример иллюстрирует +использование команды \ci{newenvironment}. + +\begin{example} +\newenvironment{king} + {\rule{1ex}{1ex}% + \hspace{\stretch{1}}} + {\hspace{\stretch{1}}% + \rule{1ex}{1ex}} + +\begin{king} +Мои смиренные подданные\ldots +\end{king} +\end{example} + +Аргумент \emph{номер} используют так же, как и для команды +\verb|\newcommand|. \LaTeX{} контролирует, чтобы вы не определяли уже +существующее окружение. Если вы заходите все же это сделать, +пользуйтесь командой \ci{renewenvironment}. Она имеет тот же +синтаксис, что ли \ci{newenvironment}.\sloppypar + +Команды, использованные в этом примере, будут разъяснены позже: +описание команды \ci{rule} см. на стр.~\pageref{sec:rule}, команда +\ci{stretch} описана на стр.~\pageref{cmd:stretch}, а описание команды +\ci{hspace} находится на стр.~\pageref{sec:hspace}. + +\subsection{Ваш собственный пакет} + +Когда вы определяете множество новых окружений и команд, преамбулы +ваших документов становятся очень большими. В этой ситуации +представляется разумным создать пакет \LaTeX{}, содержащий определения +всех ваших команд и окружений. Потом можно командой \ci{usepackage} +использовать пакет в ваших документах.\sloppypar + +\begin{figure}[!htbp] +\begin{lined}{\textwidth} +\begin{verbatim} +% Пакет для демонстрации. Tobias Oetiker. +\ProvidesPackage{demopack} +\newcommand{\tnss}{Не очень краткое введение в \LaTeXe} +\newcommand{\txsit}[1]{\emph{#1} краткое + введение в \LaTeXe} +\newenvironment{king}{\begin{quote}}{\end{quote}} +\end{verbatim} +\end{lined} +\caption{Пример пакета} \label{package} +\end{figure} + +Создание пакета в основном состоит из переноса содержимого вашей +преамбулы в отдельный файл с именем, заканчивающимся на +\texttt{.sty}. Есть только одна специальная команда, которую вы должны +использовать +\begin{lscommand} +\ci{ProvidesPackage}\verb|{|\emph{название пакета}\verb|}| +\end{lscommand} +\noindent в самом начале файла с вашим +пакетом. \verb|\ProvidesPackage| указывает \LaTeX{} название пакета, +что позволяет ему выдавать осмысленное сообщение об ошибке, когда вы +пытаетесь включать пакет дважды. Иллюстрация~\ref{package} показывает +маленький пример пакета, содержащего определенные в вышеприведенных +примерах команды. + + +\section{Шрифты и их размеры} + + +\subsection{Команды смены шрифта} + +\index{шрифт}\index{шрифт!размер} \LaTeX{} выбирает подходящее +начертание и размер шрифта, основываясь на логической структуре +документа (разделы, сноски,~\ldots). Иногда может быть желательно +сменить шрифт вручную. Для этого вы можете пользоваться командами, +перечисленными в таблицах~\ref{fonts} и~\ref{sizes}. Действительный +размер каждого шрифта определяется дизайном и зависит от класса и +опций документа. Таблица~\ref{tab:pointsizes} показывает абсолютные +размеры, соответствующие этим командам в стандартных классах +документов. + +% Эх, не перевести игру слов :( +%\begin{example} +%{\small The small and +%\textbf{bold} Romans ruled} +%{\Large all of great big +%\textit{Italy}.} +%\end{example} + +\begin{example} + {\small Маленький, + \textbf{полужирный}, + \Large большой, + \textit{курсив}.} +\end{example} + +Важная особенность \LaTeXe{} заключается в том, что атрибуты шрифта +независимы. Это значит, что вы можете давать команды смены размера или +даже семейства шрифта, сохраняя при этом установки атрибутов наклона +или насыщенности. + +В \emph{математическом режиме} вы можете использовать \emph{команды} +смены шрифта, чтобы временно выйти из \emph{математического режима} и +ввести нормальный текст. Если вы хотите переключиться на другой шрифт +для верстки математики, то для этого существует отдельный набор +команд. Смотрите таблицу~\ref{mathfonts}. + +\begin{table}[!bp] +\caption{Шрифты} \label{fonts} +\begin{lined}{12cm} +% +% Alan suggested not to tell about the other form of the command +% eg \verb|\sffamily| or \verb|\bfseries|. This seems a good thing to me. +% +\begin{tabular}{@{}rl@{\qquad}rl@{}} +\fni{textrm}\verb|{...}| & \textrm{\wi{прямой шрифт}}& +\fni{textsf}\verb|{...}| & \textsf{\wi{без засечек}}\\ +\fni{texttt}\verb|{...}| & \texttt{пишущая машинка}\\[6pt] +\fni{textmd}\verb|{...}| & \textmd{нормальный}& +\fni{textbf}\verb|{...}| & \textbf{\wi{полужирный}}\\[6pt] +\fni{textup}\verb|{...}| & \textup{\wi{прямой шрифт}}& +\fni{textit}\verb|{...}| & \textit{\wi{курсив}}\\ +\fni{textsl}\verb|{...}| & \textsl{\wi{наклонный шрифт}}& +\fni{textsc}\verb|{...}| & \textsc{\wi{капитель}}\\[6pt] +\ci{emph}\verb|{...}| & \emph{выделенный шрифт} & +\fni{textnormal}\verb|{...}| & \textnormal{обычный} +\end{tabular} + +\bigskip +\end{lined} +\end{table} + + +\begin{table}[!bp] +\index{шрифт!размер} +\caption{Размеры шрифта} \label{sizes} +\begin{lined}{12cm} +\begin{tabular}{@{}ll} +\fni{tiny} & \tiny крошечный \\ +\fni{scriptsize} & \scriptsize очень маленький\\ +\fni{footnotesize} & \footnotesize довольно маленький \\ +\fni{small} & \small маленький \\ +\fni{normalsize} & \normalsize нормальный \\ +\fni{large} & \large большой +\end{tabular}% +\qquad\begin{tabular}{ll@{}} +\fni{Large} & \Large еще больше \\[5pt] +\fni{LARGE} & \LARGE очень большой \\[5pt] +\fni{huge} & \huge огромный \\[5pt] +\fni{Huge} & \Huge громадный +\end{tabular} + +\bigskip +\end{lined} +\end{table} + +\begin{table}[!tbp] +\caption{Абсолютные размеры шрифтов в стандартных классах} +\label{tab:pointsizes} +\label{tab:sizes} +\begin{lined}{12cm} +\begin{tabular}{lrrr} +\multicolumn{1}{c}{\textit{Размер}} & +\multicolumn{1}{c}{\textit{10pt (по умолчанию)}} & + \multicolumn{1}{c}{\textit{опция 11pt}} & + \multicolumn{1}{c}{\textit{опция 12pt}}\\[6pt] +\verb|\tiny| & 5pt & 6pt & 6pt\\ +\verb|\scriptsize| & 7pt & 8pt & 8pt\\ +\verb|\footnotesize| & 8pt & 9pt & 10pt \\ +\verb|\small| & 9pt & 10pt & 11pt \\ +\verb|\normalsize| & 10pt & 11pt & 12pt \\ +\verb|\large| & 12pt & 12pt & 14pt \\ +\verb|\Large| & 14pt & 14pt & 17pt \\ +\verb|\LARGE| & 17pt & 17pt & 20pt\\ +\verb|\huge| & 20pt & 20pt & 25pt\\ +\verb|\Huge| & 25pt & 25pt & 25pt\\ +\end{tabular} + +\bigskip +\end{lined} +\end{table} + +\begin{table}[!bp] +\caption{Математические шрифты} \label{mathfonts} +\begin{lined}{\textwidth} +\begin{tabular}{@{}lll@{}} +\textit{Команда}&\textit{Пример}& \textit{Вывод}\\[6pt] +\fni{mathcal}\verb|{...}|& \verb|$\mathcal{B}=c$|& $\mathcal{B}=c$\\ +\fni{mathrm}\verb|{...}|& \verb|$\mathrm{K}_2$|& $\mathrm{K}_2$\\ +\fni{mathbf}\verb|{...}|& \verb|$\sum x=\mathbf{v}$|& $\sum x=\mathbf{v}$\\ +\fni{mathsf}\verb|{...}|& \verb|$\mathsf{G\times R}$|& $\mathsf{G\times R}$\\ +\fni{mathtt}\verb|{...}|& \verb|$\mathtt{L}(b,c)$|& $\mathtt{L}(b,c)$\\ +\fni{mathnormal}\verb|{...}|& \verb|$\mathnormal{R_{19}}\neq R_{19}$|& +$\mathnormal{R_{19}}\neq R_{19}$\\ +\fni{mathit}\verb|{...}|& \verb|$\mathit{ffi}\neq ffi$|& $\mathit{ffi}\neq ffi$ +\end{tabular} + +\bigskip +\end{lined} +\end{table} + +В связи с командами смены размера шрифта заметную роль играют +\wi{фигурные скобки}. Они используются для построения +\emph{групп}. Группы ограничивают область действия большинства команд +\LaTeX{}.\index{группирование} + +\begin{example} + Ему нравятся {\LARGE + большие и {\small + маленькие} буквы}. +\end{example} + +Команды, влияющие на размер шрифта, влияют также на расстояние между +строками, но только если соответствующий абзац заканчивается внутри +области действия команды. Поэтому закрывающая фигурная скобка \verb|}| +не должна стоять слишком рано. Заметьте положение команды \verb|\par| +в следующих двух примерах\footnote{\texttt{\bs{}par} эквивалентен + пустой строке.}: +\begin{example} +{\Large Не читайте это! Это +неправда. Верьте мне!\par} +\end{example} + +\begin{example} +{\Large Это тоже неправда. +Но помните, что я вру.}\par +\end{example} + +Если вы хотите применить команду изменения размера к целому абзацу +текста или больше того, то для этого лучше использовать синтаксис +окружения. + +\begin{example} + \begin{Large} + Это неправда. Но + что в наши дни\ldots + \end{Large} +\end{example} + +\noindent Это избавит вас от подсчета множества фигурных скобок. + + +\subsection{Опасность!} + +Как отмечено в начале этой главы, опасно усеивать ваши документы +явными командами, вроде только что описанных, потому что это +противоречит основной идее \LaTeX{}: разделению логической и +визуальной разметки вашего документа. Это значит, что, если вы +пользуетесь одними и теми же командами смены шрифта в разных местах +для верстки специального вида информации, вы должны использовать +\verb|\newcommand| и определить команду, <<оборачивающую>> в себя +команду смены шрифта. + +\begin{example} +% в преамбуле или пакете +\newcommand{\danger}[1]{\textbf{#1}} +% в документе +Не \danger{входите} в эту комнату. +Она занята \danger{машиной} +неизвестного назначения. +\end{example} + +Этот подход имеет то преимущество, что вы позже можете решить, что +хотите использовать другое визуальное представление +опасности,\trfootnote{danger} нежели +\verb|\textbf|, без необходимости пробираться через весь документ, +отыскивая все вхождения \verb|\textbf| и определяя, отмечает ли каждое +из них опасность или что-нибудь другое. + + +\subsection{Совет} + +Для завершения нашего путешествия в мир шрифтов и их размеров, +позвольте дать вам один совет: + +\begin{quote} + \underline{\textbf{Помните\Huge!}} \textit{Чем} + \textsf{Б\textbf{\LARGE О}\texttt{ЛЬ}\textsl{ШЕ}} шрифтов \Huge вы + \tiny используете \footnotesize \textbf{в} вашем \small + \texttt{документе}, \large \textit{тем} \normalsize легче + \textsc{его читать} и тем \textsl{\textsf{красивее}} он + б\large{}у\Large{}д\LARGE{}е\huge{}т\normalsize. +\end{quote} + + +\section{Интервалы} + + +\subsection{Интервалы между строками} + +\index{интервал!междустрочный} Если вам нужны б\'ольшие интервалы между +строками, то их значение можно изменить помещением в преамбулу команды +\begin{lscommand} +\ci{linespread}\verb|{|\emph{коэффициент}\verb|}| +\end{lscommand} +\noindent Для печати <<через полтора интервала>> пользуйтесь +\verb|\linespread{1.3}|, для печати <<через два интервала>>~--- +\verb|\linespread{1.6}|. По умолчанию этот коэффициент +равен~1.\index{интервал!двойной} + +Заметим, что эффект от команды \ci{linespread} довольно радикален, и +поэтому она не подходит для публикуемых работ. Поэтому, если у вас есть +весомые соображения для изменения межстрочного интервала, лучше пользуйтесь +следующей командой: + +\begin{lscommand} +\verb|\setlength{\baselineskip}{1.5\baselineskip}| +\end{lscommand} + +\begin{example} +{\setlength{\baselineskip}% + {1.5\baselineskip} +Этот абзац набран с интервалом в +1.5 раза больше предыдущего. Заметьте +команду \par{} в конце абзаца.\par} + +Ясно, зачем набрат этот абзац: он +показывает, что за закрывающейся +фигурной скобкой все вернулось к +нормальным установкам. +\end{example} + + +\subsection{Форматирование абзацев} +\label{parsp} + +Два параметра в \LaTeX{} влияют на верстку абзацев. Поместив в +преамбулу определения вида +\begin{code} +\ci{setlength}\verb|{|\ci{parindent}\verb|}{0pt}| \\ +\verb|\setlength{|\ci{parskip}\verb|}{1ex plus 0.5ex minus 0.2ex}| +\end{code} +вы измените внешний вид абзацев. Эти две строчки увеличивают +расстояние между абзацами и устанавливают абзацный отступ равным +нулю. + +Части \texttt{plus} и \texttt{minus} говорят \TeX{}, что он может +увеличивать и уменьшать интервал между абзацами на указанные величины, +если это необходимо для правильного размещения абзацев на странице. + +В Европе абзацы часто отделяют пробелами и не делают в них +отступа. Однако, имейте в виду, что это влияет также и на оглавление: +его строки тоже становятся теперь более разреженными. Чтобы этого +избежать, эти команды можно перенести из преамбулы документа +куда-нибудь после \verb|\tableofcontents|, или не использовать их +совсем, потому что в профессиональной книжной верстке используется +выделение абзацев красной строкой, а не пробелами. + +Если вы хотите сделать абзацный отступ в не имеющем его абзаце, то +вставьте в начало абзаца команду\footnote{Для добавления отступа к + первому абзацу после каждого заголовка раздела пользуйтесь пакетом + \pai{indentfirst} из комплекта `tools'.} +\begin{lscommand} +\ci{indent} +\end{lscommand} +\noindent Понятно, что эффект от нее будет только если +\verb|\parindent| не установлен равным нулю. + +Для создания абзаца без отступа первой командой абзаца можно сделать +\begin{lscommand} +\ci{noindent} +\end{lscommand} +\noindent Это может быть удобно, когда вы начинаете документ с текста, +а не с команды секционирования. + + +\subsection{Горизонтальные интервалы} + +\label{sec:hspace} +\LaTeX{} автоматически определяет пробелы между словами и +предложениями. Чтобы добавить горизонтальный +пробел\index{пробел!горизонтальный}, пользуйтесь +\begin{lscommand} +\ci{hspace}\verb|{|\emph{длина}\verb|}| +\end{lscommand} +Если такой интервал должен быть выдержан, даже если он приходится на +начало или конец строки, используйте \verb|\hspace*|, а не +\verb|\hspace|. В простейшем случае \emph{длина}~--- это просто число +и единица измерения. Наиболее важные единицы перечислены в +таблице~\ref{units}. \index{единицы}\index{длина} + +\begin{example} +Тут\hspace{1.5cm}пробел +в 1,5см. +\end{example} + +%\suppressfloats +\begin{table}[tbp] +\caption{Единицы размерности в \TeX{}} \label{units}\index{единицы} +\begin{lined}{9.5cm} +\begin{tabular}{@{}ll@{}} +\texttt{mm} & миллиметр $\approx 1/25$~дюйма \quad \demowidth{1mm} \\ +\texttt{cm} & сантиметр $=$ 10~mm \quad \demowidth{1cm} \\ +\texttt{in} & inch $=$ 25.4~mm \quad \demowidth{1in} \\ +\texttt{pt} & пункт $\approx 1/72$~дюйма $\approx \frac{1}{3}$~mm \quad\demowidth{1pt}\\ +\texttt{em} & примерная ширина буквы `M' текущего шрифта \quad \demowidth{1em}\\ +\texttt{ex} & примерная высота буквы `x' текущего шрифта \quad \demowidth{1ex} +\end{tabular} + +\bigskip +\end{lined} +\end{table} + +\label{cmd:stretch} +Команда +\begin{lscommand} +\ci{stretch}\verb|{|\emph{n}\verb|}| +\end{lscommand} +\noindent генерирует специальный <<резиновый>> пробел. Он +растягивается, заполняя все оставшееся места на строке. Если на одной +строке встречаются две команды +\verb|\hspace{\stretch{|\emph{n}\verb|}}|, то они растягиваются +пропорционально своим коэффициентам.\sloppypar + +\begin{example} +x\hspace{\stretch{1}} +x\hspace{\stretch{3}}x +\end{example} + +Пpи использовании гоpизонтальных интеpвалов вместе с текстом может +иметь смысл генеpиpовать интеpвал, pазмеp котоpого соотносится с +pазмеpом текущего шpифта. Этого можно добиться пpи помощи +относительных единиц pазмеpности \texttt{em} и \texttt{en}: + +\begin{example} +{\Large{}big\hspace{1em}y}\\ +{\tiny{}tin\hspace{1em}y} +\end{example} + + +\subsection{Вертикальные интервалы} + +Интервалы между абзацами, разделами, подразделами,~\ldots\ +определяются \LaTeX{} автоматически. При необходимости дополнительный +пробел \emph{между двумя абзацами} можно добавить командой +\begin{lscommand} +\ci{vspace}\verb|{|\emph{длина}\verb|}| +\end{lscommand} + +Обычно эта команда вставляется между двумя пустыми строчками. Если это +пространство должно сохраняться вверху или внизу страницы, используйте +вариант команды со звездочкой: \verb|\vspace*|.\index{пробел!вертикальный} + +Команду \verb|\stretch| вместе с \verb|\pagebreak| можно применять для +верстки текста на последней строке страницы или для вертикального +центрирования текста на странице. +\begin{code} +\begin{verbatim} +Некий текст\ldots + +\vspace{\stretch{1}} +А это окажется на последней строке страницы.\pagebreak +\end{verbatim} +\end{code} + +Дополнительный пробел между двумя строками \emph{одного} абзаца или +внутри таблицы указывается командой +\begin{lscommand} +\ci{\bs}\verb|[|\emph{длина}\verb|]| +\end{lscommand} + +При помощи \ci{bigskip} и \ci{smallskip} вы можете пропустить заранее +определенные вертикальные интервалы, не задумываясь о конкретных +числах. + +\section{Компоновка страницы} + +\begin{figure}[!hp] +\begin{center} +\makeatletter\@layout\makeatother +\end{center} +\vspace*{1.8cm} +\caption{Параметры компоновки страницы} +\label{fig:layout} +\end{figure} + +\index{компоновка страницы} +\LaTeXe{} позволяет указать \wi{размер бумаги} в команде +\verb|\documentclass|. Затем он автоматически выбирает правое +\wi{поле}. Но иногда предопределенные значения могут вас не +устроить. Безусловно, вы их можете изменить. +%no idea why this is needed here ... +\thispagestyle{fancyplain} Иллюстрация~\ref{fig:layout} показывает все +параметры, которые можно изменить. Она была сгенерирована пакетом +\pai{layout} из комплекта +`tools'.\footnote{\texttt{\CTAN|macros/latex/required/tools|}} + +\textbf{ПОДОЖДИТЕ!} \ldots прежде, чем немедленно броситься делать эту +слишком узкую страницу слегка пошире, потратьте несколько секунд на +размышления. Подобно другим вещам, выбор компоновки страницы в +\LaTeX{} весьма продуман. + +Безусловно, если сравнить со страницей, выданной свежеустановленным MS +Word, то страницы \LaTeX{} выглядят ужасно узкими. Однако, взгляните +на вашу любимую книгу\footnote{Имея в виду настоящую печатную книгу, + выпущенную уважаемым издательством.} и посчитайте количество букв на +одной строчке. Вы обнаружите, что на каждой строчке не больше 66 +букв. Теперь повторите это со страницей \LaTeX{}. Вы увидите, что и +здесь тоже около 66 букв в строке. Опыт показывает, что при большем +количестве букв чтение затрудняется, потому, что глазам становится +труднее переходить от конца одной строки к началу следующей. Именно +поэтому газеты часто верстаются в несколько колонок. + +Так что, увеличивая ширину вашего текста, имейте в виду, что вы +затрудняете жизнь его читателям. Однако, достаточно предупреждений, +вам был обещан рассказ о том, как же это сделать\ldots + +\LaTeX{} предоставляет две команды для изменения этих параметров. Их +обычно используют в преамбуле документа. + +Первая команда присваивает фиксированное значение любому параметру: +\begin{lscommand} +\ci{setlength}\verb|{|\emph{параметр}\verb|}{|\emph{длина}\verb|}| +\end{lscommand} + +Вторая команда прибавляет длину к любому параметру: +\begin{lscommand} +\ci{addtolength}\verb|{|\emph{параметр}\verb|}{|\emph{длина}\verb|}| +\end{lscommand} + +Она даже более полезна, чем \ci{setlength}, потому что позволяет вам +делать настройку относительно существующих установок. Чтобы добавить +сантиметр к общей ширине текста, например, в преамбулу нужно поместить +следующее: +\begin{code} +\verb|\addtolength{\hoffset}{-0.5cm}|\\ +\verb|\addtolength{\textwidth}{1cm}| +\end{code} + +Здесь вам может быть интересен пакет \pai{calc}, который позволяет +использовать арифметические операции в аргументе \verb|\setlength| и в +других местах, где аргументами являются численные значения. + + +\section{Еще о длинах} + +Всегда, когда это возможно, избегайте использовать в документах +абсолютных величин. Лучше основывайтесь на ширине или высоте других +элементов страницы. Для ширины иллюстрации этим может служить +\verb|\textwidth|, чтобы она заполняла страницу целиком. + +Следующие три команды позволяют определить ширину, высоту и глубину +текстовой строки. + +\begin{lscommand} +\ci{settoheight}\verb|{|\emph{пеpеменная}\verb|}{|\emph{текст}\verb|}|\\ +\ci{settodepth}\verb|{|\emph{пеpеменная}\verb|}{|\emph{текст}\verb|}|\\ +\ci{settowidth}\verb|{|\emph{пеpеменная}\verb|}{|\emph{текст}\verb|}| +\end{lscommand} + +\noindent Нижеследующий пример показывает возможное применение этих +команд. + +\begin{example} +\flushleft +\newenvironment{vardesc}[1]{% + \settowidth{\parindent}{#1:\ } + \makebox[0pt][r]{#1:\ }}{} + +\begin{displaymath} +a^2+b^2=c^2 +\end{displaymath} + +\begin{vardesc}{Где}$a$, +$b$ -- прилегают к прямому углу +прямоугольного треугольника. + +$c$ -- одинокая гипотенуза +этого треугольника. + +$d$ -- вообще тут не участвует. +Вот загадка\ldots +\end{vardesc} +\end{example} + + +\section{Блоки} + +\LaTeX{} выстраивает страницы, передвигая блоки. Сначала каждая буква +является маленьким блоком, который приклеивается к другим буквам, +формируя слово. Слова склеиваются с другими словами, но специальным +эластичным клеем, который может растягиваться или сжиматься, так, +чтобы в точности заполнить строку. + +Надо признать, что это довольно упрощенная версия того, что происходит +на самом деле, но идея в том, что \TeX{} всегда работает с блоками и +клеем. Не только буква может быть блоком. Вы можете поместить в блок +практически все, что угодно, не исключая и другие блоки. Каждый блок +затем обрабатывается \LaTeX{}, как если бы это была отдельная буква. + +В предыдущих главах вы уже встречали некоторые блоки, хотя об этом и +не говорилось. Примерами могут быть окружение \ei{tabular} или +\ci{includegraphics}, оба производящие блок. Это значит, что вы легко +можете сверстать рядом две таблицы или иллюстрации. Только убедитесь, +что их общая ширина не превышает \verb|\textwidth|. + +Вы также можете упаковать любой абзац в блок или командой + +\begin{lscommand} +\ci{parbox}\verb|[|\emph{поз}\verb|]{|\emph{ширина}\verb|}{|\emph{текст}\verb|}| +\end{lscommand} + +\noindent или окружением + +\begin{lscommand} +\verb|\begin{|\ei{minipage}\verb|}[|\emph{поз}\verb|]{|\emph{ширина}\verb|}| текст +\verb|\end{|\ei{minipage}\verb|}| +\end{lscommand} + +Параметр \emph{поз} может принимать одну из букв \texttt{c, t} или +\texttt{b}, контролируя вертикальное выравнивание блока по отношению к +базовой линии окружающего текста. \emph{Ширина} принимает аргументом +длину, определяющую ширину блока. Основное отличие между \ci{minipage} +и \ci{parbox}~--- в том, что внутри \ci{parbox} можно использовать не +все команды и окружения, тогда как внутри \ci{minipage} можно +практически все. + +В то время, как \ci{parbox} упаковывает целый абзац, разбивая строчки +и прочее, существует класс блоковых команд, работающих только на +горизонтально расположенном материале. Одну из них мы уже знаем. Она +называется \ci{mbox} и просто упаковывает последовательность блоков, +что можно использовать для предотвращения переноса \LaTeX{} двух +слов. Так как вы можете помещать одни блоки в другие, эти упаковщики +горизонтальных блоков чрезвычайно гибки. + +\begin{lscommand} +\ci{makebox}\verb|[|\emph{ширина}\verb|][|\emph{поз}\verb|]{|\emph{текст}\verb|}| +\end{lscommand} + +\noindent \emph{Ширина} определяет ширину результирующего блока так, +как его видно снаружи.\footnote{Это означает, что она может быть + меньше, чем материал внутри блока. В предельном случае вы можете + даже установить ее в 0pt, так что текст внутри блока верстается, + вообще не оказывая влияния на окружающие блоки.} Кроме выражений +длины, вы тут можете использовать \ci{width}, \ci{height}, \ci{depth} +и \ci{totalheight}. Они устанавливаются равными значениям, полученным +измерением параметров \emph{текста}.\trfootnote{Ширина, высота, глубина + и общая высота (высота плюс глубина) текста, + соответственно.} Параметр \emph{поз} +принимает однобуквенное значение: \textbf{c}: центрировать, +\textbf{l}: отжать влево, \textbf{r}: отжать вправо или \textbf{s}: +равномерно заполнить блок текстом. + +Команда \ci{framebox} работает в точности так же, как \ci{makebox}, но +рисует рамку вокруг текста. + +Следующий пример показывает некоторые возможности использования команд +\ci{makebox} и \ci{framebox}. + +\begin{example} +\makebox[\textwidth]{% + ц е н т р}\par +\makebox[\textwidth][s]{% + р а с т я н у т ы й}\par +\framebox[1.1\width]{Я теперь + в рамке!} \par +\framebox[0.8\width][r]{Ой, + я слишком толстый} \par +\framebox[1cm][l]{ничего, + я тоже} +Можете это прочитать? +\end{example} + +Теперь, когда мы управляем горизонталью, очевидный следующий шаг~--- +вертикаль. Никаких проблем. Команда + +\begin{lscommand} +\ci{raisebox}\verb|{|\emph{сдвиг}\verb|}[|\emph{глубина}\verb|][|\emph{высота}\verb|]{|\emph{текст}\verb|}| +\end{lscommand} + +\noindent позволяет вам определить вертикальные характеристики +блока. В первых трех параметров можно использовать \ci{width}, +\ci{height}, \ci{depth} и \ci{totalwidth}, чтобы получить размеры +аргумента \emph{текст}. + +\begin{example} +\raisebox{0pt}[0pt][0pt]{\Large% +\textbf{Aaaa\raisebox{-0.3ex}{a}% +\raisebox{-0.7ex}{aa}% +\raisebox{-1.2ex}{a}% +\raisebox{-2.2ex}{a}% +\raisebox{-4.5ex}{a}}} +кричал он, но даже стоящий рядом +не заметил, что с ним случилось +что-то ужасное. +\end{example} + + +\section{Линейки и распорки} +\label{sec:rule} + +Несколько страниц назад вы могли отметить команду + +\begin{lscommand} +\ci{rule}\verb|[|\emph{сдвиг}\verb|]{|\emph{ширина}\verb|}{|\emph{высота}\verb|}| +\end{lscommand} + +\noindent При обычном использовании она генерирует простой черный +блок. + +\newpage +\begin{example} +\rule{3mm}{.1pt}% +\rule[-1mm]{5mm}{1cm}% +\rule{3mm}{.1pt}% +\rule[1mm]{1cm}{5mm}% +\rule{3mm}{.1pt} +\end{example} + +\noindent Это можно использовать для рисования вертикальных и +горизонтальных линий. Например, линия на титульном листе нарисована +командой \ci{rule}. + +Специальным случаем является линейка, у которой нет ширины, но есть +определенная высота. В профессиональной верстке ее называют +\emph{распоркой}\index{распорка}. Ее используют, чтобы обеспечить +определенную минимальную высоту элемента страницы. Вы можете +использовать ее, чтобы сделать строку окружения \texttt{tabular} +имеющей определенную минимальную высоту. + +\begin{example} +\begin{tabular}{|c|} +\hline +\rule{0pt}{4ex}Pitprop \ldots\\ +\hline +\rule{0pt}{4ex}Strut\\ +\hline +\end{tabular} +\end{example} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "lshort2e" +%%% End: + +\bigskip +{\flushright Конец.\par} + +% |