ЛаТеX/Слика
picture окружење омогућава програмирање слика директно у LaTeX-у. Са једне стране, постоје веома строга ограничења, као што су нагиби делова линија као и радијуси кругова који су ограничени на узак избор вредности. Са друге стране, окружење слике LaTeX2e-а доноси са собом у \qbezier команди, "q" што означава квадратну. Доста најчеће коришћених кривих као што су кругови, елипсе, и catenaries могу се задовољавајући апроксимирати користећи Безијерове криве, ово ипак захтева математички тежак посао. Ако се користи програмски језик као Java за прављење \qbezier блокова LaTeX улазних фајлова, окружење слике постаје моћно.
Иако је прављење слике директно у LaTeX-у веома ограничено, и често одузима доста времена, и даље постоје разлози да се слика баш у њему прави. Документи прављени на овај начин су "мали" у бајтовима, и нема додатних фајлова графика које морају да иду уз фајл.
Пакети као што су pict2e, epic, eepic или pstricks побољшавају оригинално окужење слике, и доста ојачавају графичку моћ LaTeX-а.
Основне команде
уредиpicture окружење доступно је у доста LaTeX дистрибуција, без потребе за убацивањем додатних пакета. Ово окрућење прави се помоћу ових команди
\begin{picture}(x, y)
...
\end{picture}
|
или
\begin{picture}(x, y)(x0, y0)
...
\end{picture}
|
Први пар, , утиче на резервацију, унутар документа, правоугаоног простора слике.
Опциони други пар, , додељује произвољне кординате доњем левом углу затвореног правоугаоника .
Бројеви x, y, x0, y0 су бројеви (дужине) у јединицама \unitlength
, који се могу увек рестартовати (али не у окружењу слике) са комадама као што су
\setlength{\unitlength}{1.2cm}
|
Основна вредност \unitlength
је 1pt.
Већина команди за цртање има једну од две форме
\put(x, y){object}
|
или
\multiput(x, y)(dx, dy){n}{object}
|
Безијерове криве су изузетак. Оне се цртају са овом командом
\qbezier(x1, y1)(x2, y2)(x3, y3)
|
Са пакетом picture апсолутне димензије (на пример 15pt) и експресије су дозвољене, заједно са бројевима релативним на \unitlength
.
Линијски сегменти
уредиЛинијски сегменти цртају се следећим командама:
\put(x, y){ \line(x1, y1){length} }
|
\line
команда има два аргумента:
- вектор правца,
- "дужину" (отприлике: овај аргумент је вертикална дужина у случају вертикалних сегментних линија и у свим осталим случајевима је хоризонтална удаљеност линије, а не дужина самог сегмента).
Компоненте вектора дужине су огранићене на интиџере (−6, −5, ... , 5, 6) и морају да буду прости бројеви (дељиви само са један). Доња фигура илуструје свих 25 могућих нагиних вредности у првом квадранту. Дужина је релетивна у односу на \unitlength
.
\setlength{\unitlength}{5cm}
\begin{picture}(1,1)
\put(0,0){\line(0,1){1}}
\put(0,0){\line(1,0){1}}
\put(0,0){\line(1,1){1}}
\put(0,0){\line(1,2){.5}}
\put(0,0){\line(1,3){.3333}}
\put(0,0){\line(1,4){.25}}
\put(0,0){\line(1,5){.2}}
\put(0,0){\line(1,6){.1667}}
\put(0,0){\line(2,1){1}}
\put(0,0){\line(2,3){.6667}}
\put(0,0){\line(2,5){.4}}
\put(0,0){\line(3,1){1}}
\put(0,0){\line(3,2){1}}
\put(0,0){\line(3,4){.75}}
\put(0,0){\line(3,5){.6}}
\put(0,0){\line(4,1){1}}
\put(0,0){\line(4,3){1}}
\put(0,0){\line(4,5){.8}}
\put(0,0){\line(5,1){1}}
\put(0,0){\line(5,2){1}}
\put(0,0){\line(5,3){1}}
\put(0,0){\line(5,4){1}}
\put(0,0){\line(5,6){.8333}}
\put(0,0){\line(6,1){1}}
\put(0,0){\line(6,5){1}}
\end{picture}
|
Стрелице
уредиСтрелице се цртају са командом
\put(x, y){\vector(x1, y1){length}}
|
За стрелице, компоненте вектора правца су још уже ограничене него ли компоненте линијских сегмената, углавном на интиџере (−4, −3, ... , 3, 4). Компоненте такође морају да буду прости бројеви (дељии само са 1). приметите ефекте \thicklines
команде на две стрлице које показују на горњи леви угао.
\setlength{\unitlength}{0.75mm}
\begin{picture}(60,40)
\put(30,20){\vector(1,0){30}}
\put(30,20){\vector(4,1){20}}
\put(30,20){\vector(3,1){25}}
\put(30,20){\vector(2,1){30}}
\put(30,20){\vector(1,2){10}}
\thicklines
\put(30,20){\vector(-4,1){30}}
\put(30,20){\vector(-1,4){5}}
\thinlines
\put(30,20){\vector(-1,-1){5}}
\put(30,20){\vector(-1,-4){5}}
\end{picture}
|
Кругови
уредиКоманда
\put(x, y){\circle{diameter}}
|
Црта круг са центром (x, y) и пречником (не полупречник) одређеним са diameter. Окружење слике прима само пречнике до 14mm, па чак и испод ове границе, нису сви пречници могући. \circle*
команда прави дискове (испуњене кругове). Као у случају линијских сегмената, морали бисте да потражите додатне пакете, као што су eepic, pstricks, или tikz.
\setlength{\unitlength}{1mm}
\begin{picture}(60, 40)
\put(20,30){\circle{1}}
\put(20,30){\circle{2}}
\put(20,30){\circle{4}}
\put(20,30){\circle{8}}
\put(20,30){\circle{16}}
\put(20,30){\circle{32}}
\put(40,30){\circle{1}}
\put(40,30){\circle{2}}
\put(40,30){\circle{3}}
\put(40,30){\circle{4}}
\put(40,30){\circle{5}}
\put(40,30){\circle{6}}
\put(40,30){\circle{7}}
\put(40,30){\circle{8}}
\put(40,30){\circle{9}}
\put(40,30){\circle{10}}
\put(40,30){\circle{11}}
\put(40,30){\circle{12}}
\put(40,30){\circle{13}}
\put(40,30){\circle{14}}
\put(15,10){\circle*{1}}
\put(20,10){\circle*{2}}
\put(25,10){\circle*{3}}
\put(30,10){\circle*{4}}
\put(35,10){\circle*{5}}
\end{picture}
|
Ово је још јенда могућност у оквиру окружења слике. Ако се не плашите неопходних прорачунавања (или их оставите да их програм одради), поизвољни кругови и елипсе могу се закрпити помоћу Безијерових квадратних кривих . Погледајте Graphics in LaTeX2e за примере и Java изворне фајлове.
Текст и формуле
уредикао што овај пример показује, текст и формуле могу зе писати у окружењу са \put
командом на уобичајен начин:
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,5)
\thicklines
\put(1,0.5){\line(2,1){3}}
\put(4,2){\line(-2,1){2}}
\put(2,3){\line(-2,-5){1}}
\put(0.7,0.3){$A$}
\put(4.05,1.9){$B$}
\put(1.7,2.95){$C$}
\put(3.1,2.5){$a$}
\put(1.3,1.7){$b$}
\put(2.5,1.05){$c$}
\put(0.3,4){$F=\sqrt{s(s-a)(s-b)(s-c)}$}
\put(3.5,0.4){$\displaystyle s:=\frac{a+b+c}{2}$}
\end{picture}
|
\multiput and \linethickness
уредиКоманда
\multiput(x, y)(dx, dy ){n}{object}
|
има 4 аргумента: почетну тачку, вектор транслације од једног објекта до другог, број објеката, и објекат који се црта. \linethickness команда односи се на хоризонталне и вертикалне сегменте, али не на косе сегменте, а ни на кругове. Али односи се,ипак, на Безијерове квадратне криве!
\setlength{\unitlength}{2mm}
\begin{picture}(30,20)
\linethickness{0.075mm}
\multiput(0,0)(1,0){26}%
{\line(0,1){20}}
\multiput(0,0)(0,1){21}%
{\line(1,0){25}}
\linethickness{0.15mm}
\multiput(0,0)(5,0){6}%
{\line(0,1){20}}
\multiput(0,0)(0,5){5}%
{\line(1,0){25}}
\linethickness{0.3mm}
\multiput(5,0)(10,0){2}%
{\line(0,1){20}}
\multiput(0,5)(0,10){2}%
{\line(1,0){25}}
\end{picture}
|
Овали
уредиКоманда
\put(x, y){\oval(w, h)}
|
или
\put(x, y){\oval(w, h)[position]}
|
прави овал центриран у (x, y) са ширином w и висином h. Опциони аргументи позиције b, t, l, r односе се на "горе", "доле", "лево", "десно", и могу нити комбиновани, као што пример илуструје. Дебљина линије може да се контролише помоћу ове две команде: \linethickness{''length''}
са једне стране, \thinlines
и \thicklines
са друге. Док се \linethickness{''length''}
односи на хоризонталне и вертикалне линије (и квадратне безијерове криве), \thinlines
и \thicklines
се односе на криволинијске сегменте као и на кругове и овале.
\setlength{\unitlength}{0.75cm}
\begin{picture}(6,4)
\linethickness{0.075mm}
\multiput(0,0)(1,0){7}%
{\line(0,1){4}}
\multiput(0,0)(0,1){5}%
{\line(1,0){6}}
\thicklines
\put(2,3){\oval(3,1.8)}
\thinlines
\put(3,2){\oval(3,1.8)}
\thicklines
\put(2,1){\oval(3,1.8)[tl]}
\put(4,1){\oval(3,1.8)[b]}
\put(4,3){\oval(3,1.8)[r]}
\put(3,1.5){\oval(1.8,0.4)}
\end{picture}
|
Више примена предефинисаних сликовних сандука
уредисандук слике може се декларисати командом
\newsavebox{name}
|
па се дефинише са
\savebox{name}(width,height)[position]{content}
|
и коначно произвољно цртан са
\put(x, y){\usebox{name}}
|
Опциони параметар позиције има ефекат дефинисања "тачке уточишта" savebox-а. У примеру постављен је на "bl" који поставља тачку уточишта у дну левог угла savebox-а. Други одредници позиције су горе и десно.
име аргумент се односи LaTeX складишни bin и као такав има природу команде (што објашњава косе црте у овом примеру). Усандучене слике могу се повезати: У овом примеру, \foldera
се користи у оквиту дефиниције \folderb
. \oval
команда морала је се користити јер \line
команда не ради ако је дужина сегмента мања од 3 mm.
\setlength{\unitlength}{0.5mm}
\begin{picture}(120,168)
\newsavebox{\foldera}
\savebox{\foldera}
(40,32)[bl]{% definition
\multiput(0,0)(0,28){2}
{\line(1,0){40}}
\multiput(0,0)(40,0){2}
{\line(0,1){28}}
\put(1,28){\oval(2,2)[tl]}
\put(1,29){\line(1,0){5}}
\put(9,29){\oval(6,6)[tl]}
\put(9,32){\line(1,0){8}}
\put(17,29){\oval(6,6)[tr]}
\put(20,29){\line(1,0){19}}
\put(39,28){\oval(2,2)[tr]}
}
\newsavebox{\folderb}
\savebox{\folderb}
(40,32)[l]{% definition
\put(0,14){\line(1,0){8}}
\put(8,0){\usebox{\foldera}}
}
\put(34,26){\line(0,1){102}}
\put(14,128){\usebox{\foldera}}
\multiput(34,86)(0,-37){3}
{\usebox{\folderb}}
\end{picture}
|
Квадратне Безијерове криве
уредиКоманда
\qbezier(x1, y1)(x, y)(x2, y2)
|
црта квадратну Безијерову криву где , означава крајње тачке, и означава средњу контролну тачку. Респективне тангентне косине, и , могу се добавити из једначина
Погледајте Graphics in LaTeX2e за Java програм који прави неопходну \qbezier
линију комадне.
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,4)
\linethickness{0.075mm}
\multiput(0,0)(1,0){7}
{\line(0,1){4}}
\multiput(0,0)(0,1){5}
{\line(1,0){6}}
\thicklines
\put(0.5,0.5){\line(1,5){0.5}}
\put(1,3){\line(4,1){2}}
\qbezier(0.5,0.5)(1,3)(3,3.5)
\thinlines
\put(2.5,2){\line(2,-1){3}}
\put(5.5,0.5){\line(-1,5){0.5}}
\linethickness{1mm}
\qbezier(2.5,2)(5.5,0.5)(5,3)
\thinlines
\qbezier(4,2)(4,3)(3,3)
\qbezier(3,3)(2,3)(2,2)
\qbezier(2,2)(2,1)(3,1)
\qbezier(3,1)(4,1)(4,2)
\end{picture}
|
Као што овај пример илуструје, дељење круга у 4 квадратне Безијерове криве није погодно. Најмање 8 је потребно. Фигура поново показује ефекат \linethickness
команде на хоризонталне и вертикалне линије, па и на \thinlines
и \thicklines
команде криволинијских сегмената . Такође показује да обе врсте команди утичу на квадратне Безијерове криве, а свака комада постаје важнија од претходне .
Катемптоте
уреди
\setlength{\unitlength}{1cm}
\begin{picture}(4.3,3.6)(-2.5,-0.25)
\put(-2,0){\vector(1,0){4.4}}
\put(2.45,-.05){$x$}
\put(0,0){\vector(0,1){3.2}}
\put(0,3.35){\makebox(0,0){$y$}}
\qbezier(0.0,0.0)(1.2384,0.0)
(2.0,2.7622)
\qbezier(0.0,0.0)(-1.2384,0.0)
(-2.0,2.7622)
\linethickness{.075mm}
\multiput(-2,0)(1,0){5}
{\line(0,1){3}}
\multiput(-2,0)(0,1){4}
{\line(1,0){4}}
\linethickness{.2mm}
\put( .3,.12763){\line(1,0){.4}}
\put(.5,-.07237){\line(0,1){.4}}
\put(-.7,.12763){\line(1,0){.4}}
\put(-.5,-.07237){\line(0,1){.4}}
\put(.8,.54308){\line(1,0){.4}}
\put(1,.34308){\line(0,1){.4}}
\put(-1.2,.54308){\line(1,0){.4}}
\put(-1,.34308){\line(0,1){.4}}
\put(1.3,1.35241){\line(1,0){.4}}
\put(1.5,1.15241){\line(0,1){.4}}
\put(-1.7,1.35241){\line(1,0){.4}}
\put(-1.5,1.15241){\line(0,1){.4}}
\put(-2.5,-0.25){\circle*{0.2}}
\end{picture}
|
У овој фигури, свака симетрична половина катемптоте је апроксмирана Безијеровом квадратном кривом. Десни део криве завршава се у тачки (2, 2.7622), где нагиб има вредност m = 3.6269.Користећи поново једначину (*), можемо израчунати средњу котролну тачку. А оне су (1.2384, 0) и (−1.2384, 0). Крстићи указују натачке реалне катемптоте. Грешка је једва видљива, јер је мањаид 1%. Овај пример указуке на коришћење опционалних аргумената \begin{picture}
команде. Слика је дефинисана у одговарајућим "математичким" координатама, где је у команди
\begin{picture}(4.3,3.6)(-2.5,-0.25)
|
њен доњи леви угао (означен са црним диском) у координатама (−2.5,−0.25).
Плотовање графика функција
уреди
\setlength{\unitlength}{1cm}
\begin{picture}(6,6)(-3,-3)
\put(-1.5,0){\vector(1,0){3}}
\put(2.7,-0.1){$\chi$}
\put(0,-1.5){\vector(0,1){3}}
\multiput(-2.5,1)(0.4,0){13}
{\line(1,0){0.2}}
\multiput(-2.5,-1)(0.4,0){13}
{\line(1,0){0.2}}
\put(0.2,1.4)
{$\beta=v/c=\tanh\chi$}
\qbezier(0,0)(0.8853,0.8853)
(2,0.9640)
\qbezier(0,0)(-0.8853,-0.8853)
(-2,-0.9640)
\put(-3,-2){\circle*{0.2}}
\end{picture}
|
Контролне тачке Безијерових кривих израчунате су формулама (*). Позитивна грана је одређена са , and , . Поново, the слика је дифинисана у математички одговарајућим координатама , и доњем левом углу додељене су математичке координате (−3,−2) (црни диск).
окружење слике и gnuplot
уредиМоћни научни пакет за плотовање gnuplot има могућност да се директно убаци у pictureокружење. Често је погодније да се плотује директно у LaTeX , јер нам то омогућава да се после не бавимо са потенцијално проблематичним постскрпт фајловима. Плотовање научних података (или, такође, математичких фигура) на овај начин даје много бољу контролу, и наравно могућност typesetting-а, но доступан је и за друге потребе (као што је постскрипт ).
Такве слике се онда могу додати у документ користећи \include{}
команду.
N.B. gnuplot је моћан софтвер са доста команди. Пуна дискусија о gnuplot-у не може се провући кроз једну ноту . Погледајте [[1]] туторијал.