pandoc使用

Posted 乃爱苦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandoc使用相关的知识,希望对你有一定的参考价值。

准备

  1. pandoc官网下载
  2. MiXTeX下载。下载完成后记得先进入MiXTeX console更新下
  3. md编辑器。楼主使用vscode

问题汇总

  1. [WARNING] Missing character: There is no 澶?pandoc: : hPutChar: invalid argument (Invalid argument)
    ans:由于编译字体默认不使用中文,所以需要指定编译字体。
pandoc srs.md -o srs.pdf --pdf-engine=xelatex -V CJKmainfont=KaiTi

其他解决方法见pandoc官网
2. 编译pandoc默认的latex引擎是pdflatex,是不支持中文的,因此需要手动设置编译时所用的引擎为xelatex

使用 pandoc 进行文档转换(word转pdf)

pandoc 是一个神奇的转换工具(详见官网),它支持各种文档格式之间的转换。如果使用它进行 pdf 转换需要依赖外部引擎(LaTeX)。

安装 pandoc

以 CentOS 为例,其他操作系统详见官网安装说明

1、进入页面 https://github.com/jgm/pandoc/releases
2、下载 pandoc-2.17.1.1-linux-amd64.tar.gz
3、解压缩后bin目录中的 pandoc 即为可以直接使用的二进制文件。

安装 LaTeX 引擎

如果需要使用 pandoc 转换文档为 pdf,需要安装在操作系统上安装 latex(默认使用 LaTeX 引擎),否则会出现错误 pdflatex not found. Please select a different --pdf-engine or install pdflatex

XeLaTeX 是使用 LaTeX 的排版引擎。对于中文文档,pdflatex 转换会出现字符集不支持的问题,可以使用参数指定 xelatex 引擎来转换中文文档。

1、下载 ISO 镜像文件




2、挂载 iso 文件进行安装

先 mount,再执行 ./install-tl 命令。

[root@server01 data]# mount -o loop texlive2021-20210325.iso /data/texlive
mount: /dev/loop0 is write-protected, mounting read-only
[root@server01 texlive]# ./install-tl

# 中途出现提示 Enter command: 时输入 I 然后继续

如果安装 latex 出现错误 Can't locate Digest/MD5.pm in @INC (@INC contains,说明缺少依赖 perl-Digest-MD5,可以执行 yum -y install perl-Digest-MD5 来安装(安装成功后继续 ./install-tl)。

3、配置环境变量

在安装包 iso 中有指导手册 ./texlive-doc/texlive-zh-cn/texlive-zh-cn.pdf

查看 pdf 文档的 3.4.1 节,添加如下环境变量到用户环境下.bash_profile(或全局的 /etc/profile

PATH=/usr/local/texlive/2021/bin/x86_64-linux:$PATH 
export PATH
MANPATH=/usr/local/texlive/2021/texmf-dist/doc/man:$MANPATH 
export MANPATH
INFOPATH=/usr/local/texlive/2021/texmf-dist/doc/info:$INFOPATH 
export INFOPATH

执行 source ~/.bash_profile 使配置立即生效。

4、查看3.4.4节添加 tex 系统自带的字体文件

将 texlive-fontconfig.conf 文件复制到 /etc/fonts/conf.d/09-texlive.conf 后,再运行 fc-cache -fsv 命令。

[root@server01 texlive]# cp /usr/local/texlive/2021/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
[root@server01 texlive]# fc-cache -fsv

5、使用测试

编辑如下内容为 test.tex 文件

%% coding:utf8
%% coding:utf8
\\documentclassarticle
\\usepackagexeCJK
\\setCJKmainfontSimSun
\\begindocument
你好, TeX Live 2013!
\\enddocument

执行转换命令 pandoc --pdf-engine=xelatex -s test.tex -o test.pdf,验证生成的 pdf 文件是否正确。


更多关于 latex 的内容详见官网资料,如下:
https://www.latex-project.org/
https://www.tug.org/texlive/acquire-netinstall.html
https://www.tug.org/texlive/acquire-netinstall.html#netlwp
https://www.tug.org/texlive/quickinstall.html
https://pandoc.org/demos.html

基于docker的使用方法

以上内容我们还需要在服务器上安装环境,如果使用 pandoc 的 docker 镜像 将会使这一切都变的更简单。

示例:

# 设置运行命令的别名
alias pandock='docker run --rm -v "$(pwd):/data" -u $(id -u):$(id -g) pandoc/latex'

# 转换一个 markdown 文档为 pdf 文件
pandock -s test.md -o test.pdf

(END)

以上是关于pandoc使用的主要内容,如果未能解决你的问题,请参考以下文章

pandoc-mode:如何用pandoc-mode表达pandoc命令选项?

pandoc使用

使用 pandoc 进行文档转换(word转pdf)

使用带有 bookdown 的 pandoc 模板

如何使用 pandoc 在书目参考中转义“:”?

pandoc转pdf文件使用latex模板介绍(Linux环境)