Skip to content

Instantly share code, notes, and snippets.

@arthurlevy
Last active November 27, 2015 13:39
Show Gist options
  • Save arthurlevy/5cbce852d4e7f685df0b to your computer and use it in GitHub Desktop.
Save arthurlevy/5cbce852d4e7f685df0b to your computer and use it in GitHub Desktop.
makefile for articles written in LaTeX with LyX
#Name of the main lyx and tex file
ARTICLE = article
#name of the bibliography
BIBLIO = biblio
#path to the mendeley bibliography where it comes from
MENDELEY_DATABASE = ../Bibtex\ Databases/thermostamping.bib
#path to LyX application
LYX = /Applications/LyX.app/Contents/MacOS/lyx
#path to MATLAB
MATLAB = /Applications/MATLAB_R2015b.app/bin/matlab
#name of the graffle source file for eps figures
GRAFFLE_FILE = figures.graffle
#path to the graffle2eps applescript
GRAFFLE2EPS_PATH = ~/Library/Scripts/
#get eps files produced from graffle or matlab
EPS_FROM_GRAFFLE:=$(shell awk -F"[<>]" '/SheetTitle/ {getline;print $$3".eps"}' $(GRAFFLE_FILE)/data.plist)
FIG_FILES=$(wildcard *.fig)
EPS_FROM_MATLAB=$(FIG_FILES:.fig=.eps)
all: $(ARTICLE).pdf sources.zip clean
$(ARTICLE).pdf: $(ARTICLE).tex $(BIBLIO).bib *.eps $(EPS_FROM_MATLAB) $(EPS_FROM_GRAFFLE)
echo "-- MAKE -- PRODUCING PDF FILE"
latex $(ARTICLE).tex
bibtex $(ARTICLE)
latex $(ARTICLE).tex
latex $(ARTICLE).tex
latex $(ARTICLE).tex
dvipdfmx -o $(ARTICLE).pdf $(ARTICLE).dvi
$(BIBLIO).bib: $(MENDELEY_DATABASE)
echo "-- MAKE -- UPDATE BIBTEX FILE FROM MENDELEY"
cp $(MENDELEY_DATABASE) $(BIBLIO).bib
echo "-- MAKE -- CLEANING BIBTEX FILE"
TMPFILE=`mktemp -t bibXXXXXXX.pdf`
TMPFILE2=`mktemp -t bibXXXXXXX.pdf`
grep -v "url =" $(BIBLIO).bib > $TMPFILE
grep -v "doi =" $TMPFILE > $TMPFILE2
grep -v "issn =" $TMPFILE2 > $TMPFILE
grep -v "month =" $TMPFILE > $TMPFILE2
grep -v "file =" $TMPFILE2 > $TMPFILE
grep -v "keywords =" $TMPFILE > $TMPFILE2
grep -v "isbn =" $TMPFILE2 > $TMPFILE
grep -v "abstract =" $TMPFILE > $TMPFILE2
cp $TMPFILE2 $(BIBLIO).bib
rm -f $TMPFILE $TMPFILE2
$(ARTICLE).tex: $(ARTICLE).lyx
echo "-- MAKE -- EXPORT LYX TO LATEX"
$(LYX) -e latex $(ARTICLE).lyx -batch
sources.zip: $(ARTICLE).tex *.eps $(BIBLIO).bib
echo "-- MAKE -- ARCHIVE FILES"
zip -r sources.zip $(ARTICLE).tex $(BIBLIO).bib *.eps
%.eps: %.fig
echo "-- MAKE -- EXPORT EPS FROM Matlab ($< to $@)"
echo "figure(1); open('$<'); print(figure(1),'-depsc2','$@')" >> tmp.m
$(MATLAB) -nodisplay -r "cd $(PWD); tmp; exit"
rm tmp.m
.PHONY: omnigraffle
omnigraffle: $(GRAFFLE_FILE)
echo "-- MAKE -- EXPORT EPS FROM OmniGraffle"
osascript $(GRAFFLE2EPS_PATH)/graffle2eps.scpt $(GRAFFLE_FILE)
$(EPS_FROM_GRAFFLE): omnigraffle
clean:
echo "-- MAKE -- CLEANING DIRECTORY"
rm -f $(ARTICLE).log $(ARTICLE).dvi $(ARTICLE).aux $(ARTICLE).blg $(ARTICLE).toc $(ARTICLE).aux $(ARTICLE).bbl $(ARTICLE).glo $(ARTICLE).ist $(ARTICLE).out biblio.bbl biblio.blg *-eps-converted-to.pdf
commit: $(ARTICLE).tex $(BIBLIO).bib *.eps
git status
diff: diff.tex $(ARTICLE).tex
latex diff.tex
bibtex diff
latex diff.tex
latex diff.tex
latex diff.tex
dvipdfmx -o diff.pdf diff.dvi
rm diff.aux diff.bbl diff.blg diff.cb diff.dvi diff.log
diff.tex:
echo "-- MAKE -- PRODUCING Diff FILE with revision $(REV)"
latexdiff-vc -t CULINECHBAR --append-safecmd="vect,tens,moy,norm" -r $(REV) $(ARTICLE).tex
mv $(ARTICLE)-*.tex diff.tex
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment