使用 Latexdiff 脚本后失败:latexdiff 标记 lstlisting 环境

使用 Latexdiff 脚本后失败:latexdiff 标记 lstlisting 环境

运行脚本在多个输入 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} 
}

相关内容