On Wed, 2014-06-25 at 13:24 +0100, Michael S. Tsirkin wrote:
> OK I will try this but I note this gives us back
> DIFaddbegin/DIFaddend.
> You are saying with egingroup/endgroup color stack
> overflow errors go away? Yes. Commands like color apply to a single group, usually marked with curly brackets {xxx}, with group and egingroup (there's some subtle difference I don't really understand; enough to say that group didn't work for me ;-). I have no idea why are they pushed to a stack, if there seem to be no pop operation, but just enclosing a change in a separate group seems enough. That's what my first proposal did (notice extra {} in DIFaddtex), but as you pointed out it missed some bits.
> How about footnotes?
> Is there a way to fix them without an external script?
> Would be nice if the footnote mark was also crossed-out ... Right, my first version did it, then I forgot to check it. Anyway, this (slightly suboptimal, but I couldn't care less) should cover all cases (I see footnotes on page 59 coloured): 8<
----------------------
%DIF FONTSTRIKE PREAMBLE RequirePackage[normalem]{ulem} providecommand{DIFaddtex}[1]{color{blue}sf #1} providecommand{DIFdeltex}[1]{color{red}footnotesize sout{#1}} %DIF END FONTSTRIKE PREAMBLE %DIF COLOR PREAMBLE RequirePackage{color} providecommand{DIFaddbegin}{egingroupcolor{blue}} providecommand{DIFaddend}{endgroup} providecommand{DIFdelbegin}{egingroup color{red}hypersetup{linkcolor=red,urlcolor=red}} providecommand{DIFdelend}{hypersetup{linkcolor=green,urlcolor=green}endgroup} %DIF END COLOR PREAMBLE % Standard DIFadd and DIFdel are redefined as DIFaddtex and DIFdeltex % when hyperref package is included. %DIF HYPERREF PREAMBLE providecommand{DIFadd}[1]{ exorpdfstring{DIFaddtex{#1}}{#1}} providecommand{DIFdel}[1]{ exorpdfstring{DIFdeltex{#1}}{}} %DIF END HYPERREF PACKAGE %DIF FLOATSAFE PREAMBLE: SEEMS UNUSED BUT JUST IN CASE providecommand{DIFaddFL}[1]{DIFaddtex{#1}} providecommand{DIFdelFL}[1]{DIFdeltex{#1}} providecommand{DIFaddbeginFL}{} providecommand{DIFaddendFL}{} providecommand{DIFdelbeginFL}{} providecommand{DIFdelendFL}{} %DIF END FLOATSAFE PREAMBLE 8<
----------------------
> And since I'm asking for ponies anyway ... do
> you happen to understand why does latexdiff do this:
> DIFdelbegin DIFdel{.}footnote{DIFdeltext{In this case, deflation
> advice is merely a courtesy > }} >
%DIFAUXCMD
> addtocounter{footnote}{-1}%DIFAUXCMD
> DIFdelend DIFaddbegin footnote{DIFaddtext{In this case, deflation
> advice is merely a courtesy. > }}DIFadd{. >
}DIFaddend >
> why does it not detect that we merely added a single dot at the end? >
> It seems to do if fine in other cases.