2023-06-30 20:01:22 +02:00
|
|
|
#!/bin/env perl
|
|
|
|
|
|
|
|
# Shebang is only to get syntax highlighting right across GitLab, GitHub and IDEs.
|
|
|
|
# This file is not meant to be run, but read by `latexmk`.
|
|
|
|
|
|
|
|
# ======================================================================================
|
|
|
|
# Perl `latexmk` configuration file
|
|
|
|
# ======================================================================================
|
|
|
|
|
|
|
|
# ======================================================================================
|
|
|
|
# PDF Generation/Building/Compilation
|
|
|
|
# ======================================================================================
|
|
|
|
|
|
|
|
@default_files=('nass-uniaxial-model.tex');
|
|
|
|
|
|
|
|
# PDF-generating modes are:
|
|
|
|
# 1: pdflatex, as specified by $pdflatex variable (still largely in use)
|
|
|
|
# 2: postscript conversion, as specified by the $ps2pdf variable (useless)
|
|
|
|
# 3: dvi conversion, as specified by the $dvipdf variable (useless)
|
|
|
|
# 4: lualatex, as specified by the $lualatex variable (best)
|
|
|
|
# 5: xelatex, as specified by the $xelatex variable (second best)
|
2024-03-21 18:26:57 +01:00
|
|
|
$pdf_mode = 4;
|
2023-06-30 20:01:22 +02:00
|
|
|
|
|
|
|
# Treat undefined references and citations as well as multiply defined references as
|
|
|
|
# ERRORS instead of WARNINGS.
|
|
|
|
# This is only checked in the *last* run, since naturally, there are undefined references
|
|
|
|
# in initial runs.
|
|
|
|
# This setting is potentially annoying when debugging/editing, but highly desirable
|
|
|
|
# in the CI pipeline, where such a warning should result in a failed pipeline, since the
|
|
|
|
# final document is incomplete/corrupted.
|
|
|
|
#
|
|
|
|
# However, I could not eradicate all warnings, so that `latexmk` currently fails with
|
|
|
|
# this option enabled.
|
|
|
|
# Specifically, `microtype` fails together with `fontawesome`/`fontawesome5`, see:
|
|
|
|
# https://tex.stackexchange.com/a/547514/120853
|
|
|
|
# The fix in that answer did not help.
|
|
|
|
# Setting `verbose=silent` to mute `microtype` warnings did not work.
|
|
|
|
# Switching between `fontawesome` and `fontawesome5` did not help.
|
|
|
|
$warnings_as_errors = 0;
|
|
|
|
|
|
|
|
# Show used CPU time. Looks like: https://tex.stackexchange.com/a/312224/120853
|
2024-03-21 18:26:57 +01:00
|
|
|
$show_time = 0;
|
2023-06-30 20:01:22 +02:00
|
|
|
|
|
|
|
# Default is 5; we seem to need more owed to the complexity of the document.
|
|
|
|
# Actual documents probably don't need this many since they won't use all features,
|
|
|
|
# plus won't be compiling from cold each time.
|
2024-03-21 18:26:57 +01:00
|
|
|
$max_repeat=10;
|
2023-06-30 20:01:22 +02:00
|
|
|
|
|
|
|
# --shell-escape option (execution of code outside of latex) is required for the
|
|
|
|
#'svg' package.
|
|
|
|
# It converts raw SVG files to the PDF+PDF_TEX combo using InkScape.
|
|
|
|
#
|
|
|
|
# SyncTeX allows to jump between source (code) and output (PDF) in IDEs with support
|
|
|
|
# (many have it). A value of `1` is enabled (gzipped), `-1` is enabled but uncompressed,
|
|
|
|
# `0` is off.
|
|
|
|
# Testing in VSCode w/ LaTeX Workshop only worked for the compressed version.
|
|
|
|
# Adjust this as needed. Of course, only relevant for local use, no effect on a remote
|
|
|
|
# CI pipeline (except for slower compilation, probably).
|
|
|
|
#
|
|
|
|
# %O and %S will forward Options and the Source file, respectively, given to latexmk.
|
|
|
|
#
|
|
|
|
# `set_tex_cmds` applies to all *latex commands (latex, xelatex, lualatex, ...), so
|
|
|
|
# no need to specify these each. This allows to simply change `$pdf_mode` to get a
|
|
|
|
# different engine. Check if this works with `latexmk --commands`.
|
|
|
|
set_tex_cmds("--shell-escape -interaction=nonstopmode --synctex=1 %O %S");
|
|
|
|
|
|
|
|
# Use default pdf viewer
|
2024-03-21 18:26:57 +01:00
|
|
|
$pdf_update_method = 1;
|
|
|
|
$pdf_previewer = "zathura %O %S";
|
2023-06-30 20:01:22 +02:00
|
|
|
|
|
|
|
# option 2 is same as 1 (run biber when necessary), but also deletes the
|
|
|
|
# regeneratable bbl-file in a clenaup (`latexmk -c`). Do not use if original
|
|
|
|
# bib file is not available!
|
|
|
|
$bibtex_use = 2; # default: 1
|
|
|
|
|
|
|
|
# Change default `biber` call, help catch errors faster/clearer. See
|
|
|
|
# https://web.archive.org/web/20200526101657/https://www.semipol.de/2018/06/12/latex-best-practices.html#database-entries
|
|
|
|
$biber = "biber --validate-datamodel %O %S";
|
|
|
|
|
|
|
|
# Glossaries
|
|
|
|
add_cus_dep('glo', 'gls', 0, 'run_makeglossaries');
|
|
|
|
add_cus_dep('acn', 'acr', 0, 'run_makeglossaries');
|
|
|
|
|
|
|
|
sub run_makeglossaries {
|
|
|
|
if ( $silent ) {
|
|
|
|
system "makeglossaries -q -s '$_[0].ist' '$_[0]'";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
system "makeglossaries -s '$_[0].ist' '$_[0]'";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
# ======================================================================================
|
|
|
|
# Auxiliary Files
|
|
|
|
# ======================================================================================
|
|
|
|
|
|
|
|
# Let latexmk know about generated files, so they can be used to detect if a
|
|
|
|
# rerun is required, or be deleted in a cleanup.
|
|
|
|
# loe: List of Examples (KOMAScript)
|
|
|
|
# lol: List of Listings (`listings` and `minted` packages)
|
|
|
|
# run.xml: biber runs
|
|
|
|
# glg: glossaries log
|
|
|
|
# glstex: generated from glossaries-extra
|
|
|
|
push @generated_exts, 'loe', 'lol', 'run.xml', 'glstex', 'glo', 'gls', 'glg', 'acn', 'acr', 'alg';
|
|
|
|
|
|
|
|
# Also delete the *.glstex files from package glossaries-extra. Problem is,
|
|
|
|
# that that package generates files of the form "basename-digit.glstex" if
|
|
|
|
# multiple glossaries are present. Latexmk looks for "basename.glstex" and so
|
|
|
|
# does not find those. For that purpose, use wildcard.
|
|
|
|
# Also delete files generated by gnuplot/pgfplots contour plots
|
|
|
|
# (.dat, .script, .table).
|
|
|
|
$clean_ext = "%R-*.glstex %R_contourtmp*.*";
|