最近终于又决定(^_^)使用reStructuredText写文档了,输出PDF时的中文问题必须要解决下。

安装环境

sudo apt install texlive texlive-latex-extra texlive-latex-recommended texlive-xetex pandoc

非Debian或Windows请自行google之

LaTeX中文

这个PDF的中文问题,其实就是LaTeX的中文问题,因为所有的PDF生成方式,都是先生成TeX和LaTeX文件的。

在XeTeX问世之前,在TeX里搞中文是一件比较费劲的事,好在XeTeX已经存在很多年了,XeTeX解决了Unicode和字体问题,但是排出来的中文断行,标点处理上还不太好,于是国人就写了xeCJK这个宏包,概括一下,XeTeX+xeCJK之后,TeX中写中文就和写英文差不多友好了。

在linux-wiki.cn上有一篇写LaTeX中文的文章,略微有一点老,不过大意是没有变化,我把那的代码粘贴到这里

\documentclass[11pt]{article}
\usepackage[BoldFont,SlantFont,CJKsetspaces,CJKchecksingle]{xeCJK}
\setCJKmainfont[BoldFont=SimHei]{SimSun}
\setCJKmonofont{SimSun}% 设置缺省中文字体
\parindent 2em %段首缩进 \begin{document}
\section{举例}
\begin{verbatim}
标点。
\end{verbatim} 汉字Chinese数学$x=y$空格
\end{document}

根据xeCJK的文档,我认为以上的代码需要改成现在这个形式,如果文档是正确的话

\documentclass[11pt]{article}
\usepackage[AutoFakeBold=true,AutoFakeSlant=true,CJKspace=true,CheckSingle=true,PunctStyle=kaiming]{xeCJK}
\setCJKmainfont[BoldFont=SimHei]{SimSun}
\setCJKmonofont{SimSun}% 设置缺省中文字体
\parindent 2em %段首缩进 \begin{document}
\section{举例}
\begin{verbatim}
标点。
\end{verbatim} 汉字Chinese数学$x=y$空格
\end{document}

注:xeCJK现在是CTeX-kit中的一员,在Github上有仓库

Pandoc的LaTeX

pandoc可以转换很多格式,其中就包含reST,使用xelatex转换为PDF的命令行,基本格式为

pandoc -t latex --latex-engine=xelatex -s -o xxx.pdf xxx.rst

直接执行这条命令,当然是不好使的,因为没有使用xeCJK,也未指定中文字体。

pandoc在转换latex的时候,会使用一个默认的模板文件,这个模板文件可以使用如下命令查看

pandoc -D latex

我们当然可以使用自己的模板,具体参考pandoc文档,不过我发现如果要求不高,默认的模板也是可以输出中文的,需要定义两个variable,我们这里直接使用命令行的方式传递变量值

pandoc -t latex --latex-engine=xelatex -s -VCJKoptions=BoldFont="SimHei" -VCJKmainfont="SimSun" -o xxx.pdf xxx.rst

今天就到这里,后面继续研究使用rst2pdf和sphinx来将reST文档转换为PDF

最新文章

  1. GJM : Unity3D HIAR -【 快速入门 】 四、创建 Hello World
  2. 传统模式下WebService与WebAPI的相同与不同
  3. Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作
  4. hive streaming 使用shell脚本
  5. in-list expansion
  6. IOS学习笔记34—EGOTableViewPullRefresh实现下拉刷新
  7. (译)如何在ASP.NET中安全使用ViewState
  8. 自己写的Dapper通用数据访问层
  9. 《android开发艺术探索》读书笔记(九)--四大组件
  10. Linux下Shell重定向
  11. [转] KVM I/O slowness on RHEL 6
  12. Ubuntu 16.04交换Ctrl和Caps
  13. C# 发送email邮件!
  14. RF基础(一) RF内建函数库BuiltIn
  15. Mysql 性能优化5【重要】数据库结构优化
  16. 【bzoj4765】 普通计算姬
  17. pageParam要求传个JSON对象的方法
  18. SQL Server 数据库的分类和用户数据库文件组成
  19. 教你一步一步在linux中正确的安装Xcache加速php
  20. jQuery实现轮播切换以及将其封装成插件(2)

热门文章

  1. js7:表单的学习,Forms对象
  2. 排名次SQL语句【名次可重复时】
  3. 利用Django徒手写个静态页面生成工具
  4. Java NIO中的Channel接口
  5. WebApp 安全风险与防护课堂开课了!
  6. rownum详解
  7. ios开发小结之app发布升级
  8. Taskaffinity属性使用小结
  9. metasploit study
  10. mac 安装 gensim包出错