使用 latexdiff 和 pdflatex 与自定义命令时出现问题

使用 latexdiff 和 pdflatex 与自定义命令时出现问题

使用 latexdiff 我遇到了一个问题,通过添加新的\section,我尝试运行 pdflatex 时出现以下错误。

! Argument of \UL@word has an extra }.
<inserted text> 
                \par 
l.69 \subsection{\DIFadd{Some Text}}

在这里您可以看到重新定义的\section命令...

\renewcommand{\section}{%
\@startsection{section}%
{1}     % Structure level
{0mm}   % Indention
{2ex plus 1ex minus 1ex}            % Pre-Margin
{0.5ex plus 0.5ex minus 0.5ex}      % Post-Margin
{\chapterheadfont\Large\bfseries}   % Style
}
\renewcommand{\subsection}{%
\@startsection{subsection}%
{2}     % Structure level
{0mm}   % Indention
{1.5ex plus 1ex minus 0.5ex}        % Pre-Margin
{0.3ex plus 0.3ex minus 0.3ex}      % Post-Margin
{\chapterheadfont\large\bfseries}   % Style
}

我该如何解决这个问题?对我来说,忽略更改的部分名称也是可行的。

答案1

(原帖作者的回答,从问题中移出。)

我以为这会更复杂,但我找到了一个解决方案。使用--exclude-textcmd允许忽略标签。它现在可以工作了。

--exclude-textcmd="section,subsection"

答案2

如果没有 MWE 的话会很困难,但我认为困难在于hyperref,它会尝试将带下划线/划掉的文本作为超链接包含在内,因为它是章节的一部分。

解决方案是使用texorpdfstring,它告诉 hyperref 使用纯文本作为超链接。我不记得latexdiffdefinds 的确切命令,但请尝试以下方法:

% Redefine these commands for chapter/sections and change below
\DeclareRobustCommand{\hsout}[1]{\texorpdfstring{\sout{#1}}{#1}}
\DeclareRobustCommand{\hwave}[1]{\texorpdfstring{\uwave{#1}}{#1}}

%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{\DIFadd}[1]{{\protect\textcolor{blue}{\hwave{#1}}}}% DIF PREAMBLE
\providecommand{\DIFdel}[1]{{\protect\textcolor{red}{\hsout{#1}}}}% DIF PREAMBLE
...

答案3

我遇到了问题

\section{\DIFdelbegin \DIFdel{Conclusion}\DIFdelend \DIFaddbegin \DIFadd{Conclusions}\DIFaddend }

Jörg 的解决方案对我来说没用。有效的是手动替换:

\section{\texorpdfstring{\DIFdelbegin \DIFdel{Conclusion}\DIFdelend \DIFaddbegin \DIFadd{Conclusions}\DIFaddend }{Conclusions}}

答案4

我有类似这样的事情: \subsection{\DIFadd{Experimental results added}},然后 MiKTeX 出现错误。

我将其改为:

\section*{\DIFadd{Experimental results added}}

或者\subsection*{\DIFadd{Experimental results added}},那么就可以了,但没有章节编号。

所以我再次更改它:

\section[]{\DIFadd{Experimental results added}}

或者\subsection[]{\DIFadd{Experimental results added}}

希望这可以解决您的问题(不完美:部分编号颜色仍然是黑色)。

相关内容