1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-11 16:08:13 +00:00

* leim/quail/latin-ltx.el: Auto-generate some of the entries.

(latin-ltx--ascii-p): New function.
(latin-ltx--define-rules): New macro.
(define-rules): Use it.
This commit is contained in:
Stefan Monnier 2012-04-08 22:53:51 -04:00
parent fd06db5dd6
commit f8f2e1d873
2 changed files with 200 additions and 448 deletions

View File

@ -1,3 +1,10 @@
2012-04-09 Stefan Monnier <monnier@iro.umontreal.ca>
* quail/latin-ltx.el: Auto-generate some of the entries.
(latin-ltx--ascii-p): New function.
(latin-ltx--define-rules): New macro.
(define-rules): Use it.
2012-03-25 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in (install): Use $(DIRNAME)_same-dir.tst instead

View File

@ -42,484 +42,264 @@ system, including many technical ones. Examples:
'(("\t" . quail-completion))
t t nil nil nil nil nil nil nil t)
(quail-define-rules
(eval-when-compile
(defun latin-ltx--ascii-p (char)
(and (characterp char) (< char 128)))
(defmacro latin-ltx--define-rules (&rest rules)
(load "uni-name")
(let ((newrules ()))
(dolist (rule rules)
(pcase rule
(`(,_ ,(pred characterp)) (push rule newrules)) ;; Normal quail rule.
(`(,seq ,re)
(let ((count 0))
(dolist (pair (ucs-names))
(let ((name (car pair))
(char (cdr pair)))
(when (and (characterp char) ;; Ignore char-ranges.
(string-match re name))
(let ((keys (if (stringp seq)
(replace-match seq nil nil name)
(funcall seq name char))))
(if (listp keys)
(dolist (x keys)
(setq count (1+ count))
(push (list x char) newrules))
(setq count (1+ count))
(push (list keys char) newrules))))))
(message "latin-ltx: %d mapping for %S" count re)))))
`(quail-define-rules ,@(nreverse (delete-dups newrules))))))
(latin-ltx--define-rules
("!`" )
("\\pounds" ) ;; ("{\\pounds}" ?£)
("\\S" ) ;; ("{\\S}" ?§)
("\\\"{}" )
("\\copyright" ) ;; ("{\\copyright}" ?©)
("$^a$" )
("\\={}" )
("$\\pm$" ) ("\\pm" )
("$^2$" )
("$^3$" )
("\\'{}" ?´)
("\\P" ) ;; ("{\\P}" ?¶)
;; Fixme: Yudit has the equivalent of ("\\cdot" ?⋅), for U+22C5, DOT
;; OPERATOR, whereas · is MIDDLE DOT. JadeTeX translates both to
;; \cdot.
("$\\cdot$" ) ("\\cdot" )
("\\c{}" ?¸)
("$^1$" )
("$^o$" )
("?`" ?¿)
("\\`{A}" ) ("\\`A" )
("\\'{A}" ) ("\\'A" )
("\\^{A}" ) ("\\^A" )
("\\~{A}" ) ("\\~A" )
("\\\"{A}" ) ("\\\"A" )
("\\\k{A}" )
("\\`" )
("\\`{}" ?`)
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\`{%s}" c) (format "\\`%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH GRAVE")
("\\'" )
("\\'{}" ?´)
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\'{%s}" c) (format "\\'%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH ACUTE")
("\\^" )
("\\^{}" ?^)
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\^{%s}" c) (format "\\^%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CIRCUMFLEX")
("\\~" )
("\\~{}" ?˜)
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\~{%s}" c) (format "\\~%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH TILDE")
("\\\"" )
("\\\"{}" )
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\\"{%s}" c) (format "\\\"%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DIAERESIS")
("\\k" )
("\\k{}" ?˛)
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\k{%s}" c) ;; (format "\\k%s" c)
)))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH OGONEK")
("\\c" )
("\\c{}" ?¸)
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\c{%s}" c) (format "\\c%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CEDILLA")
("\\AA" ) ;; ("{\\AA}" ?Å)
("\\AE" ) ;; ("{\\AE}" ?Æ)
("\\c{C}" ) ("\\cC" )
("\\`{E}" ) ("\\`E" )
("\\'{E}" ) ("\\'E" )
("\\^{E}" ) ("\\^E" )
("\\\"{E}" ) ("\\\"E" )
("\\\k{E}" )
("\\`{I}" ) ("\\`I" )
("\\'{I}" ) ("\\'I" )
("\\^{I}" ) ("\\^I" )
("\\\"{I}" ) ("\\\"I" )
("\\\k{I}" )
("\\~{N}" ) ("\\~N" )
("\\`{O}" ) ("\\`O" )
("\\'{O}" ) ("\\'O" )
("\\^{O}" ) ("\\^O" )
("\\~{O}" ) ("\\~O" )
("\\\"{O}" ) ("\\\"O" )
("\\\k{O}" )
("$\\times$" ?×) ("\\times" ?×)
("\\O" ) ;; ("{\\O}" ?Ø)
("\\`{U}" ) ("\\`U" )
("\\'{U}" ) ("\\'U" )
("\\^{U}" ) ("\\^U" )
("\\\"{U}" ) ("\\\"U" )
("\\\k{U}" )
("\\'{Y}" ) ("\\'Y" )
("\\ss" ) ;; ("{\\ss}" ?ß)
("\\`{a}" ) ("\\`a" )
("\\'{a}" ) ("\\'a" )
("\\^{a}" ) ("\\^a" )
("\\~{a}" ) ("\\~a" )
("\\\"{a}" ) ("\\\"a" )
("\\\k{a}" )
("\\aa" ) ;; ("{\\aa}" ?å)
("\\ae" ) ;; ("{\\ae}" ?æ)
("\\c{c}" ) ("\\cc" )
("\\`{e}" ) ("\\`e" )
("\\'{e}" ) ("\\'e" )
("\\^{e}" ) ("\\^e" )
("\\\"{e}" ) ("\\\"e" )
("\\\k{e}" )
("\\`{\\i}" ) ("\\`i" )
("\\'{\\i}" ) ("\\'i" )
("\\^{\\i}" ) ("\\^i" )
("\\\"{\\i}" ) ("\\\"i" )
("\\\k{i}" )
("\\~{n}" ) ("\\~n" )
("\\`{o}" ) ("\\`o" )
("\\'{o}" ) ("\\'o" )
("\\^{o}" ) ("\\^o" )
("\\~{o}" ) ("\\~o" )
("\\\"{o}" ) ("\\\"o" )
("\\\k{o}" )
("$\\div$" ) ("\\div" )
("\\o" ) ;; ("{\\o}" ?ø)
("\\`{u}" ) ("\\`u" )
("\\'{u}" ) ("\\'u" )
("\\^{u}" ) ("\\^u" )
("\\\"{u}" ) ("\\\"u" )
("\\\k{u}" )
("\\'{y}" ) ("\\'y" )
("\\\"{y}" ?ÿ) ("\\\"y" ?ÿ)
("\\={A}" ) ("\\=A" )
("\\={a}" ) ("\\=a" )
("\\u{A}" ) ("\\uA" )
("\\u{a}" ) ("\\ua" )
("\\'{C}" ) ("\\'C" )
("\\'{c}" ) ("\\'c" )
("\\^{C}" ) ("\\^C" )
("\\^{c}" ) ("\\^c" )
("\\.{C}" ) ("\\.C" )
("\\.{c}" ) ("\\.c" )
("\\v{C}" ) ("\\vC" )
("\\v{c}" ) ("\\vc" )
("\\v{D}" ) ("\\vD" )
("\\v{d}" ) ("\\vd" )
("\\=" )
("\\={}" )
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\={%s}" c) (format "\\=%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH MACRON")
("\\={E}" ) ("\\=E" )
("\\={e}" ) ("\\=e" )
("\\u{E}" ) ("\\uE" )
("\\u{e}" ) ("\\ue" )
("\\.{E}" ) ("\\.E" )
("\\e{e}" ) ("\\ee" )
("\\v{E}" ) ("\\vE" )
("\\v{e}" ) ("\\ve" )
("\\^{G}" ) ("\\^G" )
("\\^{g}" ) ("\\^g" )
("\\u{G}" ) ("\\uG" )
("\\u{g}" ) ("\\ug" )
("\\u" )
("\\u{}" )
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\u{%s}" c) (format "\\u%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH BREVE")
("\\.{G}" ) ("\\.G" )
("\\.{g}" ) ("\\.g" )
("\\c{G}" ) ("\\cG" )
("\\c{g}" ) ("\\cg" )
("\\^{H}" ) ("\\^H" )
("\\^{h}" ) ("\\^h" )
("\\~{I}" ) ("\\~I" )
("\\~{\\i}" ) ("\\~i" )
("\\={I}" ) ("\\=I" )
("\\={\\i}" ) ("\\=i" )
("\\u{I}" ) ("\\uI" )
("\\u{\\i}" ) ("\\ui" )
("\\." )
("\\.{}" )
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\.{%s}" c) (format "\\.%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT ABOVE")
("\\v" )
("\\v{}" )
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\v{%s}" c) (format "\\v%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CARON")
("\\~{\\i}" )
("\\={\\i}" )
("\\u{\\i}" )
("\\.{I}" ) ("\\.I" )
("\\i" ?ı) ;; ("{\\i}" ?ı)
("\\^{J}" ) ("\\^J" )
("\\^{\\j}" ) ("\\^j" )
("\\c{K}" ) ("\\cK" )
("\\c{k}" ) ("\\ck" )
("\\'{L}" ) ("\\'L" )
("\\'{l}" ) ("\\'l" )
("\\c{L}" ) ("\\cL" )
("\\c{l}" ) ("\\cl" )
("\\^{\\j}" )
("\\L" ) ;; ("{\\L}" ?Ł)
("\\l" ) ;; ("{\\l}" ?ł)
("\\'{N}" ) ("\\'N" )
("\\'{n}" ) ("\\'n" )
("\\c{N}" ) ("\\cN" )
("\\c{n}" ) ("\\cn" )
("\\v{N}" ) ("\\vN" )
("\\v{n}" ) ("\\vn" )
("\\={O}" ) ("\\=O" )
("\\={o}" ) ("\\=o" )
("\\u{O}" ) ("\\uO" )
("\\u{o}" ) ("\\uo" )
("\\H{O}" ) ("\\HO" )
("\\U{o}" ) ("\\Uo" )
("\\H" )
("\\H{}" )
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\H{%s}" c) (format "\\H%s" c))))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOUBLE ACUTE")
("\\U{o}" ) ("\\Uo" ) ;; FIXME: Was it just a typo?
("\\OE" ) ;; ("{\\OE}" ?Œ)
("\\oe" ) ;; ("{\\oe}" ?œ)
("\\'{R}" ) ("\\'R" )
("\\'{r}" ) ("\\'r" )
("\\c{R}" ) ("\\cR" )
("\\c{r}" ) ("\\cr" )
("\\v{R}" ) ("\\vR" )
("\\v{r}" ) ("\\vr" )
("\\'{S}" ) ("\\'S" )
("\\'{s}" ) ("\\'s" )
("\\^{S}" ) ("\\^S" )
("\\^{s}" ) ("\\^s" )
("\\c{S}" ) ("\\cS" )
("\\c{s}" ) ("\\cs" )
("\\v{S}" ) ("\\vS" )
("\\v{s}" ) ("\\vs" )
("\\c{T}" ) ("\\cT" )
("\\c{t}" ) ("\\ct" )
("\\v{T}" ) ("\\vT" )
("\\v{t}" ) ("\\vt" )
("\\~{U}" ) ("\\~U" )
("\\~{u}" ) ("\\~u" )
("\\={U}" ) ("\\=U" )
("\\={u}" ) ("\\=u" )
("\\u{U}" ) ("\\uU" )
("\\u{u}" ) ("\\uu" )
("\\H{U}" ) ("\\HU" )
("\\H{u}" ) ("\\Hu" )
("\\^{W}" ) ("\\^W" )
("\\^{w}" ) ("\\^w" )
("\\^{Y}" ) ("\\^Y" )
("\\^{y}" ) ("\\^y" )
("\\\"{Y}" ) ("\\\"Y" )
("\\'{Z}" ) ("\\'Z" )
("\\'{z}" ) ("\\'z" )
("\\.{Z}" ) ("\\.Z" )
("\\.{z}" ) ("\\.z" )
("\\v{Z}" ) ("\\vZ" )
("\\v{z}" ) ("\\vz" )
("\\v{A}" ) ("\\vA" )
("\\v{a}" ) ("\\va" )
("\\v{I}" ) ("\\vI" )
("\\v{\\i}" ) ("\\vi" )
("\\v{O}" ) ("\\vO" )
("\\v{o}" ) ("\\vo" )
("\\v{U}" ) ("\\vU" )
("\\v{u}" ) ("\\vu" )
("\\v{\\i}" )
("\\={\\AE}" ) ("\\=\\AE" )
("\\={\\ae}" ) ("\\=\\ae" )
("\\v{G}" ) ("\\vG" )
("\\v{g}" ) ("\\vg" )
("\\v{K}" ) ("\\vK" )
("\\v{k}" ) ("\\vk" )
("\\v{\\j}" ) ("\\vj" )
("\\'{G}" ) ("\\'G" )
("\\'{g}" ) ("\\'g" )
("\\`{N}" ) ("\\`N" )
("\\`{n}" ) ("\\`n" )
("\\v{\\j}" )
("\\'{\\AE}" ) ("\\'\\AE" )
("\\'{\\ae}" ) ("\\'\\ae" )
("\\'{\\O}" ) ("\\'\\O" )
("\\'{\\o}" ?ǿ) ("\\'\\o" ?ǿ)
("\\v{H}" ) ("\\vH" )
("\\v{h}" ) ("\\vh" )
("\\.{A}" ) ("\\.A" )
("\\.{a}" ) ("\\.a" )
("\\c{E}" ) ("\\cE" )
("\\c{e}" ) ("\\ce" )
("\\.{O}" ) ("\\.O" )
("\\.{o}" ) ("\\.o" )
("\\={Y}" ) ("\\=Y" )
("\\={y}" ) ("\\=y" )
("\\v{}" )
("\\u{}" )
("\\.{}" )
("\\~{}" ?˜)
("\\H{}" )
("\\'" )
("\\'K" ?Ḱ)
("\\'M" ?Ḿ)
("\\'P" ?Ṕ)
("\\'W" ?Ẃ)
("\\'k" ?ḱ)
("\\'m" ?ḿ)
("\\'p" ?ṕ)
("\\'w" ?ẃ)
("\\," ?)
("\\." )
("\\.B" ?Ḃ)
("\\.D" ?Ḋ)
("\\.F" ?Ḟ)
("\\.H" ?Ḣ)
("\\.M" ?Ṁ)
("\\.N" ?Ṅ)
("\\.P" ?Ṗ)
("\\.R" ?Ṙ)
("\\.S" ?Ṡ)
("\\.T" ?Ṫ)
("\\.W" ?Ẇ)
("\\.X" ?Ẋ)
("\\.Y" ?Ẏ)
("\\.b" ?ḃ)
("\\.d" ?ḋ)
("\\.e" )
("\\.f" ?ḟ)
("\\.h" ?ḣ)
("\\.m" ?ṁ)
("\\.n" ?ṅ)
("\\.p" ?ṗ)
("\\.r" ?ṙ)
("\\.s" ?ṡ)
("\\.t" ?ṫ)
("\\.w" ?ẇ)
("\\.x" ?ẋ)
("\\.y" ?ẏ)
("\\/" ?)
("\\:" ?)
("\\;" ?)
("\\=" )
("\\=G" ?Ḡ)
("\\=g" ?ḡ)
("^(" ?⁽)
("^)" ?⁾)
("^+" ?⁺)
("^-" ?⁻)
("^0" ?⁰)
("^1" )
("^2" )
("^3" )
("^4" ?⁴)
("^5" ?⁵)
("^6" ?⁶)
("^7" ?⁷)
("^8" ?⁸)
("^9" ?⁹)
("^=" ?⁼)
((lambda (name char)
(let* ((base (concat (match-string 1 name) (match-string 3 name)))
(basechar (cdr (assoc base (ucs-names)))))
(when (latin-ltx--ascii-p basechar)
(string (if (match-end 2) ?^ ?_) basechar))))
"\\(.*\\)SU\\(?:B\\|\\(PER\\)\\)SCRIPT \\(.*\\)")
("^\\gamma" )
;; FIXME: It'd be nicer to generate some of these rules via something like
;; (map (lambda (name char)
;; (cond ((string-match "MODIFIER SMALL LETTER \\(.\\)" name)
;; (list (string ?^ (downcase (aref name (match-beginning 1))))
;; char)))
;; ...)))
("^a" ?ᵃ)
("^b" ?ᵇ)
("^c" ?ᶜ)
("^d" ?ᵈ)
("^e" ?ᵉ)
("^f" ?ᶠ)
("^g" ?ᵍ)
("^h" )
;; ("^i" ?) ;; FIXME: can't find MODIFIER SMALL LETTER I !?!
("^j" )
("^k" ?ᵏ)
("^l" )
("^m" ?ᵐ)
("^n" ?ⁿ)
("^o" ?ᵒ)
((lambda (name char)
(let* ((base (format "LATIN %s LETTER %s"
(match-string 1 name) (match-string 2 name)))
(basechar (cdr (assoc base (ucs-names)))))
(when (latin-ltx--ascii-p basechar)
(string ?^ basechar))))
"MODIFIER LETTER \\(SMALL\\|CAPITAL\\) \\(.*\\)")
;; ((lambda (name char) (format "^%s" (downcase (match-string 1 name))))
;; "\\`MODIFIER LETTER SMALL \\(.\\)\\'")
;; ("^\\1" "\\`MODIFIER LETTER CAPITAL \\(.\\)\\'")
("^o_" )
("^p" ?ᵖ)
;; ("^q" ?) ;; FIXME: can't find MODIFIER SMALL LETTER Q !?!
("^r" )
("^s" )
("^t" ?ᵗ)
("^u" ?ᵘ)
("^v" ?ᵛ)
("^w" )
("^x" )
("^y" )
("^z" ?ᶻ)
("^A" ?ᴬ)
("^B" ?ᴮ)
;; ("^C" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER C !?!
("^D" ?ᴰ)
("^E" ?ᴱ)
;; ("^F" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER F !?!
("^G" ?ᴳ)
("^H" ?ᴴ)
("^I" ?ᴵ)
("^J" ?ᴶ)
("^K" ?ᴷ)
("^L" ?ᴸ)
("^M" ?ᴹ)
("^N" ?ᴺ)
("^O" ?ᴼ)
("^P" ?ᴾ)
;; ("^Q" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER Q !?!
("^R" ?ᴿ)
;; ("^S" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER S !?!
("^T" ?ᵀ)
("^U" ?ᵁ)
("^V" ?ⱽ)
("^W" ?ᵂ)
;; ("^X" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER X !?!
;; ("^Y" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER Y !?!
;; ("^Z" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER Z !?!
("^{SM}" ?℠)
("^{TEL}" ?℡)
("^{TM}" ?™)
("_(" ?₍)
("_)" ?₎)
("_+" ?₊)
("_-" ?₋)
("_0" ?₀)
("_1" ?₁)
("_2" ?₂)
("_3" ?₃)
("_4" ?₄)
("_5" ?₅)
("_6" ?₆)
("_7" ?₇)
("_8" ?₈)
("_9" ?₉)
("_=" ?₌)
("\\~" )
("\\~E" ?Ẽ)
("\\~V" ?Ṽ)
("\\~Y" ?Ỹ)
("\\~e" ?ẽ)
("\\~v" ?ṽ)
("\\~y" ?ỹ)
("\\\"" )
("\\\"H" ?Ḧ)
("\\\"W" ?Ẅ)
("\\\"X" ?Ẍ)
("\\\"h" ?ḧ)
("\\\"t" ?ẗ)
("\\\"w" ?ẅ)
("\\\"x" ?ẍ)
("\\^" )
("\\^Z" ?Ẑ)
("\\^z" ?ẑ)
("\\`" )
("\\`W" ?Ẁ)
("\\`Y" ?Ỳ)
("\\`w" ?ẁ)
("\\`y" ?ỳ)
("\\b" )
("\\c" )
("\\c{D}" ?Ḑ)
("\\c{H}" ?Ḩ)
("\\c{d}" ?ḑ)
("\\c{h}" ?ḩ)
("\\d" )
("\\d{A}" ?Ạ)
("\\d{B}" ?Ḅ)
("\\d{D}" ?Ḍ)
("\\d{E}" ?Ẹ)
("\\d{H}" ?Ḥ)
("\\d{I}" ?Ị)
("\\d{K}" ?Ḳ)
("\\d{L}" ?Ḷ)
("\\d{M}" ?Ṃ)
("\\d{N}" ?Ṇ)
("\\d{O}" ?Ọ)
("\\d{R}" ?Ṛ)
("\\d{S}" ?Ṣ)
("\\d{T}" ?Ṭ)
("\\d{U}" ?Ụ)
("\\d{V}" ?Ṿ)
("\\d{W}" ?Ẉ)
("\\d{Y}" ?Ỵ)
("\\d{Z}" ?Ẓ)
("\\d{a}" ?ạ)
("\\d{b}" ?ḅ)
("\\d{d}" ?ḍ)
("\\d{e}" ?ẹ)
("\\d{h}" ?ḥ)
("\\d{i}" ?ị)
("\\d{k}" ?ḳ)
("\\d{l}" ?ḷ)
("\\d{m}" ?ṃ)
("\\d{n}" ?ṇ)
("\\d{o}" ?ọ)
("\\d{r}" ?ṛ)
("\\d{s}" ?ṣ)
("\\d{t}" ?ṭ)
("\\d{u}" ?ụ)
("\\d{v}" ?ṿ)
("\\d{w}" ?ẉ)
("\\d{y}" ?ỵ)
("\\d{z}" ?ẓ)
;; ("\\d{}" ?) ;; FIXME: can't find the DOT BELOW character.
((lambda (name char)
(let ((c (if (match-end 1)
(downcase (match-string 2 name))
(match-string 2 name))))
(list (format "\\d{%s}" c) ;; (format "\\d%s" c)
)))
"\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT BELOW")
("\\rq" ?)
("\\u" )
("\\v" )
("\\v{L}" )
("\\v{i}" )
("\\v{j}" )
("\\v{l}" )
("\\yen" )
;; FIXME: Provides some useful entries (yen, euro, copyright, registered,
;; currency, minus, micro), but also a lot of dubious ones.
((lambda (name char)
(unless (latin-ltx--ascii-p char)
(concat "\\" (downcase (match-string 1 name)))))
"\\`\\([^- ]+\\) SIGN\\'")
((lambda (name char)
(concat "\\" (funcall (if (match-end 1) #' capitalize #'downcase)
(match-string 2 name))))
"\\`GREEK \\(?:SMALL\\|CAPITA\\(L\\)\\) LETTER \\([^- ]+\\)\\'")
("\\Box" ?□)
("\\Bumpeq" ?≎)
("\\Cap" ?⋒)
("\\Cup" ?⋓)
("\\Delta" )
("\\Diamond" ?◇)
("\\Downarrow" ?⇓)
("\\Gamma" )
("\\H" )
("\\H{o}" )
("\\Im" ?)
("\\Join" ?⋈)
("\\Lambda" )
("\\Leftarrow" ?⇐)
("\\Leftrightarrow" ?⇔)
("\\Ll" ?⋘)
@ -528,27 +308,18 @@ system, including many technical ones. Examples:
("\\Longleftrightarrow" ?⇔)
("\\Longrightarrow" ?⇒)
("\\Lsh" ?↰)
("\\Omega" )
("\\Phi" )
("\\Pi" )
("\\Psi" )
("\\Re" ?)
("\\Rightarrow" ?⇒)
("\\Rrightarrow" ?⇛)
("\\Rsh" ?↱)
("\\Sigma" )
("\\Subset" ?⋐)
("\\Supset" ?⋑)
("\\Theta" )
("\\Uparrow" ?⇑)
("\\Updownarrow" ?⇕)
("\\Upsilon" ?Υ)
("\\Vdash" ?⊩)
("\\Vert" ?‖)
("\\Vvdash" ?⊪)
("\\Xi" )
("\\aleph" ?ℵ)
("\\alpha" ?α)
("\\amalg" ?∐)
("\\angle" ?∠)
("\\approx" ?≈)
@ -563,7 +334,6 @@ system, including many technical ones. Examples:
("\\backslash" ?\\)
("\\barwedge" ?⊼)
("\\because" ?∵)
("\\beta" )
("\\beth" ?ℶ)
("\\between" ?≬)
("\\bigcap" ?⋂)
@ -602,7 +372,7 @@ system, including many technical ones. Examples:
("\\circledcirc" ?⊚)
("\\circleddash" ?⊝)
("\\clubsuit" ?♣)
("\\colon" ?:)
("\\colon" ?:) ;FIXME: Conflict with "COLON SIGN" ₡.
("\\coloneq" ?≔)
("\\complement" ?∁)
("\\cong" ?≅)
@ -623,7 +393,6 @@ system, including many technical ones. Examples:
("\\ddag" ?‡)
("\\ddagger" ?‡)
("\\ddots" ?⋱)
("\\delta" )
("\\diamond" ?⋄)
("\\diamondsuit" ?♢)
("\\digamma" ?Ϝ)
@ -638,14 +407,11 @@ system, including many technical ones. Examples:
("\\downrightharpoon" ?⇂)
("\\ell" ?)
("\\emptyset" ?∅)
("\\epsilon" )
("\\eqcirc" ?≖)
("\\eqcolon" ?≕)
("\\eqslantgtr" ?⋝)
("\\eqslantless" ?⋜)
("\\equiv" ?≡)
("\\eta" )
("\\euro" ?€)
("\\exists" ?∃)
("\\fallingdotseq" ?≒)
("\\flat" ?♭)
@ -667,7 +433,6 @@ system, including many technical ones. Examples:
("\\frac58" ?⅝)
("\\frac78" ?⅞)
("\\frown" ?⌢)
("\\gamma" ?γ)
("\\ge" ?≥)
("\\geq" ?≥)
("\\geqq" ?≧)
@ -697,9 +462,6 @@ system, including many technical ones. Examples:
("\\infty" ?∞)
("\\int" ?∫)
("\\intercal" ?⊺)
("\\iota" ?ι)
("\\kappa" )
("\\lambda" )
("\\langle" ?〈)
("\\lbrace" ?{)
("\\lbrack" ?\[)
@ -783,7 +545,7 @@ system, including many technical ones. Examples:
("\\nleqslant" ?≰)
("\\nless" ?≮)
("\\nmid" ?∤)
("\\not" )
("\\not" ) ;FIXME: conflict with "NOT SIGN" ¬.
("\\notin" ?∉)
("\\nparallel" ?∦)
("\\nprec" ?⊀)
@ -805,13 +567,11 @@ system, including many technical ones. Examples:
("\\ntrianglelefteq" ?⋬)
("\\ntriangleright" ?⋫)
("\\ntrianglerighteq" ?⋭)
("\\nu" ?ν)
("\\nvDash" ?⊭)
("\\nvdash" ?⊬)
("\\nwarrow" ?↖)
("\\odot" ?⊙)
("\\oint" ?∮)
("\\omega" )
("\\ominus" ?⊖)
("\\oplus" ?⊕)
("\\oslash" ?⊘)
@ -820,8 +580,6 @@ system, including many technical ones. Examples:
("\\parallel" ?∥)
("\\partial" ?∂)
("\\perp" ?⊥)
("\\phi" )
("\\pi" )
("\\pitchfork" ?⋔)
("\\prec" ?≺)
("\\precapprox" ?≾)
@ -832,7 +590,6 @@ system, including many technical ones. Examples:
("\\prime" ?)
("\\prod" ?∏)
("\\propto" ?∝)
("\\psi" )
("\\qed" ?∎)
("\\quad" ?)
("\\rangle" ?〉)
@ -857,7 +614,6 @@ system, including many technical ones. Examples:
("\\sharp" ?♯)
("\\shortmid" ?)
("\\shortparallel" ?∥)
("\\sigma" ?σ)
("\\sim" ?)
("\\simeq" ?≃)
("\\smallamalg" ?∐)
@ -896,9 +652,7 @@ system, including many technical ones. Examples:
("\\supsetneqq" ?⊋)
("\\surd" ?√)
("\\swarrow" ?↙)
("\\tau" )
("\\therefore" ?∴)
("\\theta" )
("\\thickapprox" ?≈)
("\\thicksim" ?)
("\\to" ?→)
@ -918,19 +672,18 @@ system, including many technical ones. Examples:
("\\upleftharpoon" ?↿)
("\\uplus" ?⊎)
("\\uprightharpoon" ?↾)
("\\upsilon" ?υ)
("\\upuparrows" ?⇈)
("\\urcorner" ?⌝)
("\\u{i}" )
("\\vDash" ?⊨)
("\\varkappa" )
("\\varphi" )
("\\varpi" )
((lambda (name char)
(concat "\\var" (downcase (match-string 1 name))))
"\\`GREEK \\([^- ]+\\) SYMBOL\\'")
("\\varprime" ?)
("\\varpropto" ?∝)
("\\varrho" ?ϱ)
("\\varsigma" )
("\\vartheta" )
("\\varsigma" ) ;FIXME: Looks reversed with the non\var.
("\\vartriangleleft" ?⊲)
("\\vartriangleright" ?⊳)
("\\vdash" ?⊢)
@ -941,8 +694,6 @@ system, including many technical ones. Examples:
("\\wedge" ?∧)
("\\wp" ?℘)
("\\wr" ?≀)
("\\xi" )
("\\zeta" )
("\\Bbb{N}" ?) ; AMS commands for blackboard bold
("\\Bbb{P}" ?) ; Also sometimes \mathbb.
@ -954,8 +705,6 @@ system, including many technical ones. Examples:
;; a bug where the user finds his ~ key doesn't insert a ~ any more.
("\\ " ? )
("\\\\" ?\\)
("\\mu" )
("\\rho" ?ρ)
("\\mathscr{I}" ?) ; moment of inertia
("\\Smiley" ?☺)
("\\blacksmiley" ?☻)
@ -980,13 +729,10 @@ system, including many technical ones. Examples:
;; ("\\Writinghand" ?✍)
;; ("\\Yinyang" ?☯)
;; ("\\Heart" ?♡)
("\\registered" )
("\\currency" )
("\\dh" )
("\\DH" )
("\\th" )
("\\TH" )
("\\micro" )
("\\lnot" )
("\\ordfeminine" )
("\\ordmasculine" )
@ -995,7 +741,6 @@ system, including many technical ones. Examples:
;; by analogy with lq, rq:
("\\ldq" ?\“)
("\\rdq" ?\”)
("\\minus" ?)
("\\defs" ?≙) ; per fuzz/zed
;; ("\\sqrt[3]" ?∛)
("\\llbracket" ?\〚) ; stmaryrd