Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 48
Текст из файла (страница 48)
е. графические пакеты загружены без явного указания драйвера:\usepackage{graphicx,color}Редкие случаи, когда есть хотя бы минимальное различие в использовании драйверов dvips или pdftex, используемых по умолчанию, мы будем оговариватьособо.В этой главе мы расскажем, как в печатный документ вставить (импортировать) различного рода графические объекты: рисунки, графики, чертежи и пр.Мы также объясним, как изменить размеры, пропорции и цвет рисунка или какего повернуть.
Читатель увидит, что подобные манипуляции возможны не толькос рисунками, приготовленными специализированными графическими программами, но и вообще с любой составной частью печатного текста, будь то обычныйтекстовой бокс, математическая формула или таблица. Однако обо всём по порядку. . .Основу коллекции graphics составляют пакеты graphics, graphicx, color, epsfigи lscape. Первый из них иногда называют стандартным графическим пакетом,а второй — расширенным или продвинутым. Эта два пакета вводят один и тотже набор команд, которые, однако, различаются способом задания необязательных аргументов.
Пакет graphicx кажется более удобным, более дружественнымдля пользователя, чем graphics, но, возможно, это мнение лишь отражает нашипристрастия, а не объективный факт.232Глава 10. Графика и цветПакет color предназначен для работы с цветом.Пакет epsfig входит в коллекцию для совместимости с устаревшей версией,сделанной в своё время для формата LATEX 2.09, а пакет lscape используют дляпечати отдельных страниц в альбомной (горизонтальной) ориентации, вместо более привычной портретной (вертикальной).Дальнейшее изложение мы построим по функциональному признаку и посвятим отдельные разделы вращению боксов, их масштабированию, импортированию рисунков и работе с цветом. Читатель без труда определит, к какомупакету принадлежит та или иная команда, так как название пакета указываетсяв скобках справа от синтаксического описания каждой команды.
Если Читателяинтересует только проблема импортирования рисунка в печатный документ, онможет обратиться сразу к разделу 10.3.10.1.Вращение боксовКоманда(graphics)\rotatebox{angle}{lr-text}помещает текст lr-text в бокс, как это делает \mbox (глава 9), и поворачиваетего на angle градусов против часовой стрелки. Полученный бокс есть наименьший прямоугольник (ориентированный стандартным образом), в который целиком помещается lr-text; его точка привязки находится с левой стороны на тойже высоте, что и у повёрнутого бокса.
В следующем примере точки привязкиизображены маленькими кружками:указ \rotatebox{30}{указ}Вращаемичасовой стрел-поВращаем \rotatebox{90}{против} и\rotatebox{-90}{по} часовой стрелке.противТекст lr-text, идущий в бокс, обрабатывается в строковой моде, но может иметьлюбую природу. В частности, он может содержать команду \includegraphics,которая импортирует графические файлы и о которой мы расскажем в разделе10.3. С помощью \rotatebox удобно делать вертикальные надписи в столбцахтаблиц, как в табл. 10.1 на стр.
264. Отрицательное значение угла angle соответствует вращению по часовой стрелке.ке.Если Читатель попытается повторить этот пример на своём компьютере, но увидит на экране монитора нечто вроде «Вращаем противи по часовой стрелке», емупридётся перечитать начало этой главы, а также обратиться к рисункам 1.2–1.7 на страницах 41–45, чтобы вспомнить, как работает LATEX.
Напомним, что23310.1. Вращение боксовкомпилятор latex, обработав исходный файл jobname.tex, записывает «готовый документ» в dvi-файл jobname.dvi (рис. 1.2). Возможно, при просмотреэтого файла на экране с помощью DVI-обозревателя, «повёрнутый» текст вовсене будет повёрнут. Именно так и случится, если используется программа YAP изкомплекта MiKTeX, так как она не поддерживает функцию вращения1 (рис.
1.4).Дело в том, что в dvi-файле записаны инструкции для DVI-обозревателя, а несобственно изображение, поэтому результат зависит от «продвинутости» обозревателя. Однако какой-то более совершенный DVI-обозреватель покажет тот жеdvi-файл правильно. Если выполнить компиляцию исходного текста в pdf-файлпри помощи программы pdflatex (рис.
1.3) и просмотреть полученный файлjobname.pdf в Adobe Reader (рис. 1.5), то желанное вращение обязательно будет получено. Можно также экспортировать jobname.dvi в PostScript-файл припомощи программы dvips (рис. 1.6) и лишь затем просмотреть полученный таким образом jobname.ps при помощи программы GSview (рис. 1.7). Как правило,все операции по взаимодействию перечисленных программ выполняет редакторисходных файлов LATEX. От пользователя только требуется нажимать подходящие клавиши.
На всякий случай приведём полностью исходный текст входногофайла:\documentclass{article}\usepackage{graphics}\begin{document}Вращаем \rotatebox{90}{против} и \rotatebox{-90}{по} часовой стрелке.\end{document}Пакет graphicx вводит расширенную версию команды \rotatebox, котораяимеет один необязательный аргумент.\rotatebox[keyval-list]{angle}{lr-text}(graphicx)По умолчанию объект вращается относительно точки привязки. Опция keyvallist позволяет изменить положение оси вращения, а также единицу измеренияугла поворота. В необязательном аргументе keyval-list через запятую могут бытьперечислены ключи следующего вида:origin=posx=dimen1y=dimen2units=numberКлюч origin=pos задаёт положение оси вращения, причём значение ключа posможет состоять из одной или двух букв, фиксирующих положение оси вращенияпо горизонтали и вертикали.
Горизонтальная координата оси вращения фиксируется одним из трёх спецификаторов: l (left, слева), c (center, центр), r (right,справа), в то время как вертикальная координата определяется одним из четырёх1Однако YAP успешно поворачивает импортируемые рисунки.234Глава 10. Графика и цветспецификаторов: t (top, верх), c (center, центр), B (Baseline, базисная линия2 ), b(bottom, низ). Например, origin=rb помещает ось вращения в правый нижнийугол бокса, origin=lt — в верхний левый угол. Комбинация cB задаёт середину отрезка базисной линии, проходящей через вращаемый бокс, а lc определяетсреднюю по высоте точку с левой стороны бокса.
Точке привязки соответствует lB. Всего таким способом можно задать 12 точек, как показано на рис. 10.1.Порядок следования спецификаторов в pos не имеет значения: br эквивалент-Рис. 10.1. Доступные точки вращения для ключа origin.Точка привязки показана чёрным кружкомно rb. Если в pos задан только один спецификатор, то вторым предполагаетсяc, который представляет горизонтальное или вертикальное центрирование в дополнение к тому, что задаёт другой спецификатор.Если ось вращения не совпадает ни с одной из 12 точек, указанных на рис. 10.1,её можно задать с помощью ключей x=dimen1 и y=dimen2, которые определяютрасстояние от точки привязки бокса до оси вращения.
Например, если [keyvallist] имеет вид [x=4mm,y=3mm], то бокс вращается вокруг точки, которая смещенаотносительно точки привязки на 4 мм по оси абсцисс и на 3 мм по оси ординат.По умолчанию объект вращается относительно точки привязки, а угол angleизмеряется в градусах. Ключ units=number позволяет выбирать единицы измерения угла вращения. Его значение number должно быть равно величине полногооборота в выбранных единицах. Например, units=360 означает, что угол будетизмеряться в градусах, а units=6.283185 — в радианах.Мы не будем комментировать последний пример в этом разделе. Просто предлагаем Читателю «почувствовать разницу». Отметим только, что этот примерсработает правильно при условии загрузки расширенной версии графическогопакета graphicx.Напомним, что базисная линия проходит через точку привязки, а нижний край бокса находится на расстоянии \depth от неё (раздел 9.1).223510.2.! Дажетекстовые боксывокруг нижнеголевого угла!Вращаем \rotatebox[origin=b]{90}{\fbox{всё}}!ВращаемДаже \rotatebox{-90}{\fbox{\parbox[b]{2.8cm}{текстовые боксы вокруг нижнего левого угла!}}}всё10.2.
Масштабирование боксовМасштабирование боксовРазмеры произвольного бокса и его содержимого можно изменить, проведя операцию масштабирования. Масштаб задают явно или неявно. В последнем случаереально задают размеры бокса, которые он должен иметь после масштабирования.10.2.1.Масштабирование по заданному масштабуКоманда\scalebox{h-scale}[v-scale]{lr-text}(graphics, graphicx)масштабирует lr-text, увеличивая его ширину в h-scale раз, а высоту в v-scaleраз.
Отрицательные значения множителей приводят к отражению объекта относительно горизонтали и/или вертикали. Если опция [v-scale] пропущена, то еёзначение равно h-scale, при этом сохраняется аспектное отношение высоты боксак его ширине.\fbox{\scalebox{2}{\parbox{0.5in}{America \\ Europe}}}\fbox{\scalebox{2}[-0.5]{\parbox{0.5in}{America \\ Europe}}}10.2.2.AmericaEuropeEurop eAmericaОтражение боксаКоманда\reflectbox{lr-text}(graphics, graphicx)есть сокращение от \scalebox{-1}[1]{lr-text}.$E=mc^2$ \reflectbox{$E=mc^2$}E = mc2 2cm = E23610.2.3.Глава 10. Графика и цветМасштабирование по заданному размеру\resizebox{width}{height}{lr-text}\resizebox*{width}{totalheight}{lr-text}(graphics, graphicx)Команда \resizebox подгоняет ширину и высоту бокса, в который помещаетсяlr-text, к заданным величинам width и height, которые должны иметь размерность длины.
Сохранить отношение высоты к ширине можно, указав в качестве width или height восклицательный знак !. Команда \resizebox* идентична\resizebox, но второй аргумент totalheight задаёт полную высоту бокса, а не высоту той его части, которая возвышается над базисной линией. Исходные размерыбокса (см.
рис. 9.1 на стр. 210) доступны в аргументах width, height и totalheightв виде команд \height, \width, \totalheight, \depth так же, как в других командах, формирующих строковые боксы (раздел 9.1). Так, в следующем примеретекст растягивается до ширины 2 дюйма без изменения первоначальной высотыбокса:\resizebox{2in}{\height}{Нью Васюки}Нью ВасюкиДля сравнения покажем, что получается при сохранении аспектного отношения:\resizebox{2in}{!}{Нью Васюки}Нью ВасюкиКачество масштабированного изображения зависит от того, является ли оно всвоей основе растровым или векторным (см.