################################################################################ # # File: $Id$ # # Standard rules for a variety of situations. Includes standard suffixes and # paths. # # ################################################################################ ################################################################################ # # Required make variables. These should be defined by the calling makefile. # # SUBJECT_CODE # The paper number for the current paper, e.g., 212. # PAPER_NUMBER?=$(error The required make variable PAPER_NUMBER has not been defined. Please set it to the correct value) # # IMGDIR # The path to the directory that contains images, e.g., images. # IMGDIR?=$(error The required make variable IMGDIR has not been defined. Please set it to the directory in which images are located) ################################################################################ # # Default rules. # # # PDF from LaTeX via DVI, typically for images drawn using PSTricks). # %.pdf %-print.pdf: $(IMGDIR)/%.tex latex --jobname=$(IMGDIR)/$* $< dvips -q -f $(IMGDIR)/$* | ps2eps --quiet --loose | epstopdf --filter --outfile=$(IMGDIR)/$@ # # PDF from LaTeX. # %.pdf: %.tex pdflatex $< pdflatex $< # # 2-up PDF from 1-up PDF. # %-2up.pdf: %.pdf pdfnup $< --nup 2x1 --outfile $@ # # Derived XML with inclusions from source XML without inclusions. # # This is done by simply running the original source through xmllint # with the --xinclude option to process any xi:include elements. # The result of this could just be piped into the XSLT processor, # except that (a) not all of the processors support input from stdin, # and (b) combining both xmllint and XSLT processing into one command # means that make won't stop if there's any errors from xmllint. # # Sed is used to add a comment to the derived XML file, warning that this # is generated and shouldn't be edited. Sed was used because the <?xml?> # processing instruction MUST be on the first line. The implication here # is that all input source files have an <?xml?> processing instruction # (which they should anyway). # %-derived.xml: %.xml xmllint --xinclude $< > $@ @sed --in-place --expression='1a <!-- THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT! -->' $@ # # LaTeX from derived XML. # %.tex: %-derived.xml $(call xslt,$<,xml2latex.xsl,$(call xslt_parameter,paper,$(PAPER_NUMBER))) > $@ # # HTML from derived XML. # %.html: %-derived.xml $(call xslt,$<,xml2html.xsl,$(call xslt_parameter,paper,$(PAPER_NUMBER))) > $@ # # PNG from TIFF (normal) # %.png %-print.png %-web.png: %.tif convert "$<" $(IMGDIR)/$@ # # PNG from TIFF (slide background) # # We lighten these so that they don't overwhelm the text. Note that 15% is # too light for most data projectors, so let's try 33% and see what # happens... (this looks far too much on screen, but data projectors tend # to wash things out much, much more). # # Includes both blurred and unblurred versions, use as required. # %-BG.png: $(IMGDIR)/%.tif convert $< -threshold "-1" -depth 16 - | composite -dissolve 33% $< - $(IMGDIR)/$@ # %-BG-blur.png: %.tif convert -blur 0.5 $< $(IMGDIR)/$*.png convert $(IMGDIR)/$*.png -threshold "-1" -depth 16 - | composite -dissolve 33% $(IMGDIR)/$*.png - $(IMGDIR)/$@ # # PNG from PICT. # %.png %-print.png %-web.png: %.pict convert "$<" $(IMGDIR)/$@ # # PDF from Ploticus. # %.pdf %-print.pdf: %.plo ploticus -eps -tightcrop -o stdout $< | shiftbbox | epstopdf --filter --outfile=$(IMGDIR)/$@ # # PDF from R. # This assumes that the first argument to the R script is the output filename # for the resultant PDF. # %.pdf %-print.pdf: %.R R --slave --file=$< --args "$(IMGDIR)/$@" pdfcrop $(IMGDIR)/$@ $(IMGDIR)/$*-crop.pdf -mv $(IMGDIR)/$*-crop.pdf $(IMGDIR)/$@ # # PDF from PS # %.pdf %-print.pdf: %.ps ps2eps --quiet --ignoreBB --nohires --loose < $< | epstopdf --filter --outfile=$(IMGDIR)/$@ # # PDF from EPS # %.pdf %-print.pdf: %.eps epstopdf --outfile=$(IMGDIR)/$@ $< # ps2eps --ignoreBB --nohires --loose < $< | ps2pdf -dEPSCrop - $(IMGDIR)/$@ # # PDF from SVG (via Inkscape) # The --export-area-drawing option now appears to behave correctly with # PDFs (previously it over-cropped slightly). # %.pdf %-print.pdf: %.svg inkscape --file=$< --without-gui --export-area-drawing --export-pdf=$(IMGDIR)/$@ # # PNG from SVG (via Inkscape) # %.png %-print.png %-web.png: %.svg inkscape --file=$< --without-gui --export-area-drawing --export-background-opacity=1.0 --export-dpi=96 --export-png=$(IMGDIR)/$@ %-web-zoom.png: %.svg inkscape --file=$< --without-gui --export-area-drawing --export-background-opacity=1.0 --export-dpi=144 --export-png=$(IMGDIR)/$@ # # PNG from PNG (change the name) # %-web.png: %.png cp $< $(IMGDIR)/$@ %-print.png: %.png cp $< $(IMGDIR)/$@