next up previous contents
Nästa: 13.2 Regler Upp: 13. Att få något Förra: 13. Att få något

   
13.1 Introduktion

Antag att vi arbetar med ett LATEX-dokument som är uppdelat på flera filer: huvudfilen gnulinux.tex samt definitioner.tex och unix.tex. Innan dokumentet kan tryckas är det flera saker som måste göras. Först ska det typsättas av LATEXmed kommandot latex gnulinux.tex. Då skapas filen gnulinux.dvi. Denna fil översätts sedan till postscript så att skrivaren kan ta emot den. Kommandot dvips -o gnulinux.ps gnulinux.dvi. skapar postscriptfilen gnulinux.ps, som skrivs ut med kommandot lpr gnulinux.ps.

Alla dessa steg är tröttsamma att gå igenom, och det är lätt hänt att man gör fel i något av stegen. Varje gång man gör en ändring i någon av sina LATEX-filer måste dessutom alla eller vissa av stegen göras om. Slutsatsen blir att det borde finnas ett program, tex med namnet make, som gör arbetet åt en. Slutsatsen är korrekt: det finns ett sådant program.

För att få hjälp av make med en viss syssla ska man i en fil med namnet Makefile beskriva sysslan. När denna fil väl är skapad, så räcker det att skriva make mål varje gång man vill få sysslan mål utförd. Denna syssla kan, som i exemplet ovan, vara att typsätta och trycka ett dokument. Det kan också vara att kompilera ett program. Man kan inte få hjälp med att koka kaffe, men faktum är att många vitt skilda sysslor som kan utföras av ett antal Bash-kommandon kan automatiseras med hjälp av make. Frågan är nu hur en Makefile ser ut. Resten av detta kapitel ägnas åt att besvara den frågan.

En Makefile som tar hand om typsättningen som beskrivs ovan kan se ut så här:

gnulinux.dvi: gnulinux.tex definitioner.tex unix.tex
        latex gnulinux.tex

gnulinux.ps: gnulinux.dvi
        dvips -o gnulinux.ps gnulinux.dvi

utskrift: gnulinux.ps
        lpr gnulinux.ps
Filen ovan innehåller tre regler. Den första regeln säger att filen gnulinux.dvi skapas från filerna gnulinux.tex, definitioner.tex och unix.tex med kommandot latex gnulinux.tex. Den andra regeln talar om hur gnulinux.ps skapas från gnulinux.dvi. Den sista regeln anger hur filen gnulinux.ps skrivs ut. Låt oss prova!$ ls
Makefile definitioner.tex gnulinux.tex unix.tex
$ make utskrift
latex gnulinux.tex
This is TeX, Version 3.14159 (C version 6.1)
(gnulinux.tex
LaTeX2e <1996/12/01>
Babel <v3.6h> and hyphenation patterns for american, swedish, loaded.
(/usr/lib/texmf/tex/latex/base/book.cls
Document Class: book 1996/10/31 v1.3u Standard LaTeX document class
(/usr/lib/texmf/tex/latex/base/bk12.clo)) (definitioner.tex)
No file gnulinux.aux.
[1] [2] (gnulinux.aux) )
(see the transcript file for additional information)
Output written on gnulinux.dvi (2 pages, 1040 bytes).
Transcript written on gnulinux.log.
dvips -o gnulinux.ps gnulinux.dvi
This is dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
' TeX output 1997.11.17:1447' -> gnulinux.ps
<tex.pro>. [1] [2]
lpr gnulinux.ps
$
Vid kommandot make utskrift körs först latex, därefter dvips och till sist lpr. Kommandona och deras utdata skrivs ut på skärmen av make.

Låt oss göra en ny utskrift:$ ls
Makefile          gnulinux.aux      gnulinux.log      gnulinux.tex
definitioner.tex  gnulinux.dvi      gnulinux.ps       unix.tex
$ make utskrift
lpr gnulinux.ps
$
Som synes struntade make denna gång i att köra latex och dvips, filen gnulinux.ps skrevs ut direkt. På något magiskt sätt (som vi snart ska förklara) visste make att filen gnulinux.ps var ''up to date'' och att det var onödigt att köra latex igen. Hmm, antag att vi ändrat lite i tex unix.tex och sedan provar igen:$ ls -t
unix.tex          gnulinux.aux      gnulinux.tex
gnulinux.ps       gnulinux.dvi      unix.tex~
gnulinux.log      Makefile          definitioner.tex
$ make utskrift
latex gnulinux.tex
This is TeX, Version 3.14159 (C version 6.1)
(gnulinux.tex
LaTeX2e <1996/12/01>
Babel <v3.6h> and hyphenation patterns for american, swedish, loaded.
(/usr/lib/texmf/tex/latex/base/book.cls
Document Class: book 1996/10/31 v1.3u Standard LaTeX document class
(/usr/lib/texmf/tex/latex/base/bk12.clo)) (definitioner.tex) (gnulinux.aux)
[1] (unix.tex) [2] (gnulinux.aux) )
(see the transcript file for additional information)
Output written on gnulinux.dvi (2 pages, 2328 bytes).
Transcript written on gnulinux.log.
dvips -o gnulinux.ps gnulinux.dvi
This is dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
' TeX output 1997.11.17:1524' -> gnulinux.ps
<tex.pro>. [1] [2]
lpr gnulinux.ps
$
Nu körde make återigen latex och dvips före lpr.


next up previous contents
Nästa: 13.2 Regler Upp: 13. Att få något Förra: 13. Att få något
Goran Andersson
1999-03-08