(分享)用 org-mode 做 presentation

今天发现一个包 org-tree-slide,可以用 org-mode 做幻灯片……于是折腾了一番🤣

感觉还不错,下面是我的配置

(use-package org-tree-slide
  :straight t
  :after org
  :commands (+org-slide-start +org-slides-stop)
  :config
  (defun +org-slide-start ()
    (interactive)

    (when (eq major-mode 'org-mode)
      ;; hide emephasis marks
      (setq org-hide-emphasis-markers t)
      ;; restart emacs to apply new settings above
      (org-mode-restart)

      ;; set faces for better presentation
      (set-face-attribute 'org-meta-line nil :foreground (face-attribute 'default :background))
      (set-face-attribute 'org-tree-slide-header-overlay-face nil :foreground (face-attribute 'default :background))
      (set-face-attribute 'org-block-begin-line nil :background (face-attribute 'default :background))
      (set-face-attribute 'org-block-end-line nil :background (face-attribute 'default :background))
      (set-face-attribute 'org-block-begin-line nil :foreground (face-attribute 'default :background))
      (set-face-attribute 'org-block-end-line nil :foreground (face-attribute 'default :background))
      (set-face-attribute 'org-quote nil :foreground (face-attribute 'default :foreground))

      ;; render biiiiiig latex fomulars
      ;; (make-variable-buffer-local 'org-format-latex-options)
      (setq-local org-format-latex-options (copy-sequence org-format-latex-options))
      (plist-put org-format-latex-options :scale 3.0)
      (org-latex-preview '(16))

      ;; the following settings must be set after restarting org-mode
      (setq-local header-line-format nil
                  mode-line-format nil
                  line-spacing 10)
      (+hide-tab-bar)
      (text-scale-increase 3)
      (visual-line-mode)
      (show-paren-local-mode -1)
      (hl-line-mode -1)
      (org-tree-slide-mode)
      ))

  (defun +org-slide-stop ()
    (interactive)

    (when (eq major-mode 'org-mode)
      ;; reset
      (setq org-hide-emphasis-markers nil)
      (set-face-attribute 'org-meta-line nil :foreground nil)
      (set-face-attribute 'org-tree-slide-header-overlay-face nil :foreground nil)
      (set-face-attribute 'org-block-begin-line nil :background nil)
      (set-face-attribute 'org-block-end-line nil :background nil)
      (set-face-attribute 'org-block-begin-line nil :foreground nil)
      (set-face-attribute 'org-block-end-line nil :foreground nil)
      (set-face-attribute 'org-quote nil :foreground nil)
      (+show-tab-bar)

      ;; remove local settings
      (kill-local-variable 'org-format-latex-options)

      (org-tree-slide-mode -1)

      ;; `org-mode-restart' will clear all local variables,
      ;; so there is no need to reset them manually
      (org-mode-restart)

      ;; remove biiiiiig latex formulars
      (org-latex-preview '(64))
      )
    )
  (setq org-tree-slide-heading-emphasis t
        org-tree-slide-content-margin-top 1
        org-tree-slide-slide-in-effect nil)
  )
(defun +hide-tab-bar ()
    (interactive)
    (setq tab-bar-format nil))

  (defun +show-tab-bar ()
    (interactive)
    (setq tab-bar-format <<填入你原来的tab-bar内容>>)
    (tab-bar--update-tab-bar-lines))

然后就可以用 +org-slide-start+org-slide-stop 开始和停止演示了……

上面的 org-tree-slide-slide-in-effect 这个变量可以选择演示的时候是否需要动画,开了的话会有一个飞入的动画……

默认用 C-<C-> 切换。

因为我希望演示的时候也能进行简单编辑,所以我没有隐藏光标,你也可以设置 face 让它隐藏,并且打开 read-only-mode,这样会更好看?

下面是用这个包的 README.org 作例子:


感觉没啥用,为什么要折腾这个?

在一些不是很正式的场合可以用这个,比如日常的组会,和组员的小会 etc.

8 个赞

说实话感觉正式场合也可以用这个而不是幻灯片. 我一般还都是直接用 Org/Markdown 导出的 HTML/PDF 比较多一些. 一直不知道 PPT 相较它们而言的优势是什么 (主要是对我来说, 制作 PPT 的成本太大了).

实际工作中感觉ppt没什么用,在公司里开会如果要实际解决问题和追求效率,先拉个列表出来1、2、3、4、5……然后边开边在云文档写会议记录,开完也基本写完,再把文档链接发出去就可以了。

当然如果这个会议是有摄像机跟着的,要对外宣传报道,追求效率和实际解决问题并不是核心,那ppt加超大屏幕就很有必要了

因为很多人没有见过 真正 优秀的 PPT,做的好的 PPT 是有着极佳的动态展示效果的,不比视频差。举个例子,PPT 是可以导入 3D 模型的,并且这个模型可以在展示时拖动展示任意方向。

不过这样的 PPT 做起来极其费心费力,大部分人也不会做用不上。对于一般使用只需要几行字的展示来说确实没有 org 直接导出 PDF 来得方便。

我都是用orgmode export,pandoc直接导出docx或pptx 如果层次结构适中,也就是层次在三到四层以内,再结合list,转出的pptx几乎可以直接使用。如果层次太多,导出的pptx可能出现单一页面聚集了过多子层次的内容,还需要手动调整,目前还不知道有无可能控制输出结构。

但不管如何,在必须要用ppt展示的场景,我都是先无脑用pandoc把org转pptx,再打开pptx修改,相对效率高一些

举个例子,导出 HTML 用 JavaScript 什么三第模型动画效果都能做

不过 HTML presentation 学习成本高,普通用户连 HTML 该怎么写都不知道,逞论自己折腾一些高级效果出来。

所以还是一个时间成本、学习成本和需求的问题。 PPT 是最普及的展示软件,对于大部分人来说用 PPT 能以最小的精力达到最好的动态展示效果。

而对于已经会使用 Org/MD 的人来说,使用 PPT 还是导出 PDF/HTML 也只是针对需求的选择罢了。

org-mode 也可以导出 beamer 做 pdf 格式的 slide. 之前经常是看 paper 的时候拿 org-mode 写点笔记, 组会时候直接帖过来就能当 slide 用了. 除了偶尔得微调下格式之外都挺方便的.

ppt 能做的, 通过前端肯定也能做, 在视觉上 web 就是无所不能的

怎么居中的呢?我用了,好像没有居中。。

左右居中吗,我用的是 visual-fill-column-mode

1 个赞