我正在尝试为文档从一个修订版到另一个修订版创建一个简短的更改列表。并且只想显示一组字符串上的红线。即
旧字符串:我昨天去了动物园
新字符串:我今天去了动物园。
差异字符串:我昨天、今天去了动物园。
答案1
LyX 可以做到这一点:
但是,这些更改存储在其自己的文件格式 ( .lyx
) 中,而不是存储在导出的 LaTeX ( .tex
) 源或 PDF 中。
对于纯 LaTeX 解决方案或查看 PDF 中的更改,您可以使用该包changes
:
\documentclass{article}
\usepackage{changes}
\begin{document}
I \added{went}\deleted{when} to the zoo \added{today}\deleted{yesterday}
\end{document}
如果您想要最终的 PDF 版本,只需使用以下选项加载包final
:
\usepackage[final]{changes}
但还可以做更多的事情:
\documentclass{article}
\usepackage{changes}
\definechangesauthor[name={me}, color=magenta]{Fran}
\definechangesauthor[name={you}, color=red]{you}
\begin{document}
I \added[id=Fran]{went}\deleted[id=Fran]{when} to the zoo
\added[id=Fran]{today}\deleted[id=you]{yesterday}
\listofchanges
\end{document}
看变化在 CTAN 上获取更多选项。
另一个解决方案:
1)old.tex
:
\documentclass{article}
\begin{document}
I when to the zoo yesterday
\end{document}
2)new.tex
:
\documentclass{article}
\begin{document}
I went to the zoo today
\end{document}
3)在终端中:
texdiff old.tex new.tex diff.tex
4)编辑diff.tex
:手动添加一些前言来定义\TLSins
和\TSLdel
(否则您无法编译文件)。结果必须是这样的:
\documentclass{article}
\usepackage{xcolor}
\colorlet{ins}{blue}
\colorlet{del}{red}
\usepackage{ulem}
\newcommand\TLSins[1]{\cbstart{}\textcolor{ins}{\uline{#1}}\cbend{}}
\newcommand\TLSdel[1]{\cbdelete{}\textcolor{del}{\sout{#1}}}
\begin{document}
I \protect\TLSdel{when} \protect\TLSins{went} to the zoo \protect\TLSdel{yesterday} \protect\TLSins{today}
\end{document}
答案2
您还可以尝试latexdiff
包裹。
基本上,它是一个您执行的 diff 脚本
latexdiff new.tex old.tex > diff.tex
然后您可以编译diff.tex
并检查差异。
% new.tex
\documentclass{article}
\begin{document}
I went to the zoo today.
\end{document}
% old.tex
\documentclass{article}
\begin{document}
I when to the zoo yesterday
\end{document}
并且脚本产生