Insert org-entities into org-mode with helm
Posted November 21, 2015 at 11:37 AM | categories: orgmode, emacs, helm | tags:
org-mode has a lot of pre-defined entities (see http://kitchingroup.cheme.cmu.edu/blog/2013/10/03/Exporting-accented-characters-to-latex-from-org-mode/ ), otherwise known to me as non-ascii characters. I rarely remember what these are, and occasionally want to insert the LaTeX or HTML code, so here we build a helm command to show them to me, and allow me to select one for insertion. We generate the helm sources from org-entities below. It works pretty well!
(defun helm-insert-org-entity () "Helm interface to insert an entity from `org-entities'. F1 inserts utf-8 character F2 inserts entity code F3 inserts LaTeX code (does not wrap in math-mode) F4 inserts HTML code" (interactive) (helm :sources (reverse (let ((sources '()) toplevel secondlevel) (dolist (element (append '("* User" "** User entities") org-entities-user org-entities)) (when (and (stringp element) (s-starts-with? "* " element)) (setq toplevel element)) (when (and (stringp element) (s-starts-with? "** " element)) (setq secondlevel element) (add-to-list 'sources `((name . ,(concat toplevel (replace-regexp-in-string "\\*\\*" " - " secondlevel))) (candidates . nil) (action . (("insert utf-8 char" . (lambda (candidate) (insert (nth 6 candidate)))) ("insert org entity" . (lambda (candidate) (insert (concat "\\" (car candidate))))) ("insert latex" . (lambda (candidate) (insert (nth 1 candidate)))) ("insert html" . (lambda (candidate) (insert (nth 3 candidate))))))))) (when (and element (listp element)) (setf (cdr (assoc 'candidates (car sources))) (append (cdr (assoc 'candidates (car sources))) (list (cons (format "%10s %s" (nth 6 element) element) element)))))) sources))))
Now I can write things like the particle was 60 Å in diameter at a temperature of 600°C, leading to an expansion coefficient of α=0.2 ± 0.01. It isn't quite as fast as knowing the keyboard shortcuts for those symbols, but a lot faster than looking them up then copy and pasting them. So far it seems like these export to HTML and LaTeX just fine, and they are more convenient and better looking than using the org-entities codes. This will make its way into jmax soon.
Copyright (C) 2015 by John Kitchin. See the License for information about copying.
Org-mode version = 8.2.10