October 25, 2006 by stf
I have to write quite some stuff such as papers or letters. And because LaTeX produces far more fancy text than other wordprocessors do I usually do this with LaTeX. I do not use any WYSIWYG or other IDE but only rely on XEmacs and the shell. But I am far too lazy to remember and type all the common commands over and over again, so a wrote a generic LaTeX-Makefile that does all the work for me.
The following Makefile provides a make-based framework for compiling TeX/LaTex-documents
# ############################################################################
# www. // //'' // '' //''//''
# //''' //' //'// //' '''// //// //''' //''' //'// // //' //' //'// //''
# ///// // ///// // ///// // // ///// // // // // // // ///// //
# ,,,// /// //,,, // //,// // //, ,,,// //,,, // // // // // //,,, // .de
# ############################################################################
#
# $Id: Makefile,v 1.1.1.1 2006/10/25 20:10:23 stf Exp $
# author: Stefan Schiffer
# license: this work can be redistributed under the terms of the GPLv2
# description: Generic Makefile for LaTeX files
#
# ############################################################################
## MAIN ###################
PREFIX = filename
FOLDER = foldername
## FILES ##################
TEXFILE = $(PREFIX).tex
PSFILE = $(PREFIX).ps
PDFFILE = $(PREFIX).pdf
DVIFILE = $(PREFIX).dvi
AUXFILE = $(PREFIX).aux
LOGFILE = $(PREFIX).log
BBLFILE = $(PREFIX).bbl
BLGFILE = $(PREFIX).blg
TARFILE = $(PREFIX).tgz
TILDEFILES = *~
RMFILES = *~ *.toc *.idx *.ilg *.ind *.bbl *.blg *.out *.aux \
*.tmp *.log *.lot *.lof *.adx *.and *.abb *.ldx $(TARFILE)
VERSION = version.txt
########################################################################
## VARIABLE(S): ########################################################
SILENT = @
# commands ###############################
MAKE = make -s
LATEX = latex
BIBTEX = bibtex
DVIPS = dvips
DVIPSFLAGS = -Ppdf -G0
DVIPDF = dvipdf
PS2PDF = ps2pdf
PS2PDFFLAGS = -sPAPERSIZE=a4 -dCompatibilityLevel=1.3 -dEmbedAllFonts=true
PSNUP = psnup
PDFLATEX = pdflatex
MAKEIDX = makeindex
GV = gv
GV_OPT = -geometry 676x920-0+0
XPDF = xpdf
XPDF_OPT = -geometry 676x920-0+0
# tools ##################################
TAR = tar -czvf
UNTAR = tar -xzvf
RM = rm -f
DBG = echo
MSG = echo
# COLORS #################################
RESET = tput sgr0
#
BLACK = tput setaf 0
BLACK_BG = tput setab 0
DARKGREY = tput setaf 0; tput bold
RED = tput setaf 1
RED_BG = tput setab 1
LIGHTRED = tput setaf 1; tput bold
GREEN = tput setaf 2
GREEN_BG = tput setab 2
LIME = tput setaf 2; tput bold
BROWN = tput setaf 3
BROWN_BG = tput setab 3
YELLOW = tput setaf 3; tput bold
BLUE = tput setaf 4
BLUE_BG = tput setab 4
BRIGHTBLUE = tput setaf 4; tput bold
PURPLE = tput setaf 5
PURPLE_BG = tput setab 5
PINK = tput setaf 5; tput bold
CYAN = tput setaf 6
CYAN_BG = tput setab 6
BRIGHTCYAN = tput setaf 6; tput bold
LIGHTGREY = tput setaf 7
LIGHTGREYBG = tput setab 7
WHITE = tput setaf 7; tput bold
# AND NOW FOR NAMED-HELPER:
MENU = $(CYAN)
ITEM = $(BRIGHTCYAN)
DONE = $(CYAN)
CHECK = $(GREEN)
ERROR = $(RED)
## #######################################
## RULES
all: dolatex dolatex dobibtex dolatex dodvips dopdf wall
tar:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Creating zipped tarball '$(TARFILE)'"; $(RESET)
$(SILENT) $(TAR) $(TARFILE) -C.. $(DIR_NAME)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
untar:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Deflating zipped tarball '$(TARFILE)'"; $(RESET)
$(SILENT) $(UNTAR) $(TARFILE) -C..
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
dopdf:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Running ps2pdf on '$(PSFILE)'"; $(RESET)
$(SILENT) $(PS2PDF) $(PS2PDFFLAGS) $(PSFILE)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
dolatex:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Running latex on '$(TEXFILE)'"; $(RESET)
$(SILENT) $(LATEX) $(TEXFILE)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
dobibtex:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Running 1st latex for bibtex on '$(TEXFILE)'"; $(RESET)
$(SILENT) $(MSG) " -- "
$(SILENT) $(LATEX) $(TEXFILE)
$(SILENT) $(ITEM); $(MSG) " -- Running 2nd latex for bibtex on '$(TEXFILE)'"; $(RESET)
$(SILENT) $(MSG) " -- "
$(SILENT) $(LATEX) $(TEXFILE)
$(SILENT) $(ITEM); $(MSG) " -- Running bibtex on '$(PREFIX)'"; $(RESET)
$(SILENT) $(MSG) " -- "
$(SILENT) $(BIBTEX) $(PREFIX)
$(SILENT) $(ITEM); $(MSG) " -- Running 3rdlatex for bibtex on '$(TEXFILE)'"; $(RESET)
$(SILENT) $(MSG) " -- "
$(SILENT) $(LATEX) $(TEXFILE)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
dodvips:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Running dvips on '$(PREFIX)'"; $(RESET)
$(SILENT) $(DVIPS) $(DVIPSFLAGS) $(PREFIX) -o$(PSFILE)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
do2up:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Creating 2up version of '$(PSFILE)'"; $(RESET)
$(SILENT) $(PSNUP) -2 $(PSFILE) $(PREFIX).2.ps
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
viewps:
$(SILENT) $(MENU); $(MSG) " -----------------------------------------------------------------------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- View $(PSFILE) with $(GV)"; $(RESET)
$(SILENT) $(GV) $(GV_OPT) $(PSFILE) &
$(SILENT) $(DONE); $(MSG) " ------------------------------------------------------------- done. ---"; $(RESET)
doshort: dolatex dodvips dopdf
# www. // //'' // '' //''//''
# //''' //' //'// //' '''// //// //''' //''' //'// // //' //' //'// //''
# ///// // ///// // ///// // // ///// // // // // // // ///// //
# ,,,// /// //,,, // //,// // //, ,,,// //,,, // // // // // //,,, // .de
# ############################################################################
#
# $Id: Makefile,v 1.1.1.1 2006/10/25 20:10:23 stf Exp $
# author: Stefan Schiffer
# license: this work can be redistributed under the terms of the GPLv2
# description: Generic Makefile for LaTeX files
#
# ############################################################################
## MAIN ###################
PREFIX = filename
FOLDER = foldername
## FILES ##################
TEXFILE = $(PREFIX).tex
PSFILE = $(PREFIX).ps
PDFFILE = $(PREFIX).pdf
DVIFILE = $(PREFIX).dvi
AUXFILE = $(PREFIX).aux
LOGFILE = $(PREFIX).log
BBLFILE = $(PREFIX).bbl
BLGFILE = $(PREFIX).blg
TARFILE = $(PREFIX).tgz
TILDEFILES = *~
RMFILES = *~ *.toc *.idx *.ilg *.ind *.bbl *.blg *.out *.aux \
*.tmp *.log *.lot *.lof *.adx *.and *.abb *.ldx $(TARFILE)
VERSION = version.txt
########################################################################
## VARIABLE(S): ########################################################
SILENT = @
# commands ###############################
MAKE = make -s
LATEX = latex
BIBTEX = bibtex
DVIPS = dvips
DVIPSFLAGS = -Ppdf -G0
DVIPDF = dvipdf
PS2PDF = ps2pdf
PS2PDFFLAGS = -sPAPERSIZE=a4 -dCompatibilityLevel=1.3 -dEmbedAllFonts=true
PSNUP = psnup
PDFLATEX = pdflatex
MAKEIDX = makeindex
GV = gv
GV_OPT = -geometry 676x920-0+0
XPDF = xpdf
XPDF_OPT = -geometry 676x920-0+0
# tools ##################################
TAR = tar -czvf
UNTAR = tar -xzvf
RM = rm -f
DBG = echo
MSG = echo
# COLORS #################################
RESET = tput sgr0
#
BLACK = tput setaf 0
BLACK_BG = tput setab 0
DARKGREY = tput setaf 0; tput bold
RED = tput setaf 1
RED_BG = tput setab 1
LIGHTRED = tput setaf 1; tput bold
GREEN = tput setaf 2
GREEN_BG = tput setab 2
LIME = tput setaf 2; tput bold
BROWN = tput setaf 3
BROWN_BG = tput setab 3
YELLOW = tput setaf 3; tput bold
BLUE = tput setaf 4
BLUE_BG = tput setab 4
BRIGHTBLUE = tput setaf 4; tput bold
PURPLE = tput setaf 5
PURPLE_BG = tput setab 5
PINK = tput setaf 5; tput bold
CYAN = tput setaf 6
CYAN_BG = tput setab 6
BRIGHTCYAN = tput setaf 6; tput bold
LIGHTGREY = tput setaf 7
LIGHTGREYBG = tput setab 7
WHITE = tput setaf 7; tput bold
# AND NOW FOR NAMED-HELPER:
MENU = $(CYAN)
ITEM = $(BRIGHTCYAN)
DONE = $(CYAN)
CHECK = $(GREEN)
ERROR = $(RED)
## #######################################
## RULES
all: dolatex dolatex dobibtex dolatex dodvips dopdf wall
tar:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Creating zipped tarball '$(TARFILE)'"; $(RESET)
$(SILENT) $(TAR) $(TARFILE) -C.. $(DIR_NAME)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
untar:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Deflating zipped tarball '$(TARFILE)'"; $(RESET)
$(SILENT) $(UNTAR) $(TARFILE) -C..
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
dopdf:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Running ps2pdf on '$(PSFILE)'"; $(RESET)
$(SILENT) $(PS2PDF) $(PS2PDFFLAGS) $(PSFILE)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
dolatex:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Running latex on '$(TEXFILE)'"; $(RESET)
$(SILENT) $(LATEX) $(TEXFILE)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
dobibtex:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Running 1st latex for bibtex on '$(TEXFILE)'"; $(RESET)
$(SILENT) $(MSG) " -- "
$(SILENT) $(LATEX) $(TEXFILE)
$(SILENT) $(ITEM); $(MSG) " -- Running 2nd latex for bibtex on '$(TEXFILE)'"; $(RESET)
$(SILENT) $(MSG) " -- "
$(SILENT) $(LATEX) $(TEXFILE)
$(SILENT) $(ITEM); $(MSG) " -- Running bibtex on '$(PREFIX)'"; $(RESET)
$(SILENT) $(MSG) " -- "
$(SILENT) $(BIBTEX) $(PREFIX)
$(SILENT) $(ITEM); $(MSG) " -- Running 3rdlatex for bibtex on '$(TEXFILE)'"; $(RESET)
$(SILENT) $(MSG) " -- "
$(SILENT) $(LATEX) $(TEXFILE)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
dodvips:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Running dvips on '$(PREFIX)'"; $(RESET)
$(SILENT) $(DVIPS) $(DVIPSFLAGS) $(PREFIX) -o$(PSFILE)
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
do2up:
$(SILENT) $(MENU); $(MSG) " -------------------------------------------------------------
----------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- Creating 2up version of '$(PSFILE)'"; $(RESET)
$(SILENT) $(PSNUP) -2 $(PSFILE) $(PREFIX).2.ps
$(SILENT) $(DONE); $(MSG) " -------------------------------------------------------------
done. ---"; $(RESET)
viewps:
$(SILENT) $(MENU); $(MSG) " -----------------------------------------------------------------------"; $(RESET)
$(SILENT) $(ITEM); $(MSG) " -- View $(PSFILE) with $(GV)"; $(RESET)
$(SILENT) $(GV) $(GV_OPT) $(PSFILE) &
$(SILENT) $(DONE); $(MSG) " ------------------------------------------------------------- done. ---"; $(RESET)
doshort: dolatex dodvips dopdf
- Login to post comments
- 916 reads
try latexmk