112 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/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=('test-bench-flexible-joints.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)
 | |
| $pdf_mode = 1;
 | |
| 
 | |
| # 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
 | |
| $show_time = 1;
 | |
| 
 | |
| # 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.
 | |
| $max_repeat=7;
 | |
| 
 | |
| # --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
 | |
| $pdf_previewer = 'zathura';
 | |
| 
 | |
| # 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*.*";
 |