Markdown转Beamer进阶

技术背景

在前面的一篇文章中,我们介绍过Markdown转Beamer的基本方法。通过这个方案,我们可以只写普通的Markdown文档,甚至可以用Github或者Gitee进行保存和协同编辑。然后在本地环境中通过pandoc进行编译构建,最终可以生成一个Beamer风格的pdf文件。这里我们不讨论到底是用PPT写比较好,还是Beamer比较好,抑或者是Markdown,我们只探讨Markdown转Beamer风格pdf文件这一操作可能面临的一些问题。

添加目录页

可以通过修改pandoc编译指令完成,在编译命令中添加:

-s --toc --toc-depth=1

例如:

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

这样就会把几个一级标题自动汇聚成一个目录页。

添加组织信息

在Markdown文件的开头写一个json格式的配置:

---
title: "My Beamer"
author: "Dechin"
institute: My Institute
date: 2025.01.20
---

这样依赖,这几个关键信息在编译后就会显示在首页和每一页的页脚上。

使用mermaid流程图

mermaid是Markdown中常用的一种流程图,可以直接通过文字,来自动生成一个流程图图片。在整个Markdown编译成Beamer的过程中,这一步有可能是最难的环境配置之一(后面还会提到一个算法伪代码的配置)。正常的mermaid安装和配置流程是这样的:

$ apt install nodejs
$ npm install --global mermaid-filter

然后在pandoc编译时加上:

-F /path_to_nodejs/Nodejs/node_global/bin/mermaid-filter

如果出现一个跟sandbox有关的报错,就打开/path_to_nodejs/Nodejs/node_global/bin/mermaid-filter这个文件,找到大约82行左右,有一个fullCmd的定义,在这个定义最后加上一个json配置文件,修改完的fullCmd大概长这样:

var fullCmd = `${cmd}  ${confFileOpts} ${puppeteerOpts} -w ${options.width} -s ${options.scale} -f -i "${tmpfileObj.name}" -t ${options.theme} -b ${options.background} -o "${savePath}" -p /home/tmp/docs/puppeteer-config.json`

这个json配置文件的内容很简单,就写上这么一句:

{"args": ["--no-sandbox"]
}

就可以了。然后执行完成的pandoc编译指令进行编译,大概是长这样:

$ pandoc --latex-engine=xelatex -t beamer -o md1.pdf -s --toc --toc-depth=1 -F /path_to_nodejs/Nodejs/node_global/bin/mermaid-filter -V theme=Dresden -V colortheme=seagull -V mainfont='AR PL KaitiM GB' md1.md

这样就可以正确的生成mermaid内容。如果在上述过程中,遇到其他类型的报错信息,大概率是nodejs版本的问题,这个有需要的话再另作介绍。有个问题是上述生成的图片,有可能因为尺寸问题,会导致生成的图片有些模糊。默认的应该是输出png格式的图片,其实这些也是可以修改的。还是在/path_to_nodejs/Nodejs/node_global/bin/mermaid-filter配置文件里面,大约29~30行的位置,有一个图片width和图片format的配置,直接修改这里的format配置就可以输出矢量图了,我建议使用pdf格式的矢量图,因为svg格式的矢量图会有其他问题。修改完内容大概是这样的:

width: process.env.MERMAID_FILTER_WIDTH || 800,
format: process.env.MERMAID_FILTER_FORMAT || 'pdf',

这样输出的mermaid流程图就是清晰的了。以下是一个简单的流程图示例:

## PySAGES Workflow
\center#```mermaid
sequenceDiagramUser-->>PySAGES: CV, MethodUser->>PySAGES: pysages.run()PySAGES->>Backend: Initialize()PySAGES->>Backend: Simulation.run()Backend-->>PySAGES: ForcePySAGES-->>Backend: Bias ForcePySAGES->>Backend: Stop()Backend-->>User: TrajUser->>PySAGES: pysages.analyse()
#```

生成的效果如下所示:

图片居中

直接在Markdown的图片前配置一个\center即可。

算法伪代码

这是程序猿们常用的一个算法表示形式,在Markdown使用pandoc编译的情况下,我们需要单独下载一个名为algorithms的包,下载地址为:https://ctan.org/pkg/algorithms。下载和解压缩完成后,在目录下执行如下指令进行配置:

$ latex algorithms.ins
$ latex algorithms.dtx

运行完成后会在当前路径下生成两个sty文件。我的操作方法是把这两个sty文件拷贝到markdown的*.md文件同级目录下,然后修改pandoc的默认beamer配置文件/usr/share/pandoc/data/templates/default.beamer,添加这么两行内容:

\usepackage{algorithm}
\usepackage{algorithmic}

然后就可以在Markdown里面写伪代码了,如下是一个简单的官方示例:

\begin{algorithmic}[1]
\REQUIRE $n \geq 0$
\ENSURE $y = x^n$
\STATE $y \leftarrow 1$
\STATE $X \leftarrow x$
\STATE $N \leftarrow n$
\WHILE{$N \neq 0$}
\IF{$N$ is even}
\STATE $X \leftarrow X \times X$
\STATE $N \leftarrow N / 2$
\ELSE[$N$ is odd]
\STATE $y \leftarrow y \times X$
\STATE $N \leftarrow N - 1$
\ENDIF
\ENDWHILE
\end{algorithmic}

编译后生成的效果是这样的:

添加页码

由于默认的这个模板里面不显示页码,所以需要修改一下beamer模板,加入如下配置:

\expandafter\def\expandafter\insertshorttitle\expandafter{%\insertshorttitle\hfill%\insertframenumber\,/\,\inserttotalframenumber}

添加致谢

在markdown文件的结尾加上:

## \center
\Huge
\vspace{1cm}
Thanks for your attention!

如果需要,可以自己配上花体。

总结概要

接上一篇介绍的基本Markdown通过pandoc编译转为Beamer风格文档的文章,本文主要介绍一些Markdown转Beamer其中的进阶用法。如Mermaid流程图,和Algorithms算法伪代码的使用等。

版权声明

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

作者ID:DechinPhy

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/872242.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Markdown转Beamer坑点

接上一篇介绍的基本Markdown通过pandoc编译转为Beamer风格文档的文章,本文主要介绍一些Markdown转Beamer其中的进阶用法。如Mermaid流程图,和Algorithms算法伪代码的使用等。技术背景 在前面的一篇文章中,我们介绍过Markdown转Beamer的基本方法。通过这个方案,我们可以只写…

解决H7-TOOL脱机烧录Nordic的nRF5340系列的NET核,至此APP核和NET核均可以烧录(2025-01-15)

1、5340是双核的,一个APP核是128MHz,1MB Flash,还有一个网络的核是256KB Flash, 64MH,当前烧录APP核的Flash和NET核的Flash都已经没问题。 2、推荐使用扇区擦除,整片擦除不稳定,出问题后也容易芯片保护。NET核在线烧录(在线烧录是方便验证测试,上位机和下位机均无需联…

Keepalived ip漂移

当 Nginx 部署在多个服务器节点上,且希望在一个节点故障时,客户端流量自动切换到另一个节点时,需要使用 IP 漂移。 这里使用使用 Keepalived 实现 IP 漂移 一.安装配置 Keepalived安装 Keepalived 在所有运行 Nginx 的节点上安装 Keepalived:# 在 CentOS 上 sudo yum insta…

怎么添加财务部打印机

添加打印机输入以下地址输入用户名和密码验证 # administrator # 123456自动安装驱动,安装驱动完成即可

https证书管理系统-自动化部署

免费HTTPS证书(SSL证书)- 自动化部署 步骤1:复制生成的linux脚本命令步骤2:拷贝到部署站点的linux服务器上运行步骤三:刷新页面,即可看到此时的节点记录步骤四:点击“配置证书”,选择证书后自动部署步骤五:节点部署已完成,后续自动调度部署,无需干预

vmware vCenter证书故障处理

故障现象:重启vCenter后出现503错误:解决方法: 一、登陆ssh到vcenter,重新生成证书 先关掉HA,不然证书管理会报错。 做好vCenter快照 执行证书管理命令: /usr/lib/vmware-vmca/bin/certificate-manager按照提示输入:其中IP地址和域名必须输入自己集群的,域名…

从情感分析到热点事件排名:思通数科舆情监测系统的全面分析功能

思通数科的舆情监测分析系统通过多维度数据采集与分析,为用户提供全面、准确的舆情信息。本文将根据思通数科舆情监测分析系统的主要功能模块,详细介绍系统的各项监测与分析内容,以及其在实际应用中的价值。一、最新资讯 思通数科舆情监测系统首先为用户提供了最新的资讯动态…

2025/1/20

今天继续学习Android Studio,学习了布局,有LinearLayout、相对布局、FrameLayout的布局方式,学习了各个组件内部的小组件,以及TextView 和View的基础控件,用手机usb进行调试,突发奇想,想整一个简单的app,调试成功后,关闭电脑程序,手机端app会卡退,了解到需要apk的知…

manim边做边学--交替变换

今天,我们将介绍 Manim 中两个用于交替变换的动画类:CyclicReplace 和 Swap。 无论是在展示数学概念的动态变化,还是在图形设计中呈现元素的巧妙交互,这两个动画类都扮演着重要角色。 它们以各自独特的方式,为我们提供了丰富的创意表达空间。CyclicReplace:循环替换一组对…

认识西门子ET 200SP分布式I/O系统的接口模块

文章来源:认识西门子ET 200SP分布式I/O系统的接口模块西门子ET 200SP分布式I/O系统由接口模块和信号模块组成,信号模块插接在底板上,通过底板与接口模块相连接。一个接口模块可以连接多个信号模块,具体的数量与接口模块的类型有关。今天这篇文章,我们来介绍下接口模块。 接…

【DingTalk】JsApi 地理位置相关

最近接手同事新开的半成品项目,钉钉嵌入的地图API测试中出现了BUG 钉钉API文档见此: https://open.dingtalk.com/document/orgapp/obtain-current-geographic-location-information-single-positioning一、IOS位置获取组件无法打开 安卓手机是可以不需要JSAPI授权配置的,这点…

“国产双系统”出炉!复旦微FMQL20SM非对称AMP:Linux + 裸机

“非对称AMP”双系统是什么 AMP(Asymmetric Multi-Processing),即非对称多处理架构。“非对称AMP”双系统是指多个核心相对独立运行不同的操作系统或裸机应用程序,如Linux + RTOS/裸机,但需一个主核心来控制整个系统以及其它从核心。每个处理器核心相互隔离,拥有属于自己的…