变化与 siunitx 之间是否存在未记录的不兼容性?

变化与 siunitx 之间是否存在未记录的不兼容性?

我目前正在使用该changes包来跟踪文档中的某些修改,以及siunitx用于数字格式化的包。

每当我尝试在或调用\SI{}{}之外进行调用时,都会抛出一个错误,尽管输出文件看起来不错。\replaced{}{}\deleted{}pdflatex

这个问题似乎没有记录,无论是在用户手册中还是在 git repo 中。

这是一个 MWE 来说明这个问题

\documentclass[]{article}
\usepackage{changes}
\usepackage{siunitx}
\begin{document}
This is a new length of \SI{8}{\meter};
This is a new length of \deleted{\SI{8}{\meter}}.
This is a new length of \replaced{\SI{8}{\meter}}{\SI{3}{\meter}}.
\end{document}

知道如何消除这个错误吗,因为它似乎不会影响结果?

编辑 :这是 Git repo 上问题的链接

答案1

changes在内部使用该ulem包,这无法处理复杂的宏。通常,您应该将它们隐藏在\mbox

\documentclass[]{article}
\usepackage{changes}
\usepackage{siunitx}
\begin{document}
This is a new length of \SI{8}{\meter};
This is a new length of \deleted{\mbox{\SI{8}{\meter}}}.
This is a new length of \replaced{\mbox{\SI{8}{\meter}}}{\mbox{\SI{3}{\meter}}}.
\end{document}

答案2

您可以暂时重新定义以在其周围\SI使用。\mbox

\documentclass[]{article}
\usepackage{changes}
\usepackage{siunitx}

\ExplSyntaxOn
\RenewDocumentCommand \SI { o m o m } {
 \mbox{
   \bool_set_false:N \l__siunitx_font_set_bool
   \IfNoValueTF {#1}
     { \__siunitx_combined:nnnn { } {#2} {#3} {#4} }
     {
       \keys_set:nn { siunitx } {#1}
       \__siunitx_combined:nnnn {#1} {#2} {#3} {#4}
     }
 }
}
\ExplSyntaxOff


\begin{document}

This is a new length of \SI{8}{\meter};
This is a new length of \deleted{\SI{8}{\meter}}.
This is a new length of \replaced{\SI{8}{\meter}}{\SI{3}{\meter}}.

\end{document}

我更喜欢一种changes避免被删除的方法(颜色就足够了)。

\documentclass[]{article}
\usepackage{changes}
\usepackage{siunitx}

\setdeletedmarkup{\textcolor{red}{#1}}

\begin{document}

This is a new length of \SI{8}{\meter};
This is a new length of \deleted{\SI{8}{\meter}}.
This is a new length of \replaced{\SI{8}{\meter}}{\SI{3}{\meter}}.

\end{document}

在此处输入图片描述

相关内容