# Error compiling a latexdiff PDF file

I just started trying out latexdiff for editing some papers and I am having trouble with the getting the tex output from latexdiff compile when my code includes \intertext within a \begin{align*} environment. This is the error I get

Underfull \hbox (badness 10000) in paragraph at lines 83--86

[1{/usr/local/texlive/2011/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
/Users/erikchan/Desktop/TSWLatexianTemp_000048.tex:131: Misplaced alignment tab character &.
\math@cr@@@ ->&
\omit \global \advance \row@ \@ne \ifst@rred \nonumber \fi \if@eqnsw \global \tag@true \fi \ifnum \column@ >\maxfields@ \ifcheckat@ \begingroup \measuring@false \@amsmath@err {Extra & on this line}{\the \andhelp@ }\endgroup \else \global...
￼l.131      }\end{align*}

?


The version of latexdiff I am running is

This is LATEXDIFF 1.0.3  (Algorithm::Diff 1.1902, Perl v5.12.4).


Edit: I should add that I made several attempts to find a solution to this, but I couldn't find an existing solution online and this error completely mystifies me because I don't understand why it is complaining about my alignment tab.

Edit2: I tried to look for the error and I still cannot find it. If it is a syntax error, is it common for latexDiff to output code with syntax errors?

 \documentclass[12pt,letterpaper]{article}
%DIF LATEXDIFF DIFFERENCE FILE
%DIF DEL Lecture.tex     Tue Dec 10 18:18:33 2013
%DIF ADD Lecture 2.tex   Tue Dec 10 18:17:11 2013
\usepackage{anysize}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{cite}
\usepackage{graphicx}
\usepackage{mathrsfs}
\usepackage{upgreek}
\usepackage{enumerate}
\usepackage{pictexwd,dcpic}
\newcommand{\Int}{\operatorname{Int}}
\newcommand{\cl}{\operatorname{Cl}}
\newcommand{\se}{\subseteq}
\newcommand{\bs}{\\ $\left.\right.\hfill\blacksquare$}
\newcommand{\C}{\mathbb{C}}
\newcommand{\D}{\mathcal{D}}
\newcommand{\R}{\mathbb{R}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\T}{\mathcal{T}}
\newcommand{\es}{\varnothing}
\newcommand{\sm}[2]{#1\setminus#2}
\newcommand{\pf}[2]{\frac{\partial #1}{\partial #2}}
\newcommand{\pfn}[3]{\frac{\partial^{#3} #1}{\partial {#2}^{#3}}}
\newcommand{\op}[1]{\operatorname{#1}}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{conjecture}[theorem]{Conjecture}
\theoremstyle{definition}
\newtheorem{defn}{Definition}[section]
\newtheorem{example}{Example}[section]

% unnumbered environments:

\theoremstyle{remark}
\newtheorem*{remark}{Remark}
\newtheorem*{notation}{Notation}
\newtheorem*{note}{Note}
%DIF PREAMBLE EXTENSION ADDED BY LATEXDIFF
%DIF UNDERLINE PREAMBLE %DIF PREAMBLE
\RequirePackage[normalem]{ulem} %DIF PREAMBLE
\RequirePackage{color}\definecolor{RED}{rgb}{1,0,0}\definecolor{BLUE}{rgb}{0,0,1} %DIF     PREAMBLE
\providecommand{\DIFdel}[1]{{\protect\color{red}\sout{#1}}}                      %DIF PREAMBLE
%DIF SAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFdelbegin}{} %DIF PREAMBLE
\providecommand{\DIFdelend}{} %DIF PREAMBLE
%DIF FLOATSAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFdelFL}[1]{\DIFdel{#1}} %DIF PREAMBLE
\providecommand{\DIFdelbeginFL}{} %DIF PREAMBLE
\providecommand{\DIFdelendFL}{} %DIF PREAMBLE
%DIF END PREAMBLE EXTENSION ADDED BY LATEXDIFF

\begin{document}

\author{}
\date{}
\title{Wavelets and Signal Processing}
\maketitle
A wavelet is just a small portion of a larger signal. We wish to express the signal as the     sum of waves, so given a signal \DIFdelbegin \DIFdel{$\vec f$}\DIFdelend \DIFaddbegin     \DIFadd{$f$}\DIFaddend , we wish to write it as
$$\vec f = \sum_{k=1}^{n} c_{k}\vec{w}_{k}$$
where $c_{k}$ are the coefficients and $\vec{w}_{k}$ are the wavelets. The key here is that we must find a way to compute the coefficients \DIFdelbegin \DIFdel{$c_{k}$}\DIFdelend \DIFaddbegin \DIFadd{$c_{1k}$}\DIFaddend . Given a random vectors $w_{k}$, how difficult is it to calculate the $c_{k}s$.

If we have a random vector it is $\mathcal{O}(N^{3})$. If we have orthogonal vector's $\mathcal{O}(N^{2})$, if we use the FFT, we have $\mathcal{O}(N\log(N))$, but with wavelets, it is only $\mathcal{O}(N)$.

\subsubsection*{Example of wavelets}
The Haar Wavelet. Takes discrete values of $0,1,-1$.\\
The Mexican Hat Wavelet'' or Ricker wavelet,  which is the second derivative of a     guassian $e^{-x^{2}}$. Daubechies wavelet, which is continuous and nowhere differentiable.
\subsubsection*{Gram Schmidt Process}
To implement Gram Schmidt in MATLAB, we construct a matrix $C$ where
$$C = [ \langle u_{j},u_{k}\rangle]$$
the matrix of inner products, let $L$ be the lower triangular part of the Cholesky     decomposition, then the inverse transpose will give the coefficients of the basis in its columns.\\\\
Given vectors $\{u_{i}\}_{i=1}^{n}$, we find vectors $\{v_{i}\}_{i=1}^{n}$ that are orthonormal and span the same space as $\{u_{i}\}_{i=1}^{n}$. By Cholesky decomposition, define the matrix of vectors $u_{i}$ as its columns
$$U = \begin{bmatrix} u_{1}, u_{2},\dots, u_{n} \end{bmatrix}$$
Then $U^{*}U$ is symmetric positive definite, which implies a cholesky decomposition $LL^{*}$ exists, where $L$ is lower triangular with diagonal entries are all positive. Finally, we write
$$V = U(L^{-1})^{*} = \begin{bmatrix} v_{1} v_{2} \dots v_{n} \end{bmatrix}$$
then the columns of $V$ ar ethe orthonormal vectors we want. Let us prove that these columns are orthonormal
$$V^{*}V = [U(L^{-1})^{*}]^{*} U(L^{-1})^{*} = L^{-1}U^{*} U(L^{*})^{-1} = L^{-1} L L^{*}(L^{*})^{-1} = I$$
Now let us show that $v's$ span the same space as the $u$'s. Since
$$\begin{bmatrix} v_{1}v_{2}..v_{n} \end{bmatrix} = V = U(L^{*})^{-1} = \begin{bmatrix} u_{1}&u_{2}&\dots &u_{n} \end{bmatrix} \begin{bmatrix} \ell_{11} & \ell_{1,2} & \ell_{1,3} &\dots\\ 0 & \ell_{2,2} & \dots & \dots\\ 0 & 0 & \ell_{3,3} & \dots\\ \end{bmatrix}$$
}\end{align*}
\DIFadd{But what about functions? We instead take $u$  whose matrix'' columns are functions. Then calculate $U^{*}U$ as usual, and each element of the matrix becomes inner products.
1 & x & x^{2} & x^{3}
\end{bmatrix}}\\
\langle 1,1\rangle & \langle 1,x\rangle & \langle 1,x^{2}\rangle \\
\dots & \dots & \dots
\end{bmatrix}.
}\end{align*}

-
welcome to tex.sx note you can format code (or error log) blocks using the {} button in the editor (see my edit) – David Carlisle Dec 10 '13 at 23:28
It may be hard to help without seeing the generated latex, please try to generate a small file that shows the problem and add to your answer. – David Carlisle Dec 10 '13 at 23:30
It's probably due to the fact that \DIFadd and/or \DIFdel are enclosing the contents incorrectly. Check your align* environment for misplaced braces, and correct them (or post them here if you can't find any errors), then the file should compile. – Herr K. Dec 10 '13 at 23:40
@DavidCarlisle Thank you, I would have pasted the generated latex earlier, but I couldn't figure out how to display it properly. – Echan Dec 11 '13 at 1:06
@user42547 it would be easier if you could make your code so that we can run it and get the error you get. ie make it a complete document showing all needed packages. – David Carlisle Dec 11 '13 at 1:09

The problem is that latexdiff wraps \intertext{Then} with the command \DIFadd{...}, which marks the stuff you add in the new version. But since \DIFadd is not a legitimate command inside align*, TeX throws an error. To make the code compile, replace

\DIFadd{\intertext{Then}}


with

\intertext{\DIFadd{Then}}


The last bit of output should look like this:

As I mentioned in my comment, most of the errors (I've encountered) given by a latexdiffed document is due to incorrect applications of the \DIFadd and/or \DIFdel commands, especially in array-type environments. There's not much one can do other than to manually correct these errors and to send the developer a bug report.

-
Thank you very much. I apologize for the large number of edits necessary to make this question answerable. – Echan Dec 11 '13 at 21:45