EPS-grafik

EPS-grafikfiler er den traditionelle måde at indsætte grafikfiler i LATEX-dokumenter. Eftersom e-mail-lister er fulde med spørgsmål angående EPS-grafik, beskriver vi nogle vigtige aspekter og demonstrerer hvordan Kile understøtter dem.

LATEX og EPS-grafik

Hvis du bestemde dig for at bruge den traditionelle LATEX til at lave PS- eller PDF-uddata, støder du formodentlig på visse problemer med grafik. Du skal bruge EPS-grafik (Encapsulated PostScript), ikke JPEG- eller PNG-filer. Dette skulle ikke være noget problem, eftersom der er mange konverteringsprogrammer såsom convert fra den udmærkede pakke ImageMagick. Men det kræver naturligvis en vis tid.

EPS-filerne bruges både af LATEX og DVI-PS konverteringen:

  • LATEX skanner gennem EPS-filen efter den omgivende noks, som fortæller LATEX hvor meget plads der skal reserveres til billedet.

  • Konverteringen DVI-PS læser derefter EPS-filen og indsætter billedet i PS-filen.

Dette har visse følger:

  • LATEX læser aldrig EPS-filen hvis den omgivende boks parametre angives i kommandoen for at indsætte grafik.

  • Eftersom LATEX kun kan læse filer som indeholder ASCII, kan den ikke læse informationen om den omgivende boks fra komprimerede eller andre filer end EPS-grafikfiler.

  • EPS-grafikfilen indsættes ikke i DVI-filen. Eftersom EPS-filerne skal være tilgængelige når DVI-filen konverteres til PS, skal EPS-filerne følge med DVI-filerne så snart de flyttes.

Nu kan du kalde LATEX og et DVI-PS konverteringsværktøj såsom dvips for at lave dit PostScript-dokument. Hvis målet er et PDF-dokument, skal du køre dvips med flaget -Ppdf og derefter kalde ps2pdf. Du vil finde mange dokumenter som beskriver denne løsning.

PostScript i Kile

Kile hjælper dig til at finde information om den omgivende boks. Hvis du har installeret pakken ImageMagick, henter Kile informationen fra EPS-filen og indsætter den som et tilvalg. Dette gøres automatisk når du vælger grafikfilen. Der er to fordele ved at gå frem på denne måde:

  • Informationen er allerede indlæst i dialogen, og det behøver ikke gøres senere af LATEX.

  • Endnu vigtigere er at billedets bredde og højde kan beregnes når dets opløsning er kendt. Informationen vises længst oppe i dialogen, og kan fungere som en ledetråd når du vil skalere billedet.

  • Kile har også støtte for EPS-filer komprimerede med zip eller gzip, som er meget mindre end ukomprimerede EPS-filer. Men denne funktion kan kun bruges med en særlig systemindstilling, og en ændring af din lokale grafikindstilling, som beskrives i afsnittet Punktafbildet grafik.

The PostScript Way of Kile can be turned off or on in Settings->Configure Kile...->LaTeX+General.

Måden med PostScript og punktafbildet grafik

Hvis systemet tillader shell-escape, understøtter Kile også en enkelt måde at indsætte punktafbildet grafik, hvis du indstiller teTEX-systemet rigtigt. Der er intet behov for at konvertere JPEG- eller PNG-grafik, dette kan gøres automatisk når DVI-filen konverteres til PS.

LATEX behøver nogen information om filendelserne. Pakken graphicx leder efter filen graphics.cfg som skal findes et sted i din søgesti for LATEX-dokumenter. Søg efter indgange såsom:

\DeclareGraphicsRule{.pz}{eps}{.bb}{}%
   \DeclareGraphicsRule{.eps.Z}{eps}{.eps.bb}{}%
   \DeclareGraphicsRule{.ps.Z}{eps}{.ps.bb}{}%
   \DeclareGraphicsRule{.ps.gz}{eps}{.ps.bb}{}%
   \DeclareGraphicsRule{.eps.gz}{eps}{.eps.bb}{}%

og erstat disse linjer med:

\DeclareGraphicsRule{.pz}{eps}{.bb}{}%
   \DeclareGraphicsRule{.eps.Z}{eps}{.eps.bb}{}%
   \DeclareGraphicsRule{.ps.Z}{eps}{.ps.bb}{}%
   \DeclareGraphicsRule{.ps.gz}{eps}{.ps.bb}{}%
   % ændrede eller nye grafikregler
   \DeclareGraphicsRule{.eps.zip}{eps}{.eps.bb}{`unzip -p #1}%   EPS komprimeret med zip
   \DeclareGraphicsRule{.eps.gz}{eps}{.eps.bb}{`gunzip -c #1}%   EPS komprimeret med gzip
   \DeclareGraphicsRule{.jpg}{eps}{}{`convert #1 eps:-}%         JPEG
   \DeclareGraphicsRule{.gif}{eps}{.bb}{`convert #1 eps:-}%      GIF
   \DeclareGraphicsRule{.png}{eps}{.bb}{`convert #1 eps:-}%      PNG
   \DeclareGraphicsRule{.tif}{eps}{.bb}{`convert #1 eps:-}%      TIFF
   \DeclareGraphicsRule{.pdf}{eps}{.bb}{`convert #1 eps:-}%      PDF-grafik

Du finder for eksempel filen under /etc/texmf/latex/graphics.cfg på Debian. Andre distributioner kan bruge et andet sted, men hvert teTEX-system har en sådan indstillingsfil for grafik. Den bedste måde at gå frem er at kopiere filen til din lokale Tex-søgesti og derefter ændre filen. Se teTEX-manualen for at finde ud af hvordan du får en liste frem med dine TEX-mapper.

Med denne indstillingsfil har du mulighed for at indsætte punktafbildet grafik og EPS-filer komprimerede med zip eller gzip i LATEX. Kommandoen for konvertering gives af dvips. Når du kigger på konverteringskommandoen ser du at ingen ekstra fil laves. Resultatet af konverteringsprocessen sendes direkte til PS-filen. Det eneste som LATEX skal kende til er billedets størrelse, og derfor har vi brug for den omgivende boks, som Kile sørger for.

Nogle siger at dette er en usikker måde. Du skal bestemme dig for hvordan du vil arbejde. Under alle omstændigheder behøver du ingen omgivende boks, eftersom Kile ekstraherer denne information fra alle typer af grafikfiler.

PDFLATEX og EPS-grafik

Som allerede nævnt, kan PDFLATEX ikke håndtere EPS-grafikfiler, men konverteringsværktøjer såsom epstopdf kan hjælpe. Den bedste måde er at inkludere pakken epstopdf, som skal følge med pakken graphicx.

\usepackage[pdftex]{graphicx}
   \usepackage{epstopdf}

Nu kan du allerede indsætte EPS-grafik hvis du kører pdflatex med flaget --shell-escape, men vi kan gøre det endnu bedre og også håndtere EPS-filer komprimerede med zip eller gzip. Igen skal vi ændre grafikindstillingsfilen graphics.cfg som ovenfor. Denne gang søger vi efter:

% pdfTeX is running in pdf mode
   \ExecuteOptions{pdftex}%

og tilføjer simpelthen nogle linjer.

% pdfTeX is running in pdf mode
   \ExecuteOptions{pdftex}%
   \AtEndOfPackage{%
      \g@addto@macro\Gin@extensions{.eps.gz,.eps.zip}%
      \@namedef{Gin@rule@.eps.gz}#1{{pdf}{.pdf}{`gunzip -c #1 | epstopdf -f 
>\Gin@base.pdf}}%
      \@namedef{Gin@rule@.eps.zip}#1{{pdf}{.pdf}{`unzip -p #1 | epstopdf -f 
>\Gin@base.pdf}}%
   }%

Med disse linjer kan PDFLATEX håndtere EPS-filer, og forhåbentlig vil der ikke opstå flere problemer angående grafik.