最近终于又决定(^_^)使用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

Pandoc PDF 中文的更多相关文章

  1. 吐血整理:人工智能PDF中文教材资源包2.73G基本包含全部学习资料-人工智能学习书单

    吐血整理:人工智能PDF中文教材资源包2.73G基本包含全部学习资料 人工智能学习书单(关注微信公众号:aibbtcom获取更多资源) 文末附百度网盘下载地址 人工神经网络与盲信号处理 人工神经网络与 ...

  2. Gitbook 生成 pdf 中文字体错乱问题解决办法

    Gitbook 生成 pdf 中文字体错乱问题解决办法   用过 Gitbook 的都知道, Gitbook 会自动生成 pdf 以提供下载, 但十分遗憾的是自动生成的 pdf 对中文的支持并不好, ...

  3. SublimeText插件Pandoc导出PDF中文报错或者中文不显示解决方法

    按照如下自定义配置(主要是指定latex的字体[仅限本机字体]) { "user": { // "pandoc-path":"C:\\Program ...

  4. sphinx PDF 中文

    使用reST撰写文档时,需要分多个文档时,就必须使用sphinx了,sphinx说起来很简单的,但是默认是不是支持中文的.幸好我出生的晚,sphinx现在已经支持xelatex了^_^ 安装 除了pa ...

  5. AD smart pdf 中文丢失

    Altium Designer将原理图通过smart pdf导出,原理图中的中文丢失了. 将原理图中的所有中文字体改为宋体即可. 百度知道上的也有说: 打开软件后,点击左上角的[DXP]→[Prefe ...

  6. JasperReport4.6生成PDF中文

    Web项目中PDF显示中文 本人无奈使用JasperReport4.6,因为这本书(好像也是唯一的一本国内的介绍JasperReport的书), 选择"文件"→New命令,弹出一个 ...

  7. RDF类型报表-PDF中文乱码

    在Oracle R12中,遇到了客户一张客户化的报表: 报表的输出格式是布局在RDF文件(非RTF)中,在并发请求输出时,PDF会出现中文乱码,而HTML和excel显示正常: 根据资料: 查看$OA ...

  8. 解决html导出pdf中文乱码问题的正确姿势

    简介 本文使用jspdf 1.5.3版.GitHub地址:https://github.com/MrRio/jsPDF jspdf是歪果仁开发的,因此在一开始就没想过支持非英文以外的文字,这就导致了非 ...

  9. php+tcpdf生成pdf: 中文乱码

    TCPDF是一个生成PDF的不错的库,可惜,官方对包括中文在内的东亚字体支持不怎么样的.场景:某项目需要根据数据库信息生成pdf格式的发票,考虑采用稳定的tcpdf,虽然还有许多其它选择,但是这个应该 ...

随机推荐

  1. 洛谷 [P1552] 派遣

    树型DP + 可并堆 非常清楚的想到是树型DP, 但是如何维护最小值, 于是就去新学了可并堆 #include <iostream> #include <cstring> #i ...

  2. div两侧的boder断开 消失 奇怪

    原文发布时间为:2009-11-06 -- 来源于本人的百度文章 [由搬家工具导入] 解决方法: 设定外层DIV的宽度即可,如 width:99% ========================== ...

  3. poj 2778 DNA Sequence 状态及状态转移 AC自动机 矩阵快速幂

    题目链接 题意 给定\(m\)个字符串,问长度为\(n\)的字符串中有多少个不包含那\(m\)个字符串. (字符集为\(A,T,C,G\),\(m\leq 10\),长度\(\leq 10\),\(n ...

  4. scrapy实战

    采用scrapy实现对股票网站的爬取 功能描述: 技术路线:scrapy 目标:获取上交所和深交所所有股票名称和交易信息并存储 实例编写: 步骤1:建立工程和spider爬虫模板 步骤2:编写spid ...

  5. linux命令行下使用vboxmanage安装linux系统

    环境:Ubuntu 15.10 64bit,virtualbox 5.0.16 准备:下载安装好virtualbox,virtualbox-extensions,准备好iso系统文件,如archlin ...

  6. 用python获取服务器硬件信息[转]

    #!/usr/bin/env python # -*- coding: utf-8 -*- import rlcompleter, readline readline.parse_and_bind(' ...

  7. phpexcel--导入excel表格

    最近在做一个小项目,就是一个管理信息的小系统:要求有导入和导出的信息为excel的功能,研究过导入导出功能的肯定知道导出要比导入的简单多了,导入用的phpexcel,当时对phpexcel是完全不了解 ...

  8. Day 20 Object_oriented_programing(摘)

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  9. PHP安装oracle的php_oci和oci8扩展

    环境:centos6.9 php5.3.3 oracle客户端:下载链接:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277 ...

  10. Java IO 学习(二)select/poll/epoll

    如上文所说,select/poll/epoll本质上都是同步阻塞的,但是由于实现了IO多路复用,在处理聊天室这种需要处理大量长连接但是每个连接上数据事件较少的场景时,相比最原始的为每个连接新开一个线程 ...