Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LATEXDIFF(1)							  LATEXDIFF(1)

NAME
       latexdiff - determine and markup	differences between two	latex files

SYNOPSIS
       latexdiff [ OPTIONS ] old.tex new.tex > diff.tex

DESCRIPTION
       Briefly,	latexdiff is a utility program to aid in the management	of
       revisions of latex documents. It	compares two valid latex files,	here
       called "old.tex"	and "new.tex", finds significant differences between
       them (i.e., ignoring the	number of white	spaces and position of line
       breaks),	and adds special commands to highlight the differences.	 Where
       visual highlighting is not possible, e.g. for changes in	the
       formatting, the differences are nevertheless marked up in the source.
       Note that old.tex and new.tex need to be	real files (not	pipes or
       similar)	as they	are opened twice (unless "--encoding" option is	used)

       The program treats the preamble differently from	the main document.
       Differences between the preambles are found using line-based
       differencing (similarly to the Unix diff	command, but ignoring white
       spaces).	 A comment, ""%DIF >"" is appended to each added line, i.e. a
       line present in "new.tex" but not in "old.tex".	Discarded lines
	are deactivated	by prepending ""%DIF <"". Changed blocks are preceded
       by comment lines	giving information about line numbers in the original
       files.  Where there are insignificant differences, the resulting	file
       "diff.tex" will be similar to "new.tex".	 At the	end of the preamble,
       the definitions for latexdiff markup commands are inserted.  In
       differencing the	main body of the text, latexdiff attempts to satisfy
       the following guidelines	(in order of priority):

       1. If  both "old.tex" and "new.tex" are valid LaTeX, then the resulting
	  "diff.tex" should also be valid  LateX.  (NB	If  a  few  plain  TeX
	  commands  are	 used within "old.tex" or "new.tex" then "diff.tex" is
	  not guaranteed to work but usually will).

       2. Significant differences are determined on the	 level	of  individual
	  words.  All  significant  differences, including differences between
	  comments should be clearly  marked  in  the  resulting  source  code
	  "diff.tex".

       3. If  a	changed	passage	contains text or text-producing	commands, then
	  running "diff.tex" through LateX should produce output  where	 added
	  and discarded	passages are highlighted.

       4. Where	 there	are insignificant differences, e.g. in the positioning
	  of line breaks, "diff.tex" should follow the formatting of "new.tex"

       For differencing	the same algorithm as diff is used but	words  instead
       of  lines  are  compared.  An attempt is	made to	recognize blocks which
       are completely changed such that	they can  be  marked  up  as  a	 unit.
       Comments	 are  differenced line by line but the number of spaces	within
       comments	 is  ignored.  Commands	 including  all	 their	arguments  are
       generally  compared  as one unit, i.e., no mark-up is inserted into the
       arguments of commands.  However,	for a selected number of commands (for
       example,	"\caption" and all sectioning commands)	the last  argument  is
       known to	be text. This text is split into words and differenced just as
       ordinary	 text  (use  options  to  show	and  change  the  list of text
       commands, see below). As	the algorithm has  no  detailed	 knowledge  of
       LaTeX,  it  assumes  all	 pairs of curly	braces immediately following a
       command (i.e. a sequence	of letters beginning  with  a  backslash)  are
       arguments  for  that command.  As a restriction to condition 1 above it
       is thus necessary to surround all arguments with	curly braces,  and  to
       not insert extraneous spaces.  For example, write

	 \section{\textem{This is an emphasized	section	title}}

       and not

	 \section {\textem{This	is an emphasized section title}}

       or

	 \section\textem{This is an emphasized section title}

       even though all varieties are the same to LaTeX (but see	--allow-spaces
       option which allows the second variety).

       For  environments  whose	 content does not conform to standard LaTeX or
       where graphical markup does not make sense all markup commands  can  be
       removed	by  setting  the  PICTUREENV  configuration  variable,	set by
       default to  "picture"  and  "DIFnomarkup"  environments;	 see  --config
       option).	 The latter environment	("DIFnomarkup")	can be used to protect
       parts of	the latex file where the markup	results	in illegal markup. You
       have  to	surround the offending passage in both the old and new file by
       "\begin{DIFnomarkup}" and  "\end{DIFnomarkup}".	You  must  define  the
       environment in the preambles of both old	and new	documents. I prefer to
       define it as a null-environment,

       "\newenvironment{DIFnomarkup}{}{}"

       but  the	 choice	 is  yours.  Any markup	within the environment will be
       removed,	and generally everything within	the environment	will  just  be
       taken from the new file.

       It is also possible to difference files which do	not have a preamble.
	In this	case, the file is processed in the main	document mode, but the
       definitions of the markup commands are not inserted.

       All  markup  commands inserted by latexdiff begin with ""\DIF"".	 Added
       blocks containing words,	commands or comments which  are	 in  "new.tex"
       but  not	 in  "old.tex"	are marked by "\DIFaddbegin" and "\DIFaddend".
       Discarded blocks	are marked by "\DIFdelbegin" and "\DIFdelend".	Within
       added  blocks  all  text	 is  highlighted  with	"\DIFadd"  like	 this:
       "\DIFadd{Added  text  block}" Selected `safe' commands can be contained
       in these	text blocks as well (use options to show and change  the  list
       of safe commands, see below).  All other	commands as well as braces "{"
       and  "}"	 are  never put	within the scope of "\DIFadd".	Added comments
       are marked by prepending	""%DIF > "".

       Within deleted blocks text  is  highlighted  with  "\DIFdel".   Deleted
       comments	 are  marked  by prepending ""%DIF < "".  Non-safe command and
       curly  braces  within   deleted	 blocks	  are	commented   out	  with
       ""%DIFDELCMD < "".

OPTIONS
   Preamble
       The  following  options determine the visual markup style by adding the
       appropriate command definitions to the preamble.	See the	 end  of  this
       section for a description of available styles.

       --type=markupstyle or -t	markupstyle
	   Add code to preamble	for selected markup style. This	option defines
	   "\DIFadd" and "\DIFdel" commands.  Available	styles:

	   "UNDERLINE  CTRADITIONAL  TRADITIONAL  CFONT	 FONTSTRIKE  INVISIBLE
	   CHANGEBAR  CCHANGEBAR  CULINECHBAR	CFONTCHBAR   BOLD   PDFCOMMENT
	   LUAUNDERLINE"

	   [ Default: "UNDERLINE" ]

       --subtype=markstyle or -s markstyle
	   Add	code  to  preamble  for	selected style for bracketing commands
	   (e.g.  to  mark  changes   in    margin).   This   option   defines
	   "\DIFaddbegin",   "\DIFaddend",   "\DIFdelbegin"  and  "\DIFdelend"
	   commands.  Available	styles:	"SAFE MARGIN  COLOR  DVIPSCOL	ZLABEL
	   ONLYCHANGEDPAGE (LABEL)*"

	   [ Default: "SAFE" ] * Subtype "LABEL" is deprecated

       --floattype=markstyle or	-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). This option defines  all  "\DIF...FL"	 commands.   Available
	   styles: "FLOATSAFE TRADITIONALSAFE IDENTICAL"

	   [ Default: "FLOATSAFE" ]

       --encoding=enc or -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" )) ;'
	   >

	   If this option is used, then	old.tex, new.tex are only opened once.
	   [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 or -p file
	   Insert file at end of preamble instead of 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.)

       --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"
		   Ensure  that	 "\begin{figure}"  and	"\end{figure}"	always
		   appear by themselves	on a line.

	   "hyperref"
		   Change  name	 of  "\DIFadd"	and  "\DIFdel"	 commands   to
		   "\DIFaddtex"	 and "\DIFdeltex" and define new "\DIFadd" and
		   "\DIFdel" commands,	which  provide	a  wrapper  for	 these
		   commands,  using  them  for	the  text but not for the link
		   defining command (where any markup would cause errors).

	   "apacite", "biblatex"
		   Redefine the	commands recognised as citation	commands.

	   "siunitx"
		   Treat  "\SI"	 as  equivalent	 to  citation  commands	 (i.e.
		   protect with	"\mbox"	if markup style	uses ulem package.

	   "cleveref"
		   Treat "\cref,\Cref",	etc as equivalent to citation commands
		   (i.e.  protect  with	 "\mbox"  if  markup  style  uses ulem
		   package.

	   "glossaries"
		   Define most of the glossaries commands as safe,  protecting
		   them	with \mbox'es where needed

	   "mhchem"
		   Treat  "\ce"	as a safe command, i.e.	it will	be highlighted
		   (note that "\cee" will not be highlighted in	 equations  as
		   this	leads to processing errors)

	   "chemformula" or "chemmacros"
		   Treat  "\ch"	 as  a safe command outside equations, i.e. it
		   will	 be  highlighted  (note	 that  "\ch"   will   not   be
		   highlighted	in  equations  as  this	 leads	to  processing
		   errors)

	   [  Default:	scan  the  preamble  for  "\usepackage"	 commands   to
	   determine
	     loaded packages. ]

       --show-preamble
	   Print generated or included preamble	commands to stdout.

   Configuration
       --exclude-safecmd=exclude-file or -A exclude-file or
       --exclude-safecmd="cmd1,cmd2,..."
       --replace-safecmd=replace-file
       --append-safecmd=append-file or -a append-file or
       --append-safecmd="cmd1,cmd2,..."
	   Exclude  from, replace or append to the list	of regular expressions
	   (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).
	   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-safecmd  and  --append-safecmd  can  also	 take  a comma
	   separated list as input. If	a  comma  for  one  of	the  regex  is
	   required,  escape  it thus "\,". In most cases it will be necessary
	   to protect the comma-separated list from the	shell by putting it in
	   quotation marks.

       --exclude-textcmd=exclude-file or -X exclude-file or
       --exclude-textcmd="cmd1,cmd2,..."
       --replace-textcmd=replace-file
       --append-textcmd=append-file or -x append-file or
       --append-textcmd="cmd1,cmd2,..."
	   Exclude from, replace or append to the list of regular  expressions
	   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	or
       --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	or
       --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.

	   context2 commands are also the only commands	in the preamble, whose
	   argument  will be processed in word-by-word mode (which only	works,
	   if they occur no more than once in  the  preamble).	The  algorithm
	   currently  cannot  cope  with  repeated  context2  commands	in the
	   preamble, as	they occur e.g.	for the	 "\author"  argument  in  some
	   journal  styles  (not  in  the  standard  styles,  though If	such a
	   repetition is detected, the whole preamble  will  be	 processed  in
	   line-by-line	 mode.	In  such  a  case, use "--replace-context2cmd"
	   option to just select the commands, which should be	processed  and
	   are not used	repeatedly in the preamble.

       --exclude-mboxsafecmd=exclude-file or
       --exclude-mboxsafecmd="cmd1,cmd2,..."
       --append-mboxsafecmd=append-file	or
       --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,...	or -c var1=val1,..
       -c configfile
	   Set	configuration  variables.   The	 option	can be repeated	to set
	   different variables	(as  an	 alternative  to  the  comma-separated
	   list).  Available variables (see below for further explanations):

	   "ARRENV" (RegEx)

	   "COUNTERCMD"	(RegEx)

	   "CUSTODIFCMD" (RegEx)

	   "FLOATENV" (RegEx)

	   "ITEMCMD" (RegEx)

	   "LISTENV"  (RegEx)

	   "MATHARRENV"	(RegEx)

	   "MATHENV" (RegEx)

	   "MATHREPL" (String)

	   "MINWORDSBLOCK" (Integer)

	   "PICTUREENV"	(RegEx)

	   "SCALEDELGRAPHICS" (Float)

       --add-to-config varenv1=pattern1,varenv2=pattern2,...
	   For	 configuration	variables,  which  are	a  regular  expression
	   (essentially	those ending in	ENV, COUNTERCMD	and CUSTOMDIFCMD,  see
	   list	 above)	 this option provides an alternative way to modify the
	   configuration variables. Instead of setting the  complete  pattern,
	   with	 this  option  it  is  possible	to add an alternative pattern.
	   "varenv" must be one	of the variables  listed  above	 that  take  a
	   regular   expression	 as  argument,	and  pattern  is  any  regular
	   expression (which might need	to be  protected  from	the  shell  by
	   quotation).	Several	 patterns  can be added	at once	by using semi-
	   colons     to     separate	  them,	    e.g.      "--add-to-config
	   "LISTENV=myitemize;myenumerate,COUNTERCMD=endnote""

       --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
	   Combine all --show commands.

	   NB For all --show commands, no "old.tex" or "new.tex" file needs to
	   be specified, and no	differencing takes place.

   Other configuration options:
       --allow-spaces
	   Allow spaces	between	bracketed or  braced  arguments	 to  commands.
	   Note	  that	 this  option  might  have  undesirable	 side  effects
	   (unrelated scope might get lumpeded	with  preceding	 commands)  so
	   should  only	 be  used  if  the default produces erroneous results.
	   (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 at fine
	   granularity.	 This mode is most suitable, if	only minor changes  to
	   equations are expected, e.g.	correction of typos.

       --graphics-markup=level
	    Change highlight style for graphics	embedded with C<\includegraphics> commands.

	   Possible values for level:

	   "none", "off" or 0: no highlighting for figures

	   "new-only"  or  1:  surround	 newly added or	changed	figures	with a
	   blue	frame [Default if graphicx package loaded]

	   "both" or 2:	    highlight new figures with a blue frame  and  show
	   deleted  figures  at	 reduced  scale,  and  crossed	out with a red
	   diagonal cross. Use configuration variable SCALEDELGRAPHICS to  set
	   size	of deleted figures.

	   Note	 that  changes to the optional parameters will make the	figure
	   appear as changed to	 latexdiff,  and  this	figure	will  thus  be
	   highlighted.

	   In some circumstances "Misplaced \noalign" error can	occur if there
	   are	certain	 types	of  changes in tables. In this case please use
	   "--graphics-markup=none" as a work-around.

       --no-del
	   Suppress deleted text from the diff.	It is similar in effect	to the
	   BOLD	style, but the deleted text ist	 not  just  invisible  in  the
	   output, it is also not included in the diff text file.  This	can be
	   more	robust than just making	it invisible.

       --disable-citation-markup or --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	or --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)

   Miscellaneous
       --verbose or -V
	   Output  various  status  information	 to  stderr during processing.
	   Default is to work silently.

       --driver=type
	   Choose driver for changebar package (only relevant for styles using
	      changebar:   CCHANGEBAR	CFONTCHBAR   CULINECHBAR   CHANGEBAR).
	   Possible   drivers	are   listed   in   changebar	manual,	  e.g.
	   pdftex,dvips,dvitops
	     [Default: pdftex]

       --ignore-warnings
	   Suppress warnings about inconsistencies in length between input and
	   parsed strings and missing characters.  These warning messages  are
	   often  related  to non-standard latex or latex constructions	with a
	   syntax unknown to "latexdiff" but the resulting difference argument
	   is often fully functional anyway, particularly if the  non-standard
	   latex only occurs in	parts of the text which	have not changed.

       --label=label or	-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, i.e. set
	   both	labels like this "-L labelold -L labelnew".  [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.  Also handles files
	   included by the import package ("\import"  and  "\subimport"),  and
	   "\subfile" command.

	   Use of this option might result in prohibitive processing times for
	   larger  documents,  and the resulting difference document no	longer
	   reflects the	structure of the input documents.

       --filter-script=filterscript
	   Run files through this filterscript (full  path  preferred)	before
	   processing.	 The  filterscript must	take STDIN input and output to
	   STDOUT.  When coupled with --flatten, each file will	be run through
	   the filter as it is brought in.

       --ignore-filter-stderr
	   When	running	with --filter-script, STDERR from the script may cause
	   readability issues.	Turn this flag on to ignore  STDERR  from  the
	   filter script.

       --help or -h
	   Show	help text

       --version
	   Show	version	number

   Internal options
       These options are mostly	for automated use by latexdiff-vc. They	can be
       used  directly,	but  the API should be considered less stable than for
       the other options.

       --no-links
	   Suppress generation of  hyperreferences,  used  for	minimal	 diffs
	   (option --only-changes of latexdiff-vc)

   Predefined styles
   Major types
       The  major  type	 determine  the	markup of plain	text and some selected
       latex  commands	outside	 floats	 by  defining  the   markup   commands
       "\DIFadd{...}" and "\DIFdel{...}" .

       "UNDERLINE"
		 Added	text  is  wavy-underlined  and blue, discarded text is
		 struck	out  and  red  (Requires  color	 and  ulem  packages).
		 Overstriking  does  not work in displayed math	equations such
		 that deleted parts of equation	are underlined,	not struck out
		 (this is a shortcoming	inherent to the	ulem package).

       "LUAUNDERLINE"
		 Added text is underlined and blue, discarded text  is	struck
		 out and red (Requires lua-ul package +	LuaLaTeX).

       "CTRADITIONAL"
		 Added	text is	blue and set in	sans-serif, and	a red footnote
		 is created for	each discarded piece of	text. (Requires	 color
		 package)

       "TRADITIONAL"
		 Like "CTRADITIONAL" but without the use of color.

       "CFONT"	 Added	text is	blue and set in	sans-serif, and	discarded text
		 is red	and very small size.

       "FONTSTRIKE"
		 Added tex is set in  sans-serif,  discarded  text  small  and
		 struck	out

       "CCHANGEBAR"
		 Added text is blue, and discarded text	is red.	 Additionally,
		 the changed text is marked with a bar in the margin (Requires
		 color and changebar packages).

       "CFONTCHBAR"
		 Like  "CFONT"	but with additional changebars (Requires color
		 and changebar packages).

       "CULINECHBAR"
		 Like "UNDERLINE" but  with  additional	 changebars  (Requires
		 color,	ulem and changebar packages).

       "CHANGEBAR"
		 No  mark  up  of  text,  but  mark  margins  with  changebars
		 (Requires changebar package).

       "INVISIBLE"
		 No visible markup (but	generic	markup commands	will still  be
		 inserted.

       "BOLD"	 Added text is set in bold face, discarded is not shown. (also
		 see  --no-del	option for another possibility to hide deleted
		 text)

       "PDFCOMMENT"
		 The pdfcomment	package	is used	to  underline  new  text,  and
		 mark  deletions  with	a  PDF	comment. Note that this	markup
		 might appear differently or not  at  all  based  on  the  pdf
		 viewer	 used.	The viewer with	best support for pdf markup is
		 probably acroread. This style	is  only  recommended  if  the
		 number	of differences is small.

   Subtypes
       The subtype defines the commands	that are inserted at the begin and end
       of  added  or  discarded	blocks,	irrespectively of whether these	blocks
       contain text or commands	(Defined commands: "\DIFaddbegin,  \DIFaddend,
       \DIFdelbegin, \DIFdelend")

       "SAFE"	 No additional markup (Recommended choice)

       "MARGIN"	 Mark  beginning and end of changed blocks with	symbols	in the
		 margin	nearby (using the standard "\marginpar"	command	- note
		 that  this  sometimes	moves  somewhat	 from	the   intended
		 position.

       "COLOR"	 An  alternative  way  of  marking added passages in blue, and
		 deleted ones in red.  (It is recommeneded to use instead  the
		 main  types  to effect	colored	markup,	although in some cases
		 coloring with dvipscol	can be more complete, for example with
		 citation commands).

       "DVIPSCOL"
		 An alternative	way of marking added  passages	in  blue,  and
		 deleted ones in red. Note that	"DVIPSCOL" only	works with the
		 dvips	converter,  e.g. not pdflatex.	(it is recommeneded to
		 use instead the main types to effect colored markup, although
		 in some cases coloring	with dvipscol can be more complete).

       "ZLABEL"	 can be	used to	highlight only	changed	 pages,	 but  requires
		 post-processing.  It  is  recommend  to  not call this	option
		 manually but use "latexdiff-vc" with "--only-changes" option.
		 Alternatively,	use the	script given within preamble  of  diff
		 files made using this style.

       "ONLYCHANGEDPAGE"
		 also  highlights  changed  pages,  without the	need for post-
		 processing, but might not work	reliably if there is  floating
		 material (figures, tables).

       "LABEL"	 is  similar  to  "ZLABEL", but	does not need the zref package
		 and works less	reliably (deprecated).

   Float Types
       Some of the markup used in the main text	might cause problems when used
       within floats (e.g. figures or tables).	For  this  reason  alternative
       versions	 of all	markup commands	are used within	floats.	The float type
       defines these alternative commands.

       "FLOATSAFE"
		 Use identical markup for text as in the main  body,  but  set
		 all  commands	marking	the begin and end of changed blocks to
		 null-commands.	 You have to choose this float	type  if  your
		 subtype  is  "MARGIN"	as "\marginpar"	does not work properly
		 within	floats.

       "TRADITIONALSAFE"
		 Mark additions	the same way as	in  the	 main  text.   Deleted
		 environments are marked by angular brackets \[	and \] and the
		 deleted  text	is  set	 in scriptscript size. This float type
		 should	 always	  be   used   with   the   "TRADITIONAL"   and
		 "CTRADITIONAL"	markup types as	the \footnote command does not
		 work properly in floating environments.

       "IDENTICAL"
		 Make no difference between the	main text and floats.

   Configuration Variables
       "ARRENV"	 If  a	match  to  "ARRENV"  is	 found	within	an inline math
		 environment within a deleted or added block, then the inlined
		 math is surrounded by "\mbox{"..."}".	This is	 necessary  as
		 underlining does not work within inlined array	environments.

		 [ Default: "ARRENV"="(?:array|[pbvBV]matrix)"

       "COUNTERCMD"
		 If  a command in a deleted block which	is also	in the textcmd
		 list  matches	"COUNTERCMD"  then   an	  additional   command
		 "\addtocounter{"cntcmd"}{-1}",	 where	cntcmd is the matching
		 command, is appended in the diff file such that the numbering
		 in the	diff file remains synchronized with the	 numbering  in
		 the new file.

		 [ Default: "COUNTERCMD"="(?:footnote|part|section|subsection"
		 ...

		 "|subsubsection|paragraph|subparagraph)"  ]

       "CUSTOMDIFCMD"
		 This  option  is  for advanced	users and allows definition of
		 special versions of commands,	which  do  not	work  as  safe
		 commands.

		 Commands  in  "CUSTOMDIFCMD"  that  occur in added or deleted
		 blocks	will be	given an ADD  or  DEL  prefix.	 The  prefixed
		 versions  of  the  command  must  be defined in the preamble,
		 either	by putting them	in the preamble	of at  least  the  new
		 file,	 or   by  creating  a  custom  preamble	 file  (Option
		 --preamble).  For  example  the  command  "\blindtext"	 (from
		 package  blindtext)  does not interact	well with underlining,
		 so that for the standard markup type, it is not  satisfactory
		 to  define  it	 as  a	safe  command.	Instead,  a customised
		 versions without underlining can be defined in	the preamble:

		 "\newcommand{\DELblindtext}{{\color{red}\blindtext}}"

		 "\newcommand{\ADDblindtext}{{\color{blue}\blindtext}}"

		 and then latexdiff should be  invoked	with  the  option  "-c
		 CUSTOMDIFCMD=blindtext".

		 [ Default: none ]

       "FLOATENV"
		 Environments  whose  name  matches  the regular expression in
		 "FLOATENV" are	considered floats.  Within these environments,
		 the latexdiff	markup	commands  are  replaced	 by  their  FL
		 variaties.

		 [ Default: "(?:figure|table|plate)[\w\d*@]*" ]

       "ITEMCMD" Commands representing new item	line with list environments.

		 [ Default: \"item" ]

       "LISTENV" Environments  whose  name  matches  the regular expression in
		 "LISTENV" are list environments.

		 [ Default: "(?:itemize|enumerate|description)"	]

       "MATHENV","MATHREPL"
		 If both \begin	and \end for a math  environment  (environment
		 name  matching	 "MATHENV"  or	\[ and \]) are within the same
		 deleted block,	 they  are  replaced  by  a  \begin  and  \end
		 commands for "MATHREPL" rather	than being commented out.

		 [	 Default:	"MATHENV"="(?:displaymath|equation)" ,
		 "MATHREPL"="displaymath" ]

       "MINWORDSBLOCK"
		 Minimum number	of tokens  required  to	 form  an  independent
		 block.	 This value is used in the algorithm to	detect changes
		 of complete blocks by merging identical text  parts  of  less
		 than  "MINWORDSBLOCK"	to  the	 preceding added and discarded
		 parts.

		 [ Default: 3 ]

       "PICTUREENV"
		 Within	environments whose name	matches	the regular expression
		 in  "PICTUREENV"  all	latexdiff  markup   is	 removed   (in
		 pathologic  cases  this might lead to inconsistent markup but
		 this situation	should be rare).

		 [ Default: "(?:picture|DIFnomarkup)[\w\d*@]*" ]

       "SCALEDELGRAPHICS"
		 If "--graphics-markup=both" is	chosen,	"SCALEDELGRAPHICS"  is
		 the factor, by	which deleted figures will be scaled (i.e. 0.5
		 implies they are shown	at half	linear size).

		 [ Default: 0.5	]

       "VERBATIMENV"
		 RegEx	describing  environments like verbatim,	whose contents
		 should	be taken verbatim. The content of  these  environments
		 will  not  be	processed  in  any  way:  deleted  content  is
		 commented out,	new content is not marked up

		 [ Default:  "comment"	]

       "VERBATIMLINEENV"
		 RegEx describing environments like verbatim,  whose  contents
		 should	  be  taken  verbatim.	The  content  of  environments
		 described by VERBATIMLINEENV are compared in line  mode,  and
		 changes  are marked up	using the listings package. The	markup
		 style is set based on the chosen mains	 markup	 type  (Option
		 -t),	or   on	 an  analysis  of  the	preamble.   Note  that
		 "listings.sty"	must be	installed. If this file	is  not	 found
		 the   fallback	  solution   is	  to   treat   VERBATIMLINEENV
		 environments treated exactly  the  same  way  as  VERBATIMENV
		 environments.

		 [ Default:  "(?:verbatim[*]?|lstlisting"  ]

COMMON PROBLEMS	AND FAQ
       Changed citations result	in overfull boxes
		 There is an incompatibility between the "ulem"	package, which
		 "latexdiff"  uses  for	 underlining  and  striking out	in the
		 UNDERLINE style, the default style, and the way citations are
		 generated. In order to	be able	to mark	up citations properly,
		 they are enclosed with	an "\mbox" command. As	mboxes	cannot
		 be  broken across lines, this procedure frequently results in
		 overfull boxes, possibly obscuring the	content	as it  extends
		 beyond	 the  right  margin.   The  same occurs	for some other
		 packages (e.g., siunitx). If this  is	a  problem,  you  have
		 several possibilities.

		 1.  Use  "CFONT"  type	 markup	 (option  "-t CFONT"): If this
		 markup	is chosen, then	changed	citations are no longer	marked
		 up with the wavy line (additions) or struck out  (deletions),
		 but  are  still  highlighted  in  the	appropriate color, and
		 deleted text is shown with a different	font. Other styles not
		 using the "ulem" package will also work.

		 2. Choose option "--disable-citation-markup" which turns  off
		 the  marking up of citations: deleted citations are no	longer
		 shown,	and added citations are	shown  without	markup.	 (This
		 was  the  default  behaviour of latexdiff at versions 0.6 and
		 older).  For custom packages  you  can	 define	 the  commands
		 which	  need	  to	be    protected	   by	"\mbox"	  with
		 "--append-mboxsafecmd"	 and  "--excludemboxsafecmd"   options
		 (submit  your	lists  of command as feature request at	github
		 page to set the default behaviour  of	future	versions,  see
		 section 6)

		 3.  If	 you  are  using  luatex  >= 1.12.0 you	can use	option
		 LUAUNDERLINE  that  uses   lua-ul   instead   of   ulem   for
		 underlining,  which  does not have this problem (experimental
		 feature).

       Changes in complicated mathematical equations result in latex
       processing errors.
		 Try option "--math-markup=whole".   If	even that  fails,  you
		 can turn off mark up for equations with "--math-markup=off".

       Deleted parts in	equations are not struck out but underlined.
		 This  is a limitation of the ulem package that	implements the
		 strike-out. If	you use	the amsmath package, then the  strike-
		 out  command is redefined in such a way that deleted passages
		 are	 wrapped     with     "\text"	  command;	adding
		 "\usepackage{amsmath}"	 to  your  preamble  will trigger this
		 behaviour. (If	amsmath	is not included	directly, but imported
		 by another package, latexdiff will not	be able	to detect  its
		 availability; in this case you	can give latexdiff a hint with
		 option	"--packages=amsmath".

       How can I just show the pages where changes had been made?
		 Use  options  "--s ZLABEL"  (some postprocessing required) or
		 "-s   ONLYCHANGEDPAGE".   "latexdiff-vc   --ps|--pdf"	  with
		 "--only-changes" option takes care of the post-processing for
		 you (requires zref package to be installed).

       The character encoding breaks when running latexdiff from powershell.
		 This problem is not limited to	"latexdiff" and	has to do with
		 the  default  settings	 of  "powershell"  in  Windows.	 It is
		 recommended to	use "cmd" instead.

BUGS
       Option allow-spaces not implemented entirely consistently. It breaks
       the rules that number and type of white space does not matter, as
       different numbers of inter-argument spaces are treated as significant.

       Please submit bug  reports  using  the  issue  tracker  of  the	github
       repository page https://github.com/ftilmann/latexdiff.git, or send them
       to  tilmann  --	AT  --	gfz-potsdam.de.	 Include the version number of
       latexdiff (from comments	at the top of the source  or  use  --version).
       If  you	come across latex files	that are error-free and	conform	to the
       specifications set out above, and whose	differencing  still  does  not
       result  in error-free latex, please send	me those files,	ideally	edited
       to only contain the offending passage as	long as	that still  reproduces
       the  problem. If	your file relies on non-standard class files, you must
       include those.  I will not look at examples where  I  have  trouble  to
       latex the original files.

SEE ALSO
       latexrevise, latexdiff-vc

PORTABILITY
       latexdiff does not make use of external commands	and thus should	run on
       any  platform   supporting Perl 5.6 or higher.  If files	with encodings
       other than ASCII	 or  UTF-8  are	 processed,  Perl  5.8	or  higher  is
       required.

       The  standard  version  of  latexdiff requires installation of the Perl
       package	  "Algorithm::Diff"    (available    from    www.cpan.org    -
       http://search.cpan.org/~nedkonz/Algorithm-Diff-1.15)  but a stand-alone
       version,	latexdiff-so, which has	this package  inlined,	is  available,
       too.  latexdiff-fast requires the diff command to be present.

AUTHOR
       Version 1.3.4 Copyright (C) 2004-2024 Frederik Tilmann

       This program is free software; you can redistribute it and/or modify it
       under the terms of the GNU General Public License Version 3

       Contributors  of	 fixes	and  additions:	 V.  Kuhlmann,	J. Paisley, N.
       Becker, T. Doerges, K. Huebner, T. Connors, Sebastian Gouezel and  many
       others.	 Thanks	 to  the  many people who sent in bug reports, feature
       suggestions, and	other feedback.

perl v5.34.0			  2024-07-20			  LATEXDIFF(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=latexdiff&sektion=1&manpath=FreeBSD+Ports+15.0>

home | help