summaryrefslogtreecommitdiff
path: root/fixupdiff.pl
diff options
context:
space:
mode:
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/;