我目前正在使用该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}
知道如何消除这个错误吗,因为它似乎不会影响结果?
答案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}