根据您的问题和后续评论,您似乎想要实现三件事:
定义导出为顶级标题的自定义标题.
在标题后插入TOC .
TOC不应包括标题.
在自定义位置插入TOC很简单,所以让我们从开始:添加
#+OPTIONS: toc:nil
Run Code Online (Sandbox Code Playgroud)
到顶部的出口选项README.org.这本身就告诉org-mode我们在导出时不要包含默认的TOC.然后,您可以通过插入将TOC放置在您想要的位置
#+TOC: headlines
Run Code Online (Sandbox Code Playgroud)
在理想的位置.(此方法并非特定于Markdown导出.)
定义未包含在TOC中的自定义标题有点棘手,但基本思路是通过将标题格式化为Markdown标题而不是标题来从TOC中排除org标题.作为第一步,更改README.org为如下所示:
#+OPTIONS: toc:nil
# Emacs als Python-Power-Editor für den RasPi
#+TOC: headlines
* Wieso nur ausgerechnet Emacs???
...
Run Code Online (Sandbox Code Playgroud)
开箱即用,这不会产生预期的结果,因为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)))
Run Code Online (Sandbox Code Playgroud)重新定义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) ""))
;; ...
))
Run Code Online (Sandbox Code Playgroud)
后端的原始定义可以在文件中找到ox-md.el; 此文件位于org-mode安装目录中.您需要将完整定义复制到.emacs文件中并更改行
(comment . (lambda (&rest args) ""))
Run Code Online (Sandbox Code Playgroud)
如上所示.
通过这些自定义,生成的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???
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2136 次 |
| 最近记录: |