Does anyone know how to have vim convert the html entities of math symbols into the math characters?
For example:
≠ becomes ≠
∴ becomes ∴
here is a table with the symbol html entities http://barzilai.org/math_sym.htm
using the :digraphs functionality of Vim. with a character encoding of Unicode,
see ':help digraphs' for documentation
I'm Still looking for a monospace Unicode font so it renders completely but with extra spaces it works great.
In order to see math characters UTF-8 has to be the encoding and a font that will display those characters.
I added the following to my vim configuration files.
created custom file: mathdoc.vim in syntax/
" set the encoding to be utf-8, requires gVim or a terminal capable of
" unicode see ':help Unicode' for details
set encoding=utf-8
" requires a font that has characters for the higher uniocode symbols
set guifont=MS\ Gothic
I added this to filetype to set this for my own custom extension .txtmt
au BufNewFile,BufRead *.txtmt setf mathdoc
but you could alternately call this with the file open:
:set ft=mathdoc
digraphs works great as bignose specified below here is how it works
in insert mode: press control+k followed by:
∴ is S*
≠ is !=
∑ is +Z
≡ is =3
⇐ is <=
⇒ is =>
⇔ is ==
∀ is FA
∃ is TE
∋ is -)
see :digraphs for the complete list * note if you only see half a screens worth you're character encoding is not unicode, unicode characters cover several screens, type :set encoding=utf-8 to switch to utf-8.
The table in the above link has the numbers for the characters that you'll need to find the keyboard shortcuts, 8756 is ∴ for example
You want what Vim calls “digraphs”: read :help digraphs
to see how they're used, and :digraphs
to list the defined ones in your Vim.
Summary: in insert mode, press Ctrl+K (which causes Vim to display a highlighted ?
, waiting for further input), then the defined two characters of the digraph. Vim then replaces what you typed with the defined resulting character. E.g. Ctrl+K, !, = produces ‘≠’.
I'm not sure that libraries exist to do this in pure vimscript, however, vim does allow you to embed Python, and Python has BeautifulSoup which can handle converting html entities to unicode:
I don't have python support enabled on my vim, so I had to settle for writing an external script, soup.py
, which converts html entities to UTF-8:
# soup.py
from BeautifulSoup import BeautifulStoneSoup
import sys
input = sys.stdin.read()
output = str(BeautifulStoneSoup(input, convertEntities=BeautifulStoneSoup.HTML_ENTITIES))
sys.stdout.write(output)
(FYI, I don't know python, so even though that works, it's probably pretty ugly)
You can use it in vim by selecting the lines with entities you want to convert in visual mode, and passing them to the script thusly:
:'<,'>!python soup.py
For example, if my cursor was on a line reading
∴ i ≠ 10
And I hit
!!python soup.py<Enter>
It would convert it to
∴ i ≠ 10
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With