In org-mode we can style inline elements with *bold*
(bold), /italic/
(italic), _underlined_
(_underlined_, which won’t show up in html), =verbatim=
(verbatim
), and ~code~
(code
).
But this breaks if the character just inside the styling code is a non-smart single or double quote. =C-c ;=
is styled (C-c ;
); =C-c '=
is not (=C-c '=).
We can fix that by inserting a zero-width space between the apostrophe and the = . The first time, we can put the cursor between the apostrophe and the = and enter C-x 8 RET ZERO WIDTH SPACE RET
, at which point =C-c '=
will display as C-c '
.
The ZERO WIDTH SPACE
part of insert-char
(C-x 8
) is autocompleting, so we won’t need to type the whole thing, but we’ll probably still want a shortcut if it we find ourselves doing it more than once or twice. Here’s the simplest thing we could do:
(defun my/insert-zero-width-space ()
(interactive)
(insert-char ?\u200B)) ;; code for ZERO WIDTH SPACE
(global-set-key (kbd "C-x 8 s") ‘my/insert-zero-width-space)
After which, if we find ourselves adding inline styles which don’t work because the styled section starts or ends with a quotation mark, we can go to just before or just after the quotation mark, type C-x 8 s
, and watch the styles apply as expected.
Thanks, as usual, to Sacha Chua, who explained this in passing. Her .emacs has a more flexible solution which I will probably switch to the moment I need to insert more than one unicode character.
Note that while you can use insert-char
to get accented characters (C-x 8 ' e
produces é
, for instance), and I used to do that, I have since set the input method to TeX (M-x set-input-method RET TeX RET
), and now I type \'e
for é
, \th
for þ
, \Mu\epsilon\nu
for Μεν
, and so on and so forth.