Оформление текста в целом
Рисунки в оборку
Окружения {figure} и {table} определяют иллюстрации и таблицы, простирающиеся на всю ширину текста, и ничего иного в стандартном комплекте LaTeX'а не предусмотрено. Пользователями LaTeX'а разработано несколько стилевых пакетов, позволяющих с большим или меньшим успехом печатать прямоугольные иллюстрации, обтекаемые текстом. В этом разделе мы расскажем о возможностях, предоставляемых стилевым пакетом {wrapfig}. Этот пакет, разработанный Дональдом Арсено (Donald Arseneau), довольно удобен на практике (по крайней мере, автор книги и его коллеги не без успеха им пользуются), хотя, конечно, размещение обтекаемых текстом иллюстраций полностью автоматизировано быть не может и всегда требует определенной ручной работы. Ниже мы опишем основные принципы использования пакета {wrapfig}, но реально пользоваться им вы сможете только после того, как освоите следующую лекцию о псевдорисунках или (что лучше) приложение Б, посвященное интеграции в TeX графических файлов в формате PostScript.
Итак, предположим, что стилевой пакет {wrapfig} подключен. Тогда рисунок, обтекаемый текстом, надо задать как окружение {wrapfigure} (в том же стилевом пакете определено окружение {wraptable}, задающее обтекаемую текстом таблицу; аргументы у этого окружения имеют в точности такой же смысл, как у окружения {wrapfigure} ).
Окружение {wrapfigure} имеет два обязательных аргумента. Первый из них указывает, как должен быть расположен рисунок относительно текста, а второй — ширину рисунка (заданную в TeX'овских единицах длины или выраженную через TeX'овские параметры со значением длины). Например, код, задающий рис. 4.5, мог выглядеть примерно так:
\begin{wrapfigure}{o}{62.2pt} {команды, задающие рисунок} \end{wrapfigure}
Латинская буква o в первом аргументе означает, что рисунок должен быть расположен на наружной (outer) стороне страницы (то есть справа на нечетных страницах и слева — на четных); если бы мы сказали i вместо o, то рисунок был бы расположен на внутренней стороне страницы. Впрочем, оба эти аргумента имеют смысл только в том случае, если документ является "двусторонним" (с классовой опцией twoside ); если же набор " односторонний", то в первом обязательном аргументе надо указать букву l (рисунок слева) или r (справа).
Каждая из букв o, i, l и r может быть не только строчной, но и прописной; в этом случае рисунок при необходимости может быть помещен не буквально там, где в исходном тексте находится окружение {wrapfigure}, но передвинут в другое место.
Количество укороченных строк, необходимое для обтекания рисунка текстом, LaTeX рассчитывает самостоятельно; если обтекающий текст содержит команды для явного задания вертикальных промежутков или занимающие много места по вертикали выключные формулы, результат такого расчета может быть неверен. На этот случай у окружения {wrapfigure} предусмотрен необязательный аргумент, ставящийся перед первым обязательным — количество укороченных строк. Пример:
\begin{wrapfigure}[14]{o}{60pt}
Имейте в виду, что при таких расчетах любая выключная формула считается за три строки.
Идеальное место для размещения окружения {wrapfigure} — между абзацами. Если вам нужно поместить обтекаемую иллюстрацию внутри абзаца, посмотрите, где TeX сделает в этом абзаце разрывы строк, если иллюстрацию не помещать, и начинайте окружение {wrapfigure} после слова, заканчивающего на печати строку.
При совместном использовании окружений {figure} и {wrapfigure} может случиться, что обтекаемая иллюстрация с меньшим номером печатается после необтекаемой иллюстрации с большим номером (и наоборот). В этом случае ничего не остается, как передвинуть одну из этих иллюстраций внутри исходного текста.
Окружение {wrapfigure} нельзя использовать непосредственно перед командой рубрикации, наподобие \section, а также внутри окружений, задающих перечни, и им подобных ({itemize}, {enumerate}, {description}, {quote},{quotation}).
В стандартные поставки LaTeX'а пакет {wrapfig} может и не входить; тогда его придется доставать из Интернета. См. приложение Ж по поводу того, где в Интернете хранятся TeX'овские материалы.
Дополнительные сведения об окружении {wrapfigure} можно получить из комментариев в файле wrapfig.sty, который, собственно говоря, и представляет собой стилевой пакет {wrapfig}.
В предшествующем тексте остались непроясненными два момента: какими командами задавать сам рисунок и как узнать его ширину? Ответ на второй вопрос зависит от ответа на первый. В следующей лекции и в приложении Б будут даны два варианта ответов на эти вопросы.
Нештатные ситуации с плавающими объектами
Когда вы набираете исходный текст, заранее неясно, куда именно попадут плавающие иллюстрации (или таблицы; далее мы не будем всякий раз делать этой оговорки). Поэтому при просмотре и пробной печати возможны всяческие неожиданности.
Начнем с неприятности, подстерегающей вас при пользовании весьма привлекательным необязательным аргументом h (" печатать прямо здесь!") у окружения {figure} или {table}. Если при этом, к несчастью, расположить иллюстрацию именно в указанном месте невозможно (потому что посредине иллюстрации должно быть место разрыва страницы), то LaTeX действует так, словно в необязательном аргументе стояло не h, а ht. В результате иллюстрация будет напечатана вверху текущей или следующей страницы, а сообщение о происшедшем инциденте будет выдано на экран и в log-файл.
Далее, команда \suppressfloats запрещает печать любых плавающих иллюстраций (а также таблиц; мы не будем всякий раз это оговаривать) на той странице, на которую эта команда попала. Можно применить команду и с необязательным аргументом: если написать
\suppressfloats[t]
то вверху данной страницы иллюстрации размещаться не будут; если в качестве необязательного аргумента указать b, то иллюстрации заведомо не появятся внизу данной страницы.
С другой стороны, LaTeX предоставляет вам средство не затруднить, а, наоборот, облегчить размещение плавающих объектов (иллюстраций или таблиц). Именно, в необязательном аргументе окружения {figure} или {table} можно перед буквой t, b или h поставить восклицательный знак. В этом случае при размещении плавающего объекта LaTeX не будет обращать внимание на то, не слишком ли много иллюстраций попало на одну страницу и не слишком ли большую ее долю они займут (типичные причины, по которым LaTeX обычно перемещает плавающие иллюстрации вперед по тексту). У иллюстрации, начинающейся с команды
\begin{figure}[!t]
больше шансов быть напечатанной безотлагательно, чем в случае, если бы восклицательного знака не было.
Существуют и другие способы борьбы с причудами плавающих объектов. О них мы расскажем в разд. 9.7.