# file: Makefile G. Moody 29 March 2001 # Last revised: 25 March 2009 # 'make' description file for creating 'plt' documentation # The primary documentation for plt is the 'plt Tutorial and Cookbook', which # is included here in LaTeX source format (book.tex), and also (for those who # don't have LaTeX) in PDF (book.pdf), PostScript (book.ps), and HTML (begin # reading at ..html/index.html). The formatted versions can be recreated from # book.tex if you have the necessary (free) software (see below). The figures # contained within the book can also be recreated using 'plt' once you have # installed it. # Also included here is a set of Unix-style 'man' pages, meant to be read # using the 'man' command (e.g., 'man plt'). # ---------------------------------------------------------------------------- # Site-dependent variables: # The values of these variables are normally set in ../Makefile -- change them # there if necessary. # PREFIX is the root of the tree into which the plt package is ultimately # installed. PREFIX=/usr # INSTALL_PREFIX is usually the same as PREFIX, but 'rpm' or 'rpmbuild' resets # it to the root of a temporary build tree when making a set of RPMs. INSTALL_PREFIX=$(PREFIX) # MAN1DIR is the directory in which the plt man pages are kept. MAN1DIR = $(INSTALL_PREFIX)/share/man/man1 # MANPAGES are the sources for the plt man pages. MANPAGES = imageplt.1 lwcat.1 plt.1 pltf.1 # GZMANPAGES are the compressed versions of MANPAGES. GZMANPAGES = imageplt.1.gz lwcat.1.gz plt.1.gz pltf.1.gz # It should not be necessary to modify anything below this line. # ---------------------------------------------------------------------------- # PSFIGURES is a list of the figures in the book. PSFIGURES = figure1.ps simple0.ps.gz simple1.ps simple2.ps simple3.ps \ simple4.ps simple5.ps ecg.ps coords.ps figure8.ps figure2.ps \ figure3.ps henon.ps.gz figure4.ps symbols.ps style-C.ps \ style-e+Z.ps style-e-X.ps style-ec+.ps style-E+0.ps \ style-E-ftriangle.ps style-Ecsquare.ps style-f.ps style-i.ps \ style-l.ps style-m.ps style-n.ps style-N.ps style-o.ps \ style-O.ps style-sO.ps style-Sfdiamond.ps style-t.ps \ figure6.ps figure7.ps figure10.ps figure11.ps figure12.ps \ figure13.ps figure9.ps labels.ps flowchart.ps fonts.ps \ linestyles.ps fontgroup1.ps figure14.ps colors.ps figure16.ps \ figure17.ps conf.ps fig.ps function.ps image.ps # PDFFIGURES are made from PSFIGURES using epstopdf. PDFFIGURES= figure1.pdf simple0.pdf simple1.pdf simple2.pdf simple3.pdf \ simple4.pdf simple5.pdf ecg.pdf coords.pdf figure8.pdf figure2.pdf\ figure3.pdf henon.pdf figure4.pdf symbols.pdf style-C.pdf \ style-e+Z.pdf style-e-X.pdf style-ec+.pdf style-E+0.pdf \ style-E-ftriangle.pdf style-Ecsquare.pdf style-f.pdf style-i.pdf \ style-l.pdf style-m.pdf style-n.pdf style-N.pdf style-o.pdf \ style-O.pdf style-sO.pdf style-Sfdiamond.pdf style-t.pdf \ figure6.pdf figure7.pdf figure10.pdf figure11.pdf figure12.pdf \ figure13.pdf figure9.pdf labels.pdf flowchart.pdf fonts.pdf \ linestyles.pdf fontgroup1.pdf figure14.pdf colors.pdf figure16.pdf\ figure17.pdf conf.pdf fig.pdf function.pdf image.pdf .SUFFIXES: .ps .ps.gz .pdf .ps.pdf: epstopdf $< .ps.gz.pdf: gzip -d <$< | epstopdf --filter >$@ # 'make' or 'make book.ps' creates the PostScript version of the book from the # LaTeX sources. You won't need to do this unless you change the sources. book.ps: book.dvi dvips -o book.ps book.dvi # 'make html' creates an HTML version from the LaTeX sources. html: book.dvi $(PSFIGURES) test -d ../html || mkdir ../html latex2html -dir ../html -local_icons book \ -up_url="/physiotools/manuals.shtml" \ -up_title="Books about PhysioToolkit" ./fixhtml # change background of pages to white cp icons/* ../html # shouldn't be necessary # 'make book.dvi' creates the (La)TeX device-independent output file, # with all cross-references and indices. book.dvi: book.tex plt.1.tex lwcat.1.tex imageplt.1.tex pltf.1.tex $(PSFIGURES) latex book latex book makeindex book latex book # we need 3 passes to get cross-refs right # 'make book.pdf' creates a PDF version from the LaTeX sources. book.pdf: book.tex plt.1.tex lwcat.1.tex imageplt.1.tex pltf.1.tex $(PDFFIGURES) pdflatex book pdflatex book makeindex book pdflatex book # we need 3 passes to get cross-refs right # The following rules produce LaTeX source versions of the plt.1, lwcat.1, # imageplt.1, and pltf.1 man pages using rman (PolyglotMan), and using tail, # sed, and tr to clean up the mess rman version 3.0.7 makes -- later versions # of rman may not need all of these tweaks, but they should be harmless. These # LaTeX files are incorporated into book.tex (the plt Tutorial and Cookbook) as # its last appendix. plt.1.tex: plt.1 rman -fLaTeX2e plt.1 | tail +10 | sed "s%{itemize}%{description}%g" | \ sed "s%textbf%texttt%g" | tr \\n \_ | sed "s%_}%}%g" | tr \_ \\n | \ sed "s% }%}%g" | sed "s%section{%subsection*{%" | \ sed "s%\end{document}%%" >plt.1.tex lwcat.1.tex: imageplt.1 rman -fLaTeX2e lwcat.1 | tail +10 | \ sed "s%{itemize}%{description}%g" | \ sed "s%textbf%texttt%g" | tr \\n \_ | sed "s%_}%}%g" | tr \_ \\n | \ sed "s% }%}%g" | sed "s%section{%subsection*{%" | \ sed "s%\end{document}%%" >lwcat.1.tex imageplt.1.tex: imageplt.1 rman -fLaTeX2e imageplt.1 | tail +10 | \ sed "s%{itemize}%{description}%g" | \ sed "s%textbf%texttt%g" | tr \\n \_ | sed "s%_}%}%g" | tr \_ \\n | \ sed "s% }%}%g" | sed "s%section{%subsection*{%" | \ sed "s%\end{document}%%" >imageplt.1.tex pltf.1.tex: pltf.1 rman -fLaTeX2e pltf.1 | tail +10 | \ sed "s%{itemize}%{description}%g" | \ sed "s%textbf%texttt%g" | tr \\n \_ | sed "s%_}%}%g" | tr \_ \\n | \ sed "s% }%}%g" | sed "s%section{%subsection*{%" | \ sed "s%\end{document}%%" >pltf.1.tex plt.1.ps: plt.1 man -t ./plt.1 >plt.1.ps lwcat.1.ps: lwcat.1 man -t ./lwcat.1 >lwcat.1.ps imageplt.1.ps: imageplt.1 man -t ./imageplt.1 >imageplt.1.ps pltf.1.ps: pltf.1 man -t ./pltf.1 >pltf.1.ps figure1.ps: example1.data plt -T lw example1.data 0 2 | lwcat -eps >figure1.ps heartrate.data: ihr -r mitdb/115 -a atr -t 5:0 -x >heartrate.data # `ihr' is part of the WFDB Software Package available from PhysioNet # (http://www.physionet.org/). # The next block generates the X11 screen dump used as the first figure in # chapter 2. Since screen dumps are large, the file is kept in gzip- # compressed form, with a separate .bb file containing its bounding box # so that LaTeX can leave a space of the appropriate size on the page. # The page dimensions for convert should match the size of the screen dump # in pixels, including the window manager's frame. They may need minor # adjustment if the window manager is not 'enlightenment'. # # In order to make this file, you will need xwd (part of X11), # convert (from the ImageMagick package), and gzip, in addition to # plt. simple0.ps.gz: heartrate.data xpltwin -g 800x600 # make sure the plt window is the right size plt heartrate.data @echo Please click on the plt window to create the screen dump. xwd -frame >simple0.xwd @echo Type 'Q' in the plt window to dismiss it. @sleep 2 convert -page 812x628 simple0.xwd simple0.ps rm -f simple0.xwd grep BoundingBox simple0.ps | head -1 >simple0.ps.bb gzip simple0.ps simple1.ps: heartrate.data plt -T lw heartrate.data | lwcat -eps >simple1.ps simple2.ps: heartrate.data plt -T lw heartrate.data -t "Heart rate time series" \ -x "Time (seconds)" -y "Heart rate (beats per minute)" \ | lwcat -eps >simple2.ps simple3.ps: heartrate.data plt -T lw heartrate.data -t "Heart rate time series" \ -x "Time (seconds)" -y "Heart rate (beats per minute)" \ -xa 60 300 15 - 4 -ya 0 80 20 -g grid,sub \ | lwcat -eps >simple3.ps simple4.ps: heartrate.data plt -T lw heartrate.data -t "Heart rate time series" \ -x "Time (seconds)" -y "Heart rate (beats per minute)" \ -xa 60 300 15 - 4 0 -ya 0 80 20 -g grid,sub \ -p 0,1Scircle \ | lwcat -eps >simple4.ps simple5.ps: heartrate.data plt -T lw heartrate.data -t "Heart rate time series" \ -x "Time (seconds)" -y "Heart rate (beats per minute)" \ -xa 60 300 15 - 4 0 -ya 0 80 20 -g grid,sub \ -p "0,1Scircle(P/2,Cblue)" \ | lwcat -eps >simple5.ps ecg.ps: ecg.dat plt -T lw :s2,1024,2049,1 ecg.dat\ -cz 8 .00781 -F"p 0,1n(Cred) 0,2n(Cblue)" | lwcat -eps >ecg.ps coords.ps: coords.format plt -T lw -f coords.format | lwcat -eps >coords.ps figure8.ps: example8.format plt -T lw -f example8.format | lwcat -eps >figure8.ps figure2.ps: example1.data plt -T lw example1.data 0 2\ -x "time in seconds" -y "amplitude in cm" -t "Time vs Amp" | \ lwcat -eps >figure2.ps figure3.ps: example1.data example3.format plt -T lw example1.data 0 2 -f example3.format | lwcat -eps >figure3.ps figure4.ps: example4.data plt -T lw example4.data 0 1 2 -F"\ fs helvetica longdashed dotted\ p c" | lwcat -eps >figure4.ps symbols.ps: symbols.dat symbols.format plt -T lw symbols.dat -f symbols.format | lwcat -eps >symbols.ps style-C.ps: styles.data plt -T lw styles.data -p "0,1C(G.90)" -t "Plotstyle C" | \ lwcat -eps >style-C.ps style-e+Z.ps: styles.data plt -T lw styles.data -p 0,1,2e+Z -t "Plotstyle e+Z" | \ lwcat -eps >style-e+Z.ps style-e-X.ps: styles.data plt -T lw styles.data -p 0,1,2e-X -t "Plotstyle e-X" | \ lwcat -eps >style-e-X.ps style-ec+.ps: styles.data plt -T lw styles.data -p 0,1,2e:+ -t "Plotstyle e:+" | \ lwcat -eps >style-ec+.ps style-E+0.ps: styles.data plt -T lw styles.data -p 0,1,2E+0 -t "Plotstyle E+0" | \ lwcat -eps >style-E+0.ps style-E-ftriangle.ps: styles.data plt -T lw styles.data -p 0,1,2E-ftriangle \ -t "Plotstyle E-ftriangle" | lwcat -eps >style-E-ftriangle.ps style-Ecsquare.ps: styles.data plt -T lw styles.data -p 0,1,2E:square \ -t "Plotstyle E:square" | lwcat -eps >style-Ecsquare.ps style-f.ps: styles.data plt -T lw styles.data -p "0,1,2f(G.90)" -t "Plotstyle f" | \ lwcat -eps >style-f.ps style-i.ps: styles.data plt -T lw styles.data -p 0,1i -t "Plotstyle i" | \ lwcat -eps >style-i.ps style-l.ps: styles.data plt -T lw styles.data -p 0,1,0,3l -t "Plotstyle l" | \ lwcat -eps >style-l.ps style-m.ps: styles.data plt -T lw styles.data -p 1m -t "Plotstyle m" | \ lwcat -eps >style-m.ps style-n.ps: styles.data plt -T lw styles.data -p 0,1n -t "Plotstyle n" | \ lwcat -eps >style-n.ps style-N.ps: styles.data plt -T lw styles.data -p "0,1N(G.90)" -t "Plotstyle N" | \ lwcat -eps >style-N.ps style-o.ps: styles.data plt -T lw styles.data -p 0,1,2o -t "Plotstyle o" | \ lwcat -eps >style-o.ps style-O.ps: styles.data plt -T lw styles.data -p "0,1,2O(G.90)" -t "Plotstyle O" | \ lwcat -eps >style-O.ps style-sO.ps: styles.data plt -T lw styles.data -p 0,1sO -t "Plotstyle sO" | \ lwcat -eps >style-sO.ps style-Sfdiamond.ps: styles.data plt -T lw styles.data -p 0,1Sfdiamond \ -t "Plotstyle Sfdiamond" | lwcat -eps >style-Sfdiamond.ps style-t.ps: styles.data plt -T lw styles.data -p 0,1,3t -t "Plotstyle t" \ -ts "Do Re Mi Fa Sol La Ti" CB | lwcat -eps >style-t.ps figure6.ps: example5.data plt -T lw example5.data 0 3 0 2 1 -F"p s+ s* m" \ -x "x axis" -y "y axis" -t "plot of y=x; y=2x and y=3x" | \ lwcat -eps >figure6.ps figure7.ps: example7.data example7.format ( plt -T lw example7.data 0 1 -f example7.format; \ plt -T lw example7.data 0 2 -f example7.axes -o ) | \ lwcat -eps >figure7.ps genex10: genex10.c $(CC) -o genex10 genex10.c -lm example10.data: genex10 ./genex10 >example10.data figure10.ps: example10.data example10.format plt -T lw example10.data -f example10.format | \ lwcat -eps >figure10.ps figure11.ps: example11.data ( plt -T lw -wm 0 -t "This is the main title for the plot"; \ plt -T lw example11.data 0 1 -wm 1 -t "Window 1" ) | \ lwcat -eps >figure11.ps figure12.ps: example11.data ( plt -T lw -wb 0 -t "This is the main title for the plot"; \ plt -T lw example11.data 0 1 -wb 1 -t "Window 1"; \ plt -T lw example11.data 0 2 -wb 2 -t "Window 2" ) | \ lwcat -eps >figure12.ps figure13.ps: example11.data ( plt -T lw -wq 0 -t "This is the main title for the plot"; \ plt -T lw example11.data 0 1 -wq 1 -t "Window 1"; \ plt -T lw example11.data 0 2 -wq 2 -t "Window 2"; \ plt -T lw example11.data 0 3 -wq 3 -t "Window 3"; \ plt -T lw example11.data 0 4 -wq 4 -t "Window 4" ) | \ lwcat -eps >figure13.ps figure16.ps: ldemo.data ( plt -T lw ldemo.data 2 3 -t"FREQUENCY RESPONSE OF THE FILTER" \ -x"FREQUENCY IN HERTZ" -y"THIS IS THE AMPLITUDE" -sf all P16; \ plt -T lw ldemo.data 2 3 -t"FREQUENCY RESP." -x"FREQUENCY" \ -y"AMPLITUDE" -W .3 .3 .5 .45 -se -sf all P12; \ plt -T lw ldemo.data 2 3 -t"FREQUENCY RESPONSE" -x"FREQUENCY" \ -y"AMPLITUDE" -W .6 .55 .9 .8 -se -sf all P14 ) | \ lwcat -eps >figure16.ps figure9.ps: example9.data example9.format plt -T lw example9.data -f example9.format | lwcat -eps >figure9.ps gencos: gencos.c $(CC) -o gencos gencos.c -lm cos2.data: gencos ./gencos >cos2.data labels.ps: cos2.data labels.format plt -T lw cos2.data 0 1 -f labels.format | lwcat -eps >labels.ps flowchart.ps: flowchart.format plt -T lw -f flowchart.format | lwcat -eps >flowchart.ps fonts.ps: fonts.format plt -T lw -f fonts.format | lwcat -eps >fonts.ps linestyles.ps: linestyles.format plt -T lw -f linestyles.format | lwcat -eps >linestyles.ps genex14: genex14.c $(CC) -o genex14 genex14.c -lm example14.data: genex14 ./genex14 >example14.data fontgroup1.ps: example14.data fontgroup.format plt -T lw example14.data -f fontgroup.format | \ lwcat -eps >fontgroup1.ps figure14.ps: example14.data example14.format plt -T lw example14.data -f example14.format | \ lwcat -eps >figure14.ps colors.ps: colors.format plt -T lw -f colors.format | lwcat -eps >colors.ps figure17.ps: ldemo.data ( plt -T lw -wq 0 -t"THE TITLE FOR THE ENTIRE GRAPH GOES HERE"; \ plt -T lw ldemo.data 2 3 -wqs 1 \ -lx -g in -t"LPF: Log Freq & Ticks in"; \ plt -T lw ldemo.data 4 5 -wqs 4 \ -lx -ly -g both -t"LPF: Log Freq & Ampl"; \ plt -T lw ldemo.data 0 1 -wqs 3 \ -lx e -g out -t"Alternate base & Ticks out"; \ plt -T lw ldemo.data 6 7 -wqs 2 \ -lx -ly - yes -g grid,sym,out -t"Log axes with grid" ) | \ lwcat -eps >figure17.ps conf.ps: power.data conf1.format conf2.format ( plt -T lw power.data 0 1 2 3 4 5 -f conf1.format; \ plt -T lw power.data 0 6 7 8 9 10 -f conf2.format ) | \ lwcat -eps >conf.ps function.ps: PTERM=lw pltf 's(40*x)*s(3*x)' 0 5 .01 | lwcat -eps >function.ps image.ps: imageplt -d 5 3 image.data | plt -T lw 0 1 2 -pc | lwcat -eps >image.ps henon: henon.c $(CC) -o henon henon.c henon.ps.gz: henon.c $(CC) -o henon henon.c ./henon | plt -T lw % -p s. -X -1.5 1.5 -Y -.5 .5 \ -t "Henon attractor" | lwcat -eps >henon.ps grep BoundingBox henon.ps | head -1 >henon.ps.bb gzip henon.ps # 'make xdemo': show the figures from the book in an X window xdemo: henon example10.data cos2.data example14.data ./xdemo.sh # 'make psdemo': show the figures from the book in a GhostScript window psdemo: henon example10.data cos2.data example14.data ./psdemo.sh #............................................................................. # a few more examples, not included in the book: cpu.ps: cpu.data cpu.format cpu.strings ( plt -T lw -wb 0 -t "CPU Prices (April 2001)"; \ plt -T lw -W .15 .6 .9 .9 cpu.data -f cpu.format1; \ plt -T lw -W .15 .125 .9 .425 cpu.data -f cpu.format2 ) | \ lwcat -eps >cpu.ps map.ps: coastlines.data cities.data ( plt -T lw coastlines.data 0 1 2 -p c -s xyt \ -X -13000 19000 -Y -8000 8000; \ plt -T lw cities.data 0 1 -p "Scircle(P/4,Cblue)" -setxy -ex \ -X -13000 19000 -Y -8000 8000 )| lwcat -landscape -v -eps >map.ps mary.ps: mary.strings mary.data plt -T lw mary.data -p 0,1,2c -tf mary.strings -X 0 6 -Y 0 6 -t Poem \ | lwcat -eps >mary.ps #............................................................................. install: -mkdir -p $(MAN1DIR) cp $(MANPAGES) $(MAN1DIR) cd $(MAN1DIR); gzip -f $(MANPAGES); chmod 644 $(GZMANPAGES) uninstall: cd $(MAN1DIR); rm -f $(GZMANPAGES) clean: rm -f *~ *.log core book.aux book.dvi book.idx book.ilg book.ind \ book.lof book.log book.toc gencos genex10 genex14 henon *.exe \ *.1.aux *.1.dvi henon.ps.gz henon.ps.bb example7.axes \ figure10.ps example10.data labels.ps fontgroup1.ps figure14.ps \ example14.data cos2.data $(PDFFIGURES)