概述

为什么使用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完成制作幻灯片的任务了。

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

  1. 使用pandoc制作幻灯片

    示例Md % Habits % John Doe % March 22, 2005 # In the morning ## Getting up - Turn off alarm - Get out ...

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

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

  3. Linux 桌面玩家指南:12. 优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

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

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

  5. Linux 中优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)

    这样一个标题可能不太准确,因为确实无法准确地解释什么叫"文本化编辑思想".其实我这篇随笔主要是想探讨 Markdown.LaTeX.MathJax,有兴趣的朋友可以继续往下看,同时 ...

  6. Atom支持Markdown和Latex

    本篇博客主要用于记录Atom编辑器同时支持markdown和latex: 1.安装 安装方法1: (Windows系统)File->Settings->Install中搜索markdown ...

  7. Markdown中Latex 数学公式基本语法

    原文地址:http://blog.csdn.net/u014630987/article/details/70156489 Markdown中Latex 数学公式基本语法 公式排版 分为两种排版: - ...

  8. markdown 插入latex公式练习

    markdown 插入latex公式 $$公式$$表示行间公式,本来Tex中使用\(公式\)表示行内公式,但因为Markdown中\是转义字符,所以在Markdown中输入行内公式使用\\(公式\\) ...

  9. Latex表格制作记录

    Latex表格制作记录 主要功能 合并表格的行列 长表格的使用 makecell例程借鉴 效果图 参考代码 \documentclass{ctexart} \usepackage{indentfirs ...

随机推荐

  1. Latex 分段函数

    Latex里面分段函数的输入: \begin{equation}     P_{r-j}=    \begin{cases}    0&\mbox{if $r-j$ is odd}\\     ...

  2. Asp.Net alert 方法

    public static void ExcuteAlert(Page page, string strAlerts)        {            ClientScriptManager  ...

  3. Leetcode: Arithmetic Slices II - Subsequence

    A sequence of numbers is called arithmetic if it consists of at least three elements and if the diff ...

  4. 学习Uml开始

    Um的全称是 Unified Modeling Language, 统一建模语言,uml可以帮助我们做软件需求和软件设计的工作, 1.1UML的定义 UML是一种通用的可视化建模语言,是一种标准化的用 ...

  5. html5,input,表单

    <form action="3.html">email:<input type="email" name="email" ...

  6. Mysql常用命令行大全

    第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uro ...

  7. 如何在普清的屏上调试CSS样式二倍图背景

    背景: 最近就遇到一个同事的项目,还是像平常一样小心切图,认真对像素. 一切测试都没有问题,顺利上线. 但是,上线之后,产品经理跑过来说,有BUG. BUG描述:(不认为是BUG) 前端页面上的图标是 ...

  8. Ninject简介

    1.为什么要用Ninject? Ninject是一个IOC容器用来解决程序中组件的耦合问题,它的目的在于做到最少配置.其他的的IOC工具过于依赖配置文件,需要使用assembly-qualified名 ...

  9. linux线程的实现【转】

    转自:http://www.cnblogs.com/zhaoyl/p/3620204.html 首先从OS设计原理上阐明三种线程:内核线程.轻量级进程.用户线程 内核线程 内核线程就是内核的分身,一个 ...

  10. C# 获取SqLite数据库表信息以及获取表内字段信息

    #region 最新数据表信息显示事件 /// <summary> /// 最新数据表信息显示事件 /// </summary> /// <param name=&quo ...