我使用出色的 org-mode
轻松将 README.md
的修改推送到 GitHub 项目。 Markdown 导出效果很好,除了 #+TITLE
选项没有被导出到 Markdown - 它完美地适用于 HTML 导出。
我想保留文件名 README.org
以便于转换成 Markdown,否则我可以选择标题作为文件名,这样可以在 GitHub 上正确显示标题。
关于如何实现这一点的任何建议?
最佳答案
根据您的问题和随后的评论,您似乎想要实现三件事:
定义一个导出为顶级标题的自定义标题。
在标题之后插入目录。
目录不应包含标题。
目录的自定义位置
在自定义位置插入 TOC 很简单,所以让我们从这个开始:添加
#+OPTIONS: toc:nil
到 README.org
顶部的导出选项。就其本身而言,这告诉 org-mode
在导出时不要包含默认目录。然后,您可以通过插入将 TOC 放置在您想要的位置
#+TOC: headlines
在所需的位置。 (此 method 并非特定于 Markdown 导出。)
未显示在目录中的自定义标题
定义一个不包含在 TOC 中的自定义标题有点棘手,但基本想法是通过将标题格式化为 Markdown 标题而不是 org
标题。第一步,将 README.org
更改为如下所示:
#+OPTIONS: toc:nil
# Emacs als Python-Power-Editor für den RasPi
#+TOC: headlines
* Wieso nur ausgerechnet Emacs???
...
开箱即用这不会产生所需的结果,因为 org
会将标题解释为注释,并且默认情况下 Markdown 导出器配置为忽略注释。但是,为了更改默认行为,您可以
为您的
.emacs
中的注释定义自定义转码器:(defun org-md-comment (comment contents info) "Transcode COMMENT object into Markdown format. CONTENTS is nil. INFO is a plist holding contextual information." (format "# %s" (org-element-property :value comment)))
重新定义 Markdown 导出后端以使用此转码器:
(org-export-define-derived-backend 'md 'html ;; ... :translate-alist '((bold . org-md-bold) (code . org-md-verbatim) (comment . org-md-comment) ;; <--- Use custom transcoder (comment-block . (lambda (&rest args) "")) ;; ... ))
后端的原始定义可以在文件
ox-md.el
中找到;该文件位于org-mode
安装目录中。您需要将完整的定义复制到您的.emacs
文件并更改行(comment . (lambda (&rest args) ""))
如上图。
结果
通过这些自定义,生成的 README.md
文件如下所示:
# Emacs als Python-Power-Editor für den RasPi
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">1. Wieso nur ausgerechnet Emacs???</a></li>
<li><a href="#sec-2">2. Die Maus ist tot, es leben die shortcuts!</a></li>
<li><a href="#sec-3">3. Auf den Emacs, fertig, los!</a></li>
</ul>
</div>
</div>
# Wieso nur ausgerechnet Emacs???
...
关于Emacs org-mode markdown 导出 : #+TITLE option not exported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24123769/