latexdiff
On github... latexdiff
> latexdiff -h Usage: /Library/TeX/texbin/latexdiff [options] old.tex new.tex > diff.tex Compares two latex files and writes tex code to stdout, which has the same format as new.tex but has all changes relative to old.tex marked up or commented. --type=markupstyle -t markupstyle Add code to preamble for selected markup style Available styles: UNDERLINE CTRADITIONAL TRADITIONAL CFONT FONTSTRIKE INVISIBLE CHANGEBAR CCHANGEBAR CULINECHBAR CFONTCBHBAR BOLD [ Default: UNDERLINE ] --subtype=markstyle -s markstyle Add code to preamble for selected style for bracketing commands (e.g. to mark changes in margin) Available styles: SAFE MARGIN DVIPSCOL COLOR ZLABEL ONLYCHANGEDPAGE (LABEL)* [ Default: SAFE ] * LABEL subtype is deprecated --floattype=markstyle -f markstyle Add code to preamble for selected style which replace standard marking and markup commands within floats (e.g., marginal remarks cause an error within floats so marginal marking can be disabled thus) Available styles: FLOATSAFE IDENTICAL [ Default: FLOATSAFE ] --encoding=enc -e enc Specify encoding of old.tex and new.tex. Typical encodings are ascii, utf8, latin1, latin9. A list of available encodings can be obtained by executing perl -MEncode -e 'print join ("\n",Encode->encodings( ":all" )) ;' [Default encoding is utf8 unless the first few lines of the preamble contain an invocation "\usepackage[..]{inputenc} in which case the encoding chosen by this command is asssumed. Note that ASCII (standard latex) is a subset of utf8] --preamble=file -p file Insert file at end of preamble instead of auto-generating preamble. The preamble must define the following commands \DIFaddbegin,\DIFaddend,\DIFadd{..}, \DIFdelbegin,\DIFdelend,\DIFdel{..}, and varieties for use within floats \DIFaddbeginFL,\DIFaddendFL,\DIFaddFL{..}, \DIFdelbeginFL,\DIFdelendFL,\DIFdelFL{..} (If this option is set -t, -s, and -f options are ignored.) --exclude-safecmd=exclude-file --exclude-safecmd="cmd1,cmd2,..." -A exclude-file --replace-safecmd=replace-file --append-safecmd=append-file --append-safecmd="cmd1,cmd2,..." -a append-file Exclude from, replace or append to the list of regex matching commands which are safe to use within the scope of a \DIFadd or \DIFdel command. The file must contain one Perl-RegEx per line (Comment lines beginning with # or % are ignored). A literal comma within the comma-separated list must be escaped thus "\,", Note that the RegEx needs to match the whole of the token, i.e., /^regex$/ is implied and that the initial "\" of the command is not included. The --exclude-safecmd and --append-safecmd options can be combined with the --replace-safecmd option and can be used repeatedly to add cumulatively to the lists. --exclude-textcmd=exclude-file --exclude-textcmd="cmd1,cmd2,..." -X exclude-file --replace-textcmd=replace-file --append-textcmd=append-file --append-textcmd="cmd1,cmd2,..." -x append-file Exclude from, replace or append to the list of regex matching commands whose last argument is text. See entry for --exclude-safecmd directly above for further details. --replace-context1cmd=replace-file --append-context1cmd=append-file --append-context1cmd="cmd1,cmd2,..." Replace or append to the list of regex matching commands whose last argument is text but which require a particular context to work, e.g. \caption will only work within a figure or table. These commands behave like text commands, except when they occur in a deleted section, when they are disabled, but their argument is shown as deleted text. --replace-context2cmd=replace-file --append-context2cmd=append-file --append-context2cmd="cmd1,cmd2,..." As corresponding commands for context1. The only difference is that context2 commands are completely disabled in deleted sections, including their arguments. --exclude-mboxsafecmd=exclude-file --exclude-mboxsafecmd="cmd1,cmd2,..." --append-mboxsafecmd=append-file --append-mboxsafecmd="cmd1,cmd2,..." Define safe commands, which additionally need to be protected by encapsulating in an \mbox{..}. This is sometimes needed to get around incompatibilities between external packages and the ulem package, which is used for highlighting in the default style UNDERLINE as well as CULINECHBAR CFONTSTRIKE --config var1=val1,var2=val2,... -c var1=val1,.. Set configuration variables. -c configfile Available variables: ARRENV (RegEx) COUNTERCMD (RegEx) FLOATENV (RegEx) ITEMCMD (RegEx) LISTENV (RegEx) MATHARRENV (RegEx) MATHARRREPL (String) MATHENV (RegEx) MATHREPL (String) MINWORDSBLOCK (integer) PICTUREENV (RegEx) This option can be repeated. --packages=pkg1,pkg2,.. Tell latexdiff that .tex file is processed with the packages in list loaded. This is normally not necessary if the .tex file includes the preamble, as the preamble is automatically scanned for \usepackage commands. Use of the --packages option disables automatic scanning, so if for any reason package specific parsing needs to be switched off, use --packages=none. The following packages trigger special behaviour: endfloat hyperref amsmath apacite siunitx cleveref glossaries mhchem chemformula/chemmacros [ Default: scan the preamble for \usepackage commands to determine loaded packages.] --show-preamble Print generated or included preamble commands to stdout. --show-safecmd Print list of regex matching and excluding safe commands. --show-textcmd Print list of regex matching and excluding commands with text argument. --show-config Show values of configuration variables --show-all Show all of the above NB For all --show commands, no old.tex or new.tex file needs to be given, and no differencing takes place. Other configuration options: --allow-spaces Allow spaces between bracketed or braced arguments to commands [Default requires arguments to directly follow each other without intervening spaces] --math-markup=level Determine granularity of markup in displayed math environments: Possible values for level are (both numerical and text labels are acceptable): off or 0: suppress markup for math environments. Deleted equations will not appear in diff file. This mode can be used if all the other modes cause invalid latex code. whole or 1: Differencing on the level of whole equations. Even trivial changes to equations cause the whole equation to be marked changed. This mode can be used if processing in coarse or fine mode results in invalid latex code. coarse or 2: Detect changes within equations marked up with a coarse granularity; changes in equation type (e.g.displaymath to equation) appear as a change to the complete equation. This mode is recommended for situations where the content and order of some equations are still being changed. [Default] fine or 3: Detect small change in equations and mark up and fine granularity. This mode is most suitable, if only minor changes to equations are expected, e.g. correction of typos. --disable-citation-markup --disable-auto-mbox Suppress citation markup and markup of other vulnerable commands in styles using ulem (UNDERLINE,FONTSTRIKE, CULINECHBAR) (the two options are identical and are simply aliases) --enable-citation-markup --enforce-auto-mbox Protect citation commands and other vulnerable commands in changed sections with \mbox command, i.e. use default behaviour for ulem package for other packages (the two options are identical and are simply aliases) Miscelleneous options --label=label -L label Sets the labels used to describe the old and new files. The first use of this option sets the label describing the old file and the second use of the option sets the label for the new file. [Default: use the filename and modification dates for the label] --no-label Suppress inclusion of old and new file names as comment in output file --visible-label Include old and new filenames (or labels set with --label option) as visible output --flatten Replace \input and \include commands within body by the content of the files in their argument. If \includeonly is present in the preamble, only those files are expanded into the document. However, no recursion is done, i.e. \input and \include commands within included sections are not expanded. The included files are assumed to be located in the same directories as the old and new master files, respectively, making it possible to organise files into old and new directories. --flatten is applied recursively, so inputted files can contain further \input statements. --help -h Show this help text. --ignore-warnings Suppress warnings about inconsistencies in length between input and parsed strings and missing characters. --verbose -V Output various status information to stderr during processing. Default is to work silently. --version Show version number.