Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 47
Текст из файла (страница 47)
Она помещает точку привязки в центр текста, обозначенного здесь многоточием. Следующий пример показывает, как можно позиционироватьтекст, варьируя расположение точки привязки:\put(10,0){\makebox(0,0){ухо}}\put(22,0){\makebox(0,0)[b]{горло}}\put(34,0){\makebox(0,0)[tr]{нос}}ухогорло6носКоманда \fbox (раздел 9.1) чертит рамку вокруг текста, оставляя некоторый зазор междурамкой и текстом.
Команда \frame{lr-text} работает подобным образом, но не оставляет зазора между текстом и рамкой. В отличие от графического варианта команды \framebox (см.выше), который рисует рамку заданных размеров, команда \frame размеры рамки выбираетсама.\put(5,5){\frame{УXА}}\put(25,5){\fbox{УXА}}УXАУXА2279.6. Графические объекты9.6.2.Прямые линииПрямые линии в процедуре picture имеют конечный, хотя и широкий набор углов наклона косям рисунка. Поэтому линию нельзя задать, указывая её начальную и конечную точки: в этомслучае в репертуаре LATEX’а может не найтись нужного наклона.
Способ описания линии, принятый LATEX’ом, очень прост, но всё-таки нуждается в пояснении. Линию рисует команда\line(xs ,ys ){dx}где длины x s , ys , выраженные в единицах \unitlength, определяют угол наклона линии. Если(x,y) — точка, из которой проводится линия (она устанавливается командой \put(x,y)), товторая (прицельная) точка имеет координаты (x+xs ,y+ys ), как показано на рисунке 9.4.y64 2 HHrHH61HH ?HHHHrH4.6H1.6xРис. 9.4.
Построение наклонной линии в графическом боксе на примере команды\put(1.6,4){\line(2,-1){4.6}}LATEX проводит линию из начальной точки через прицельную до точки, имеющей координату(x+dx). Если x s = 0, то линия проводится из начальной точки вертикально вверх или вниз (взависимости от знака ys ) на расстояние dx (в единицах \unitlength), которое должно бытьположительным.
Числа x s и ys должны быть целыми, лежать в диапазоне от −6 до +6 и неиметь общего делителя, отличного от единицы.LATEX рисует наклонные линии, набирая их из специальных символов, состоящих из кусочков прямой линии. Поэтому существует предельно малая длина наклонной линии (около 10 pt).При попытке нарисовать ещё более короткую линию LATEX ничего не напечатает.9.6.3.СтрелкиКоманда построения стрелки\vector(xs ,ys ){dx}работает аналогично команде \line. Однако здесь величины xs и ys должны лежать в диапазоне от −4 до +4.\put(4,5){\vector(1,2){5}}\put(25,2){\vector(-1,0){7}}\put(32,15){\vector(3,-2){12}}(4,5)(32,15) QQs (25,2)2289.6.4.Глава 9. Боксы и что там внутриСтекиКоманда\shortstack[hpos]{text}производит бокс, в котором текст располагается в одну колонку.
Точка привязки находится внижнем левом углу бокса. Обязательный аргумент text содержит текст, разделённый на строки командами \\. Команда \shortstack не оставляет пробелов по краям строк. По умолчаниювсе слова в боксе центрируются, но их можно сдвинуть влево или вправо, задав в опции hposспецификатор l или r; допускаются также спецификаторы s и c. В приведённом ниже примере стеки для лучшего понимания обведены рамкой, а команда \put, устанавливающая точкипривязки на кончики стрелок, опущена.ухоухо ухо\shortstack{ухо\\горло\\нос}горло горло горло\shortstack[r]{ухо\\горло\\нос}носнос нос\shortstack[l]{ухо\\горло\\нос}Строки в стеке можно раздвинуть, используя команду \\ с опцией (раздел 4.4) или вставляястрату (раздел 9.3).
Хотя команда \shortstack формирует обычный бокс и работает в любоймоде, её редко используют вне процедуры picture.9.6.5.КругиКоманды\circle{diam}\circle*{diam}рисуют соответственно окружность и круг. Диаметр diam измеряется в единицах \unitlength.\put(30,10){\circle{14}}\put(10,14){\circle*{6}}'$6~14?&%Точками привязки служат центры окружности и круга. LATEX имеет дискретный набор окружностей и кругов, который определяется имеющимся набором шрифтов.
Команды \circle и\circle* выбирают из этого набора наиболее близкие к указанному диаметру diam. Диаметрнаибольшей окружности вряд ли значительно превышает 40 пунктов (примерно полдюйма),диаметр наибольшего круга примерно вдвое меньше.9.6.6.Овалы и закруглённые углыОвал — это прямоугольник, у которого углы заменены четвертями окружности наибольшеговозможного радиуса. Овал рисует команда\oval(width,height)[part]Точка привязки находится в центре фигуры. Пара аргументов в круглых скобках задаёт ширинуи высоту овала (в единицах \unitlength).\put(20,8.5){\oval(36,9)}36r6?92299.7.
Копирование рисункаПо умолчанию LATEX рисует полный овал. Добавление необязательного аргумента part позволяет нарисовать любую половину или четверть овала. Опция part может состоять из одногоили двух спецификаторов: r (правый), l (левый), t (верхний), b (нижний). Один спецификаторсоответствует половине овала (правой, левой, верхней или нижней), два спецификатора — четверти овала. Например, с опцией bl (или lb) команда \oval нарисует нижнюю левую четвертьовала. Размеры и точка привязки определяются по полному овалу вне зависимости от наличияопции: part всего лишь подавляет рисование ненужных частей овала.\put(12,10){\oval(28,8)[b]}\put(43,10){\oval(17,8)[tl]}6r (12,10)8?r(43,10)Углы с малым радиусом закругления (меньшим, чем делает команда \oval) можно построить,соединяя прямые линии четвертями овала.(8,8)\put(5,8){\line(0,1){3.5}}\put(8,8){\oval(6,6)[lb]}\put(8,5){\vector(1,0){16}}9.7.r-Копирование рисункаПодобно \makebox и \framebox, команда \savebox из раздела 9.1.3 имеет графический вариант, в котором размер бокса указывается парой аргументов в круглых скобках:\savebox{cmd}(width,height)[hvpos]{lr-text}Здесь cmd — имя бокса, которое должно быть предварительно объявлено при помощи декларации \newsavebox{cmd}.
Назначение других аргументов такое же, как в команде \framebox.Команда \savebox указывает LATEX’у, что подготовленный ею бокс необходимо запомнить подименем cmd. Печатает поименованный бокс команда \usebox{cmd}. Она быстро воспроизводит бокс, не затрачивая времени на его форматирование. Поэтому рекомендуется сохранятьграфические объекты в виде боксов, если они появляются в нескольких рисунках или в нескольких местах одного и того же рисунка.\savebox{\prn}(12,6)[tr]{\shortstack{У\\X\\А}}\put(5,5){\frame{\usebox{\prn}}}\put(25,5){\frame{\usebox{\prn}}}УXАУXАКоманда \sbox в графической моде сохраняет свои обычные свойства.\sbox{\prn}{\shortstack{У\\X\\А}}\put(5,5){\frame{\usebox{\prn}}}\put(25,5){\fbox{\usebox{\prn}}}УXАУXАНа хранение поименованных боксов LATEX расходует отведённую ему память. Поэтому не следует хранить содержимое поименованного бокса дольше, чем необходимо.
В этой связи полезнообратить внимание, что \savebox есть декларация (так как сама она ничего не печатает), а еёобласть действия подчиняется обычным правилам. В частности, если поименованный бокс \prnбыл сохранён командой \savebox внутри процедуры picture, то его определение затираетсяпри выходе из этой процедуры. Если же \prn использовался в нескольких рисунках и, следовательно, был сохранён вне процедуры picture, то его можно затереть командой \sbox{\prn}{}.К вершине было не взнестись очам,А склон был много круче полуоси,Секущей четверть круга пополам.А.
Данте. Божественная комедияГлава 10Графика и цветВстраивание графических изображений, созданных другими приложениями, обеспечивают пакеты из коллекции graphics, написанной Дэвидом Карлайлом (Carlisle,David). Помимо импортирования рисунков эти пакеты также обеспечивают работу с цветом, позволяют производить вращение или изменять масштаб любогобокса, будь то рисунок, таблица или отдельная буква.При загрузке любого графического пакета нужно выбрать драйвер устройства, которое предполагается использовать для печати документа или, в болеешироком плане, для вывода документа на выходное устройство.
Драйвер указывается в необязательном аргументе декларации \usepackage в преамбуле входного файла. Например,\usepackage[dvips]{graphicx,color}загружает пакеты graphicx и color с драйвером dvips, а\usepackage[pdftex]{graphicx,color}предполагает использование драйвера pdftex. В данном контексте драйверомназывается опция, определяющая набор инструкций для преобразования командLATEX’а в команды, которые управляют работой программы-драйвера конкретного выходного устройства. Загружая графический пакет, декларация \usepackageпроизводит необходимые настройки для последующей работы этой программы,но не запускает её.Как мы отмечали в разделе 1.14, компилятор latex из исходного файла сименем jobname.tex создаёт dvi-файл jobname.dvi, который затем при помощи драйвера выходного устройства можно распечатать на принтере или вывести на экран монитора.
Расширение dvi имени файла происходит от слов deviceindependent file, что по замыслу Д. Кнута должно было означать «файл, не зависящий от устройства». Замысел не удалось реализовать в части, касающейсякак раз графики и цвета, потому что невозможно было договориться заранеео единых стандартах в этой быстро развивающейся области информационныхтехнологий. Однако время всё расставило по местам, выявив лидеров среди разнообразных графических форматов и программ-драйверов.
Проверку временемвыдержали язык описания страниц PostScript и программа dvips Томаша Рокицки (Rokicki, Tomas), которая преобразует dvi-файл в файл PostScript с расширением ps.231Программа dvips долгое время имела слишком очевидные преимущества перед другими приложениями, что и обеспечило её преобладающее распространение. Она единственная поддерживала все графические возможности пакетов изколлекции graphics. Соответственно только драйвер dvips был реализован длявсех типов компьютеров и для всех операционных систем.
Поэтому сейчас новыедрайверы обычно обладают всеми возможностями dvips, позволяя загружатьграфические пакеты с опцией dvips.Небольшой диссонанс внесло изобретение переносимого формата документовPortable Document Format, или просто PDF. С появлением компилятора pdflatexстала реальностью прямая компиляция документов с разметкой LATEX в форматPDF, но в таком случае при загрузке графических пакетов следует указыватьопцию pdftex вместо dvips.Кстати, а что произойдёт, если при загрузке графического пакета драйвервообще не указан? Вопрос вполне разумный, ведь драйвер указывается в необязательном аргументе! Ответ содержится в конфигурационных файлах, где указандрайвер, используемый по умолчанию. Конфигурационные файлы графическихпакетов graphics.cfg и color.cfg хранятся в одном из каталогов, где компилятор ищет необходимую ему информацию.
Графические пакеты сконфигурированы так, что компилятор latex выбирает опцию dvips, а компилятор pdflatexвыбирает опцию pdftex. Таким образом, лучше всего вообще не указывать, какойименно нужен драйвер.Подробнее мы обсудим тему драйверной поддержки в конце главы в разделе10.9.1, а сейчас предположим, что выбор драйвера производится автоматически,т.