LATEX выстраивает страницы, передвигая блоки. Сначала каждая буква является маленьким блоком, который приклеивается к другим буквам, формируя слово. Слова склеиваются с другими словами, но специальным эластичным клеем, который может растягиваться или сжиматься, так, чтобы в точности заполнить строку.
Надо признать, что это довольно упрощенная версия того, что происходит на самом деле, но идея в том, что TEX всегда работает с блоками и клеем. Не только буква может быть блоком. Вы можете поместить в блок практически все, что угодно, не исключая и другие блоки. Каждый блок затем обрабатывается LATEX, как если бы это была отдельная буква.
В предыдущих главах вы уже встречали некоторые блоки, хотя об этом и
не говорилось. Примерами могут быть окружение tabular или
includegraphics, оба производящие блок. Это значит, что вы легко
можете сверстать рядом две таблицы или иллюстрации. Только убедитесь,
что их общая ширина не превышает \textwidth
.
Вы также можете упаковать любой абзац в блок или командой
parbox[
поз]{
ширина}{
текст}
или окружением
\begin{
minipage}[
поз]{
ширина}
текст
\end{
minipage}
Параметр поз может принимать одну из букв c, t или b, контролируя вертикальное выравнивание блока по отношению к базовой линии окружающего текста. Ширина принимает аргументом длину, определяющую ширину блока.
В то время, как parbox упаковывает целый абзац, разбивая строчки и прочее, существует класс блоковых команд, работающих только на горизонтально расположенном материале. Одну из них мы уже знаем. Она называется mbox и просто упаковывает последовательность блоков, что можно использовать для предотвращения переноса LATEX двух слов. Так как вы можете помещать одни блоки в другие, эти упаковщики горизонтальных блоков чрезвычайно гибки.
makebox[
ширина][
поз]{
текст}
Ширина определяет ширину результирующего блока так, как его видно снаружи33. Кроме выражений длины, вы тут можете использовать width, height, depth и totalheight. Они устанавливаются равными значениям, полученным измерением параметров текста.34 Параметр поз принимает однобуквенное значение: c: центрировать, l: отжать влево, r: отжать вправо или s: равномерно заполнить блок текстом.
Команда framebox работает в точности так же, как makebox, но рисует рамку вокруг текста.
Следующий пример показывает некоторые возможности использования команд makebox и framebox.
\makebox[\textwidth]{% ц е н т р}\par \makebox[\textwidth][s]{% р а с т я н у т ы й}\par \framebox[1.1\width]{Я теперь в рамке!} \par \framebox[0.8\width][r]{Ой, я слишком толстый} \par \framebox[1cm][l]{ничего, я тоже} Можете это прочитать?
ц е н т р
р а с т я н у т ы й
Можете это прочитать?
Теперь, когда мы управляем горизонталью, очевидный следующий шаг -- вертикаль. Никаких проблем. Команда
raisebox{
сдвиг}[
глубина][
высота]{
текст}
позволяет вам определить вертикальные характеристики блока. В первых трех параметров можно использовать width, height, depth и 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 кричал он, но даже стоящий рядом не заметил, что с ней случилось что-то ужасное.