summaryrefslogtreecommitdiff
path: root/fixupdiff.pl
diff options
context:
space:
mode:
authormstsirkin <mstsirkin@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652>2014-06-26 12:34:38 +0000
committermstsirkin <mstsirkin@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652>2014-06-26 12:34:38 +0000
commitb665b3165b454b98c782617e37a128b53b56c89c (patch)
tree5694dda17044311e52ecdc4ac7fd781a8334201b /fixupdiff.pl
parent2cb1be86ca0bdb5d7a7c2febba6744d2ab8959e2 (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
Diffstat (limited to 'fixupdiff.pl')
-rwxr-xr-xfixupdiff.pl18
1 files changed, 18 insertions, 0 deletions
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/;