技术背景

在早期我写过一些文章介绍用RMarkdown写Beamer,还有相应的TinyTex配置。后来Xie Yihui大神发文离开了RMarkdown核心团队,想来中文社区的支持力度和活跃度可能会有所降低。于是干脆直接用pandoc,把普通的markdown文件编译成Latex Beamer PDF格式。

pandoc的安装

这里给的是Ubuntu Linux操作系统的pandoc安装方案:

$ apt install pandoc

安装完成后可以运行如下指令确认是否安装成功:

$ pandoc --help

以及查看版本:

$ pandoc --version
pandoc 1.19.2.4
Compiled with pandoc-types 1.17.0.5, texmath 0.9.4.4, skylighting 0.3.3.1
Default user data directory: /root/.pandoc
Copyright (C) 2006-2016 John MacFarlane
Web: http://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.

安装pdflatex

系统里面没有pdflatex的话无法将latex文件编译成pdf文件,这里提供的是一个简略版安装:

$ apt install texlive texlive-xetex latex-cjk-all texmaker

安装完成后,随便做一个markdown文件测试下编译效果:

到这一步,基本上大部分的英文Markdown Beamer PDF构建就没什么问题了。

代码块和公式块

这个是比较常用的功能,相关的测试Markdown文件如下:

---
title: "Test Markdown"
author: "Dechin"
date: "`2022.03.29`"
output:
beamer_presentation:
theme: Dresden
colortheme: seagull
--- # Title 1 ## Slide 1/2 - Bullet 1
- Bullet 2
- Bullet 3 ## Slide 2/2 \```python
import numpy as np
print ('This is a python code block')
\``` # Title 2 ## Slide 1/1 Test Equation input
$$
-i\hbar\frac{\partial}{\partial t}\left|\psi\right>=E\left|\psi\right>
$$

需要注意的是,案例中Python代码块前面的两个斜杆要去掉,这里放两个斜杆是为了防止跟博客园平台的Markdown语法冲突。使用Pandoc直接编译效果如下:

这个样式就表示编译成功。

主题和颜色主题

这个是跟此前的RMarkdown非常不同的一个地方,RMarkdown的语法中是在.rmd的Markdown文件中直接配置相关的theme和colortheme。但是在上面的章节中我们可以显然的看到这个主题和颜色主题配置没有被编译进去。在pandoc编译时,我们需要在命令行中配置相应的主题,例如这样编译:

$ pandoc -t beamer -o md1.pdf -V theme=Dresden md1.md

使用这种方法可以配置Dresden主题,也是我个人比较常用的一个主题,效果大概如下:

使用同样的-V可以进一步配置颜色主题:

$ pandoc -t beamer -o md1.pdf -V theme=Dresden -V colortheme=seagull md1.md

这里配置了一个灰色主题:

关于Beamer的更多主题,可以参考这个网站。关于pandoc相关主题的更多配置选项,可以参考其中文手册

中文内容

如果文档中有中文内容,可以先安装一个字体配置工具:

$ apt install fontconfig
Reading package lists... Done
Building dependency tree
Reading state information... Done
fontconfig is already the newest version (2.12.6-0ubuntu2).
fontconfig set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 38 not upgraded.

查询本地有哪些中文字体:

$ fc-list :lang=zh
/usr/share/fonts/truetype/arphic-bkai00mp/bkai00mp.ttf: AR PL KaitiM Big5,文鼎PL中楷:style=Regular
/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf: Droid Sans Fallback:style=Regular
/usr/share/fonts/truetype/arphic-gkai00mp/gkai00mp.ttf: AR PL KaitiM GB,文鼎PL简中楷:style=Regular
/usr/share/fonts/truetype/arphic-gbsn00lp/gbsn00lp.ttf: AR PL SungtiL GB,文鼎PL简报宋:style=Regular
/usr/share/fonts/truetype/arphic-bsmi00lp/bsmi00lp.ttf: AR PL Mingti2L Big5,文鼎PL細上海宋:style=Regular

如果没有中文字体,可以考虑从Windows系统迁移一些字体过来,这里暂不做介绍。然后在编译的时候,加上一个--latex-engine=xelatex的选项(不加会编译报错),和字体配置选项(不加中文会被编译成空白),具体编译指令如下:

$ pandoc --latex-engine=xelatex -t beamer -o md1.pdf -V theme=Dresden -V colortheme=seagull -V mainfont='AR PL KaitiM GB' md1.md

生成的pdf效果如下:

这样就实现了中文内容的编译。

总结概要

通过使用pandoc,使得我们可以直接将普通的Markdown文件编译成一个Latex Beamer PDF格式的演示文稿文件。相比于RMarkdown有更强的灵活性和通用性,只是不能在生成文稿时运行相关代码,不过这点对于那些只需要一个“静态”演示文稿的人来说影响不大。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/pandoc.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

Markdown转Beamer的更多相关文章

  1. 通过R Studio用Markdown写Beamer

    技术背景 在写一些学术演示文档时,经常有可能用到Beamer--一种Latex的学术风PPT模板,比如下图所示的这种: 这种风格的演示文档有几个明显的优点:简约.严肃.可以用Latex敲公式和推导.可 ...

  2. 使用Markdown+Pandoc+LaTex+Beamer制作幻灯片

    概述 为什么使用markdown? mardown是一种轻量级的标记语言,语法简单,可读性好,并且容易转化成其他格式的文档, 在技术文档撰写中得到越来越广泛的应用.相信大家对markdown都有一定了 ...

  3. Markdown转pdf

    最近由于项目需要,要用到把markdown转换成pdf文件下载下来,最开始的时候想到的是先把markdown转成html,用到的是Parsedown:然后再将html转成pdf,用到了html2pdf ...

  4. Markdown+Pandoc 最佳写作拍档 (mailp.in)

    Markdown+Pandoc 最佳写作拍档 我们为什么写作? 自从人们开始写作,写作便是记录.抒发.批判.反省的好工具.从石板上的刻印到笔墨纸砚,再到如今的信息时代.从静态的个人主页到托管博客,从个 ...

  5. Wiz写Blog? 不会再爱了,全面拥抱Markdown+Pandoc

    Wiz写Blog? 不会再爱了,全面拥抱Markdown+Pandoc 文章转载自 http://iout.in/archives/454.html 我们为什么写作? 自从人们开始写作,写作便是记录. ...

  6. [置顶] 献给写作者的 Markdown 新手指南

    作者:http://jianshu.io/p/q81RER 出处:http://jianshu.io/p/q81RER 献给写作者的 Markdown 新手指南 简书 「简书」作为一款「写作软件」在诞 ...

  7. NiceMark——我的Markdown编辑器

    NiceMark--我的Markdown编辑器 闲来无事,写了一个Markdown编辑器.基于electron,完全采用Web前段技术(Html,css,JavaScript)实现.代码已托管在Git ...

  8. Markdown 图片助手-MarkdownPicPicker

    title: Markdown 图片助手 v0.1 toc: true comments: true date: 2016-06-04 16:40:06 tags: [Python, Markdown ...

  9. 前端学Markdown

    前面的话   我个人理解,Markdown就是一个富文本编辑器语言,类似于sass对于css的功能,Markdown也可以叫做HTML预处理器,只不过它是一门轻量级的标记语言,可以更简单的实现HTML ...

  10. 好用的Markdown编辑器一览 readme.md 编辑查看

    https://github.com/pandao/editor.md https://pandao.github.io/editor.md/examples/index.html Editor.md ...

随机推荐

  1. dotnet定义扩展方法

    // 扩展方法 // 1.创建静态类静态方法 2. 在静态方法中参数中使用 this 关键字指定需要扩展的类 // 密封类 不能直接继承,通过扩展方法,拿到父类的属性和方法进行扩展补充

  2. yarn 命令大全

    npm install yarn -g npm install --global yarnyarn 中文网:https://yarn.bootcss.com/docs/install/#windows ...

  3. google 搜索技巧

    size qq.com inurl : size 指定网站 inurl 这个网站的指定内容 filetype 指定搜索的文件类型

  4. 虚拟dom的优缺点

    虚拟dom 是js模拟的一颗dom树,也是 js 对象 : 虚拟dom 时相对于 真实dom而言的,操作真实 dom 开销太大,降低了性能,所以使用 虚拟 dom 替代真实 dom 完成操作和计算功能 ...

  5. Linux中ln 链接命令的用法

    ln的语法 Usage: ln [OPTION]... [-T] TARGET LINK_NAME (1st form) or: ln [OPTION]... TARGET (2nd form) or ...

  6. Machine Learning Week_7 Support Vector Machines

    目录 1 Large Margin Classification 1.1 Optimization Objective 1.1 Logistic Regresson 1.2 Cost 1.3 Supp ...

  7. 分支定界方法(branch and cut,branch and price的基础)

    分支定界方法(branch and cut,branch and price的基础) 目录 1.基础版的分支定界算法(假设是min问题) 2.分支定界算法的步骤及其注意事项 2.1 具体的分支定界方法 ...

  8. TrueNAS关闭5357端口

    sockstat -4l 查看监听5357端口进程的ID. 用kill -9 PID 干掉进程.

  9. CF#795 D - Max GEQ Sum O(n)做法

    D - Max GEQ Sum input 3 4 -1 1 -1 2 5 -1 2 -3 2 -1 3 2 3 -1 output YES YES NO 题目大意:给你一个数组a,让你任意一个字段均 ...

  10. 剖析Air724UG的硬件设计,有大发现?04篇

    ​ 接下来分享第四部分. 5.4 功耗 5.4.1 模块工作电流 测试仪器:综测仪 R&S CMW500,程控电源 安捷伦 66319D 测试条件:VBAT=3.8V,环境温度 25℃,插入白 ...