diff options
author | mstsirkin <mstsirkin@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652> | 2014-06-26 12:34:38 +0000 |
---|---|---|
committer | mstsirkin <mstsirkin@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652> | 2014-06-26 12:34:38 +0000 |
commit | b665b3165b454b98c782617e37a128b53b56c89c (patch) | |
tree | 5694dda17044311e52ecdc4ac7fd781a8334201b | |
parent | 2cb1be86ca0bdb5d7a7c2febba6744d2ab8959e2 (diff) |
work around xetex bug
Too many \color directives produce corrupted output
and this warning:
WARNING ** Color stack overflow. Just ignore.
Use script to reduce # of these directives.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio@389 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652
-rw-r--r-- | diffpreamble.tex | 2 | ||||
-rwxr-xr-x | fixupdiff.pl | 18 | ||||
-rwxr-xr-x | makediffpdf.sh | 2 |
3 files changed, 22 insertions, 0 deletions
diff --git a/diffpreamble.tex b/diffpreamble.tex index 6dc177c..8abb737 100644 --- a/diffpreamble.tex +++ b/diffpreamble.tex @@ -13,6 +13,8 @@ \providecommand{\DIFdelbegin}{\protect\color{red}} \providecommand{\DIFdelend}{\protect\color{black}} %DIF END COLOR PREAMBLE +\providecommand{\DIFaddtext}[1]{\textcolor{blue}{\sf #1}} +\providecommand{\DIFdeltext}[1]{\textcolor{red}{\footnotesize \sout{#1}}} %DIF FLOATSAFE PREAMBLE: SEEMS UNUSED BUT JUST IN CASE \providecommand{\DIFaddFL}[1]{\DIFadd{#1}} diff --git a/fixupdiff.pl b/fixupdiff.pl new file mode 100755 index 0000000..69d4e6e --- /dev/null +++ b/fixupdiff.pl @@ -0,0 +1,18 @@ +#!/usr/bin/perl -pi + +# Too many \color directives (generated by DIFdel/addbegin/end) +# confuse xetex, producing errors: +# WARNING ** Color stack overflow. Just ignore. +# and resulting in corrupted color in output. +# As a work-around, detect cases where it's safe, and replace \color with +# \textcolor. +# As a result, number of \color directives goes does sufficiently +# enough to avoid the overflow error. + +s/\\DIFdelbegin \\DIFdel{([^}]*)}\\DIFdelend/\\DIFdeltext{$1}/; +s/\\DIFaddbegin \\DIFadd{([^}]*)}\\DIFaddend/\\DIFaddtext{$1}/; + +# external \color does not seem to apply to footnotes. +# detect and replace with \textcolor within footnotes +s/(\\footnote\s*{[^}]*)\\DIFadd{/$1\\DIFaddtext{$2/; +s/(\\footnote\s*{[^}]*)\\DIFdel{/$1\\DIFdeltext{$2/; diff --git a/makediffpdf.sh b/makediffpdf.sh index 2eb2fbd..34904bf 100755 --- a/makediffpdf.sh +++ b/makediffpdf.sh @@ -28,6 +28,8 @@ cd "${cur}" #wget http://mirror.math.ku.edu/tex-archive/support/latexdiff/latexdiff-fast #chmod +x latexdiff-fast latexdiff-fast -p diffpreamble.tex old/flat.tex new/flat.tex > virtio-diff.tex +perl -pi fixupdiff.pl virtio-diff.tex +SPECDOC="${SPECDOC}-diff" rm $SPECDOC.aux $SPECDOC.pdf $SPECDOC.out xelatex --jobname $SPECDOC virtio-diff.tex xelatex --jobname $SPECDOC virtio-diff.tex |