Browse Source

add tex makefile to the project

master
Constantin Fürst 1 year ago
parent
commit
d873d749a1
  1. 1
      .gitignore
  2. 100
      thesis/Makefile

1
.gitignore

@ -56,7 +56,6 @@ CMakeCache.txt
CMakeFiles CMakeFiles
CMakeScripts CMakeScripts
Testing Testing
Makefile
cmake_install.cmake cmake_install.cmake
install_manifest.txt install_manifest.txt
compile_commands.json compile_commands.json

100
thesis/Makefile

@ -0,0 +1,100 @@
#####################################################################
# 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)"
Loading…
Cancel
Save