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

概述

为什么使用markdown?

mardown是一种轻量级的标记语言,语法简单,可读性好,并且容易转化成其他格式的文档, 在技术文档撰写中得到越来越广泛的应用。相信大家对markdown都有一定了解,如果不了解搜一下网上有大量结果, 语法可以参考Markdown 语法说明 (简体中文版)。 笔者现在写文档和ppt逐渐的从office转移到了markdown上,它的好处是

  • 纯文本

    • 便于编辑
    • 可以用版本管理工具进行管理
    • 可移植性好
  • 内容和格式分离
    • 写作的时候可以专注于内容
    • 修改格式时,一处修改,各处生效

本文简单介绍一下用markdown制作幻灯片的过程。

基本过程和工具

mardown制作幻灯片的流程一般是:先用markdown写文本文件,然后使用工具转化为html或pdf等格式。 这个过程如有必要,可修改css或tex模板。 用到的工具有:

  • 任何文本编辑器:用于编辑markdown源文件
  • pandoc:将markdown转换成其他格式(本文主要介绍pdf)的工具
  • latex:pandoc将markdown转换成pdf时,需要用到latex引擎。如果要支持中文,可以装xelatex
  • beamer:latex下制作幻灯片的工具包

当然,直接用latex+beamer就可以制作幻灯片,但是需要写tex源文件,比较麻烦而且可读性不如markdown。 所以我采用markdown写内容,tex做模板的方式。

一个基本的幻灯片

编辑markdown源文件

pandoc将markdown的一级标题视为幻灯片组,将二级标题视为幻灯片标题,二级标题下的内容放在一张幻灯片里。 不过,如果某个一级标题下没有二级标题,那么pandoc将把一级标题视为幻灯片标题,将这个一级标题下的内容放在一张幻灯片里, 二级标题显示为子框。

在任何时候,用‘---------’都可以产生一张新幻灯片。

pandoc对markdown有个扩展,在前面加上三行以%开头的内容,分别是标题、作者和日期。

例子如下

% Title
% auther
% date

# This is a group

## This is title 1

  This is first slide

  - item 1
  - item 2

## This is tile 2

  This is second slide

-------------

  This is third slide

转换为pdf

将上述代码保存为exam1.md,运行

pandoc -t beamer -o exam1.pdf exam1.md

即可生成pdf。

pandoc对markdown的扩展

pandoc出了支持标准的markdown语法,还作了一些很实用的扩展,上面的标题、作者和日期就是。 此外比较实用的还有表格、公式等。详见pandoc的文档

表格

pandoc支持用文本标识的表格,如

 A B  C
-- -- --
 a b  c

或者

| A | B | C |
|---|---|---|
| a | b | c |

公式

pandoc支持latex的公式语法,在$ ... $之间即可插入行内公式。如果要使公式单独占一行, 使用两个$即可,即$$ ... $$

中文支持

要正常显示中文,需要注意两点:

  • 使用xelatex引擎
  • 在模板文件中正确配置

首先导出pandoc的beamer默认配置

pandoc -D beamer > beamer-template.tex

在\ifxetex后面加入对中文的支持

\usepackage{xeCJK}                 % 设置中英文字体
\setCJKmainfont{WenQuanYi Micro Hei} % 中文字体
\setmainfont{Arial}                % 英文字体
\setromanfont{Courier New}
\setmonofont{Courier New}
\linespread{1.2}\selectfont        % 行距
\XeTeXlinebreaklocale "zh"         % 中文自动换行
\XeTeXlinebreakskip = 0pt plus 1pt % 字之间加0pt至1pt间距
\parindent 0em                     % 段缩进
\setlength{\parskip}{20pt}         % 段间距

编译时使用命令

pandoc -t beamer --latex-engine=xelatex --template=beamer-template.tex xx.md -o xx.pdf

实用技巧

设置页面比例

在模板文件的documentclass中加入参数aspectratio=169,即

\documentclass[..., aspectratio=169]{$documentclass$}

即可设置页面比例为16:9(默认为4:3)。

设置背景图片

笔者在工作中,需要使用公司的ppt模板,因此需要设置幻灯片的背景。最终采用的解决方法是这样的:

在模板文件中加入命令

\usebackgroundtemplate{\includegraphics[width=\paperwidth, height=\paperheight]{background.png}}

如果要对标题页单独设置背景,笔者用的是这篇文章里的方法:

\RequirePackage{tikz}
\addtobeamertemplate{title page}{%
    \begin{tikzpicture}[remember picture,overlay]
        \node [xshift=0cm,yshift=0cm] at (current page.center)
            {\includegraphics[width=\paperwidth, height=\paperheight]{background_title.png}};
    \end{tikzpicture}%
}{}

结论

有了这些,基本上就可以用markdown完成制作幻灯片的任务了。

时间: 2024-08-25 14:38:12

使用Markdown+Pandoc+LaTex+Beamer制作幻灯片的相关文章

修改LaTeX beamer演示文稿字体

在用LaTeX制作演示文稿的时候,改变字体单单使用 \documentclass{beamer} \usepackage{fontspec} \setmainfont{Ubuntu} 是不够的.这里以将字体改成Ubuntu字体为例,之前还须加入两行代码如下: \documentclass{beamer} \usefonttheme{professionalfonts} % using non standard fonts for beamer \usefonttheme{serif} % def

markdown+pandoc

markdown在线编辑网页: https://stackedit.io/ pandoc demo: http://johnmacfarlane.net/pandoc/demos.html 用下面命令生成html格式slide: pandoc -s --webtex -i -t slidy 123.md -o 123.html

LaTeX表格制作备忘一

LaTeX的普通表格制作比较简单,但是,如果要精确控制格式,就有些麻烦了.今天在做一些文档,其中用到某一种表格,现把代码与说明记录于此以备忘. 环境:Ubuntu 16.04 64位桌面版 LaTeX编辑工具:TeXstudio 代码如下: \documentclass[oneside, AutoFakeBold]{article} \usepackage{geometry} % 用于页面设置 % 设置为A4纸,并按照MSOffice的默认尺寸设置四周边距 \geometry{ a4paper,

Android App中使用Gallery制作幻灯片播放效果

http://www.jb51.net/article/83313.htm 我们有时候在iPhone手机上或者Windows上面看到动态的图片,可以通过鼠标或者手指触摸来移动它,产生动态的图片滚动效果,还可以根据你的点击或者触摸触发其他事件响应.同样的,在Android中也提供这这种实现,这就是通过Gallery在UI上实现缩略图浏览器. 我们来看看Gallery是如何来实现的,先把控件从布局文件中声明,只需知道ID为gallery. ? 1 Gallery gallery = (Gallery

Markdown 添加 Latex 数学公式

添加公式的方法 Latex 数学公式语法 添加公式的方法 行内公式 $行内公式$ 行间公式 $$行间公式$$ Latex 数学公式语法 角标(上下标) 上标命令^{} 下标命令_{} 上下标命令用来放在需要插入上下标的地方,华括弧内为上下标的内容,当角标为单个字符时候,可以不使用花括号:如果角标为多字符或者多层次的时候,必须要使用花括号. 举例: x^2, x_1^2, x^{(n)}_{22}, ^{16}O^{2-}_{32}, x^{y^{z^a}}, x^{y_z} \[ x^2, x_

Android:ViewPager制作幻灯片

布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="100dp" > <and

用Latex beamer做poster经验总结

折腾了一周,成功的用shareLatex上的AAU poster模板做了一个poster,收获非常大. 下面总结一下经验,如果能对大家有帮助就更好了 1. 图片处理: 由于模板中的图片是pdf格式,插入时要求将图片的空白调到最小,这里用到inkscape工具,将pdf拖入inkscape然后ctrl+shift+d,然后选resize page to drawing or selection,然后选resize page to drawing or selection,这是画布的面积与图片一致,

用Emacs muse制作幻灯片

PPT太流行,开会交流总是必须的.以前看过一个超酷的javascript的实现,用来代替PPT. 不过还是喜欢在Emacs中做事情,哪怕文档难看点. 现在有了muse slidy, 情况大为改观. 简单来说muse slidy可以帮助我们将muse文档发布成网页版本的幻灯片,不用自己考虑切分成不同html页面后跳转的问题 还提供了默认的theme和font, 也允许定制. 具体使用简介参考: http://museslidy.net/

Latex beamer

使用明体(gbsn)和楷体(gkai)两种字型.以下的编程是一开始的宣告,并自动生成第一张封面投影片. \documentclass[cjk]{beamer}\usepackage{CJKutf8}\usepackage{graphics}\usetheme{Warsaw}\begin{document}\begin{CJK*}{UTF8}{gbsn}%%------------------------------------------\title{市场营销原理}\author{某某某}\\\