时间: 2023年9月
前言
- 本文旨在记录如何解决latexdiff无法换行的修复教程.
- 此博客当中提供的方法也可用于解决ulem包的生成的下划线, 在中文模板当中无法换行的问题
- 如果你不想看问题产生的原因可以直接跳到最后的解决方案
问题复现
我在使用latexdiff
生成修改记录的时候发现, 下划线和删除线会超出页面范围. 具体如图所示
问题产生的原因
经过分析我发现latexdiff
会在生成的文档当中加入如下的代码
实际上latexdiff
包是调用了ulem
包来生成下划线的. 其中\sout
是删除线, \uwave
是波浪线. 而ulem包貌似在中文的环境下会出现不能换行的问题.
解决方案
我在网上查找了一圈, 发现有推荐将ulem
换成Cjkulem
的, 但是我实际尝试过后发现并没有用. CJKulem
这个包貌似已经过时了.
真正的做法是将ulem
包替换成xeCJKfntef
具体做法如下:
在latexdiff生成的对比文件当中引用xeCJKfntef
包,然后删除对ulem
的引用, 具体代码如下
\usepackage{xeCJKfntef} % 加入xeCJKfntef包
%DIF PREAMBLE EXTENSION ADDED BY LATEXDIFF
%DIF UNDERLINE PREAMBLE %DIF PREAMBLE
% \RequirePackage[normalem]{ulem} %将ulem包的引用删除或注释掉
\RequirePackage{color}\definecolor{RED}{rgb}{1,0,0}\definecolor{BLUE}{rgb}{0,0,1} %DIF PREAMBLE
\providecommand{\DIFadd}[1]{{\color{blue}\uwave{#1}}} %DIF PREAMBLE
\providecommand{\DIFdel}[1]{{\protect\color{red}\sout{#1}}} %DIF PREAMBLE
%DIF SAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFaddbegin}{} %DIF PREAMBLE
\providecommand{\DIFaddend}{} %DIF PREAMBLE
\providecommand{\DIFdelbegin}{} %DIF PREAMBLE
\providecommand{\DIFdelend}{} %DIF PREAMBLE
\providecommand{\DIFmodbegin}{} %DIF PREAMBLE
\providecommand{\DIFmodend}{} %DIF PREAMBLE
%DIF FLOATSAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFaddFL}[1]{\DIFadd{#1}} %DIF PREAMBLE
\providecommand{\DIFdelFL}[1]{\DIFdel{#1}} %DIF PREAMBLE
\providecommand{\DIFaddbeginFL}{} %DIF PREAMBLE
\providecommand{\DIFaddendFL}{} %DIF PREAMBLE
\providecommand{\DIFdelbeginFL}{} %DIF PREAMBLE
\providecommand{\DIFdelendFL}{} %DIF PREAMBLE
%DIF END PREAMBLE EXTENSION ADDED BY LATEXDIFF