更改包 - 使用不同的颜色来添加、替换和删除文本

更改包 - 使用不同的颜色来添加、替换和删除文本

我打算使用变化用于标记 latex 文档中更改的包。我喜欢用绿色表示新增内容,用蓝色表示修改内容,用红色表示删除内容。但是,changes 包对每个更改都使用相同的颜色。是否可以对上述三个命令使用不同的颜色?

目前,由于我是编辑 tex 文件的唯一作者,因此我定义了以下三位作者

\definechangesauthor[name=new additions, color=teal]{new}
\definechangesauthor[name=in place modifications, color=blue]{modified
\definechangesauthor[name=deletions, color=red]{deleted}

在添加、修改或删除文本时,我使用相应的id。但是,当有多个作者时,这不能使用。此外,这里有冗余。我必须使用命令\added并仍然指定id=new。并且在呈现的pdf文档中,除了绿色外,还会有一个上标,说明它是new。我怎样才能更有效、更干净地做到这一点?

编辑 1:我已经能够按照\usepackage[authormarkup=none]{changes}第一条评论中的建议设置来删除上标这个问题。然而,它仍然需要我使用\added[id=new]{new text}

答案1

\added[id=new]{new text}可以通过定义来避免书写上的麻烦

\newcommand\noidadded{\added[id=new]}

然后简单拧干即可\noidadded{new text}


@Ulrike Fischer 的方法非常有趣,但有两个缺点:首先,它需要最新版本的 latex 内核。其次,使用他的钩子\added 也会对包的所有以下命令产生影响(除非它们也被钩住,以获得自己的颜色)。以下方法减少了影响(但也有一些副作用)。

\makeatletter
\AddToHook{cmd/added/before}{\bgroup\def\Changes@AuthorColor{red}}
\AddToHook{cmd/added/after}{\egroup}
\makeatother

答案2

对于一个作者,你可以做这样的事情:

\documentclass{article}
\usepackage{changes}
\makeatletter
\AddToHook{cmd/added/before}{\def\Changes@AuthorColor{red}}
\AddToHook{cmd/deleted/before}{\def\Changes@AuthorColor{green}}
\AddToHook{cmd/replaced/before}{\def\Changes@AuthorColor{blue}}
\makeatother
\begin{document}
{\added{added} \deleted{deleted} \replaced{new}{old}}

\added{added} \deleted{deleted} \replaced{new}{old}
\end{document}

在此处输入图片描述

对于更多的作者,你必须更具体说明应该发生什么。你还应该提供一个可用于测试的示例。

相关内容