组织模式中的秘密结构?

时间:2014-04-07 08:00:38

标签: emacs elisp org-mode

我想知道我是否在org-mode中有任何功能可以使我能够使用秘密结构进行操作,即:我在编辑时可以看到的结构,但是它被视为不是在出口时。它主要是在导出到ascii时导入。

示例:

我想在.org文件中这样做:

* Normal heading
** Secret heading 1
Some text 1
** Secret heading 2
Some text 2
** Secret heading 3
Some text 3

要导出到此:

Normal heading
--------------
Some text 1
Some text 2
Some text 3

使标题保密的原因可能是标签,财产或其他东西,但秘密标题应该是可折叠的。

修改

找到此解决方案(from here)(我正在使用org-mode 7.9.3 f。它不起作用。仍然显示带有:ignoreheading:标记的标题:

;; backend aware export preprocess hook
(defun sa-org-export-preprocess-hook ()
  "My backend aware export preprocess hook."
  (save-excursion
    (when (eq org-export-current-backend 'latex)
      ;; ignoreheading tag for bibliographies and appendices
      (let* ((tag "ignoreheading"))
        (org-map-entries (lambda ()
                           (delete-region (point-at-bol) (point-at-eol)))
                         (concat ":" tag ":"))))))

(add-hook 'org-export-preprocess-hook 'sa-org-export-preprocess-hook)

5 个答案:

答案 0 :(得分:4)

您可以使用EXCLUDE_TAGS属性并标记某些部分,然后使用org-export-exclude-tags导出。 E.g:

#+EXCLUDE_TAGS: noexport

* Public Section

* Secret Section :noexport:

文档here

答案 1 :(得分:3)

你想要的是here - 这是答案(重复):

  1. 将以下内容添加到.emacs文件中:

    (require 'ox-extra)
    (ox-extras-activate '(ignore-headlines))
    
  2. 在您要忽略的标题上使用ignore标记(而不是忽略其内容)

答案 2 :(得分:1)

我升级到org-mode 8.2.5h,并且这样做有效:

(defun sa-ignore-headline (contents backend info)
  "Ignore headlines with tag `ignoreheading'."
  (when (and (org-export-derived-backend-p backend 'latex 'html 'ascii)
          (string-match "\\`.*ignoreheading.*\n"
                (downcase contents)))
    (replace-match "" nil nil contents)))

(add-to-list 'org-export-filter-headline-functions 'sa-ignore-headline)

但是,只有你没有选项:#+ OPTIONS:tags:nil。猜测很明显,在调用依赖某个标签的过滤之前,标签不应该被过滤掉 - 但这让我误解了很长时间。

注意:导出到ascii时,标题下划线将保持不带标题,因此您也需要此设置:

(setq org-ascii-underline (quote ((ascii) (latin1) (utf-8))))

...一起删除头条新闻。

答案 3 :(得分:1)

linked question about the ignoreheading tag我在Emacs 24.1.1中为Org 8.2.10发布了一个有效的simpler org-export-before-parsing-hook solution

它基于org-map-entries函数的文档,该文档还声明它会自动将其包装在save-recursion中。它比使用concat更简单,因为org-map-entries的第二个参数是一个议程式匹配字符串。

答案 4 :(得分:1)

在尝试解决同样的问题时,我发现this线程描述了如何使用ox-extra.el标记扩展notignore。除非明确标记notignore,否则此方法不会导出任何标题。标题的内容正常导出。

对于我的大多数文档,notignore方法比“忽略”方法更有用。因为大多数标题都是“秘密结构”。不打算出口。

目前我的init.el文件中已激活notignore-headlines。任何人都可以建议一种基于每个文档激活它的方法。