Emacs组织模式降价输出:#+ TITLE选项未导出

bar*_*ios 1 emacs markdown export org-mode

我使用伟大的org-mode功能轻松推动README.md对GitHub项目的修改.Markdown导出效果很好,除了#+TITLE没有导出到Markdown 的选项 - 它可以完美地用于HTML导出.

我想保留文件名README.org以便于转换为Markdown,否则我可以选择标题作为文件名,它在GitHub上正确显示标题.

有关如何实现这一目标的任何建议?

its*_*eyd 5

根据您的问题和后续评论,您似乎想要实现三件事:

  1. 定义导出为顶级标题的自定义标题.

  2. 在标题插入TOC .

  3. 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中

定义未包含在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导出器配置为忽略注释.但是,为了更改默认行为,您可以

  1. 为您的注释定义一个自定义代码转换器.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)
  2. 重新定义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)