运行脚本在多个输入 latex 文件上使用 latexdiff 后,我留下了一个 diff.tex 文件,该文件生成了以下错误:
./diff.tex:7009: LaTeX 错误:输入行 6390 上的 \begin{description} 以 \end{document} 结束。
差异文本
6384 \clearpage
6385 %DIF > \startchap
6386 %DIF > \subsection{Extensions}
6387 %DIF > \color{red}
6388 %DIF > \emph{Ticket \#1}
6389 %DIF > % Input FILES/extensions.tex
6390 \DIFaddbegin \bAPI{INFO\_ABOUT\_Extensions}{Info about extensions.}
6391 \synC %DIF > Synopisis for C
6392
6393 \DIFadd{void FOO(int BAR); %DIF > *\synCE %DO NOT DELETE. THIS LINE IS NOT A COMMENT
6394 }
来自输入文件 extensions.tex 的内容为:
\bAPI{INFO\_ABOUT\_Extensions}{Info about extensions.}
\synC %Synopisis for C
void FOO(int BAR); %*\synCE %DO NOT DELETE. THIS LINE IS NOT A COMMENT
通过在第 6390 行末尾插入一个额外的 \eAPI 宏来设法编译乳胶文档后,我发现整个文档中存在许多错误,涉及 latexdiff 宏在 \synC 宏的环境中不起作用。
\newcommand{\synC}{
\textbf{C/C++:}
\begin{lstlisting} [language={C}, backgroundcolor=\color{gray}, lineskip=2pt, morekeywords={size_t}, aboveskip=0pt, belowskip=0pt]
}
\newcommand{\synCE}{
\end{lstlisting}
}
编辑:最初我不确定错误到底是在哪里造成的。清除 Dif 插入允许我编译 diff 文件。Latexdiff 似乎正在标记\synC
。我试过了 latexdiff 中是否有忽略整个环境的选项?,https://tex.stackexchange.com/questions/136454/using-latexdiff-math-markup-for-not-comparing-equations, 和宏、新命令还是代码的新环境?但 latexdiff 仍然标记 lstlisting 环境。
我曾尝试使用 \lstnewenvironment 来更改宏,但尚未弄清楚为什么 latexdiff 没有排除宏中的 lstlisting 环境。
\lstdefinestyle{styC}{
language={C}, backgroundcolor=\color{gray}, lineskip=2pt, morekeywords={size_t}, aboveskip=0pt, belowskip=0pt
}
\lstnewenvironment{formC}[1][]
{\lstset{style=styC,#1}}
{}
\newcommand{\synC}{
\textbf{C/C++:}
\begin{formC}
}
\newcommand{\synCE}{
\end{formC}
}