From eb7d36720048f6df6f830ab61f143f823b43e073 Mon Sep 17 00:00:00 2001 From: iko Date: Fri, 27 Nov 2020 20:32:29 +0300 Subject: [PATCH] runLaTeX: rerun at least twice + refactor (#104185) Building a simple LaTeX document without bibTeX with a table of contents yielded a document with an empty table of contents since LaTeX was only run once --- pkgs/tools/typesetting/tex/nix/run-latex.sh | 27 +++++++++------------ 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/pkgs/tools/typesetting/tex/nix/run-latex.sh b/pkgs/tools/typesetting/tex/nix/run-latex.sh index 7a5767f9c063..3f8a16580ea5 100644 --- a/pkgs/tools/typesetting/tex/nix/run-latex.sh +++ b/pkgs/tools/typesetting/tex/nix/run-latex.sh @@ -41,7 +41,11 @@ showError() { exit 1 } +pass=0 + runLaTeX() { + ((pass=pass+1)) + echo "PASS $pass..." if ! $latex $latexFlags $rootName >$tmpFile 2>&1; then showError; fi runNeeded= if fgrep -q \ @@ -51,6 +55,7 @@ runLaTeX() { "$tmpFile"; then runNeeded=1 fi + echo } echo @@ -61,10 +66,7 @@ if test -n "$copySources"; then fi -echo "PASS 1..." runLaTeX -echo - for auxFile in $(find . -name "*.aux"); do # Run bibtex to process all bibliographies. There may be several @@ -89,11 +91,8 @@ for auxFile in $(find . -name "*.aux"); do fi done - if test "$runNeeded"; then - echo "PASS 2..." runLaTeX - echo fi @@ -105,20 +104,18 @@ if test -f $rootNameBase.idx; then makeindex $makeindexFlags $rootNameBase.idx runNeeded=1 echo -fi - - -if test "$runNeeded"; then - echo "PASS 3..." - runLaTeX - echo fi +# We check that pass is less than 2 to catch situations where the document is +# simple enough (no bibtex, etc.) so that it would otherwise require only one +# pass but also contains a ToC. +# In essence this check ensures that we do at least two passes on all documents. +if test "$runNeeded" = 1 -o "$pass" -lt 2 ; then + runLaTeX +fi if test "$runNeeded"; then - echo "PASS 4..." runLaTeX - echo fi