8

Q:emacs org-modeでトランスクルージョンを行う方法はありますか?

「トランスクルージョン」とは、fileA.orgとfileB.orgのある時点で、fileInc.orgを「含む」、fileInc.orgのツリーを両方の場所に表示するようなものを意味します。リンクするだけでなく、実際に表示されます。(おそらく、条件付き包含、変換、たとえばネストの深さ(***の数)を使用)。

#setupfileについては知っていますが、実際のテキストではなく、モードでのみ機能するようです。

http://orgmode.org/manual/Include-files.htmlについては知っていますが、AFAIKはエクスポート時にのみ機能します。

私は通常のemacsorg-modeバッファで動作するものを探しています。(実際には、非組織モードのバッファーで機能するものが良いかもしれません。)

複数のファイルに含めたいボイラープレートがあります。

このようなものはありますか?

4

2 に答える 2

13

うーん...このようなものは存在しないと思いますが、これを行う動的ブロックを作成するのは簡単でした. 次の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を参照してください。お役に立てれば!

于 2013-03-12T02:22:58.787 に答える