Pic

Pic je součást Documenter's WorkBench (DWB) což je UNIXová sada programů a mikrojazyků pro tvorbu dokumentů (tbl, eqn, pic, grap, chem, ..)

Základní informace

  • Pic je mikrojazyk
  • Obsahuje klíčová slova (příkazy), má nějakou syntaxi a sémantiku
  • Slouží ke slovnímu popisu obrázků, které se poté dají vygenerovat jako postscript, png, …
  • Existuje několik implementací Pic
  • Pic je většinou součástí balíku troff nebo groff

Příkazy

K dispozici jsou následující příkazy

box, circle, ellipse, line, arrow, arc, spline, text

arrow je alias na line s šipkou na konci, arc je oblouk, spline je nerovná čára, circle je alias na ellipse

Komentáře začínají #.

Obrázek

Data programu Pic jsou stejně jako v programovacích jazycích sekvence znaků zadané buď do souboru nebo na standartní vstup picu. Pic je filtr.

Každý obrázek začíná sekvencí .PS a končí .PE. Mězi těmito značkami jsou příkazy.

.PS
box "this is" "a box"
line "this is" "a line"
arrow "this is" "an arrow"
.PE

Příkazy berou argumenty. Například line a box mohou mít argument dashed nebo dotted. Příkaz arc může mít argument cw (clock-wise).

line dashed "dashed" "line"

Příkazy lze řetězit za sebe. Oddělovač je buď nový řádek nebo středník.

line; arc; arc cw; arrow

Jednotlivé tvary se kreslí postupně za sebe. Pokud není určeno jinak, je to zleva doprava. Následující přiklad je popis schématu tří obdélníků zřetězených za sebe (zleva doprava) šipkami. Příkazy mohou brát argument ohraničený dvojitými uvozokami, který se interpretuje jako popisný text objektu na obrázku (text v obdélníčku, text nad šipkou, ..)

arrow; box "input"; arrow; box "process"; arrow; box "output"; arrow

Pro "posuv" o kousek dál bez kresby nějakého tvaru lze použít příkaz move, který vloží mezeru mezi přechozí a následující tvar (příkaz). Tyto tvary by jinak byly těsne za sebou bez mezery.

box; move; box; move; box

Směr

Výchozí směr kresby je zleva doprava. Směr lze kdykoliv změnit pomocí:

  • up
  • down
  • left
  • right (výchozí)

Zachovává se poslední směr.

down; box; arrow; ellipse; arrow; circle
left; box; arrow; ellipse; arrow; circle
arrow left; box; arrow; circle; arrow
left; arrow; box; arrow; circle; arrow
arrow; circle; down; arrow

Velikost

Velikost obrázku se udává na startovní značce.

.PS 3.5
box; box; box;
.PE

Předchozí příklad znamená, že obrázek bude tři a půl palce široký. Je možné přídat další číslo, vyjadřující výšku.

Velikost objektů lze specifikovat u každého zvlášť.

box width 3 height 0.1
circle radius 0.1

Rozmístění

U čar (a šipek) lze definovat jak jsou dlouhé a jaký mají sklon. Šipku lze nahradit čarou s atributem (oboustranná šipka)

line up 1 right 2
arrow left 2
move left 0.1
line <-> down 1 "height " rjust

Příkaz arrow je synonymum k line →.

Přidat šipku lze i k dalším objektům.

arc ->
arc <->
arc <-

Jednoduché otáčení čarou

line up right; line down; line down left; line up

Kresba čar

Čáry mohou být plné, přerušované nebo tečkované.

box dotted; line dotted; move; line dashed; box dashed

Kresba čar může být i neviditelná.

box invis "input"; arrow; box invis "output"

Popisky

Čáry mohou mít popisky. Buď nahoře, uprostřed (výchozí) nebo pod.

arrow "text" above
arrow "text" below

Vlastnosti objektů

Nastavení objektů lze provádět lokálně ke každému objektu zvlášť a poté pomocí kopírování tato nastavení používat dále. Kopírování se vztahuje na stejné objekty (dvě čáry třeba)

down; box ht 0.2 wid 1.5; move down 0.15; box same; move same; box same

Klíčová slovo heigth lze zkrátit na ht a width na wid.

Výchozí nastavení proměnných Picu

boxwid = 0.75
boxht = 0.5
linewid = 0.75
lineht = 0.5
circlerad = 0.25
arcrad = 0.25
ellipsewid = 0.75
ellipseht = 0.5
movewid = 0.75
moveht = 0.5
textwid = 0
textht = 0
arrowwid = 0.05
arrowht = 0.1
dashwid = 0.05
arrowhead = 2
maxpsht = 8.5
maxpswid = 11
fillval = 0.3
scale = 1

Globální nastavení vlastností objektů:

boxwid = 0.1; boxht = 1; movewid = 0.2
box; move; box; move; box
arrowhead = 7; arrow; move; arrowhead = 2; arrow

Místo palců lze využívat centimetrů:

scale = 2.54

Nastavení proměnných lze vrátit do původního stavu pomocí reset.

  • Selektivní: reset boxht, boxwid.
  • Totální: reset.

Pozicování

Objekty je možné řetězit přímo za sebe (bez mezery).

box fill
box ht boxht/2 wid boxwid/2 "hello" at last box

První objekt je na souřadnicích (0,0). Obdelník, kružnice a elipsa jsou umísťovány podle geometrického středu.

Spojky a pozicování:

from, to, by, at
up, down, right, left
box ht 0.2 wid 0.2 at 0,0 "1"
move right 0.5
box ht 0.2 wid 0.2 "2"
move right 0.5
box ht 0.2 wid 0.2 "3"

Slovo 'at' (argument) můze být kdekoliv

box ht 0.2 wid 0.2 at 0,0
box at 0,0 wid 0.2 ht 0.2
box ht 0.2 at 0,0 wid 0.2

Použití from a to.

"+" at 0,0
arc -> from 0.5,0 to 0,0.5
arc -> cw from 0,0 to 1,0.5
arc -> cw from 0,0 to 2,0 rad 15

Pojmenovávání

Objekty lze pojmenovávat pro snažší relativní pozicování.

Box1: box
      # prikazy
      # prikazy
      # prikazy
      # prikazy
      move to Box1
line from Box1 to Box2
move to Box1 up 0.1 right 0.2
move to Box1 + 0.2,0.1 # stejne jako predchozi
line to Box1 - 0.5,0
Box1: Box1 + 1,1

Aktuální pozice ma jméno "Here". Předchozí pozice ma jméno "last".

box "A"; circle "B"; box "C"
last box
last circle
2nd last box
1st box
2nd box

Každý objekt má devět záchytných bodů. Referencují se názevObjektu[.bod].

B: box "B.c" ht 1 wid 1.5
       " B.e" at B.e ljust
       " B.ne" at B.ne ljust
       " B.se" at B.se ljust
       "B.s" at B.s below
       "B.n" at B.n above
       "B.sw" at B.sw rjust
       "B.w" at B.w rjust
       "B.nw " at B.nw rjust

Objekty line a arrow mají záchytné body:

  • start
  • end
  • center

Záchytné body (left, right, top, bottom) jsou aliasy na (west, east, north, south).

box ht 0.75 wid 0.75
box ht 0.5 wid 0.5 with .sw at last box.se
ellipse
ellipse ht .2 wid .3 with .se at 1st ellipse.nw
ellipse ht .2 wid .3 with .sw at 1st ellipse.ne
box
arrow right from 1/3 of the way between last box.ne and last box.se
arrow right from 2/3 <last box.ne, last box.se>

A: ellipse
   ellipse ht .2 wid .3 with .se at 1st ellipse.nw
   ellipse ht .2 wid .3 with .sw at 1st ellipse.ne
   circle rad .05 at 0.5 <A.nw,A.c>
   circle rad 0.5 at 0.5 <A.ne,A.c>
   arc from 0.25 <A.w,A.e> to 0.75 <A.w,A.e>

Odkazy

/home/dum8d0g/www/martin.kopta.eu/trash/wiki/data/pages/software/pic.txt · Poslední úprava: 2010/05/02 15:09 autor: martin
CC Attribution 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0