Open hernot opened 1 year ago
ho do i tell latexdiff to not just put \DIFdelbegin
, \DIFdelend
, \DIFaddbegin
and DIFaddend
tokens when removing picture
form PICTUREENV
variable but also enclose changed text within \DIFdel
DIFadd
commands which do the actual coloring
EDIT 1
Adding ---append-safecmd
to enable put
makebox
smash
commands and -config
to make latexdiff to report individual changes inside picture is half of the trick. For the rest i do fear i will have for now to do my own preamble redefining \put
and disable \color
command when inside DIFadd
wrapped \put
command
# for simplicity included here as expanded string
packages="fontenc,inputenc,calc,indentfirst,fancyhdr,graphicx,show:fontenc,inputenc,calc,indentfirst,fancyhdr,graphicx,epstopdf,lastpage,ifthen,lineno,float,amsmath,setspace,enumitem,mathpazo,booktabs,titlesec,etoolbox,tabto,xcolor,soul,multirow,microtype,tikz,totcount,changepage,attrib,upgreek,cleveref,amsthm,hyphenat,natbib,hyperref,footmisc,url,geometry,newfloat,caption,moresize,graphicx,subfigure,calc,units,bm"
for f in *.tex images/*.pdf_tex tables/*.tex ;do
latexdiff --packages="$packages" --type=CCHANGEBAR --append-context2cmd="abstract" --driver=pdftex --append-safecmd="makebox,put,smash" --config="PICTUREENV=tikzpicture[\w\d*@]*;DIFnomarkup;" test/$f $f > diff/$f
done
EDIT 2 Ok figured the second part too. It worked with a small filter (*) and a custom preamble which are both attached. Tried to keep it as clean and least hacky as possible. The call looks now as follows
# for simplicity included here as expanded string
packages="fontenc,inputenc,calc,indentfirst,fancyhdr,graphicx,show:fontenc,inputenc,calc,indentfirst,fancyhdr,graphicx,epstopdf,lastpage,ifthen,lineno,float,amsmath,setspace,enumitem,mathpazo,booktabs,titlesec,etoolbox,tabto,xcolor,soul,multirow,microtype,tikz,totcount,changepage,attrib,upgreek,cleveref,amsthm,hyphenat,natbib,hyperref,footmisc,url,geometry,newfloat,caption,moresize,graphicx,subfigure,calc,units,bm"
for f in *.tex images/*.pdf_tex tables/*.tex ;do
# NOTE: the '--append-safecms="makebox,put,smash" would not be necessary' as latexdiff does mark the
# whole '\put' sequence mark as changed and not just the content of '\makebox' anyway
latexdiff --packages="$packages" --type=CCHANGEBAR --append-context2cmd="abstract" --driver=pdftex --append-safecmd="makebox,put,smash" --config="PICTUREENV=tikzpicture[\w\d*@]*;DIFnomarkup;" test/$f $f > diff/$f
done
latexdif_filter_pls_preamble.zip
The filter is thee simple substitute command replacing picture
environment by its DIF
pendents and \color
command by \DIFcolor
on all files. And the rest is handled by preamble.
And the result looks like this:
(*) Filter is in unix shell plus sed as my perl knowledge is from last century, did not seriously practice perl since shortly after start of this century.
I do have a figure which consists of a tex file which uses picture environment to overlay pdf picture with text typeset by latex. Some of the label textshave changed. In order to indicate which texts have changed i i want to use the same highlighting for these labels as for regular text or in caption.
How can i tell latex diff to not just frame the figure but highlight the changed labels one by one showing which was changed and if really fancy how.
Attached the original file (inside
test/
) includingpdf
andpdf_tex and the
pdf_tex.zipAs i have a large nested document i run these in shell using
Alternatively which lines in the source should i check to make this work if currently not possible yet (*).
(*) its years and years since last touching perl so would prefer if achievable without