diff options
Diffstat (limited to 'reproduce/src')
-rw-r--r-- | reproduce/src/make/delete-me.mk | 73 | ||||
-rw-r--r-- | reproduce/src/make/initialize.mk | 6 | ||||
-rw-r--r-- | reproduce/src/make/paper.mk | 33 |
3 files changed, 105 insertions, 7 deletions
diff --git a/reproduce/src/make/delete-me.mk b/reproduce/src/make/delete-me.mk new file mode 100644 index 0000000..a93c2d0 --- /dev/null +++ b/reproduce/src/make/delete-me.mk @@ -0,0 +1,73 @@ +# Dummy Makefile to create a random dataset for plotting. +# +# Original author: +# Mohammad Akhlaghi <mohammad@akhlaghi.org> +# Contributing author(s): +# Copyright (C) 2018, Your Name. +# +# This Makefile is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This Makefile is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# A copy of the GNU General Public License is available at +# <http://www.gnu.org/licenses/>. + + + + + +# Dummy dataset +# ------------- +# +# We will use AWK's random number generator to generate a random dataset to +# be imported by PGFPlots for a plot in the paper. +dmdir = $(texdir)/delete-me +dm = $(dmdir)/data.txt +$(dmdir): | $(texdir); mkdir $@ +$(dm): $(pconfdir)/delete-me-num.mk | $(dmdir) + + # When the plotted values are re-made, it is necessary to also + # delete the TiKZ externalized files so the plot is also re-made. + rm -f $(tikzdir)/delete-me.pdf + + # Generate the table of random values. + awk 'BEGIN { for (i = 1; i <= $(delete-me-num); i++) \ + print i, rand(); }' > $@ + + + + + +# TeX macros +# ---------- +# +# This is how we write the necessary parameters in the final PDF. +# +# NOTE: In LaTeX you cannot use any non-alphabetic character in a variable +# name. +$(mtexdir)/delete-me.tex: $(dm) + + # Write the number of random values used. + echo "\newcommand{\deletemenum}{$(delete-me-num)}" > $@ + + # Note that since Make variables start with a `$(', if you want to + # use `$' within the shell (not Make), you have to quote any + # occurance of `$' with another `$'. That is why there are `$$' in + # the AWK command below. + # + # Here, we are first using AWK to find the minimum and maximum + # values, then using it again to read each separately to use in the + # macro definition. + mm=$$(awk 'BEGIN{min=99999; max=-min} \ + {if($$2>max) max=$$2; if($$2<min) min=$$2;} \ + END{print min, max}' $(dm)); \ + v=$$(echo "$$mm" | awk '{printf "%.3f", $$1}'); \ + echo "\newcommand{\deletememin}{$$v}" >> $@; \ + v=$$(echo "$$mm" | awk '{printf "%.3f", $$2}'); \ + echo "\newcommand{\deletememax}{$$v}" >> $@ diff --git a/reproduce/src/make/initialize.mk b/reproduce/src/make/initialize.mk index 70d77ed..4f134a9 100644 --- a/reproduce/src/make/initialize.mk +++ b/reproduce/src/make/initialize.mk @@ -37,6 +37,8 @@ texdir = $(BDIR)/tex srcdir = reproduce/src lockdir = $(BDIR)/locks +texbdir = $(texdir)/build +tikzdir = $(texbdir)/tikz mtexdir = $(texdir)/macros gconfdir = reproduce/config/gnuastro pconfdir = reproduce/config/pipeline @@ -100,10 +102,10 @@ $(pconfdir)/LOCAL.mk: # option: they add too many extra checks that make it hard to find what you # are looking for in this pipeline. .SUFFIXES: -$(mtexdir): | $(texdir); mkdir $@ +$(tikzdir): | $(texbdir); mkdir $@ $(BDIR): | $(pconfdir)/LOCAL.mk; mkdir $@ $(texdir) $(lockdir): | $(BDIR); mkdir $@ - +$(mtexdir) $(texbdir): | $(texdir); mkdir $@ diff --git a/reproduce/src/make/paper.mk b/reproduce/src/make/paper.mk index db20279..f3db1de 100644 --- a/reproduce/src/make/paper.mk +++ b/reproduce/src/make/paper.mk @@ -22,16 +22,39 @@ +# The bibliography +# ---------------- +# +# We need to run the `biber' program on the output of LaTeX to generate the +# necessary bibliography before making the final paper. +# +# NOTE: `tex/pipeline.tex' is an order-only-prerequisite for +# `paper.bbl'. This is because we need to run LaTeX in both the `paper.bbl' +# recipe and the `paper.pdf' recipe. But if `tex/references.tex' hasn't +# been modified, we don't want to re-build the bibliography, only the final +# PDF. +$(texbdir)/paper.bbl: tex/references.tex \ + | $(tikzdir) $(texbdir) tex/pipeline.tex + + # We'll run LaTeX first to generate the `.bcf' file (necessary for + # `biber') and then run `biber' to generate the `.bbl' file. + p=$$(pwd); \ + export TEXINPUTS=$$p:$$TEXINPUTS; \ + cd $(texbdir); \ + pdflatex -shell-escape -halt-on-error $$p/paper.tex; \ + biber paper + + + + + # The final paper # --------------- # # The commands to build the final report. We want the pipeline version to # be checked everytime the final PDF is to be built. -texbdir=$(texdir)/build -tikzdir=$(texbdir)/tikz -$(texbdir): | $(texdir); mkdir $@ -$(tikzdir): | $(texbdir); mkdir $@ -paper.pdf: tex/pipeline.tex paper.tex | $(tikzdir) $(texbdir) +paper.pdf: tex/pipeline.tex paper.tex $(texbdir)/paper.bbl \ + | $(tikzdir) $(texbdir) # Make the report. p=$$(pwd); \ |