You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
4.7 KiB
100 lines
4.7 KiB
#####################################################################
|
|
# This Makefile is part of a skeleton (diploma) thesis. If you have
|
|
# useful additions, suggestions or questions, please feel free to issue a
|
|
# PR or an issue at https://github.com/TUD-OS/latex-template
|
|
######################################################################
|
|
|
|
# main document
|
|
DOC_TEX = bachelor.tex
|
|
# sub documents (chapters) without preamble
|
|
# (because we do not need checkbiw on the preamble).
|
|
DOC_TEX_ADD = $(wildcard content/*.tex)
|
|
# All Tex-files sorted alphabetically and concatenated to a single string.
|
|
# (make's shell utility converts newlines to spaces)
|
|
# This makes the "checkbiw"-script more convenient.
|
|
DOC_TEX_ALL_SORTED = $(shell echo $(DOC_TEX) $(DOC_TEX_ADD) | tr ' ' '\n' | sort)
|
|
|
|
DOC_PDF = $(DOC_TEX:.tex=.pdf)
|
|
|
|
LATEXMK = latexmk
|
|
# Add "-shell-escape" when you use "minted" instead of "listings" for beautiful code listings
|
|
LATEXMK_COMMON_FLAGS = -pdf -use-make
|
|
LATEXMK_FLAGS = $(LATEXMK_COMMON_FLAGS) -pdflatex=lualatex -halt-on-error
|
|
LATEXMK_WATCH_FLAGS = $(LATEXMK_COMMON_FLAGS) -pvc -quiet -f -pdflatex="lualatex -synctex=1 -interaction=nonstopmode"
|
|
|
|
DATE := $(shell date +\"%Y-%m-%d_%H%M%S\")
|
|
BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
|
|
BACKUP_FILE_NAME := ${DATE}_DRAFT_Bachelorarbeit_${BRANCH}.pdf
|
|
|
|
# Path to 'checkbiw'-script.
|
|
# Do not forget to execute `git submodule update --init` first.
|
|
CHECKBIW = checkbiw/src/checkbiw
|
|
|
|
# The @-symbol makes the commands quite, i.e., make does not
|
|
# output the commands it executes.
|
|
QUIET = @
|
|
|
|
.PHONY: default pdf clean check-french-spacing checkbiw stats watch
|
|
|
|
default: pdf
|
|
|
|
# Builds the PDF and creates a file with the format: "yyyy-MM-dd DRAFT Diplomarbeit - Branch <current branch>.pdf"
|
|
# Is not dependent on anything because latexmk should figure out by itself if everything is fresh.
|
|
pdf:
|
|
$(LATEXMK) $(LATEXMK_FLAGS) $(DOC_TEX)
|
|
cp $(DOC_PDF) ../backups/$(BACKUP_FILE_NAME)
|
|
curl --netrc-file ../../serverkey/curl-cloud-access -T ../backups/$(BACKUP_FILE_NAME) https://cloud.constantin-fuerst.com/remote.php/dav/files/constantin/university/thesis-backup/$(BACKUP_FILE_NAME)
|
|
|
|
# Performs a watch task, i.e. automatically re-builds everything quickly on changes.
|
|
# If your PDF viewer supports a reload on file changes (such as the default PDF viewer in GNOME)
|
|
# you get a cool productive working environment.
|
|
#
|
|
# The dependency to "pdf" exists only that in case something doesn't build from the beginning
|
|
# the build immediately stops.
|
|
#
|
|
# Also see: https://paulklemm.com/blog/2016-03-06-watch-latex-documents-using-latexmk/
|
|
watch: pdf
|
|
$(LATEXMK) $(LATEXMK_WATCH_FLAGS) $(DOC_TEX)
|
|
|
|
# Cleans all intermediate files except for the produced pdf files.
|
|
clean:
|
|
$(LATEXMK) -C
|
|
$(QUIET)# latexmk does not clean up the aux-files produced by the chapters.
|
|
$(QUIET)# They are stand-alone compilation units with a dedicated aux file.
|
|
$(QUIET)# This comes because we include them with "\include" instead of "\input".
|
|
find "./content" -type f -name "*.aux" | xargs -r rm
|
|
$(QUIET)# Cleanup of "minted" package (if you use it - not included by default)
|
|
$(QUIET)# find "./content" -type f -name "_minted*" | xargs -r rm -rf
|
|
$(QUIET)# Produced by the 'make stats' target
|
|
$(QUIET)rm -f bachelor.pdf.txt
|
|
|
|
# Points out abbreviations and reminds you of escaping
|
|
# the space after the period
|
|
check-french-spacing: $(DOC_TEX_ALL_SORTED)
|
|
$(QUIET)export GREP_COLOR='1;32'; \
|
|
grep --color=auto "[A-Z]\(2,\)\." $+ || \
|
|
grep --color=auto -e 'e\.g\.' -e 'i\.e\.' -e 'd\.h\.' $+ || \
|
|
true
|
|
|
|
# check for conformance with "bugs in writing", English only
|
|
checkbiw: $(DOC_TEX_ALL_SORTED)
|
|
$(QUIET)$(CHECKBIW) -v -c $+
|
|
|
|
|
|
CMD_COUNT_PAGES = pdfinfo $(DOC_PDF) | awk '/^Pages:/ {print $$2}'
|
|
CMD_COUNT_WORDS = pdftotext $(DOC_PDF) $(DOC_PDF:.pdf=.pdf.txt) && cat $(DOC_PDF:.pdf=.pdf.txt) | grep -E '^\.+\ *$$' -v | wc -w
|
|
|
|
stats: pdf
|
|
$(QUIET)echo "\e[1mThesis Stats:\e[0m"
|
|
$(QUIET)echo " \e[1mdetexed sources and removed empty lines:\e[0m"
|
|
$(QUIET)echo " lines: $(shell detex $(DOC_TEX_ALL_SORTED) | sed '/^$$/d' | wc -l)"
|
|
$(QUIET)echo " words: $(shell detex $(DOC_TEX_ALL_SORTED) | sed '/^$$/d' | wc -w)"
|
|
$(QUIET)echo " characters: $(shell detex $(DOC_TEX_ALL_SORTED) | sed '/^$$/d' | wc --chars)"
|
|
$(QUIET)echo
|
|
$(QUIET)echo " Please note: There are possibly deviations compared to the final PDF as the compiled"
|
|
$(QUIET)echo " version might contain additional words, such as 'in Figure 3.5 on the"
|
|
$(QUIET)echo " next page' or the bibliography."
|
|
$(QUIET)echo
|
|
$(QUIET)echo " \e[1mCompiled PDF:\e[0m"
|
|
$(QUIET)echo " pages: $(shell $(CMD_COUNT_PAGES)) (in total)"
|
|
$(QUIET)echo " words: $(shell $(CMD_COUNT_WORDS)) (roughly)"
|