Emacs org-mode中的ISO转换是什么意思?

8

问:在emacs org-mode中是否有办法进行转换?

所谓“转换”,是指在fileA.org和fileB.org的某些地方,“包含”fileInc.org——并且使来自fileInc.org的树在两个地方都显示出来。实际上出现,而不仅仅是链接。(可能还包括条件包含和转换,比如嵌套深度(***数)等)

我知道有#setupfile,但那似乎只对模式有效,而不适用于实际文本。

我知道http://orgmode.org/manual/Include-files.html,但据我所知,它们只在导出时有效。

我正在寻找在普通的emacs org-mode缓冲区中工作的东西。(实际上,在非org-mode缓冲区中工作的东西可能更好。)

我有一些样板文件要在多个文件中包含。

是否存在这样的东西?

2个回答

14

嗯...我认为没有类似的东西存在,但编写一个动态块来完成这个任务很容易。下面是适用于我的elisp代码:

(defun org-dblock-write:transclusion (params)
  (progn
    (with-temp-buffer
      (insert-file-contents (plist-get params :filename))
      (let ((range-start (or (plist-get params :min) (line-number-at-pos (point-min))))
            (range-end (or (plist-get params :max) (line-number-at-pos (point-max)))))
        (copy-region-as-kill (line-beginning-position range-start)
                             (line-end-position range-end))))
    (yank)))

然后,要包括给定文件的行范围,您可以创建如下的动态块:

 #+BEGIN: transclusion :filename "~/testfile.org" :min 2 :max 4
 #+END:

并使用C-c C-x C-u自动填充。 跳过min和max参数以包含整个文件。 请注意,您可以将org-update-all-dblocks绑定到钩子上,以便在访问文件或保存时更新此范围。

有关动态块的更多信息,请访问http://orgmode.org/org.html#Dynamic-blocks。希望这可以帮助!


有人适应了这个程序来处理特定的标题吗?我还没有找到任何公开的东西(如果有人找到或制作了类似的东西,请在这里发布相关问题http://emacs.stackexchange.com/questions/12562/org-mode-headings-in-multiple-places-at-once-transclusion)。 - avv
希望能够像 #+INCLUDE 一样使用标签来实现它的功能。 - AlwaysLearning
请问,函数名称中的列是什么意思? - AlwaysLearning
2021年,根据u/rdgrg109的答案org-transclusion on github是前进的道路。 - vfclists

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接