LaTeX 中的“跟踪修订”

LaTeX 中的“跟踪修订”

我正在与我的合作者撰写一篇科学论文。我们已经向期刊提交了一个版本,现在我们得到了他们的评论,所以我们需要修复一些问题。在 Microsoft Word 中有一个“跟踪更改”选项,它会将删除的文本显示为划掉,并将新文本显示为粗体(如果我没记错的话)。有没有办法在 LaTeX 中实现类似的效果?

我正在考虑为修订版本创建一个新文件,然后编写一个脚本,该脚本基本上会比较这两个文件,并在将其发送到 latex 之前将差异加粗或划掉。有没有已经可以做到这一点的工具?

答案1

你可以用 Perl 程序处理 TeX 文件latexdiff它包含在大多数 LaTeX 发行版中。

来自手册:

简而言之,latexdiff 是一个帮助管理 latex 文档修订的实用程序。它比较两个有效的 latex 文件(这里称为 old.tex 和 new.tex),找出它们之间的显著差异(即忽略空格数和换行符的位置),并添加特殊命令来突出显示差异。

答案2

我已经使用了changes以前我使用过这个包,我发现它非常有用。它有一个 key=value 系统,因此大多数东西都是可定制的。您可以定义不同的作者,并根据 id 跟踪更改;这里有一个简单的例子(主要来自手册)。

\documentclass{article}

\usepackage{changes}
\usepackage{lipsum}% <- For dummy text
\definechangesauthor[name={Per cusse}, color=orange]{per}
\setremarkmarkup{(#2)}


\begin{document}
\lipsum[1-7]

This is \added[id=per,remark={we need this}]{new} text.
This is \added[id=per,remark={has to be in it}]{new} text.
This is \deleted[id=per,remark=obsolete]{unnecessary}text.
This is \replaced[id=per]{nice}{bad} text.

This is \added[remark={we need this}]{new} text.
This is \added[remark={has to be in it}]{new} text.
This is \deleted[remark=obsolete]{unnecessary}text.
This is \replaced{nice}{bad} text.


\listofchanges
\end{document}

在此处输入图片描述

好消息是,如果您final为包声明提供该选项,它将\usepackage[final]{changes}清除作者所做的更改痕迹并尊重最后的更改。请参阅替换和删除的文本以获取示例。

在此处输入图片描述

答案3

Latex 文档是纯文本。因此,您可以使用数百万软件开发人员几十年来一直使用的相同强大方法来处理 Latex 文档的跟踪更改!

软件开发人员如何跟踪其源代码中的变化的简要描述:

  • 将源代码保存在版本控制中(git、svn 或其他)
  • 使用差异软件查看每次修订之间做了哪些更改(diff、差分无可比拟

下面是一个 diff 程序的屏幕截图(本例中,这是来自 Beyond Compare 网站的库存照片):

超越比较截图

(我其实不使用 Beyond Compare。我更喜欢普通的使用 vim 进行差异分析,对差异进行着色

因此,每当发生更改时,更改都会保存在版本控制中。并且您的版本控制会跟踪所有更改。允许您执行以下操作:比较两个最近的版本,或将最新版本与 5 个版本进行比较...或将任意版本与任意版本进行比较。您已将所有版本存储在版本控制中!

答案4

您可以简单地创建两个命令来标记添加和删除的文本,并根据需要显示它们。LyX 具有更改跟踪机制,该机制在源代码中实现如下:

\PassOptionsToPackage{normalem}{ulem}
\usepackage{ulem}

\providecolor{added}{rgb}{0,0,1}
\providecolor{deleted}{rgb}{1,0,0}
%% Change tracking with ulem
\newcommand{\added}[1]{{\color{added}{}#1}}
\newcommand{\deleted}[1]{{\color{deleted}\sout{#1}}}

无论你标记什么,\added{...}都会以蓝色和红色显示,\deleted{...}并带有删除线。如果这样的功能对你来说足够了,那么在文档的最终编译中,只需重新定义\added为纯文本传递和\deleted省略即可。即,以下代码片段应该可以做到:

\newcommand{\added}[1]{#1}
\newcommand{\deleted}[1]{}

请注意,这些是命令,因此您不能将其用于太长的文本片段。如果您的更改更像是文本块,请查看以下软件包versions加拿大运输安全局

相关内容