pic(1): Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med '{{DISPLAYTITLE:pic(1)}} == NAMN == '''pic''' – kompilera bilder för '''troff''' eller TeX == SYNOPSIS == <pre> pic [-CnSU] [fil ...] pic -t [-cCSUz] [fil ...] pic --help pic -v pic --version </pre> == BESKRIVNING == GNU-implementationen av '''pic''' är en del av dokumentformateringssystemet groff(1). '''pic''' är en förprocessor för troff(1). Den översätter beskrivningar av diagramliknande bilder, inbäddade i roff(7)- eller TeX-indata, ti...') |
Admin (diskussion | bidrag) |
||
| Rad 976: | Rad 976: | ||
http://www.kohala.com/start/troff/pic.examples.ps | http://www.kohala.com/start/troff/pic.examples.ps | ||
</pre> | </pre> | ||
= Sidslut = | |||
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/pic.1.html | |||
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på | |||
https://www.linux.se/kontaka-linux-se/ | |||
<BR><BR>Tack till [https://datorhjalp.se/ Datorhjälp Stockholm] som har sponsrat [https://www.linux.se Linux.se] med webbhotell. | |||
[[Kategori:Linuxmanual grupp 1]] | |||
[[Kategori:Linuxmanual]] | |||
== KOLOFON == | == KOLOFON == | ||
Nuvarande version från 14 juli 2026 kl. 04.48
NAMN
pic – kompilera bilder för troff eller TeX
SYNOPSIS
pic [-CnSU] [fil ...] pic -t [-cCSUz] [fil ...] pic --help pic -v pic --version
BESKRIVNING
GNU-implementationen av pic är en del av dokumentformateringssystemet groff(1).
pic är en förprocessor för troff(1). Den översätter beskrivningar av diagramliknande bilder, inbäddade i roff(7)- eller TeX-indata, till ett språk som förstås av TeX eller troff.
Programmet kopierar innehållet i varje fil till standardutdata och översätter varje pic-bild mellan rader som börjar med:
.PS
och någon av:
.PE .PF .PY
Avsluta en pic-bild med .PE för att lämna ritpositionen vid bildens nederkant.
Avsluta med .PF eller .PY för att lämna ritpositionen vid bildens överkant.
Normalt körs pic inte direkt av användaren. I stället anropas den via groff(1) med optionen:
-p
Om inga filoperander anges, eller om fil är:
-
läser pic från standardindata.
Användaren ansvarar för att definiera lämpliga makron:
PS PE PF PY
När ett makropaket inte tillhandahåller dessa kan enkla definitioner hämtas med groff-optionen:
-mpic
Dessa centrerar varje bild horisontellt.
GNU pic stöder PY som synonym till PF för att undvika en namnkonflikt med makropaketet groff_mm(7), där PF används som ett makro för sidfotshantering.
Använd helst PF om inte dokumentet har en liknande namnkonflikt.
OPTIONER
--help
- Visa ett användningsmeddelande och avsluta.
-v
- Visa versionsinformation och avsluta.
--version
- Visa versionsinformation och avsluta.
-c
- Var mer kompatibel med tpic(1).
- Optionen innebär -t.
- Rader som börjar med omvänt snedstreck skickas inte igenom transparent.
- Rader som börjar med punkt skickas igenom med den inledande punkten ändrad till omvänt snedstreck.
GNU pic behandlar rader som börjar med:
.ps
särskilt. De kan ta ett valfritt heltalsargument som anger linjetjocklek, pennstorlek, i millitum.
Om argument saknas återställs tidigare linjetjocklek.
Standardtjocklek är 8 millitum.
Den angivna linjetjockleken används bara när en icke-negativ linjetjocklek inte redan har angivits med attributet thickness eller variabeln linethick.
-C
- Känn igen .PS, .PE, .PF och .PY även när de följs av ett annat tecken än mellanslag eller radslut.
-n
- Använd inte groff-utökningar till troffs ritkommandon.
- Ange denna option om den postprocessor du använder inte stöder utökningarna som beskrivs i groff_out(5).
- Optionen gör också att pic inte använder linjer med längd noll för att rita punkter i troff-läge.
-S
- Aktivera säkrare läge och ignorera efterföljande -U-optioner.
- I säkrare läge ignorerar pic kommandot sh.
- Detta är användbart vid behandling av opålitlig indata.
- pic kör i säkrare läge som standard.
-t
- Skapa TeX-utdata.
-U
- Kör i osäkert läge.
- Då tolkas sh-kommandon.
-z
- I TeX-läge, rita punkter med linjer med längd noll.
Följande optioner stöds av andra versioner av pic men ignoreras av GNU pic.
-D
- Rita alla linjer med escape-sekvensen \D.
- GNU pic gör alltid detta.
-T enhet
- Skapa utdata för troff-enheten enhet.
- Denna option behövs inte i GNU pic, eftersom troff-utdata som skapas är enhetsoberoende.
ANVÄNDNING
Detta avsnitt beskriver främst skillnader mellan GNU pic och AT&T:s pic från Eighth Edition Unix, 1985.
Många skillnader gäller även senare versioner av AT&T pic.
TeX-läge
TeX-kompatibel utdata skapas när optionen -t anges.
Du måste använda en TeX-drivrutin som stöder tpic version 2-specialkommandon.
tpic var en avgrening av AT&T pic av Tim Morgan vid University of California at Irvine, och skildes från källan omkring 1984.
Programmet är i dag mest känt för att ha gett namn åt en grupp \special-kommandon som det skapade för TeX.
Rader som börjar med omvänt snedstreck skickas igenom oförändrade, förutom att ett procenttecken läggs till som suffix för att undvika oönskade mellanslag.
Detta kan användas för att ändra typsnitt eller värdet på:
\baselineskip
Andra användningar kan ge oönskade resultat och sker på egen risk.
Som standard behandlas rader som börjar med punkt inte särskilt, men se optionen -c.
I TeX-läge definierar pic en vbox med namnet:
\graph
för varje bild.
Använd GNU pic-kommandot figname för att ändra vboxens namn.
Du måste själv skriva ut denna vbox, exempelvis med:
\centerline{\box\graph}
Eftersom vboxen har höjd noll, definierad med \vtop, skapas något mer vertikalt utrymme ovanför bilden än under den.
Detta kan undvikas med:
\centerline{\raise 1em\box\graph}
För att ge vboxen positiv höjd och djup noll, som exempelvis används av LaTeX-filen graphics.sty, kan följande makro definieras i dokumentet:
\def\gpicbox#1{%
\vbox{\unvbox\csname #1\endcsname\kern 0pt}}
Därefter kan du skriva:
\gpicbox{graph}
i stället för:
\box\graph
Kommandon
Flera kommandon som är nya i GNU pic accepterar avgränsare. I synopser visas dessa som klamrar:
{ }
Klamrar kan nästlas.
Andra tecken, utom mellanslag, tabb och radslut, kan användas som alternativa avgränsare. I så fall måste båda tecken i paret vara identiska.
GNU pic känner igen dubbelt citerade strängar inom avgränsare. Sådana strängar kan innehålla avgränsartecknet eller obalanserade klamrar.
for
for variabel = uttryck1 to uttryck2 [by [*]uttryck3] do X kropp X
Sätt variabel till uttryck1.
Så länge värdet är mindre än eller lika med uttryck2 utförs kropp, och variabeln ökas med uttryck3.
Om by saknas ökas variabeln med 1.
uttryck3 kan vara negativt. Då testas i stället om variabeln är större än eller lika med uttryck2.
Om en asterisk används multipliceras variabeln med uttryck3 vid varje iteration i stället för att ökas.
I detta fall måste uttryck3 vara större än noll.
X kan vara valfritt tecken som inte finns i kroppen.
if
if uttryck then X om-sant X [else Y om-falskt Y]
Beräkna uttryck.
Om uttrycket är skilt från noll körs om-sant, annars om-falskt.
X respektive Y kan vara valfria tecken som inte finns i respektive block.
print argument ...
Sammanfoga argument och skriv dem till standardfel, följt av radslut.
Varje argument måste vara ett uttryck, en position eller text.
Detta är användbart vid felsökning.
command
command argument ...
Sammanfoga argument och skicka dem som en rad till troff eller TeX.
Varje argument måste vara ett uttryck, en position eller text.
command gör det möjligt att skicka värden från pic-variabler till formateraren.
Exempel:
.PS x = 14 command ".ds string x is " x "." .PE \*[string]
ger vid formatering med troff:
x is 14.
sh
sh X kommando X
Skicka kommando till ett skal via system(3).
Kommandot ignoreras om optionen -U inte har angetts.
copy
copy "filnamn"
Inkludera filnamn vid aktuell plats i filen.
copy thru
copy ["filnamn"] thru X kropp X [until "ord"] copy ["filnamn"] thru makro [until "ord"]
Denna konstruktion kör kropp en gång för varje rad i filnamn.
Raden delas upp i blankstegsavgränsade ord.
Förekomster av $i i kroppen, där i är 1 till 9, ersätts med radens i:te ord.
Om filnamn saknas läses rader från aktuell indata fram till .PE.
Med until läses rader tills en rad som börjar med ord hittas. Den raden kastas.
Exempel:
.PS copy thru % circle at ($1,$2) % until "END" 1 2 3 4 5 6 END box .PE
är likvärdigt med:
.PS circle at (1,2) circle at (3,4) circle at (5,6) box .PE
Kommandona för varje rad kan också tas från ett tidigare definierat makro.
Argumentet efter thru slås först upp som makronamn. Om det inte är definierat tolkas första tecknet som avgränsare.
reset
reset reset pvar1[,] pvar2 ...
Återställ fördefinierade variabler till standardvärden.
Om inga argument anges återställs alla fördefinierade variabler.
Variabelnamn kan separeras med kommatecken, mellanslag eller båda.
Om scale tilldelas ett värde återställs även alla fördefinierade dimensionsvariabler till sina standardvärden multiplicerade med det nya scale-värdet.
plot
plot uttryck ["text"]
Skapa ett textobjekt genom att använda text som formatsträng för sprintf(3) med uttryck som argument.
Om text saknas används:
"%g"
Attribut kan anges på samma sätt som för vanliga textobjekt.
Var försiktig med formatsträngen. pic validerar den bara begränsat.
plot är föråldrat till förmån för sprintf.
Uppdatera befintlig variabel
variabel := uttryck
Uppdatera en redan existerande variabel.
Variabeln måste redan vara definierad.
Tilldelningen skapar inte en lokal variabel i aktuellt block.
Detta skiljer sig från =, som definierar variabeln i aktuellt block om den inte redan finns där.
Exempel:
.PS x = 3 y = 3 [ x := 5 y = 5 ] print x y .PE
skriver:
5 3
till standardfel.
Uttryck
Syntaxen för uttryck har utökats kraftigt.
Exempel på stödda uttryck och funktioner:
x ^ y sin(x) cos(x) atan2(y, x) log(x) exp(x) sqrt(x) int(x) rand() rand(x) srand(x) max(e1, e2) min(e1, e2) !e e1 && e2 e1 || e2 e1 == e2 e1 != e2 e1 >= e2 e1 > e2 e1 <= e2 e1 < e2 "str1" == "str2" "str1" != "str2"
Betydelser:
x ^ y
- Exponentiering.
log(x)
- Logaritm med bas 10.
exp(x)
- 10 upphöjt till x.
rand()
- Slumptal mellan 0 och 1.
rand(x)
- Slumptal mellan 1 och x. Detta är föråldrat.
srand(x)
- Sätt frö för slumptalsgeneratorn.
Strängjämförelser måste ibland omges av parenteser för att undvika tvetydighet.
Andra ändringar och GNU-utökningar
Ett ensamt uttryck kan användas som attribut. Det är likvärdigt med:
riktning uttryck
där riktning är aktuell riktning.
Exempel:
line 2i
ritar en linje som är 2 tum lång i aktuell riktning.
Tecknet i eller I ignoreras. För andra måttenheter sätts variabeln scale.
Maximal bredd och höjd för bilden tas från variablerna:
maxpswid maxpsht
De har initialt värdena 8.5 och 11.
Vetenskaplig notation stöds, exempelvis:
x = 5e-2
Textattribut kan kombineras:
"foo" above ljust
Block kan nästlas utan begränsning.
Exempel:
[A: [B: [C: box ]]] with .A.B.C.sw at 1,2 circle at last [].A.B.C
Arcs har kompasspunkter som bestäms av den cirkel som bågen är del av.
Cirklar, ellipser och bågar kan vara prickade eller streckade.
I TeX-läge kan även splines vara prickade eller streckade.
Boxar kan ha rundade hörn.
Attributet rad anger radien för kvartscirklarna i hörnen.
Om varken rad eller diam anges används boxrad.
Initialt är boxrad 0.
En box med rundade hörn kan vara prickad eller streckad.
Boxar kan också ha sneda sidor, vilket generaliserar dem från rektanglar till parallellogram.
Attributen:
xslanted yslanted
anger x- och y-förskjutning för boxens övre högra hörn från dess standardposition.
Raden .PS accepterar ett andra argument som anger maximal höjd för bilden.
Om bredden anges som noll ignoreras den vid beräkning av skalningsfaktorn.
GNU pic skalar alltid bilden lika mycket vertikalt och horisontellt. Detta skiljer sig från DWB 2.0 pic, som kan ändra bildens proportioner om höjd anges.
Varje textobjekt har en osynlig box som bestämmer dess kompasspunkter och implicita rörelse.
Boxens dimensioner tas från dess bredd- och höjdattribut.
Om bredd saknas används textwid.
Om höjd saknas används antal textsträngar multiplicerat med textht.
Initialt är både textwid och textht 0.
På nästan alla platser där en citerad textsträng kan användas kan ett uttryck av formen:
sprintf("format", argument, ...)
användas i stället.
Formatet är en sträng enligt printf(3), anpassad till antalet argument.
GNU pic stöder konverteringsspecifikationerna:
e E f g G %
samt modifierarna:
# - + mellanslag
minsta fältbredd och valfri precision.
Linjetjocklek styrs av variabeln linethick och mäts i punkter.
Ett negativt värde betyder standardtjocklek.
I TeX-läge utan -c betyder detta 8 millitum.
I troff- och TeX--c-läge motsvarar standardtjockleken textstorleken.
Ett värde på 0 ritar den tunnaste linje som stöds av utdataenheten.
Initialt är linethick -1.
Attributet thickness eller thick kan också användas.
Exempel:
circle thickness 1.5
Linjetjocklek påverkas inte av scale eller av bredd/höjd i .PS-raden.
Boxar, även rundade eller snedställda, cirklar och ellipser kan fyllas med attributet:
fill filled
Attributet kan ta ett valfritt uttryck mellan 0 och 1.
- 0 betyder vit
- 1 betyder svart
- värden däremellan ger gråskala
Värden över 1 tolkas som den gråton som används för text och linjer.
Utan argument används variabeln fillval, som initialt är 0.5.
Attributet invisible påverkar inte fyllning.
Text som hör till ett fyllt objekt läggs till efter fyllningen så att texten inte täcks.
Färgmodifierare:
outlined
- Sätter konturfärg.
shaded
- Sätter fyllnadsfärg.
colored eller coloured
- Sätter både kontur- och fyllnadsfärg.
Alla förväntar sig en efterföljande sträng med färgnamn.
Exempel:
circle shaded "green" outline "black"
Färg stöds ännu inte i TeX-läge.
Enhetsmakrofiler som ps.tmac deklarerar färgnamn.
Ytterligare färger kan definieras med roff-begäran defcolor. Se groff(7).
I början av varje bild antar pic att linje- och fyllnadsfärger är satta till enhetens standardvärden.
För att ändra namnet på vboxen i TeX-läge sätts pseudovariabeln figname i bilden.
Exempel:
.PS figname = foobar; circle "dig here"; .PE
gör bilden tillgänglig i boxen:
\foobar
Pilhudar ritas som fyllda trianglar om variabeln arrowhead är skild från noll och antingen TeX-läge är aktivt eller optionen -n inte används.
Initialt är arrowhead 1.
Fyllda pilhuvuden fylls alltid med aktuell konturfärg.
Troff-utdata från pic är enhetsoberoende. Option -T är därför överflödig.
Om inget annat anges använder alla mått tum implicit. De tolkas aldrig som troff-grundenheter.
Objekt kan ha attributet aligned, men detta stöds bara av utdata-drivrutinerna grops(1) och gropdf(1).
Text kopplad till ett aligned-objekt roteras runt objektets centrum så att den orienteras längs linjen mellan objektets start- och slutpunkt.
aligned har ingen effekt på objekt vars start- och slutpunkter sammanfaller.
Där nth är tillåtet är även följande form tillåten:
`uttryck'th
th är en del av samma token. Det får inte finnas något mellanslag mellan apostrofen och th.
Exempel:
for i = 1 to 4 do {
box
move right 0.5
}
for i = 1 to 3 do {
arrow from `i'th box.ne to `i+1'th box.sw
}
Godtyckliga polygoner kan ritas med nyckelordet polygon följt av en serie linjesegment.
Om polygonen har n kanter anges n-1 linjesegment.
Detta låter GNU troff tolka segmenten som ett sammanhängande objekt, så att attributen filled och shaded kan användas.
Exempel:
polygon up 1 then right 1 down 0.5 fill 0.5
Två referenspunktssuffix gör det möjligt att placera element relativt polygoner:
.vertex uttryck
- Placerar vid en vertex.
.midpoint uttryck
- Placerar vid en kantmittpunkt.
GNU pic numrerar vertexer och mittpunkter i ritordning med början på 1.
Förkortningar:
- .vertex kan förkortas .v eller .ver
- .midpoint kan förkortas .mid
Exempel:
arrow down polygon up 0.5 right 1 \ then down 0.5 right 1 \ then down 0.5 left 1 \ with .v2 at last line.end arrow down from last polygon.v4
Detta skapar och placerar en flödesschemaromb korrekt.
.center eller .c finns också, men kompasspunkter fungerar inte som väntat och bör inte användas med polygoner.
Konvertera pic till andra bildformat
För att skapa en fristående grafikfil från en pic-fil ska bilden först sättas samman.
Omgärda pic-koden med:
.PS .PE
Groff-begäranden som inte skapar formaterad utdata kan föregå .PS.
Formatera dock ingen text, inte ens sådan som injiceras av ett makropaket. Vissa makropaket, som mm, kan lägga till ett sidnummer redan på första sidan.
Överväg därför att skriva ett rått roff-dokument utan makropaket.
Konvertera därefter roff/pic-indatan till önskat format.
Groff distribuerar verktyget pic2graph(1) för detta ändamål.
Andra metoder finns, särskilt om bilden först omvandlas till PostScript:
groff -T ps
En sådan PostScript-fil saknar dock bounding box-information, eftersom roff-formaterare skapar sidstor utdata.
Flera verktyg vars namn börjar med psto eller ps2 kan härleda bounding box och konvertera formatet.
Ett sådant verktyg är PostScript-tolken Ghostscript, gs(1), som erbjuder formatkonvertering via optionen:
-sDEVICE=
Visa tillgängliga enheter med:
gs --help
Alternativt kan PDF skapas med:
groff -T pdf
gropdf(1)-optionen -p sätter filens MediaBox.
EPS-formatet, Encapsulated PostScript File, förekommer fortfarande.
Ghostscript erbjuder ps2epsi(1), och det finns också ett fristående paket/kommando ps2eps(1).
För rasterbildformat kan pstopnm(1) användas. Den resulterande pnm(5)-filen kan sedan konverteras till nästan vilket bildformat som helst med Netpbm-verktygen.
GNU plotutils erbjuder pic2plot(1) för att konvertera pic-indata till många andra bildformat, inklusive SVG.
AVSLUTNINGSSTATUS
pic avslutas med status:
0
- Körningen lyckades.
2
- Programmet kunde inte tolka kommandoradsargumenten.
1
- Ett fel uppstod under körningen.
FILER
/usr/local/share/groff/1.24.1/tmac/pic.tmac
- Tillhandahåller enkla definitioner av makrona:
PS PE PF PY
- Läs in filen med roff-begäran mso när inget fullständigt makropaket används, eller när makropaketet inte själv definierar dessa makron.
VARNINGAR OCH BEGRÄNSNINGAR
Avståndet mellan punkter och streck i brutna linjer skalas tillsammans med övrig grafik och kan konfigureras.
Exempel:
line from 0,0 to 100,0 dotted 5
sätter avståndet mellan punkterna i en prickad linje till 5 enheter.
Avståndet mellan streck kan sättas på samma sätt.
Variabeln dashwid anger strecklängden.
FEL
Tecken som är ogiltiga som indata till GNU troff(1) avvisas även i TeX-läge.
Se Groffs Texinfo-manual eller groff_char(7) för en lista.
Research Tenth Edition Unix pic tolkar fillval så att 0 betyder svart och 1 betyder vitt, vilket är inkompatibelt med GNU pic.
SE ÄVEN
- troff(1)
- groff_out(5)
- tex(1)
- gs(1)
- ps2eps(1)
- pstopnm(1)
- ps2epsi(1)
- pnm(5)
- pic2graph(1)
- pic2plot(1)
- groff(1)
- groff(7)
- groff_char(7)
- grops(1)
- gropdf(1)
Dokumentation i groff-distributionen:
/usr/local/share/doc/groff-1.24.1/pic.ps
Detta är dokumentet:
Making Pictures with GNU pic
av Eric S. Raymond.
Klassisk referens:
PIC—A Graphics Language for Typesetting: User Manual Brian W. Kernighan, 1984, reviderad 1991 AT&T Bell Laboratories Computing Science Technical Report No. 116
ps2eps finns från CTAN-speglar, exempelvis:
ftp://ftp.dante.de/tex-archive/support/ps2eps/
W. Richard Stevens, Turning PIC into HTML:
http://www.kohala.com/start/troff/pic2html.html
W. Richard Stevens, Examples of pic Macros:
http://www.kohala.com/start/troff/pic.examples.ps
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/pic.1.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp Stockholm som har sponsrat Linux.se med webbhotell.
KOLOFON
Denna sida är en del av projektet groff, GNU troff.
Information om projektet finns på:
http://www.gnu.org/software/groff/
Felrapporter för manualsidan hänvisas till:
http://www.gnu.org/software/groff/
Sidan hämtades från arkivet:
groff-1.24.1.tar.gz
Arkivet hämtades från:
https://ftp.gnu.org/gnu/groff/
den 24 maj 2026.
Om du upptäcker renderingsproblem i HTML-versionen av sidan, eller anser att det finns en bättre eller mer aktuell källa, kan du skicka e-post till:
man-pages@man7.org
KORT SAMMANFATTNING
pic är en groff-förprocessor som översätter diagram skrivna mellan:
.PS .PE
till ritkommandon för troff eller TeX.
Vanlig användning via groff:
groff -p -Tpdf dokument.roff > dokument.pdf
Kör pic direkt:
pic fil.roff > fil.picout
Skapa TeX-utdata:
pic -t fil.pic > fil.tex
Läs från standardindata:
pic < fil.roff > utdata.roff
Använd säkrare läge, standard:
pic -S fil.roff
Tillåt sh-kommandon endast med betrodd indata:
pic -U fil.roff