Skip to content

Commit

Permalink
runLaTeX: rerun at least twice + refactor (#104185)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
ilyakooo0 committed Nov 27, 2020
1 parent f5edf8a commit eb7d367
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions pkgs/tools/typesetting/tex/nix/run-latex.sh
Expand Up @@ -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 \
Expand All @@ -51,6 +55,7 @@ runLaTeX() {
"$tmpFile"; then
runNeeded=1
fi
echo
}

echo
Expand All @@ -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
Expand All @@ -89,11 +91,8 @@ for auxFile in $(find . -name "*.aux"); do
fi
done


if test "$runNeeded"; then
echo "PASS 2..."
runLaTeX
echo
fi


Expand All @@ -105,20 +104,18 @@ if test -f $rootNameBase.idx; then
makeindex $makeindexFlags $rootNameBase.idx
runNeeded=1
echo
fi

fi

if test "$runNeeded"; then
echo "PASS 3..."
# 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
echo
fi


if test "$runNeeded"; then
echo "PASS 4..."
runLaTeX
echo
fi


Expand Down

0 comments on commit eb7d367

Please sign in to comment.