![更改包 - 使用不同的颜色来添加、替换和删除文本](https://linux22.com/image/468091/%E6%9B%B4%E6%94%B9%E5%8C%85%20-%20%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E9%A2%9C%E8%89%B2%E6%9D%A5%E6%B7%BB%E5%8A%A0%E3%80%81%E6%9B%BF%E6%8D%A2%E5%92%8C%E5%88%A0%E9%99%A4%E6%96%87%E6%9C%AC.png)
我打算使用变化用于标记 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}
对于更多的作者,你必须更具体说明应该发生什么。你还应该提供一个可用于测试的示例。