• qjkxbmwvz@startrek.website
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 months ago

      Makefile in other comments. You’ll need something like this on the title page (this assumes you use my Makefile which puts the version in VERSION.tex [that’s the literal name of the file, not a placeholder]):

      {\bf{\color{red}DOCUMENT REVISION:}} {\color{blue}\input{VERSION}}

    • qjkxbmwvz@startrek.website
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 months ago

      Sure thing. This also includes the beamer bit which I used for my defense. It’s all pretty hacky but hope it’s useful!

      #
      # Errors aren't handled gracefully (tex doesn't write to stderr, it seems)
      # If you encounter errors, use "make verbose"
      #
      # For small changes (probably those without references), use "make quick"
      #
      # Thanks to https://gist.github.com/Miliox/4035649 for dependency outline
      
      TEX = pdflatex
      BTEX = biber
      MAKE = make -s
      TEXFLAGS = -halt-on-error
      # $(MAIN).log is dumb if we have multiple targets!
      SILENT = > /dev/null || cat $(MAIN).log
      SILENT_NOER = 2>/dev/null 1>/dev/null
      EDITOR = vim -p
      PDFVIEW = evince
      MAIN = main
      PRES = presentation
      ALL = $(MAIN).pdf
      RECURS = media/ manuscripts/
      VERSION := $(shell git rev-parse --short HEAD | cut -c 1-4)$(shell git diff-index --quiet HEAD && (echo -n ' ';git log -1 --format=[%cd]) || (echo -n '* '; date -u '+[%c]'))
      
      all: recurs $(ALL)
      pres: $(PRES).pdf
      scratch: scratch.pdf
      
      scratch.pdf: scratch.tex
      	@echo "TEX	(final)	$<"
      	@$(TEX) $(TEXFLAGS) $< $(SILENT)
      
      verbose: SILENT = ''
      verbose: $(ALL)
      
      recurs: $(RECURS)
      	@$(foreach DIR, $(RECURS), \
      		echo "MAKE	(CD)	$(CURDIR)/$(DIR)"; \
      		$(MAKE) -C $(DIR) $(MAKECMDGOALS);)
      	@echo "MAKE	(CD)	./"
      
      clean:
      	@echo "SH	(RM)	Not recursing; 'make allclean' to clear generated files."
      	@rm -f *.aux *.log *.out *.pdf *.bbl *.blg *.toc *.lof *.lot *.bcf *.run.xml
      
      allclean: recurs
      	@echo "SH	(RM)	A clean directory is a happy directory"
      	@rm -f *.aux *.log *.out *.pdf *.bbl *.blg *.toc *.lof *.lot *.bcf *.run.xml
      version:
      	@echo "SH      (ver) $(VERSION)"
      	@echo $(VERSION) > VERSION.tex
      
      nixpages: main.pdf
      	@echo "PDF     (pdftk)"
      	@pdftk main.pdf cat 1 4-end output final.pdf
      
      quick: $(MAIN).tex version
      	@echo "TEX	(final)	$<"
      	@$(TEX) $(TEXFLAGS) $< $(SILENT)
      
      $(MAIN).pdf: $(MAIN).tex $(MAIN).bbl all.tex tex/abstract.tex tex/intro.tex tex/appendix.tex tex/some_section.tex tex/some_other_section.tex
      	@echo "TEX	(draft)	$<"
      	@$(TEX) $(TEXFLAGS) --draftmode  $< $(SILENT)
      	@echo "TEX	(final)	$<"
      	@$(TEX) $(TEXFLAGS) $< $(SILENT)
      
      $(MAIN).bbl: $(MAIN).aux
      	@echo "BIB	(bib)	$(MAIN)"
      	@$(BTEX) $(MAIN) > /dev/null
      	
      $(MAIN).aux: $(MAIN).tex $(MAIN).bib version
      	@echo "TEX	(draft)	$<"
      	@$(TEX) $(TEXFLAGS) --draftmode  $< $(SILENT)
      
      $(PRES).pdf: $(PRES).tex $(PRES).bbl tex/beamer*.tex tex/slides/*.tex
      	@echo "TEX	(draft)	$<"
      	@$(TEX) $(TEXFLAGS) --draftmode  $< $(SILENT)
      	@echo "TEX	(final)	$<"
      	@$(TEX) $(TEXFLAGS) $< $(SILENT)
      $(PRES).bbl: $(PRES).aux
      	@echo "BIB	(bib)	$(PRES)"
      	@$(BTEX) $(PRES) > /dev/null
      $(PRES).aux: $(PRES).tex $(MAIN).bib
      	@echo "TEX	(draft)	$<"
      	@$(TEX) $(TEXFLAGS) --draftmode  $< $(SILENT)
      
      edit:
      	@echo "EDIT	(fork)	$(EDITOR)"
      	@$(EDITOR) ./tex/*.tex *.tex
      
      view:
      	@echo "VIEW	(fork)	$(PDFVIEW)"
      	@$(PDFVIEW) $(ALL) $(SILENT_NOER) &