МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ЛАБОРАТОРНА РОБОТА №6
РЕДАГУВАННЯ ГРАФІЧНИХ ОБ’ЄКТІВ В LATEX
Мета роботи – ознайомитись з основними принципами роботи з графічними об’єктами в LaTeX.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Псевдографіка
Псевдографіка створюється за допомогою оточення picture. На кожен псевдографічний об’єкт LaTeX повинен відвести в тексті певне місце (канву). Ці розміри задаються в круглих дужках через кому відразу після \begin{picture}, спочатку ширина, потім висота (команди, пов’язані з псевдографікою, – єдині в LaTeX, у яких у певних випадках обов’язковий аргумент ставиться не у фігурних дужках). Між дужками, комами і числами, що задають розміри псевдографічного об’єкту, не повинно бути пробілів. За замовчуванням ширина і висота псевдографічного об’єкту задаються в пунктах, див. рис. 6.1.
Приклад:
\begin{picture}(110,50)
\put(55,15){Стрілка}
\put(55,15){\vector(-2,1){40}}
\put(0,0){\line(1,0){20}}
\put(0,0){\line(0,1){20}}
\end{picture}
/
Рис. 6.1. Приклад найпростішого псевдографічного об’єкту
Щоб створити об’єкт на канві, використовується команда \put (x,y){<об’єкт>}, де (x, y) – координати об’єкта (початком координат вважається лівий нижній кут канви). У фігурних дужках – той об’єкт, який потрібно створити.
Напис у псевдографіці виводиться за допомогою команди \put (x, y){Текст}.
Приклад:
\begin{picture}(110,40)
\put(10,15){Приклад тексту}
\end{picture}
Крім тексту, у псевдографіці можна створювати відрізки, стрілки, круги, кола та овали.
Відрізки задаються за допомогою команди \line. LaTeX потрібно вказати нахил і розмір відрізку. Початок відрізку задається точкою. Нахил відрізка задається парою цілих чисел, розташованих в круглих дужках через кому безпосередньо після \line. Відношення цих чисел має бути рівним кутовому коефіцієнту відрізка (тангенсу кута нахилу до горизонталі). Розмір відрізка задається в фігурних дужках після круглих дужок, в яких заданий нахил. Цей розмір є довжиною його проекції на горизонтальну вісь, окрім випадків, коли відрізок вертикальний – тоді задається його довжина по вертикалі.
Довжину відрізка можна задавати довільно, а нахил не можна. Кожне з цілих чисел, які задають нахил, не повинно перевершувати по абсолютній величині, і, крім того, ці два числа не повинні мати спільних дільників, окрім 1.
Стрілки задаються за допомогою команди \vector. Синтаксис цієї команди такий же, як у команди \line: в круглих дужках пишеться пара чисел, що задає нахил стрілки, а потім у фігурних дужках параметр, що задає її розмір (довжина проекції на горизонтальну вісь, якщо стрілка не вертикальна, і довжина проекції на вертикальну вісь, якщо стрілка вертикальна). Відмінність від команди \line в тому, що множина можливих нахилів стрілок ще більш обмежена: цілі числа, що задають нахил, не повинні перевищувати 4 по абсолютній величині (і як і раніше не повинні мати спільних дільників). Точкою відліку стрілки є її початок.
Приклад:
\begin{picture}(100,50)
\put(60,50){\line(1,-2){20}}
\end{picture}
Коло задається командою \circle, а круг – її варіантом із зірочкою \circle*. У цих команд єдиний аргумент – діаметр кругу або кола. За замовчуванням діаметр задається в пунктах. Точкою відліку круга або кола є центр, див. рис. 6.2.
Приклад:
\begin{picture}(100,80)
\put(30,30){\circle{30}}
\put(70,30){\circle{30}}
\put(30,50){\circle{30}}
\put(70,50){\circle{30}}
\put(50,40){\circle*{20}}
\end{picture}
/
Рис. 6.2. Приклад застосування рисунку з колами
Поряд колами, на псевдографічний об’єкт можна нанести також овал – прямокутник із закругленими кутами. Він задається командою \oval, аргументи якої – ширина і висота овалу. Ці аргументи задаються в круглих дужках через кому. Точка відліку овалу – його центр, див. рис. 6.3.
Приклад.
\begin{picture}(100,80)
\put(50,40){\oval(100,80)}
\end{picture}
/
Рис. 6.3. Приклад застосування рисунку з овалом
Крім того, можливі й неповні овали, що представляють собою половини або чверті від повних. Щоб створити неповний овал, необхідно треба команді \oval задати необов’язковий аргумент (у квадратних дужках, після обов’язкового). Для створення половини овалу цей аргумент має бути однією з таких літер:
t – верхня половина;
b – нижня половина;
r – права половина;
l – ліва половина.
Для створення чверті овалу необов’язковий аргумент команди \oval повинен бути поєднанням двох із цих букв (наприклад, tr для верхньої правої чверті). Точка відліку часткового овалу розташована там же, де точка відліку відповідного йому повного овалу, див. рис. 6.4.
Приклад.
\begin{picture}(100,80)
\put(50,40){\oval(80,60)[t]}
\put(50,40){\oval(80,60)[br]}
\end{picture}
/
Рис. 6.4. Приклад застосування рисунку з неповним овалом
Вставка зображень з файлу
У пакеті graphicx в преамбулі документа підключається як \usepackage {graphicx} визначена команда \includegraphics [keyval-list]{file} для вставки в документ малюнка з графічного файлу file. Необов’язковий аргумент keyval-list може містити список ключів. Значення ключів задаються у вигляді key = value, а в списку вони перераховуються через кому. Команда \includegraphics не завершує абзац, тому дозволяє вставляти невеликі малюнки прямо всередину тексту. Вставлений рисунок має властивості одного великого символу. Опції команди \includegraphics можна опустити, якщо ми хочемо вставити в документ рисунок у «натуральну» величину. LaTeX виділяє в документі під малюнок бокс, розмір якого відповідає розміру рисунку в пікселах.
Приклад:
\includegraphics{1.jpg}
/
Рис. 6.5. Приклад імпортування рисунку
Видно, що точкою відліку боксу, виділеного під малюнок, є його лівий нижній кут.
Зміна розміру малюнка в документі
Опишемо ключі команди \includegraphics, за допомогою яких можна задати розмір прямокутний області, виділеної для розміщення малюнка в документі.
Ключ width = length встановлює значення length (у будь-яких TeX одиницях) як ширини області, виділеної для розміщення малюнка.
Ключі height = length і totalheight = length встановлюють значення length (у будь-яких TeX одиницях) в якості висоти (повної висоти) області, виділеної для розміщення малюнка, див. рис.6.6.
Приклад:
\includegraphics[width=1in,height=10cm]{1.jpg}
/
Рис. 6.6. Приклад імпортування рисунку із спотворенням
Ключ keepaspectratio забезпечує збереження відношення ширини до висоти самого малюнка, якщо задані значення ширини і висоти області, виділеної під малюнок, порушують це відношення (як у попередньому прикладі).
Приклад:
\includegraphics[width=1in,height=10cm,keepaspectratio]{1.jpg}
Видно, що в цьому прикладі розмір боксу, відведеного під малюнок, задається значенням ключа height. Ключ width просто ігнорується: інакше малюнок вийшов би за межі виділеної під нього області по вертикалі.
Ключ scale = scale змінює «натуральний» розмір малюнка в scale разів.
Приклад:
\includegraphics[scale=0.5]{1.jpg}
Включення в документ частини рисунку
Ключі viewport = llx lly urx ury та trim = dl db dr du задають так звану видиму область рисунку. Саме під цю частину рисунку відводиться місце в документі. Тут llx, lly, urx і ury –це x-і y-координати (у будь-яких TeX одиницях) лівого нижнього і правого верхнього кутів видимої області рисунку відносно точки відліку, а dl, db, dr і du – це відстані (у будь-яких TeX одиницях) між лівими, нижніми, правими і верхніми межами видимої області рисунку і самого рисунку, відповідно. Від’ємні значення зміщення допустимі.
Приклад:
\includegraphics[viewport=-5 -5 40 40]{1.jpg}
Ключ clip = boolean обрізає частину малюнка, що виходить за межі видимої області, якщо значення boolean дорівнює true (або просто вказано).
Приклад:
\includegraphics[trim=-5 -5 16 16,clip]{1.jpg}
Поворот рисунку
Ключ angle = angle повертає рисунок на angle градусів проти годинникової стрілки. За замовчуванням вісь обертання проходить через точку відліку боксу, див. рис. 6.7.
Приклад.
\includegraphics[scale=0.6, angle=30] {1.jpg}
/
Рис. 6.7. Приклад імпортування рисунку із поворотом
Ключ origin = pos дозволяє вказати одне з 12 зумовлених положень осі обертання (рис. 6.8).
/
Рис. 6.8. Положення точок обертання боксу і допустимі значення pos.
Положення осі по горизонталі задається однією з трьох літер: l (на лівій стороні боксу), c (по центру боксу) або r (на правій стороні боксу). Положення осі обертання по вертикалі задається однією з чотирьох букв: b (на нижній стороні боксу), B (на базовій лінії), c (по центру боксу) або t (на верхній стороні боксу). У результаті виходить такий список допустимих значень pos: lb, lB, l, lt, b, B, c, t, rb, rB, r, rt. Якщо вказана тільки одна літера, то другий передбачається c. Так, origin = lB відповідає обертанню навколо точки відліку, в origin = c – навколо центру.
Примітка. Порядок проходження ключів повороту і установки нового розміру боксу через вихідні розміри боксу впливає на результат, оскільки поворот змінює такі параметри боксу, як width і ін. Ключі зчитуються зліва направо.
Чорновий режим
На стадії підготовки документа можна використовувати ключ draft який вказує, що замість малюнка треба накреслити рамку і надрукувати всередині неї ім’я файлу з рисунком, див. рис. 6.9.
Приклад.
\includegraphics[width=1.5cm, draft]{1.jpg}
/
Рис. 6.9. Положення точок обертання боксу і допустимі значення pos
Чорновий режим зазвичай задається для всіх малюнків відразу опцією draft або в команді завантаження пакета, або в \documentclass. У цьому випадку ключем final в команді \includegraphics можна відзначити чорновий режим для деяких малюнків.
Плаваючі об’єкти
Рисунок в документі треба розмістити гарно. Просто \includegraphics для цього не дуже підходить, оскільки розміщення регулюється виключно користувачем.
Для цієї мети в LaTeX є спеціальна команда у вигляді плаваючого об’єкта (float). Якщо для цього об’єкта немає місця на поточній сторінці, то він переноситься на наступну.
Для розміщення рисунків стандартні класи визначають плаваючий об’єкт як оточення figure, див. рис. 6.10.
Приклад:
\begin{figure} [ht]
\centering%центруємо рисунок
\includegraphics {1.jpg}
\caption{«Підпис»}\label {fig: metka}
\end{figure}
Необов’язковим параметром оточенню figure можна передати допустимі способи розміщення плаваючого об’єкту:
h – розмістити по місцю;
t – розмістити у верхній частині сторінки,
b – розмістити в нижній частині сторінки;
p – розмістити на окремій сторінці, де немає нічого крім плаваючих об’єктів.
Пріоритет для розміщення визначається порядком проходження букв. Якщо першою є літера h, то в разі невдачі LaTeX розміщує плаваючий об’єкт на наступній сторінці. Якщо ж першими йдуть літери t чи b, то розміщення організує на поточній сторінці.
Для грамотного розміщення рисунків у LaTeX існують деякі значення за замовчуванням. Тому, якщо необхідно розмістити рисунок, наприклад, унизу, то це можна зробити за допомогою знаку оклику: [b!].
Групування рисунків
Для зменшення кількості плаваючих об’єктів корисно розміщувати картинки групами. Наприклад, щоб розмістити дві картинки поруч можна застосувати команду \parbox чи оточення minipage:
\parbox [«позиціонування»]{«ширина»}{«текст»}
або
\begin{minipage}[«позиціонування»]{«ширина»}
текст
\end{minipage}
В обох випадках є обов’язковий параметр ширини за якою формується створюваний бокс і необов’язковий «позиціонування» – розташування сформованого боксу щодо базової лінії по вертикалі. Позиціонування може проводитися по центру (опція [c] – задана за замовчуванням), по верхній лінії ([t]) і по нижній лінії боксу ([b]). Шаблон для двох розташованих поруч малюнків може мати приблизно такий вигляд, як на рис. 6.11.
\begin{figure}[ht]\centering
\parbox[b]{0.45\textwidth}{\centering
\includegraphics{«Рисунок-1»}
\caption{«Підпис1»}\label {fig:metka2}
\begin{minipage}[b]{0.45\textwidth}
\centering
\includegraphics{«Рисунок-2»}
\caption{«Підпис2»}\label {fig:metka2}
\end{minipage}
\end{figure}
Приклад:
\noindent
\parbox[b][3cm][t]{10mm}{
\includegraphics[scale=0.25]{1.jpg}}
\hfill
\parbox[b][3cm][t]{60mm}{
Параметри команди parbox:
[b ]~--- вирівнювання боксів
по ~ нижній кромці;
[3cm ]~--- висота боксів;
[t ]~--- вертикальне вирівнювання
усередині боксу догори.
Недолік – доводиться підбирати висоту боксів вручну.}
/
Рис. 6.11. Розміщення рисунку та тексту групами
Використання команди \parbox чи оточення minipage залежить виключно від особистих вподобань. За допомогою них можна організувати і більш складні конструкції.
Рисунки з обтіканням тексту
Маленькі ілюстративні малюнки зручно робити «в оборку» з текстом, тобто текст повинен обтікати їх. Такі картинки розташовуються на зовнішній стороні сторінки, тобто ліворуч для парних і праворуч для непарних сторінок або у випадку одностороннього режиму друку.
Традиційно описуються два пакети для створення подібних малюнків: floatflt (\usepackage{floatflt}) і wrapfig (\usepackage{wrapfig}).
Floatflt більш автоматизований для розміщення картинок, але він так само частіше «ламається» при великому числі плаваючих об’єктів. Можливі навіть «втрати» картинок. Згадані пакети визначають оточення floatingfigure і wrapfigure, відповідно.
\ begin {floatingfigure} [«розміщення»] {«ширина»}
...
\ end {floatingfigure}
Необов’язковий параметр «розміщення» дозволяє змінити алгоритм розміщення картинки:
rflt – розміщувати праворуч;
lflt – розміщувати зліва;
vflt – зліва для парних і праворуч для непарних сторінок (за замовчуванням).
\begin{wrapfigure}[«число рядків в оборку»]{«розмі-щення»}{«ширина»}
…
\end{wrapfigure}
На відміну від оточення floatingfigure wrapfigure вимагає визначити правила розміщення картинки. Доступні варіанти: праворуч ({r}), ліворуч ({l}), із зовнішнього боку сторінки ({i}) і з внутрішньої сторони сторінки ({o}). Якщо замість рядкових букв передати заголовні, то включається заборона на зсув по вертикалі – рисунок повинен бути розміщений починаючи з того рядка абзацу, в якій він був визначений.
Приклад.
\begin{floatingfigure}{21mm}
\noindent
\hfil
\includegraphics[width=12mm] {1.jpg}
\hfil
\caption{\TeX}
\label{figCurvesFF}
\end{floatingfigure}
Це оточення не можна використовувати в ~ режимі twocolumn, відразу після заголовка розділу, вгорі сторінки. Але ~ можна використовувати його всередині команди parbox і ~ інших оточень, наприклад, multicols, що дозволяє обійти зазначені обмеження.
Зміна розмірів боксу
Трансформація до зазначеного розміру.
Команда \resizebox{width}{height}{lr-text} поміщає текст lr-text в бокс і потім стискає або розтягує бокс разом із вмістом так, щоб його ширина і висота стали рівні width і height.
Приклад:
\resizebox{4cm}{8mm}{abc}
Зберегти відношення висоти до ширини боксу можна, вказавши як width або height знак оклику (!).
Приклад:
\resizebox{3cm}{!}{abc}
Команда \resizebox*{width}{totalheight}{lr-text} діє подібно команді \resizebox, але підганяє не висоту, а повну висоту боксу (сума висоти і глибини) до зазначеного розміру totalheight.
Примітка. В аргументах команди \resizebox вихідні розміри боксу доступні у вигляді командних довжин \height, \width, \totalheight і \depth.
Трансформація за вказаним масштабом.
Команда \scalebox{h-scale}[v-scale]{lr-text} розташовує текст lr-text в боксі і потім змінює його ширину в h-scale раз і висоту в v-scale разів. Якщо опція v-scale відсутня, то відношення ширини до висоти боксу при трансформації блоку зберігається. При від’ємних значеннях аргументів відбувається дзеркальне відображення тексту, див. рис. 6.12.
Приклад:
\scalebox{1.5}[3]{abc}
\scalebox{1.5} [-3]{abc}
/
Рис. 6.12. Приклад операторів трансформації та зміни масштабу
Команда \reflectbox {lr-text} еквівалентна \scalebox {-1}[1]{lr-text}, описаній вище.
Поворот блоку
Команда \rotatebox [keyval-list]{angle}{lr-text} розташовує текст lr-text в боксі і повертає його на angle градусів проти годинникової стрілки. За замовчуванням бокс повертається щодо своєї точки відліку, див. рис. 6.13.
Приклад:
\huge прямий \rotatebox{30}{повернутий}
/
Рис. 6.13. Приклад прямого та повернутого блоку тексту
Ключі keyval-list в необов’язковому аргументі команди \rotatebox дозволяють змінити положення осі, навколо якої повертається бокс, і одиницю виміру кута повороту. Ключі в списку перераховуються через кому і мають вигляд key = value.
Ключ origin = pos дозволяє вказати одне з 12 стандартних положень осі обертання (рис.1). Довільне положення осі обертання можна задати за допомогою ключів x = dimen1, y = dimen2.
Наприклад, якщо [keyval-list] має вигляд [x = 4mm, y = 3mm], то вісь обертання проходить через точку, яка зміщена відносно точки відліку боксу на 4 мм вздовж осі абсцис і на 3 мм вздовж осі ординат.
У ключі units = number значення number відповідає повному обороту навколо осі. Так, за замовчуванням кут повороту вимірюється в градусах, що відповідає units = 360. Якщо задати units = 1, то для повороту на 90 градусів треба в першому обов’язковому аргументі команди вказати 0.25, див. рис. 6.14.
Приклад:
\rotatebox [origin=c,units=1]{0.25}{\huge W}
/
Рис. 6.14. Приклад повороту блоку тексту навколо осі
Порядок виконання роботи. Індивідуальне завдання №19
Ознайомитись з основними принципами роботи з графікою в системі LaTeX.
Відкомпілювати наведені приклади в редакторі TexWorks.
Приклад тексту програми:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ukrainian,russian]{babel}
\usepackage {graphicx}
\title{Лабораторна робота №6}
\author{ Виконала студентка групи ВП-11 Романяк Ірина}
\begin{document}
\maketitle
\begin{picture}(110,50)
\put(55,15){Стрілка}
\put(55,15){\vector(-2,1){40}}
\put(0,0){\line(1,0){20}}
\put(0,0){\line(0,1){20}}
\end{picture}
\\\\\\
\begin{picture}(100,50)
\put(60,50){\line(1,-2){20}}
\end{picture}
\begin{picture}(80,60)
\put(30,30){\circle{30}}
\put(70,30){\circle{30}}
\put(30,50){\circle{30}}
\put(70,50){\circle{30}}
\put(50,40){\circle*{20}}
\end{picture}
\begin{picture}(100,80)
\put(50,40){\oval(100,80)}
\end{picture}
\begin{picture}(100,80)
\put(50,40){\oval(80,60)[t]}
\put(50,40){\oval(80,60)[br]}
\end{picture}
\includegraphics{serce.jpg}
\\\\\\\\\
\includegraphics[width=1in,height=8cm]{serce.jpg}
\includegraphics[scale=0.6, angle=30] {serce.jpg}
\\\\\
\includegraphics[width=1.5cm, draft]{serce.jpg}
\begin{figure} [ht]
\centering%центруємо рисунок
\includegraphics {serce.jpg}
\caption{«Сердечко»}\label {fig: metka}
\end{figure}
\noindent
\parbox[b][3cm][t]{10mm}{
\includegraphics[scale=0.25]{serce.jpg}}
\hfill
\parbox[b][3cm][t]{60mm}{
Параметри команди parbox:
[b ]~--- вирівнювання боксів
по ~ нижній кромці;
[3cm ]~--- висота боксів;
[t ]~--- вертикальне вирівнювання
усередині боксу догори.
Недолік – доводиться підбирати висоту боксів вручну.}
\scalebox{1.5}[3]{abc}
\scalebox{1.5} [-3]{abc}
\huge сонечко \rotatebox{30}{світить}
\\\\
\rotatebox [origin=c,units=1]{0.25}{\huge W}
\end{document}
Результат виконання вищевказаної програми:
/
/
/
/
Відповідно до індивідуального завдання, створити псевдографічні об’єкти на канві:
а) побудувати квадрат зі стороною А=150. Вписати в квадрат окружність з радіусом R=80.
б) створити декілька регулярно розташованих псевдографічних об’єктів; ) кількість повторюваних елементів – 6; тип повторюваного елементу – коло.
в) створити напис за допомогою псевдографіки (текст – прізвище та група студента).
Відповідно до індивідуального завдання, вставити картинку з файлу створити під ним підрисунковий підпис. Відкрита верстка – ілюстрація розташована зверху сторінки, текст – внизу. Масштаб рисунку: 85%. Кут повороту рисунку: 15%.
Відповідно до індивідуального завдання, оформити текст у вигляді боксу (текст – прізвище та ім’я студента). Масштаб боксу: 80%. Кут повороту боксу: 30(.
Текст програми:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ukrainian,russian]{babel}
\usepackage {graphicx}
\title{Лабораторна робота №6}
\author{ Виконала студентка групи ВП-11 Романяк Ірина}
\begin{document}
\maketitle
\Large{Індивідуальне завдання №19}
\\\\
Завдання №1
\\\\\
\begin{picture}(150,150)
\put(0,0){\line(1,0){150}}
\put(0,0){\line(0,1){150}}
\put(0,150){\line(1,0){150}}
\put(150,0){\line(0,1){150}}
\put(80,80){\circle{150}}
\end{picture}
\\\\
Завдання №2
\\\\
\begin{picture}(80,60)
\put(30,30){\circle{30}}
\put(70,30){\circle{30}}
\put(110,30){\circle{30}}
\put(150,30){\circle{30}}
\put(190,30){\circle{30}}
\put(230,30){\circle{30}}
\end{picture}
\\\\
Завдання №3
\
\begin{picture} (50,50)
\put(0,0){Романяк Ірина Орестівна}
\end{picture}
\\
Завдання №4 \par
\par
\noindent
\parbox[b][3cm][t]{10mm}{
\includegraphics[scale=0.5, angle=15] {serce.jpg}}
\\\\\\\\\\\
{На даній картинці ми бачимо - сердечко, яке я сьогодні намалювала для своєї 6 лабораторної роботи з технічного редагування.}
\par \ \par \ \par \ \par \ \par
Завдання №5 \par
\scalebox{0.6}[3]{Романяк Ірина}
\scalebox{0.6} [-3]{Романяк Ірина}
\end{document}
Приклад виконання вищевказаної програми:
/
/
Висновок:
Ми ознайомились з основними принципами роботи з графічними об’єктами в LaTeX.