pdflatex outputs .log files in iso-8859-1 encoding.  In our build
scripts, grep assumes UTF-8 encoding for its input by default.

Practically speaking, the mismatch of encoding is unlikely to cause
any harm.  That said, in the build log, there is a suspicious message
from grep:

    ...
    pdflatex 1 for perfbook.pdf
    grep: perfbook.log: binary file matches     <===
    ...

Converting .log files into UTF-8 on-the-fly can avoid the message.

Let's do it.

Signed-off-by: Akira Yokosawa <[email protected]>
---
Note 1:
  Unicode ready modern engines such as XeTeX and LuaTex emit .log
  files in UTF-8 encoding.

Note 2:
  Currently, perfbook's preamble is not compatible with lualatex
  or xelatex.

Note 3:
  iconv should be available by default.
  encguess should also be available where perl is installed.
--
 utilities/runfirstlatex.sh | 10 ++++++++++
 utilities/runlatex.sh      | 10 ++++++++++
 2 files changed, 20 insertions(+)

diff --git a/utilities/runfirstlatex.sh b/utilities/runfirstlatex.sh
index a89e8a70..676502b2 100644
--- a/utilities/runfirstlatex.sh
+++ b/utilities/runfirstlatex.sh
@@ -72,6 +72,16 @@ basename=`echo $1 | sed -e 's/\.tex$//'`
 echo "$LATEX 1 for $basename.pdf"
 $LATEX $LATEX_OPT $basename > /dev/null 2>&1 < /dev/null
 exitcode=$?
+ENCGUESS_CMD=`command -v encguess`
+if [ "x$ENCGUESS_CMD" != "x" ]
+then
+       if encguess -s iso-8859-1 $basename.log | grep -q ISO-8859-1
+       then
+               mv $basename.log $basename-tmp.log
+               iconv -f ISO-8859-1 -t UTF-8 $basename-tmp.log > $basename.log
+               rm $basename-tmp.log
+       fi
+fi
 if grep -q 'LaTeX Warning: You have requested' $basename.log
 then
        grep -A 4 'LaTeX Warning: You have requested' $basename.log
diff --git a/utilities/runlatex.sh b/utilities/runlatex.sh
index 358b6baf..17d833ad 100644
--- a/utilities/runlatex.sh
+++ b/utilities/runlatex.sh
@@ -79,6 +79,16 @@ iterate_latex () {
        makeglossaries $basename > /dev/null 2>&1
        $LATEX $LATEX_OPT $basename > /dev/null 2>&1 < /dev/null
        exitcode=$?
+       ENCGUESS_CMD=`command -v encguess`
+       if [ "x$ENCGUESS_CMD" != "x" ]
+       then
+               if encguess -s iso-8859-1 $basename.log | grep -q ISO-8859-1
+               then
+                       mv $basename.log $basename-tmp.log
+                       iconv -f ISO-8859-1 -t UTF-8 $basename-tmp.log > 
$basename.log
+                       rm $basename-tmp.log
+               fi
+       fi
        if grep -q '! Emergency stop.' $basename.log
        then
                grep -B 10 -A 5 '! Emergency stop.' $basename.log

base-commit: a1bf2e61230301bfc12eba19abfc1c5a880f53be
-- 
2.43.0


Reply via email to