Quiero tener las etiquetas <kbd> para mi blog escritas en modo org


16

Escribo y publico mi blog con org-mode y org-page. Lo que quiero decir es que quiero escribir sobre Emacs y me gustaría resaltar las pulsaciones de teclas como lo hace Stack Exchange con la <kbd>etiqueta. Obteniendo esto: ¡en C-x C-flugar de otra cosa!

¿De qué manera o cómo podría lograr esto?

Respuestas:


15

Esto es lo que uso para mi blog .

(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)))))

Invocarlo llamando C-c k.

  1. Le pedirá una clave como C-h klo haría.
  2. Inserta esa llave rodeada de <kbd>etiquetas escapadas .
  3. Si solo presiona RET, insertará las etiquetas y dejará el punto dentro (en lugar de insertar cualquier tecla), para que pueda escribir teclas más complicadas.
  4. ¡Incluso tiene algún código para poder usarlo fuera de org-mode!

1
tu blog parece genial, por cierto. Lo escribes en modo org, ¿verdad? como lo publicas
Shackra

2
@JorgeArayaNavarro Utilizo una versión muy parcheada de ox-jekyll . He tenido la intención de bloguear al respecto, pero el parche tiene 200 líneas de código, por lo que ha demostrado ser un desafío.
Malabarba

1
¿Cuál es la diferencia entre (define-key org-mode-map (kbd "C-c k") #'endless/insert-key)y (define-key org-mode-map (kbd "C-c k") 'endless/insert-key)?
shackra

2
@JorgeArayaNavarro Ver mi respuesta a este comentario
Malabarba

2
Agradable. Y si desea que cada clave individual en la secuencia sea una etiqueta separada, simplemente cambie (help-key-description key nil)a(mapconcat 'identity (split-string (help-key-description key nil)) "</kbd><kbd>")
phils
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.