diff options
Diffstat (limited to 'reproduce/analysis/make/paper.mk')
-rw-r--r-- | reproduce/analysis/make/paper.mk | 130 |
1 files changed, 65 insertions, 65 deletions
diff --git a/reproduce/analysis/make/paper.mk b/reproduce/analysis/make/paper.mk index 00bd3b5..da2702c 100644 --- a/reproduce/analysis/make/paper.mk +++ b/reproduce/analysis/make/paper.mk @@ -1,6 +1,6 @@ # Build the final PDF paper/report. # -# Copyright (C) 2018-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org> +# Copyright (C) 2018-2022 Mohammad Akhlaghi <mohammad@akhlaghi.org> # # 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 @@ -24,14 +24,14 @@ # # To report the input settings and results, the final report's PDF (final # target of this project) uses macros generated from various steps of the -# project. All these macros are defined through `$(mtexdir)/project.tex'. +# project. All these macros are defined through '$(mtexdir)/project.tex'. # -# `$(mtexdir)/project.tex' is actually just a combination of separate files +# '$(mtexdir)/project.tex' is actually just a combination of separate files # that keep the LaTeX macros related to each workhorse Makefile (in -# `reproduce/src/make/*.mk'). Those individual macros are pre-requisites to -# `$(mtexdir)/verify.tex' which will check them before starting to build +# 'reproduce/src/make/*.mk'). Those individual macros are pre-requisites to +# '$(mtexdir)/verify.tex' which will check them before starting to build # the paper. The only workhorse Makefile that doesn't need to produce LaTeX -# macros is this Makefile (`reproduce/src/make/paper.mk'). +# macros is this Makefile ('reproduce/src/make/paper.mk'). # # This file is thus the interface between the analysis/processing steps and # the final PDF: when we get to this point, all the processing has been @@ -39,38 +39,38 @@ # # Note that if you don't want the final PDF and just want the processing # and file outputs, you can give any value other than 'yes' to -# 'pdf-build-final' in `reproduce/analysis/config/pdf-build.conf'. +# 'pdf-build-final' in 'reproduce/analysis/config/pdf-build.conf'. $(mtexdir)/project.tex: $(mtexdir)/verify.tex - # If no PDF is requested, or if LaTeX isn't available, don't - # continue to building the final PDF. Otherwise, merge all the TeX - # macros into one for building the PDF. +# If no PDF is requested, or if LaTeX isn't available, don't continue +# to building the final PDF. Otherwise, merge all the TeX macros into +# one for building the PDF. @if [ -f .local/bin/latex ] && [ x"$(pdf-build-final)" = xyes ]; then - # Put a LaTeX input command for all the necessary macro files. - # 'hardware-parameters.tex' is created in 'configure.sh'. +# Put a LaTeX input command for all the necessary macro files. +# 'hardware-parameters.tex' is created in 'configure.sh'. projecttex=$(mtexdir)/project.tex rm -f $$projecttex for t in $(subst paper,,$(makesrc)) hardware-parameters; do echo "\input{tex/build/macros/$$t.tex}" >> $$projecttex done - # Possibly print the appendix in the final PDF. +# Possibly print the appendix in the final PDF. if [ x"$(separatesupplement)" = x1 ]; then echo "\newcommand{\separatesupplement}{}" >> $$projecttex fi - # Possibly highlight the '\new' parts of the text. +# Possibly highlight the '\new' parts of the text. if [ x"$(highlightnew)" = x1 ]; then echo "\newcommand{\highlightnew}{}" >> $$projecttex fi - # Possibly show the text within '\tonote'. +# Possibly show the text within '\tonote'. if [ x"$(highlightnotes)" = x1 ]; then echo "\newcommand{\highlightnotes}{}" >> $$projecttex fi - # The paper shouldn't be built. +# The paper shouldn't be built. else echo echo "-----" @@ -101,76 +101,76 @@ $(mtexdir)/project.tex: $(mtexdir)/verify.tex # The bibliography # ---------------- # -# We need to run the `bibtex' program on the output of LaTeX to generate +# We need to run the 'bibtex' program on the output of LaTeX to generate # the necessary bibliography before making the final paper. So we'll first -# have one run of LaTeX (similar to the `paper.pdf' recipe), then `biber'. +# have one run of LaTeX (similar to the 'paper.pdf' recipe), then 'bibtex'. # -# NOTE: `$(mtexdir)/project.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/src/references.bib' hasn't +# NOTE: '$(mtexdir)/project.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/src/references.tex' hasn't # been modified, we don't want to re-build the bibliography, only the final # PDF. bbls = $(foreach t,$(subst .pdf,,$(top-pdfs)),$(texbdir)/$(t).bbl) $(bbls): $(texbdir)/%.bbl: tex/src/references.tex \ $(mtexdir)/dependencies-bib.tex | $(mtexdir)/project.tex - # If `$(mtexdir)/project.tex' is empty, don't build PDF. +# If '$(mtexdir)/project.tex' is empty, don't build PDF. @macros=$$(cat $(mtexdir)/project.tex) if [ x"$$macros" != x ]; then - # Unfortunately I can't get bibtex to look into a special - # directory for the references, so we'll copy it into the LaTeX - # building directory. +# Unfortunately I can't get bibtex to look into a special directory +# for the references, so we'll copy it into the LaTeX building +# directory. p=$$(pwd) if ! [ -L $(texbdir)/references.bib ]; then ln -sf $$p/tex/src/references.tex $(texbdir)/references.bib fi - # Copy the improved IEEE bst file into the build directory. - # The improved bst file provides ArXiv clickable URLs and - # if available, open-access URLs based on the DOIs, with - # closed-access URLs as a fallback, via https://oadoi.org . +# Copy the improved IEEE bst file into the build directory. The +# improved bst file provides ArXiv clickable URLs and if available, +# open-access URLs based on the DOIs, with closed-access URLs as a +# fallback, via https://oadoi.org . ln -sf $$p/tex/src/IEEEtran_openaccess.bst $(texbdir)/ - # We'll run LaTeX first to generate the `.bcf' file (necessary - # for `biber') and then run `biber' to generate the `.bbl' file. +# We'll run LaTeX first to generate the '.bcf' file (necessary for +# 'bibtex') and then run 'bibtex' to generate the '.bbl' file. export TEXINPUTS=$$p: cd $(texbdir); - # Delete any possibly existing target (a '.bbl' file) to avoid - # complications with LaTeX being run before the command that - # generates it. Otherwise users will have to manually delete - # it. It will be built anyway once this rule is done. +# Delete any possibly existing target (a '.bbl' file) to avoid +# complications with LaTeX being run before the command that +# generates it. Otherwise users will have to manually delete it. It +# will be built anyway once this rule is done. rm -f $@ - # Put a link to the main LaTeX source that we want to build. +# Put a link to the main LaTeX source that we want to build. if [ $* = paper ]; then sdir="$$p" else sdir="$$p"/tex/src fi ln -sf "$$sdir"/$*.tex ./ - # The pdflatex option '-shell-escape' is "normally disallowed for - # security reasons" according to the `info pdflatex' manual, but - # is enabled here in order to allow the use of PGFPlots. If you - # do not use PGFPlots, then you can remove the `-shell-escape' - # option for better security. See - # https://savannah.nongnu.org/task/?15694 for details. +# The pdflatex option '-shell-escape' is "normally disallowed for +# security reasons" according to the 'info pdflatex' manual, but is +# enabled here in order to allow the use of PGFPlots. If you do not +# use PGFPlots, then you should remove the '-shell-escape' option +# for better security. See https://savannah.nongnu.org/task/?15694 +# for details. latex -shell-escape -halt-on-error $*.tex - # When we are building the main paper and the appendices are to - # be built within the main paper's PDF, we need two - # bibliographies: one for the main body, and one for the - # appendix. For this, we use 'multibib'. Multibib creates a - # separate '.aux' file for each bibliography. +# When we are building the main paper and the appendices are to be +# built within the main paper's PDF, we need two bibliographies: +# one for the main body, and one for the appendix. For this, we use +# 'multibib'. Multibib creates a separate '.aux' file for each +# bibliography. bibtex $* if [ x"$(separatesupplement)" != x1 ]; then bibtex appendix fi - # Hack: tidy up eprint+doi style that didn't work in .bst file. - # TODO (better): read Part 4 of - # http://mirrors.ctan.org/info/bibtex/tamethebeast/ttb_en.pdf - # and fix the .bst style properly. +# Hack: tidy up eprint+doi style that didn't work in .bst file. +# TODO (better): read Part 4 of +# http://mirrors.ctan.org/info/bibtex/tamethebeast/ttb_en.pdf and +# fix the .bst style properly. cp -pv $*.bbl $*-tmp.bbl \ && sed -e "s/\'/EOLINE/g" $*-tmp.bbl \ | tr -d '\n' \ @@ -188,7 +188,7 @@ $(bbls): $(texbdir)/%.bbl: tex/src/references.tex \ | sed -e 's/EOLINE/\n/g' > appendix.bbl fi - # Paper-specific hacks for reducing very-long author lists. +# Paper-specific hacks for reducing very-long author lists. cp -pv $*.bbl $*-tmp.bbl \ && sed -e "s/\'/EOLINE/g" $*-tmp.bbl \ | tr -d '\n' \ @@ -196,7 +196,7 @@ $(bbls): $(texbdir)/%.bbl: tex/src/references.tex \ | sed -e 's;, V\..Khodiyar[^{]*Whyte; et al.\\/;' \ | sed -e 's/EOLINE/\n/g' > $*.bbl - # The pre-final run of LaTeX after 'paper.bbl' was created. +# The pre-final run of LaTeX after 'paper.bbl' was created. latex -shell-escape -halt-on-error $*.tex fi @@ -207,36 +207,36 @@ $(bbls): $(texbdir)/%.bbl: tex/src/references.tex \ # The final paper # --------------- # -# Run LaTeX in the `$(texbdir)' directory so all the intermediate and +# Run LaTeX in the '$(texbdir)' directory so all the intermediate and # auxiliary files stay there and keep the top directory clean. To be able # to run everything cleanly from there, it is necessary to add the current -# directory (top project directory) to the `TEXINPUTS' environment +# directory (top project directory) to the 'TEXINPUTS' environment # variable. $(top-pdfs): %.pdf: $(mtexdir)/project.tex paper.tex \ tex/src/appendix-*.tex $(texbdir)/%.bbl - # If `$(mtexdir)/project.tex' is empty, don't build the PDF. +# If '$(mtexdir)/project.tex' is empty, don't build the PDF. @macros=$$(cat $(mtexdir)/project.tex) if [ x"$$macros" != x ]; then - # Go into the top TeX build directory and make the paper. +# Go into the top TeX build directory and make the paper. p=$$(pwd) export TEXINPUTS=$$p: cd $(texbdir) - # See above for a warning and brief discussion on the the - # pdflatex option `-shell-escape'. +# See above for a warning and brief discussion on the the pdflatex +# option '-shell-escape'. latex -shell-escape -halt-on-error $*.tex - # Convert the DVI to PostScript, and the PostScript to PDF. The - # `-dNOSAFER' option to GhostScript allows transparencies in the - # conversion from PostScript to PDF, see - # https://www.ghostscript.com/doc/current/Language.htm#Transparency +# Convert the DVI to PostScript, and the PostScript to PDF. The +# '-dNOSAFER' option to GhostScript allows transparencies in the +# conversion from PostScript to PDF, see +# https://www.ghostscript.com/doc/current/Language.htm#Transparency dvips $*.dvi ps2pdf $*.ps - # Come back to the top project directory and copy the built PDF - # file here. +# Come back to the top project directory and copy the built PDF +# file here. cd "$$p" cp $(texbdir)/$*.pdf $@ fi |