LaTeX生成的PDF复制的时候出现乱码,无法查重怎么办?方案都在这里了
不少用户使用的模板还停留在十几年前师兄师姐留下来的模版,鉴于是老板推荐的,也就延续使用了,就怕格式出现不对的地方,来回折腾。为了用老版本的模版,电脑就只能安装老的 ctex 套装(本文复现代码测试版本是 ctex 2.9.2.164 full)来使用了。
但是用户发现自己的 PDF 查重会乱码。我这里把出现乱码的情况复现和解决方案放在下面了,希望对大家使用有所帮助。
第一种情况 PDFLaTeX 编译的情况:
我们可以写一个复现代码:
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{GBK}{song}
崴泥我爱你!有些查重系统会将 pdf 中的文字直接复制出来,然后作为 plain text 查重。
\bfseries CJK 下的文字乱码复现。
\end{CJK}
\end{document}
复制出现乱码的情况:
解决方案通过在导言区添加 \usepackage{ccmap} 来解决, 这样生成的pdf文档就可以完全复制了。
代码修复:
\documentclass{article}
\usepackage{CJK}
\usepackage{ccmap}
\begin{document}
\begin{CJK}{GBK}{song}
崴泥我爱你!有些查重系统会将 pdf 中的文字直接复制出来,然后作为 plain text 查重。
\bfseries CJK 下的文字乱码复现。
\end{CJK}
\end{document}
效果展示:
第二种情况:使用 xelatex 编译出现复制乱码
由于 windows 上的默认的中易字体是缺少字重设计的,因此宋体对应就没有粗体,有些模版制作的时候为了与word的伪粗体设置保持一致性,在调用 windows 字体时开启伪粗。
我们查看下 ctex 自带的文档说明,就知道了,xeCJK 的 BoldFont 选项(老版本是这样设置的,更新的版本是 AutoFakeBold 参数设置的)就是开启了伪粗体的设置。
复现代码:
\documentclass{article}
\usepackage[BoldFont]{xeCJK}
\setCJKmainfont{SimSun}
\begin{document}
崴泥我爱你!有些查重系统会将 pdf 中的文字直接复制出来,然后作为 plain text 查重。
\bfseries 而 TexLive 2018 及以前的版本中,XeTeX 的伪粗体会导致复制乱码,即复制 pdf 中的粗体文字会产生 plain text 乱码。
\end{document}
测试用 ctex 2.9.2 xelatex 编译,就发现复制粗体部分的文字就是乱码的情况。如下效果:
这时候我们只需要去掉伪粗体的设置,找一个含有字重的字体替换就可以了,或者粗体设置为黑体,临时做查重版本使用,格式似乎没问题的。
改成如下:
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont[BoldFont=SimHei]{SimSun}
\begin{document}
崴泥我爱你!有些查重系统会将 pdf 中的文字直接复制出来,然后作为 plain text 查重。
\bfseries 而 TexLive 2018 及以前的版本中,XeTeX 的伪粗体会导致复制乱码,即复制 pdf 中的粗体文字会产生 plain text 乱码。
\end{document}
效果如下,乱码消失了:
扩展参考:
https://github.com/tuna/thuthesis/issues/423
https://github.com/TheNetAdmin/zjuthesis/issues/14
入门资料,免费知识代码:
https://flowus.cn/latex/share/66110e84-b24a-4cd5-b8a7-2ba2afb35a30
精心制作免费视频教程:
https://space.bilibili.com/209746320