From 6427ae63ec4416006898e1577e8c81462b490d4a Mon Sep 17 00:00:00 2001 From: Daniel Rosel Date: Fri, 10 Apr 2026 08:30:48 +0200 Subject: [PATCH] fixing paper build --- Makefile | 4 ++-- paper/.latexmkrc | 18 ++++++++++++++++ paper/src/chapters/mdp_agent.pdf | Bin 10932 -> 10931 bytes paper/src/chapters/mdp_human.pdf | Bin 11953 -> 11953 bytes scripts/nx_paper.sh | 35 ++++++++++++++++++------------- 5 files changed, 40 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 315651e..cc9711f 100644 --- a/Makefile +++ b/Makefile @@ -253,8 +253,8 @@ test: count-lines: @$(NX) run research:stats -all: - @$(NX) run paper:build +# Default artifact set for this repo: thesis PDF (same as pdf). +all: pdf .PHONY: manim.defense manim.defense.hq manim.render manim.render.full manim.render.poster manim.render.appendix manim.render.all # Main defense reel (paper/defense/manim/render_defense); uses paper/defense/.venv when present diff --git a/paper/.latexmkrc b/paper/.latexmkrc index e1b5f1f..6ee0b36 100644 --- a/paper/.latexmkrc +++ b/paper/.latexmkrc @@ -4,5 +4,23 @@ $bibtex_use = 2; # run biber when biblatex .bcf changes # biber cwd is paper/build; scripts/nx_paper.sh symlinks ../build/bib -> ../src/bib so # datasources log as bib/references.bib and latexmk's -e check works from paper/src $biber = 'biber %O %S'; + +# Stale latexmk db: biblatex uses biber + .bcf, but the fdb can keep a "bibtex" rule after a bad +# run. Then biber never runs and citations stay undefined. Read whole fdb (small) so the rule +# line is never missed after a long dependency list. +for my $job (qw(main main-genpop summary)) { + my $bcf = "../build/$job.bcf"; + my $bbl = "../build/$job.bbl"; + my $fdb = "../build/$job.fdb_latexmk"; + next unless -e $fdb && -e $bcf; + my $drop = !-e $bbl; + if ( !$drop && open my $fh, '<', $fdb ) { + local $/; + my $body = <$fh>; + close $fh; + $drop = 1 if defined $body && $body =~ /\["bibtex $job"\]/; + } + unlink $fdb if $drop; +} $pdf_previewer = 'zathura %O %S'; $clean_ext = 'synctex.gz bbl bcf run.xml fls fdb_latexmk glg glo gls ist blg lof lot out toc'; diff --git a/paper/src/chapters/mdp_agent.pdf b/paper/src/chapters/mdp_agent.pdf index 23cb6e410d59733ee28fbc90b1222f23d31e729e..21460dfb20d52faa2eb8283c3f01db8a7948e373 100644 GIT binary patch delta 320 zcmV-G0l)sVRkKyFe<**0FcgK~{T1hBOc`jR*4iR{s6rWIAZ_2q9zqOO7)Fvf)_=c5 zt7GKpe%zCD4wr&>G{c5?G3bVRbc&Hg zT@@!K#{os*1~<TxcY# z=fw)SnZs*)hkp|VOJ>-YY#;sX4IcIE(l7M zf{Bc!EEi&ta{j`^Gh_3~@whwOVI^kD1Gte}ZeygJIR?%_43(%(y{76<0Mv=wh z;d$~xp^{s#AYe(4wbe{V>WkSQMmI53m3Db5VVKrzi-3=9C} TxCuOyiz*-pG72RnMNdWw1C5>E diff --git a/paper/src/chapters/mdp_human.pdf b/paper/src/chapters/mdp_human.pdf index 3aa8ceb78da934f89db4f5eff70f5d330f5e6750..e3247c8c7f361640ee1b6dcb1e61a52b10c60122 100644 GIT binary patch delta 291 zcmV+;0o?wvU9nxTdn|v!YQr!PMDO~Fxs*B-Y)N)(H<%ofKq#dUlHN)WLKcpoSVodd z^Y@jUIHl;cj~&en%RmV$v8059Eg4}I@~R|FgY5k>C}aoGDMtWguex>k00+eppA*`e zvG-tPy`B^YYuZsNi$n@-4Oq(Rv_Nw9esHTSn`mdnaMseL#&&;;#q}Gjgx99u39pds zR-E#Z7L3w5r>uCQ{E^bdZ1NWi55YR>55lULBPN@`n`*V#n4b`rhR2`F8oXRq_t?D; z0*B(R*jqCWXqq_0`RX#!8Jz;PqIW}dlb0F4z}r#H(>84F)VG%ExZgw=Qb&GN&Wu(n phy3n&3PS0x;awKE!@q)C;l-EfZvDayZuP>_FZlFtNVAVEA^{pfl&$~( delta 291 zcmV+;0o?wvU9nxTdn|uZYr-%Th2Qfl&dXS3&?aeZRf-QP$QT1r-^Lz78fsuPB}vEp z_e-jEj6B_sdveaRU^7+;1WbsUtrsX9g>k pL;mnQ1)=n}@GchI;a|b6@Z!s~_kQ69_j+OJ7yfr|O|y?JA^~Xfkyro# diff --git a/scripts/nx_paper.sh b/scripts/nx_paper.sh index 44bce3c..9a864c9 100644 --- a/scripts/nx_paper.sh +++ b/scripts/nx_paper.sh @@ -27,18 +27,17 @@ link_build_bib() { ln -sfn ../src/bib ../build/bib } -# latexmk can exit non-zero with "biber ... gave an error in previous invocation" while the PDF is -# already fine: incremental runs skip biber but keep a stale failure bit in main.fdb_latexmk. -# One forced cycle (-g) re-runs biber and clears that state. -latexmk_paper() { - local job="$1" - local tex="$2" - local -a common - common=( -pdf -jobname="$job" -f -interaction=nonstopmode -file-line-error -r ../.latexmkrc -outdir=../build ) - latexmk "${common[@]}" "$tex" || { - printf '%s\n' "latexmk failed; retrying once with -g (clear stale biber/latexmk state)" >&2 - latexmk -g "${common[@]}" "$tex" - } +# Biblatex uses biber; a stale latexmk fdb can still record ["bibtex "], so latexmk skips +# biber, main.bbl is missing or wrong, and every citation stays undefined. Drop only that case. +drop_stale_latexmk_bibtex_fdb() { + local job fdb tag + for job in main main-genpop summary; do + fdb="../build/${job}.fdb_latexmk" + tag=$(printf '["bibtex %s"]' "$job") + if [[ -f "$fdb" ]] && grep -Fq "$tag" "$fdb"; then + rm -f "$fdb" + fi + done } case "$cmd" in @@ -48,13 +47,15 @@ case "$cmd" in bash paper/concat_code.sh cd paper/src link_build_bib - latexmk_paper main main.tex + drop_stale_latexmk_bibtex_fdb + latexmk -pdf -jobname=main -f -interaction=nonstopmode -file-line-error -r ../.latexmkrc -outdir=../build main.tex ;; watch) mkdir -p paper/build sync_mdp_figures cd paper/src link_build_bib + drop_stale_latexmk_bibtex_fdb latexmk -pvc -pdf -jobname=main -f -interaction=nonstopmode -file-line-error -r ../.latexmkrc -outdir=../build main.tex ;; clean) @@ -77,13 +78,15 @@ case "$cmd" in sync_mdp_figures cd paper/src link_build_bib - latexmk_paper main-genpop main-genpop.tex + drop_stale_latexmk_bibtex_fdb + latexmk -pdf -jobname=main-genpop -f -interaction=nonstopmode -file-line-error -r ../.latexmkrc -outdir=../build main-genpop.tex ;; watch-genpop) mkdir -p paper/build sync_mdp_figures cd paper/src link_build_bib + drop_stale_latexmk_bibtex_fdb latexmk -pvc -pdf -jobname=main-genpop -f -interaction=nonstopmode -file-line-error -r ../.latexmkrc -outdir=../build main-genpop.tex ;; build-arxiv) @@ -99,12 +102,14 @@ case "$cmd" in mkdir -p paper/build cd paper/src link_build_bib - latexmk_paper summary summary.tex + drop_stale_latexmk_bibtex_fdb + latexmk -pdf -jobname=summary -f -interaction=nonstopmode -file-line-error -r ../.latexmkrc -outdir=../build summary.tex ;; watch-summary) mkdir -p paper/build cd paper/src link_build_bib + drop_stale_latexmk_bibtex_fdb latexmk -pvc -pdf -jobname=summary -f -interaction=nonstopmode -file-line-error -r ../.latexmkrc -outdir=../build summary.tex ;; *)