latexdiff 在存在 \lstMakeShortInline 的情况下生成不可编译的文件

latexdiff 在存在 \lstMakeShortInline 的情况下生成不可编译的文件

我正在使用latexdiff一个使用该listings包的文件,更具体地说是它的lstMakeShortInline宏,它允许以简洁的方式编写内联代码。如果我从以下orig.tex文件开始:

\documentclass{standalone}
\usepackage{listings}
\lstset{basicstyle=\tt}
\lstMakeShortInline"
\begin{document}
Test short inline: "this is a listing"
\end{document}

并想要进行差异分析new.tex(包含一个带有简短形式的内联列表的新行):

\documentclass{standalone}
\usepackage{listings}
\lstset{basicstyle=\tt}
\lstMakeShortInline"
\begin{document}
Test short inline: "this is a listing"
Test short inline: "this is another listing"
\end{document}

然后latexdiff orig.tex new.tex | pdflatex -jobname=diff就会报错:

*! Argument of \lst@temp has an extra }.
<inserted text> 
                \par 
<*>  }
      \DIFaddend\end{document}
? 

\lstinline如果我使用而不是快捷方式,情况就不会如此",因此一个粗略的解决方法是使用 形式的过滤器sed -e 's/"\([^"]*\)"/\\lstinline"\1"/g',但这似乎有点脆弱(即使它在我的实际用例中起到了作用)。 有没有更好的选择?

相关内容