pandoc转pdf文件用的latex模板介绍(Linux环境)
- 关于pandoc工具使用latex模板将md文件转pdf文件还是有很长路要走的,如果执着于用它来做精美排版啥的那就是长路漫漫!
- 本篇主要讲pandoc使用的latex模板以及使用模板过程中遇到的一些问题
- 我也是不断学习摸索将此过程中遇到的问题进行总结,便于后续查看,如有不足,还请不吝赐教。
latex模板
pandoc用户指南template介绍
pandoc使用模板文件来设置文档所需的各种标题,引用,代码块,页眉和页脚等的样式设定。
要查看使用的默认模板,只需输入pandoc -D latex
其中latex是输出格式的名称。这样查看的默认模板是default.latex模板文件。
您还可以将自定义的模板文件放在(linux环境下:/usr/share/pandoc/date/templates/)这个模板文件夹下
可以在pandoc转换指令中加入--template=mytemplate.latex
选项指定自定义模板。
常见的问题
相信使用过pandoc转pdf的人应该多少都遇到过一些头大的问题,不多说直接上问题
(先卖个关子,大多问题都可以通过设定latex模板来解决)
- 中文字体不显示
这个不是模板问题啊,这锅模板可不背,是编译引擎的事,因为默认的pdflatex引擎不支持中文,所以指定支持中文的xelatex作为编辑引擎就好:--latex-engine=xelatex
(如果模板中没有设定中文字体,通过pandoc指令选项指定使用中文字体:-V CJKmainfont="KaiTi"
) - 中文不换行,设定中英文字体,页面尺寸的设定
这些在下面介绍的pm-template.latex这个模板中已经做了设定了,设用这个模板就能解决了 - 表格不显示
这个在下面介绍的eisvogel.tex这个模板大概在650行的位置做了设定,我使用编译后也只是三线表。 - 引用不显示
同样的在eisvogel.tex这个模板大概在575的位置做了设定,使用也只会显示一级引用
我是根据自己的需求从各个模板中取自己要的部分进行组合使用。模板的链接在下面都有介绍。
收集的各种latex模板
pandoc默认模板:
- default.latex模板
这是pandoc本身自带的默认模板,你可以在这个默认模板上加想要设定的内容,当然也可以自己重新自定义一个模板文件
pandoc自定义模板:
- template.tex模板,
电子书模板,内部对电子书的常规样式进行设定
- pm-template.latex模板
该模板好像使用的人蛮多的,使用改模板编译如遇到如下报错信息:
! Underfined control sequence #编译报错信息
102 \tightlist #编译报错信息
解决办法:
将以下代码加入到模板的导言区
\newcommand{\tightlist}{
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
! Underfined control sequence #编译报错信息
135 \toprule #编译报错信息
解释:
我测试了下是因为markdown的表格语法开始的上一行是一个空行,就会报这个错。
但是markdownlint语法规则中,表格的上下要有空行分隔,而此模板表格上方出现空行就报错了。
因此要对模板中表格进行设定,可以借鉴eisvogel.tex模板中650行的表格设定来解决问题。
- eisvogel.tex模板
这是我见到写的非常全的一个模板了,里面对很多样式进行了设定,太菜了我没吃懂,也就i是借鉴里面的一些东西。
**使用该模板遇到问题**
用pandoc编译时会报错,报错信息是找不到 xxx.sty 文件,
将那个文件名复制到这个网站(https://ctan.org/pkg/sourcecodepro)
找到相应文件下载,将解压后的文件放到/usr/share/texlive/texmf-dis/tex/latex/路径下
(以上路径是linux环境下的texlive路径)
- yellowpaper的eisvogel.tex模板
yellowpaper这个里对eisvogel.tex这个模板进行了一些调整,也可以做为参考看看
latex模板怎么使用
在linux环境下使用指令安装的pandoc其模板的默认路径为:/usr/share/pandoc/date/templates/
有的可能没有date这个文件夹其路径为:/usr/share/pandoc/templates/
将模板文件放到这个路径下,把后缀名改为 .latex 使用pandoc指令转换文件时,指定模板编译
指令例如:pandoc --latex-engine=xelatex --template=pm-template.latex test.md -o test.pdf
latex模板如何写
- 参考pandoc官网用户指南的Template syntax
- 也可以参见这里看看pandoc-latex-template的自述文件
- 可参考pandoc官网的template语法pandoc用户指南template syntax介绍
这个问题其实还挺难的,我也想有个大佬指点一二,我也是模仿其他人的latex模板增增改改。 都
是看看大佬的模板是怎么写的借鉴模仿。
用markdown写用文档可能需要用到的
- markdown基本语法:markdown语法介绍
- latex的公式及矩阵的书写语法:点击查看语法介绍
- 表格可以通过复制word或者excel的表格然后放到这个网站可以将表格的信息转换为html语法的表格可以参考这篇文档
- 用markdown语法写的表格,使用latex模板转换可以显示
- 而html的语法写的表格,使用latex模板转换则无法显示