查看原文
其他

LaTeX生成的PDF复制的时候出现乱码,无法查重怎么办?方案都在这里了

texer LaTeX工作室 2024-04-06

不少用户使用的模板还停留在十几年前师兄师姐留下来的模版,鉴于是老板推荐的,也就延续使用了,就怕格式出现不对的地方,来回折腾。为了用老版本的模版,电脑就只能安装老的 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}

效果如下,乱码消失了:

扩展参考:

  1. https://github.com/tuna/thuthesis/issues/423

  2. https://github.com/TheNetAdmin/zjuthesis/issues/14

关注我们公众号,学习 LaTeX 无烦恼!

入门资料,免费知识代码:

https://flowus.cn/latex/share/66110e84-b24a-4cd5-b8a7-2ba2afb35a30

精心制作免费视频教程:

https://space.bilibili.com/209746320

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存