13

私は組織モードで日記 (覚えておくべき考えを含む内部ブログ) を維持しており、時々、Emacs を勉強しながら、情報ファイルへの参照とともに、学んだスキルやトリックを保存しています。

現在、私は次のことを行っています。必要な情報ファイルを開き、 を押しcて現在のノード名をコピーします。これは、src-block< s TABに展開する簡単なテンプレートです。次に、lisp 式を追加してノード名を貼り付けると、最終的にリンクは次のようになります。

#+begin_src emacs-lisp
(info "(org) Properties and Columns")
#+end_src

情報ファイルを表示する必要があるときは、lisp sexp の後にカーソルを置き、C-x C-e(eval-last-sexp) を押します。

このプロセスは退屈で洗練されていません。組織モードで情報ファイルへのリンクを埋め込む最良の方法は何ですか?

編集:情報ノードにリンクを追加する方法を見つけました。外部リンクに関する組織モードのマニュアルでは、リンクを使用してこれらの同等の方法について説明しています。

[[info:org#Tags]]
[[elisp:(info "(org) Tags")]]

(org) Tags最初のバリアントでは、 で自動的に変換する方法がわかりませんorg#Tags。このプロセスをさらに簡素化するにはどうすればよいですか?

4

3 に答える 3

13

サポートされている任意のリンク タイプと同様に行います (マニュアルの「リンクの処理」セクションを参照してください)。M-x org-store-linkinfo ファイルで、(マニュアルで提案されているようにバインドします) と言い、C-c l次に org ファイルで、 を含むリンクを挿入しますC-c C-l。そこでは、保存されたリンクのリストから情報ファイルへのリンクを選択するだけです。

于 2012-05-04T17:16:26.683 に答える
1

org-store-linkbuffer-nameInfoがto*info*buffer-file-nametoを設定しているため、Infoページにアクセスすると、「ファイルにアクセスしていないバッファにリンクできません」と表示されnilます。これを回避するために、マニュアルページへのリンクを追加する方法のコミュニティ提供の例(http://orgmode.org/manual/Adding-hyperlink-types.html)を少し変更することができます。

;; Modified version of contrib/lisp/org-man.el; see
;; (http://orgmode.org/manual/Adding-hyperlink-types.html#Adding-hyperlink-types)
(require 'org)

(org-add-link-type "info" 'org-info-open)
(add-hook 'org-store-link-functions 'org-info-store-link)

(defcustom org-info-command 'info
  "The Emacs command to be used to display an info page."
  :group 'org-link
  :type '(choice (const info)))

(defun org-info-open (path)
  "Visit the infopage on PATH.
   PATH should be a topic that can be thrown at the info command."
  (funcall org-info-command path))

(defun org-info-store-link ()
  "Store a link to an info page."
  (when (memq major-mode '(Info-mode))
    ;; This is a info page, we do make this link
    (let* ((page (org-info-get-page-name))
           (link (concat "info:" page))
           (description (format "Infopage for %s" page)))
      (org-store-link-props
       :type "info"
       :link link
       :description description))))

(defun org-info-get-page-name ()
  "Extract the page name from Info in a hackish way."
  ;; This works for `Info-mode'.
  ;; Hackity-hack: copy the node name into the kill ring.
  (Info-copy-current-node-name)
  ;; Just return the kill.
  (current-kill 0))

(provide 'org-info)

重要な部分は終わりに近づいています。情報ノード名には直接アクセスできないため(簡単に見つけることができませんでした)、を呼び出しInfo-copy-current-node-nameて、に入れてから、 (である必要があります)kill-ringの最初のエントリを返すことで回避できます。kill-ring挿入されたばかりのノード名)。

于 2013-01-25T21:27:09.713 に答える
1

動作するはずのステップ - 必要な情報ノードに移動し、「c」だけを押します (ノード名はリングを強制終了するためのエントリになります) - 組織のソース ファイルで、リンクを挿入する必要があるポイントに移動し、Cc、Cl を押します - Tab を押して、示されているプロンプト バッファ (または必要な任意の種類のリンク) から elisp: を選択します。ミニ バッファのプロンプトで elisp: と入力します: - ':' (info "^") の後にこのコンテキストを入力します。 node-name は Cy によってヤンクバックされます - Ret を押すと、説明を求められます。説明を入力してください。これで完了ですが、実際に何が起こるかはまだわかりません。- Mx,visibility-mode,そして、その内容を手動で記述する方法と、コンテキスト内のすべてのスペースを「%20」で置き換える必要があるという結論に達しました。例 ==> 自分でやる ,

于 2013-09-05T15:24:40.553 に答える