我想在组织模式下为我的博客添加<kbd>标签


16

我用org-mode和org-page编写和发布我的博客。问题是,我想写有关Emacs的文章,并且我想突出显示击键,就像Stack Exchange对该<kbd>标记所做的那样。得到这个:C-x C-f而不是其他!

我可以通过哪种方式或方法来实现?

Answers:


15

这是我在博客中使用的内容。

(define-key org-mode-map "\C-ck" #'endless/insert-key)
(defun endless/insert-key (key)
  "Ask for a key then insert its description.
Will work on both org-mode and any mode that accepts plain html."
  (interactive "kType key sequence: ")
  (let* ((is-org-mode (derived-mode-p 'org-mode))
         (tag (if is-org-mode
                  "@@html:<kbd>%s</kbd>@@"
                "<kbd>%s</kbd>")))
    (if (null (equal key "\r"))
        (insert
         (format tag (help-key-description key nil)))
      (insert (format tag ""))
      (forward-char (if is-org-mode -8 -6)))))

通过调用调用它C-c k

  1. 它将像提示一样提示您输入密钥C-h k
  2. 它将那个密钥插入转义的<kbd>标签中。
  3. 如果您只是点击RET,它将插入标签并在其中留下点(而不是插入任何键),因此您可以键入更复杂的键。
  4. 它甚至包含一些代码,使其可以在org-mode!之外使用!

1
顺便说一句,您的博客似乎很棒。您是在org-mode上写的吗?您如何发布?
shackra

2
@JorgeArayaNavarro我使用了严重修补的ox- jekyll版本。我一直想写博客,但该补丁有200行代码,因此被证明是一个挑战。
马拉巴巴

1
(define-key org-mode-map (kbd "C-c k") #'endless/insert-key)和之间有什么区别(define-key org-mode-map (kbd "C-c k") 'endless/insert-key)
shackra 2014年

2
@JorgeArayaNavarro见我的回答此评论
Malabarba

2
真好 如果您希望序列中的每个键都作为一个单独的标签,只需更改(help-key-description key nil)(mapconcat 'identity (split-string (help-key-description key nil)) "</kbd><kbd>")
phils 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.