next up previous
Next: 5.7 Линейки и распорки Up: 5. Настройка LATEX Previous: 5.5 Еще о длинах

5.6 Блоки

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

Надо признать, что это довольно упрощенная версия того, что происходит на самом деле, но идея в том, что TEX всегда работает с блоками и клеем. Не только буква может быть блоком. Вы можете поместить в блок практически все, что угодно, не исключая и другие блоки. Каждый блок затем обрабатывается LATEX, как если бы это была отдельная буква.

В предыдущих главах вы уже встречали некоторые блоки, хотя об этом и не говорилось. Примерами могут быть окружение tabular или $\backslash$includegraphics, оба производящие блок. Это значит, что вы легко можете сверстать рядом две таблицы или иллюстрации. Только убедитесь, что их общая ширина не превышает \textwidth.

Вы также можете упаковать любой абзац в блок или командой

$\backslash$parbox[поз]{ширина}{текст}

или окружением

\begin{minipage}[поз]{ширина} текст \end{minipage}

Параметр поз может принимать одну из букв c, t или b, контролируя вертикальное выравнивание блока по отношению к базовой линии окружающего текста. Ширина принимает аргументом длину, определяющую ширину блока.

В то время, как $\backslash$parbox упаковывает целый абзац, разбивая строчки и прочее, существует класс блоковых команд, работающих только на горизонтально расположенном материале. Одну из них мы уже знаем. Она называется $\backslash$mbox и просто упаковывает последовательность блоков, что можно использовать для предотвращения переноса LATEX двух слов. Так как вы можете помещать одни блоки в другие, эти упаковщики горизонтальных блоков чрезвычайно гибки.

$\backslash$makebox[ширина][поз]{текст}

Ширина определяет ширину результирующего блока так, как его видно снаружи33. Кроме выражений длины, вы тут можете использовать $\backslash$width, $\backslash$height, $\backslash$depth и $\backslash$totalheight. Они устанавливаются равными значениям, полученным измерением параметров текста.34 Параметр поз принимает однобуквенное значение: c: центрировать, l: отжать влево, r: отжать вправо или s: равномерно заполнить блок текстом.

Команда $\backslash$framebox работает в точности так же, как $\backslash$makebox, но рисует рамку вокруг текста.

Следующий пример показывает некоторые возможности использования команд $\backslash$makebox и $\backslash$framebox.

\makebox[\textwidth]{%
    ц е н т р}\par
\makebox[\textwidth][s]{%
    р а с т я н у т ы й}\par
\framebox[1.1\width]{Я теперь
  в рамке!} \par
\framebox[0.8\width][r]{Ой,
    я слишком толстый} \par
\framebox[1cm][l]{ничего,
  я тоже} 
Можете это прочитать?

ц е н т р

р а с т я н у т ы й

\framebox[1.1\width]{Я теперь
в рамке!}

\framebox[0.8\width][r]{Ой,
я слишком толстый}

\framebox[1cm][l]{ничего,
я тоже} Можете это прочитать?

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

$\backslash$raisebox{сдвиг}[глубина][высота]{текст}

позволяет вам определить вертикальные характеристики блока. В первых трех параметров можно использовать $\backslash$width, $\backslash$height, $\backslash$depth и $\backslash$totalwidth, чтобы получить размеры аргумента текст.

\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}}}
кричал он, но даже стоящий рядом
не заметил, что с ней случилось
что-то ужасное.

[0pt][0pt] Aaaaa aa a a a кричал он, но даже стоящий рядом не заметил, что с ней случилось что-то ужасное.