From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Additional symbols to input method TeX Date: Sun, 08 Apr 2012 22:54:26 -0400 Message-ID: References: <87d37jgixi.fsf@pank.eu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1333940082 20848 80.91.229.3 (9 Apr 2012 02:54:42 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 9 Apr 2012 02:54:42 +0000 (UTC) Cc: emacs-devel@gnu.org To: Rasmus Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Apr 09 04:54:41 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SH4kX-0008Oo-WE for ged-emacs-devel@m.gmane.org; Mon, 09 Apr 2012 04:54:38 +0200 Original-Received: from localhost ([::1]:35358 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SH4kX-0005HC-FV for ged-emacs-devel@m.gmane.org; Sun, 08 Apr 2012 22:54:37 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:58996) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SH4kT-0005H7-6n for emacs-devel@gnu.org; Sun, 08 Apr 2012 22:54:35 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SH4kP-0001MU-Ty for emacs-devel@gnu.org; Sun, 08 Apr 2012 22:54:32 -0400 Original-Received: from ironport2-out.teksavvy.com ([206.248.154.182]:60337) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SH4kP-0001Ln-KD for emacs-devel@gnu.org; Sun, 08 Apr 2012 22:54:29 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjUKACxOgk/O+KRD/2dsb2JhbABDhXOwJIIMA4EMgQiCCQEBBAEaCTMTAQ8FCwsQCgIYDgICFBgNJIgcBawaihiBL4oyg2GBGASkRYFdgwM X-IronPort-AV: E=Sophos;i="4.75,391,1330923600"; d="scan'208";a="172803580" Original-Received: from 206-248-164-67.dsl.teksavvy.com (HELO fmsmemgm.homelinux.net) ([206.248.164.67]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 08 Apr 2012 22:54:27 -0400 Original-Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id BBA42AE203; Sun, 8 Apr 2012 22:54:26 -0400 (EDT) In-Reply-To: <87d37jgixi.fsf@pank.eu> (rasmus@gmx.us's message of "Sun, 08 Apr 2012 01:34:49 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.94 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.182 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:149489 Archived-At: > I use the TeX input method quite often, especially when writing mails > with math. I find the following addition to latin-ltx.el rather useful: I've installed the change below which generates part of the latin-ltx table automatically from the Unicode table. The entries you suggest were added as a side-effect. Stefan =3D=3D=3D modified file 'leim/quail/latin-ltx.el' --- leim/quail/latin-ltx.el 2012-01-19 07:21:25 +0000 +++ leim/quail/latin-ltx.el 2012-04-09 02:50:17 +0000 @@ -42,484 +42,264 @@ '(("\t" . quail-completion)) t t nil nil nil nil nil nil nil t) =20 -(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 ("!`" ?=C2=A1) ("\\pounds" ?=C2=A3) ;; ("{\\pounds}" ?=C2=A3) ("\\S" ?=C2=A7) ;; ("{\\S}" ?=C2=A7) - ("\\\"{}" ?=C2=A8) - ("\\copyright" ?=C2=A9) ;; ("{\\copyright}" ?=C2=A9) ("$^a$" ?=C2=AA) - ("\\=3D{}" ?=C2=AF) ("$\\pm$" ?=C2=B1) ("\\pm" ?=C2=B1) ("$^2$" ?=C2=B2) ("$^3$" ?=C2=B3) - ("\\'{}" ?=C2=B4) ("\\P" ?=C2=B6) ;; ("{\\P}" ?=C2=B6) ;; Fixme: Yudit has the equivalent of ("\\cdot" ?=E2=8B=85), for U+22C5, = DOT ;; OPERATOR, whereas =C2=B7 is MIDDLE DOT. JadeTeX translates both to ;; \cdot. ("$\\cdot$" ?=C2=B7) ("\\cdot" ?=C2=B7) - ("\\c{}" ?=C2=B8) ("$^1$" ?=C2=B9) ("$^o$" ?=C2=BA) ("?`" ?=C2=BF) =20 - ("\\`{A}" ?=C3=80) ("\\`A" ?=C3=80) - ("\\'{A}" ?=C3=81) ("\\'A" ?=C3=81) - ("\\^{A}" ?=C3=82) ("\\^A" ?=C3=82) - ("\\~{A}" ?=C3=83) ("\\~A" ?=C3=83) - ("\\\"{A}" ?=C3=84) ("\\\"A" ?=C3=84) - ("\\\k{A}" ?=C4=84) + ("\\`" ?=CC=80) + ("\\`{}" ?`) + ((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") + + ("\\'" ?=CC=81) + ("\\'{}" ?=C2=B4) + ((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") + + ("\\^" ?=CC=82) + ("\\^{}" ?^) + ((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") + + ("\\~" ?=CC=83) + ("\\~{}" ?=CB=9C) + ((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") + + ("\\\"" ?=CC=88) + ("\\\"{}" ?=C2=A8) + ((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" ?=CC=A8) + ("\\k{}" ?=CB=9B) + ((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" ?=CC=A7) + ("\\c{}" ?=C2=B8) + ((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" ?=C3=85) ;; ("{\\AA}" ?=C3=85) ("\\AE" ?=C3=86) ;; ("{\\AE}" ?=C3=86) - ("\\c{C}" ?=C3=87) ("\\cC" ?=C3=87) - ("\\`{E}" ?=C3=88) ("\\`E" ?=C3=88) - ("\\'{E}" ?=C3=89) ("\\'E" ?=C3=89) - ("\\^{E}" ?=C3=8A) ("\\^E" ?=C3=8A) - ("\\\"{E}" ?=C3=8B) ("\\\"E" ?=C3=8B) - ("\\\k{E}" ?=C4=98) - ("\\`{I}" ?=C3=8C) ("\\`I" ?=C3=8C) - ("\\'{I}" ?=C3=8D) ("\\'I" ?=C3=8D) - ("\\^{I}" ?=C3=8E) ("\\^I" ?=C3=8E) - ("\\\"{I}" ?=C3=8F) ("\\\"I" ?=C3=8F) - ("\\\k{I}" ?=C4=AE) - - ("\\~{N}" ?=C3=91) ("\\~N" ?=C3=91) - ("\\`{O}" ?=C3=92) ("\\`O" ?=C3=92) - ("\\'{O}" ?=C3=93) ("\\'O" ?=C3=93) - ("\\^{O}" ?=C3=94) ("\\^O" ?=C3=94) - ("\\~{O}" ?=C3=95) ("\\~O" ?=C3=95) - ("\\\"{O}" ?=C3=96) ("\\\"O" ?=C3=96) - ("\\\k{O}" ?=C7=AA) + ("$\\times$" ?=C3=97) ("\\times" ?=C3=97) ("\\O" ?=C3=98) ;; ("{\\O}" ?=C3=98) - ("\\`{U}" ?=C3=99) ("\\`U" ?=C3=99) - ("\\'{U}" ?=C3=9A) ("\\'U" ?=C3=9A) - ("\\^{U}" ?=C3=9B) ("\\^U" ?=C3=9B) - ("\\\"{U}" ?=C3=9C) ("\\\"U" ?=C3=9C) - ("\\\k{U}" ?=C5=B2) - ("\\'{Y}" ?=C3=9D) ("\\'Y" ?=C3=9D) ("\\ss" ?=C3=9F) ;; ("{\\ss}" ?=C3=9F) =20 - ("\\`{a}" ?=C3=A0) ("\\`a" ?=C3=A0) - ("\\'{a}" ?=C3=A1) ("\\'a" ?=C3=A1) - ("\\^{a}" ?=C3=A2) ("\\^a" ?=C3=A2) - ("\\~{a}" ?=C3=A3) ("\\~a" ?=C3=A3) - ("\\\"{a}" ?=C3=A4) ("\\\"a" ?=C3=A4) - ("\\\k{a}" ?=C4=85) ("\\aa" ?=C3=A5) ;; ("{\\aa}" ?=C3=A5) ("\\ae" ?=C3=A6) ;; ("{\\ae}" ?=C3=A6) - ("\\c{c}" ?=C3=A7) ("\\cc" ?=C3=A7) - ("\\`{e}" ?=C3=A8) ("\\`e" ?=C3=A8) - ("\\'{e}" ?=C3=A9) ("\\'e" ?=C3=A9) - ("\\^{e}" ?=C3=AA) ("\\^e" ?=C3=AA) - ("\\\"{e}" ?=C3=AB) ("\\\"e" ?=C3=AB) - ("\\\k{e}" ?=C4=99) - ("\\`{\\i}" ?=C3=AC) ("\\`i" ?=C3=AC) - ("\\'{\\i}" ?=C3=AD) ("\\'i" ?=C3=AD) - ("\\^{\\i}" ?=C3=AE) ("\\^i" ?=C3=AE) - ("\\\"{\\i}" ?=C3=AF) ("\\\"i" ?=C3=AF) - ("\\\k{i}" ?=C4=AF) - - ("\\~{n}" ?=C3=B1) ("\\~n" ?=C3=B1) - ("\\`{o}" ?=C3=B2) ("\\`o" ?=C3=B2) - ("\\'{o}" ?=C3=B3) ("\\'o" ?=C3=B3) - ("\\^{o}" ?=C3=B4) ("\\^o" ?=C3=B4) - ("\\~{o}" ?=C3=B5) ("\\~o" ?=C3=B5) - ("\\\"{o}" ?=C3=B6) ("\\\"o" ?=C3=B6) - ("\\\k{o}" ?=C7=AB) + ("$\\div$" ?=C3=B7) ("\\div" ?=C3=B7) ("\\o" ?=C3=B8) ;; ("{\\o}" ?=C3=B8) - ("\\`{u}" ?=C3=B9) ("\\`u" ?=C3=B9) - ("\\'{u}" ?=C3=BA) ("\\'u" ?=C3=BA) - ("\\^{u}" ?=C3=BB) ("\\^u" ?=C3=BB) - ("\\\"{u}" ?=C3=BC) ("\\\"u" ?=C3=BC) - ("\\\k{u}" ?=C5=B3) - ("\\'{y}" ?=C3=BD) ("\\'y" ?=C3=BD) - ("\\\"{y}" ?=C3=BF) ("\\\"y" ?=C3=BF) - - ("\\=3D{A}" ?=C4=80) ("\\=3DA" ?=C4=80) - ("\\=3D{a}" ?=C4=81) ("\\=3Da" ?=C4=81) - ("\\u{A}" ?=C4=82) ("\\uA" ?=C4=82) - ("\\u{a}" ?=C4=83) ("\\ua" ?=C4=83) - ("\\'{C}" ?=C4=86) ("\\'C" ?=C4=86) - ("\\'{c}" ?=C4=87) ("\\'c" ?=C4=87) - ("\\^{C}" ?=C4=88) ("\\^C" ?=C4=88) - ("\\^{c}" ?=C4=89) ("\\^c" ?=C4=89) - ("\\.{C}" ?=C4=8A) ("\\.C" ?=C4=8A) - ("\\.{c}" ?=C4=8B) ("\\.c" ?=C4=8B) - ("\\v{C}" ?=C4=8C) ("\\vC" ?=C4=8C) - ("\\v{c}" ?=C4=8D) ("\\vc" ?=C4=8D) - ("\\v{D}" ?=C4=8E) ("\\vD" ?=C4=8E) - ("\\v{d}" ?=C4=8F) ("\\vd" ?=C4=8F) - - ("\\=3D{E}" ?=C4=92) ("\\=3DE" ?=C4=92) - ("\\=3D{e}" ?=C4=93) ("\\=3De" ?=C4=93) - ("\\u{E}" ?=C4=94) ("\\uE" ?=C4=94) - ("\\u{e}" ?=C4=95) ("\\ue" ?=C4=95) - ("\\.{E}" ?=C4=96) ("\\.E" ?=C4=96) - ("\\e{e}" ?=C4=97) ("\\ee" ?=C4=97) - ("\\v{E}" ?=C4=9A) ("\\vE" ?=C4=9A) - ("\\v{e}" ?=C4=9B) ("\\ve" ?=C4=9B) - ("\\^{G}" ?=C4=9C) ("\\^G" ?=C4=9C) - ("\\^{g}" ?=C4=9D) ("\\^g" ?=C4=9D) - ("\\u{G}" ?=C4=9E) ("\\uG" ?=C4=9E) - ("\\u{g}" ?=C4=9F) ("\\ug" ?=C4=9F) - - ("\\.{G}" ?=C4=A0) ("\\.G" ?=C4=A0) - ("\\.{g}" ?=C4=A1) ("\\.g" ?=C4=A1) - ("\\c{G}" ?=C4=A2) ("\\cG" ?=C4=A2) - ("\\c{g}" ?=C4=A3) ("\\cg" ?=C4=A3) - ("\\^{H}" ?=C4=A4) ("\\^H" ?=C4=A4) - ("\\^{h}" ?=C4=A5) ("\\^h" ?=C4=A5) - ("\\~{I}" ?=C4=A8) ("\\~I" ?=C4=A8) - ("\\~{\\i}" ?=C4=A9) ("\\~i" ?=C4=A9) - ("\\=3D{I}" ?=C4=AA) ("\\=3DI" ?=C4=AA) - ("\\=3D{\\i}" ?=C4=AB) ("\\=3Di" ?=C4=AB) - ("\\u{I}" ?=C4=AC) ("\\uI" ?=C4=AC) - ("\\u{\\i}" ?=C4=AD) ("\\ui" ?=C4=AD) =20 - ("\\.{I}" ?=C4=B0) ("\\.I" ?=C4=B0) + ("\\=3D" ?=CC=84) + ("\\=3D{}" ?=C2=AF) + ((lambda (name char) + (let ((c (if (match-end 1) + (downcase (match-string 2 name)) + (match-string 2 name)))) + (list (format "\\=3D{%s}" c) (format "\\=3D%s" c)))) + "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH MACRON") + + ("\\u" ?=CC=86) + ("\\u{}" ?=CB=98) + ((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") + + ("\\." ?=CC=87) + ("\\.{}" ?=CB=99) + ((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" ?=CC=8C) + ("\\v{}" ?=CB=87) + ((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}" ?=C4=A9) + ("\\=3D{\\i}" ?=C4=AB) + ("\\u{\\i}" ?=C4=AD) + ("\\i" ?=C4=B1) ;; ("{\\i}" ?=C4=B1) - ("\\^{J}" ?=C4=B4) ("\\^J" ?=C4=B4) - ("\\^{\\j}" ?=C4=B5) ("\\^j" ?=C4=B5) - ("\\c{K}" ?=C4=B6) ("\\cK" ?=C4=B6) - ("\\c{k}" ?=C4=B7) ("\\ck" ?=C4=B7) - ("\\'{L}" ?=C4=B9) ("\\'L" ?=C4=B9) - ("\\'{l}" ?=C4=BA) ("\\'l" ?=C4=BA) - ("\\c{L}" ?=C4=BB) ("\\cL" ?=C4=BB) - ("\\c{l}" ?=C4=BC) ("\\cl" ?=C4=BC) + ("\\^{\\j}" ?=C4=B5) =20 ("\\L" ?=C5=81) ;; ("{\\L}" ?=C5=81) ("\\l" ?=C5=82) ;; ("{\\l}" ?=C5=82) - ("\\'{N}" ?=C5=83) ("\\'N" ?=C5=83) - ("\\'{n}" ?=C5=84) ("\\'n" ?=C5=84) - ("\\c{N}" ?=C5=85) ("\\cN" ?=C5=85) - ("\\c{n}" ?=C5=86) ("\\cn" ?=C5=86) - ("\\v{N}" ?=C5=87) ("\\vN" ?=C5=87) - ("\\v{n}" ?=C5=88) ("\\vn" ?=C5=88) - ("\\=3D{O}" ?=C5=8C) ("\\=3DO" ?=C5=8C) - ("\\=3D{o}" ?=C5=8D) ("\\=3Do" ?=C5=8D) - ("\\u{O}" ?=C5=8E) ("\\uO" ?=C5=8E) - ("\\u{o}" ?=C5=8F) ("\\uo" ?=C5=8F) =20 - ("\\H{O}" ?=C5=90) ("\\HO" ?=C5=90) - ("\\U{o}" ?=C5=91) ("\\Uo" ?=C5=91) + ("\\H" ?=CC=8B) + ("\\H{}" ?=CB=9D) + ((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}" ?=C5=91) ("\\Uo" ?=C5=91) ;; FIXME: Was it just a typo? +=20 ("\\OE" ?=C5=92) ;; ("{\\OE}" ?=C5=92) ("\\oe" ?=C5=93) ;; ("{\\oe}" ?=C5=93) - ("\\'{R}" ?=C5=94) ("\\'R" ?=C5=94) - ("\\'{r}" ?=C5=95) ("\\'r" ?=C5=95) - ("\\c{R}" ?=C5=96) ("\\cR" ?=C5=96) - ("\\c{r}" ?=C5=97) ("\\cr" ?=C5=97) - ("\\v{R}" ?=C5=98) ("\\vR" ?=C5=98) - ("\\v{r}" ?=C5=99) ("\\vr" ?=C5=99) - ("\\'{S}" ?=C5=9A) ("\\'S" ?=C5=9A) - ("\\'{s}" ?=C5=9B) ("\\'s" ?=C5=9B) - ("\\^{S}" ?=C5=9C) ("\\^S" ?=C5=9C) - ("\\^{s}" ?=C5=9D) ("\\^s" ?=C5=9D) - ("\\c{S}" ?=C5=9E) ("\\cS" ?=C5=9E) - ("\\c{s}" ?=C5=9F) ("\\cs" ?=C5=9F) - - ("\\v{S}" ?=C5=A0) ("\\vS" ?=C5=A0) - ("\\v{s}" ?=C5=A1) ("\\vs" ?=C5=A1) - ("\\c{T}" ?=C5=A2) ("\\cT" ?=C5=A2) - ("\\c{t}" ?=C5=A3) ("\\ct" ?=C5=A3) - ("\\v{T}" ?=C5=A4) ("\\vT" ?=C5=A4) - ("\\v{t}" ?=C5=A5) ("\\vt" ?=C5=A5) - ("\\~{U}" ?=C5=A8) ("\\~U" ?=C5=A8) - ("\\~{u}" ?=C5=A9) ("\\~u" ?=C5=A9) - ("\\=3D{U}" ?=C5=AA) ("\\=3DU" ?=C5=AA) - ("\\=3D{u}" ?=C5=AB) ("\\=3Du" ?=C5=AB) - ("\\u{U}" ?=C5=AC) ("\\uU" ?=C5=AC) - ("\\u{u}" ?=C5=AD) ("\\uu" ?=C5=AD) - - ("\\H{U}" ?=C5=B0) ("\\HU" ?=C5=B0) - ("\\H{u}" ?=C5=B1) ("\\Hu" ?=C5=B1) - ("\\^{W}" ?=C5=B4) ("\\^W" ?=C5=B4) - ("\\^{w}" ?=C5=B5) ("\\^w" ?=C5=B5) - ("\\^{Y}" ?=C5=B6) ("\\^Y" ?=C5=B6) - ("\\^{y}" ?=C5=B7) ("\\^y" ?=C5=B7) - ("\\\"{Y}" ?=C5=B8) ("\\\"Y" ?=C5=B8) - ("\\'{Z}" ?=C5=B9) ("\\'Z" ?=C5=B9) - ("\\'{z}" ?=C5=BA) ("\\'z" ?=C5=BA) - ("\\.{Z}" ?=C5=BB) ("\\.Z" ?=C5=BB) - ("\\.{z}" ?=C5=BC) ("\\.z" ?=C5=BC) - ("\\v{Z}" ?=C5=BD) ("\\vZ" ?=C5=BD) - ("\\v{z}" ?=C5=BE) ("\\vz" ?=C5=BE) - - ("\\v{A}" ?=C7=8D) ("\\vA" ?=C7=8D) - ("\\v{a}" ?=C7=8E) ("\\va" ?=C7=8E) - ("\\v{I}" ?=C7=8F) ("\\vI" ?=C7=8F) - ("\\v{\\i}" ?=C7=90) ("\\vi" ?=C7=90) - ("\\v{O}" ?=C7=91) ("\\vO" ?=C7=91) - ("\\v{o}" ?=C7=92) ("\\vo" ?=C7=92) - ("\\v{U}" ?=C7=93) ("\\vU" ?=C7=93) - ("\\v{u}" ?=C7=94) ("\\vu" ?=C7=94) + + ("\\v{\\i}" ?=C7=90) =20 ("\\=3D{\\AE}" ?=C7=A2) ("\\=3D\\AE" ?=C7=A2) ("\\=3D{\\ae}" ?=C7=A3) ("\\=3D\\ae" ?=C7=A3) - ("\\v{G}" ?=C7=A6) ("\\vG" ?=C7=A6) - ("\\v{g}" ?=C7=A7) ("\\vg" ?=C7=A7) - ("\\v{K}" ?=C7=A8) ("\\vK" ?=C7=A8) - ("\\v{k}" ?=C7=A9) ("\\vk" ?=C7=A9) - - ("\\v{\\j}" ?=C7=B0) ("\\vj" ?=C7=B0) - ("\\'{G}" ?=C7=B4) ("\\'G" ?=C7=B4) - ("\\'{g}" ?=C7=B5) ("\\'g" ?=C7=B5) - ("\\`{N}" ?=C7=B8) ("\\`N" ?=C7=B8) - ("\\`{n}" ?=C7=B9) ("\\`n" ?=C7=B9) + + ("\\v{\\j}" ?=C7=B0) ("\\'{\\AE}" ?=C7=BC) ("\\'\\AE" ?=C7=BC) ("\\'{\\ae}" ?=C7=BD) ("\\'\\ae" ?=C7=BD) ("\\'{\\O}" ?=C7=BE) ("\\'\\O" ?=C7=BE) ("\\'{\\o}" ?=C7=BF) ("\\'\\o" ?=C7=BF) =20 - ("\\v{H}" ?=C8=9E) ("\\vH" ?=C8=9E) - ("\\v{h}" ?=C8=9F) ("\\vh" ?=C8=9F) - ("\\.{A}" ?=C8=A6) ("\\.A" ?=C8=A6) - ("\\.{a}" ?=C8=A7) ("\\.a" ?=C8=A7) - ("\\c{E}" ?=C8=A8) ("\\cE" ?=C8=A8) - ("\\c{e}" ?=C8=A9) ("\\ce" ?=C8=A9) - ("\\.{O}" ?=C8=AE) ("\\.O" ?=C8=AE) - ("\\.{o}" ?=C8=AF) ("\\.o" ?=C8=AF) - ("\\=3D{Y}" ?=C8=B2) ("\\=3DY" ?=C8=B2) - ("\\=3D{y}" ?=C8=B3) ("\\=3Dy" ?=C8=B3) - - ("\\v{}" ?=CB=87) - ("\\u{}" ?=CB=98) - ("\\.{}" ?=CB=99) - ("\\~{}" ?=CB=9C) - ("\\H{}" ?=CB=9D) - - ("\\'" ?=CC=81) - ("\\'K" ?=E1=B8=B0) - ("\\'M" ?=E1=B8=BE) - ("\\'P" ?=E1=B9=94) - ("\\'W" ?=E1=BA=82) - ("\\'k" ?=E1=B8=B1) - ("\\'m" ?=E1=B8=BF) - ("\\'p" ?=E1=B9=95) - ("\\'w" ?=E1=BA=83) ("\\," ?=E2=80=AF) - ("\\." ?=CC=87) - ("\\.B" ?=E1=B8=82) - ("\\.D" ?=E1=B8=8A) - ("\\.F" ?=E1=B8=9E) - ("\\.H" ?=E1=B8=A2) - ("\\.M" ?=E1=B9=80) - ("\\.N" ?=E1=B9=84) - ("\\.P" ?=E1=B9=96) - ("\\.R" ?=E1=B9=98) - ("\\.S" ?=E1=B9=A0) - ("\\.T" ?=E1=B9=AA) - ("\\.W" ?=E1=BA=86) - ("\\.X" ?=E1=BA=8A) - ("\\.Y" ?=E1=BA=8E) - ("\\.b" ?=E1=B8=83) - ("\\.d" ?=E1=B8=8B) - ("\\.e" ?=C4=97) - ("\\.f" ?=E1=B8=9F) - ("\\.h" ?=E1=B8=A3) - ("\\.m" ?=E1=B9=81) - ("\\.n" ?=E1=B9=85) - ("\\.p" ?=E1=B9=97) - ("\\.r" ?=E1=B9=99) - ("\\.s" ?=E1=B9=A1) - ("\\.t" ?=E1=B9=AB) - ("\\.w" ?=E1=BA=87) - ("\\.x" ?=E1=BA=8B) - ("\\.y" ?=E1=BA=8F) ("\\/" ?=E2=80=8C) ("\\:" ?=E2=80=85) ("\\;" ?=E2=80=84) - ("\\=3D" ?=CC=84) - ("\\=3DG" ?=E1=B8=A0) - ("\\=3Dg" ?=E1=B8=A1) =20 - ("^(" ?=E2=81=BD) - ("^)" ?=E2=81=BE) - ("^+" ?=E2=81=BA) - ("^-" ?=E2=81=BB) - ("^0" ?=E2=81=B0) - ("^1" ?=C2=B9) - ("^2" ?=C2=B2) - ("^3" ?=C2=B3) - ("^4" ?=E2=81=B4) - ("^5" ?=E2=81=B5) - ("^6" ?=E2=81=B6) - ("^7" ?=E2=81=B7) - ("^8" ?=E2=81=B8) - ("^9" ?=E2=81=B9) - ("^=3D" ?=E2=81=BC) + ((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" ?=CB=A0) - ;; 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" ?=E1=B5=83) - ("^b" ?=E1=B5=87) - ("^c" ?=E1=B6=9C) - ("^d" ?=E1=B5=88) - ("^e" ?=E1=B5=89) - ("^f" ?=E1=B6=A0) - ("^g" ?=E1=B5=8D) - ("^h" ?=CA=B0) - ;; ("^i" ?) ;; FIXME: can't find MODIFIER SMALL LETTER I !?! - ("^j" ?=CA=B2) - ("^k" ?=E1=B5=8F) - ("^l" ?=CB=A1) - ("^m" ?=E1=B5=90) - ("^n" ?=E2=81=BF) - ("^o" ?=E1=B5=92) + + ((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\\) \\(.*\\)") +=20 + ;; ((lambda (name char) (format "^%s" (downcase (match-string 1 name)))) + ;; "\\`MODIFIER LETTER SMALL \\(.\\)\\'") + ;; ("^\\1" "\\`MODIFIER LETTER CAPITAL \\(.\\)\\'") ("^o_" ?=C2=BA) - ("^p" ?=E1=B5=96) - ;; ("^q" ?) ;; FIXME: can't find MODIFIER SMALL LETTER Q !?! - ("^r" ?=CA=B3) - ("^s" ?=CB=A2) - ("^t" ?=E1=B5=97) - ("^u" ?=E1=B5=98) - ("^v" ?=E1=B5=9B) - ("^w" ?=CA=B7) - ("^x" ?=CB=A3) - ("^y" ?=CA=B8) - ("^z" ?=E1=B6=BB) - ("^A" ?=E1=B4=AC) - ("^B" ?=E1=B4=AE) - ;; ("^C" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER C !?! - ("^D" ?=E1=B4=B0) - ("^E" ?=E1=B4=B1) - ;; ("^F" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER F !?! - ("^G" ?=E1=B4=B3) - ("^H" ?=E1=B4=B4) - ("^I" ?=E1=B4=B5) - ("^J" ?=E1=B4=B6) - ("^K" ?=E1=B4=B7) - ("^L" ?=E1=B4=B8) - ("^M" ?=E1=B4=B9) - ("^N" ?=E1=B4=BA) - ("^O" ?=E1=B4=BC) - ("^P" ?=E1=B4=BE) - ;; ("^Q" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER Q !?! - ("^R" ?=E1=B4=BF) - ;; ("^S" ?) ;; FIXME: can't find MODIFIER CAPITAL LETTER S !?! - ("^T" ?=E1=B5=80) - ("^U" ?=E1=B5=81) - ("^V" ?=E2=B1=BD) - ("^W" ?=E1=B5=82) - ;; ("^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}" ?=E2=84=A0) ("^{TEL}" ?=E2=84=A1) ("^{TM}" ?=E2=84=A2) - ("_(" ?=E2=82=8D) - ("_)" ?=E2=82=8E) - ("_+" ?=E2=82=8A) - ("_-" ?=E2=82=8B) - ("_0" ?=E2=82=80) - ("_1" ?=E2=82=81) - ("_2" ?=E2=82=82) - ("_3" ?=E2=82=83) - ("_4" ?=E2=82=84) - ("_5" ?=E2=82=85) - ("_6" ?=E2=82=86) - ("_7" ?=E2=82=87) - ("_8" ?=E2=82=88) - ("_9" ?=E2=82=89) - ("_=3D" ?=E2=82=8C) - - ("\\~" ?=CC=83) - ("\\~E" ?=E1=BA=BC) - ("\\~V" ?=E1=B9=BC) - ("\\~Y" ?=E1=BB=B8) - ("\\~e" ?=E1=BA=BD) - ("\\~v" ?=E1=B9=BD) - ("\\~y" ?=E1=BB=B9) =20 - ("\\\"" ?=CC=88) - ("\\\"H" ?=E1=B8=A6) - ("\\\"W" ?=E1=BA=84) - ("\\\"X" ?=E1=BA=8C) - ("\\\"h" ?=E1=B8=A7) - ("\\\"t" ?=E1=BA=97) - ("\\\"w" ?=E1=BA=85) - ("\\\"x" ?=E1=BA=8D) - ("\\^" ?=CC=82) - ("\\^Z" ?=E1=BA=90) - ("\\^z" ?=E1=BA=91) - ("\\`" ?=CC=80) - ("\\`W" ?=E1=BA=80) - ("\\`Y" ?=E1=BB=B2) - ("\\`w" ?=E1=BA=81) - ("\\`y" ?=E1=BB=B3) ("\\b" ?=CC=B1) - ("\\c" ?=CC=A7) - ("\\c{D}" ?=E1=B8=90) - ("\\c{H}" ?=E1=B8=A8) - ("\\c{d}" ?=E1=B8=91) - ("\\c{h}" ?=E1=B8=A9) + ("\\d" ?=CC=A3) - ("\\d{A}" ?=E1=BA=A0) - ("\\d{B}" ?=E1=B8=84) - ("\\d{D}" ?=E1=B8=8C) - ("\\d{E}" ?=E1=BA=B8) - ("\\d{H}" ?=E1=B8=A4) - ("\\d{I}" ?=E1=BB=8A) - ("\\d{K}" ?=E1=B8=B2) - ("\\d{L}" ?=E1=B8=B6) - ("\\d{M}" ?=E1=B9=82) - ("\\d{N}" ?=E1=B9=86) - ("\\d{O}" ?=E1=BB=8C) - ("\\d{R}" ?=E1=B9=9A) - ("\\d{S}" ?=E1=B9=A2) - ("\\d{T}" ?=E1=B9=AC) - ("\\d{U}" ?=E1=BB=A4) - ("\\d{V}" ?=E1=B9=BE) - ("\\d{W}" ?=E1=BA=88) - ("\\d{Y}" ?=E1=BB=B4) - ("\\d{Z}" ?=E1=BA=92) - ("\\d{a}" ?=E1=BA=A1) - ("\\d{b}" ?=E1=B8=85) - ("\\d{d}" ?=E1=B8=8D) - ("\\d{e}" ?=E1=BA=B9) - ("\\d{h}" ?=E1=B8=A5) - ("\\d{i}" ?=E1=BB=8B) - ("\\d{k}" ?=E1=B8=B3) - ("\\d{l}" ?=E1=B8=B7) - ("\\d{m}" ?=E1=B9=83) - ("\\d{n}" ?=E1=B9=87) - ("\\d{o}" ?=E1=BB=8D) - ("\\d{r}" ?=E1=B9=9B) - ("\\d{s}" ?=E1=B9=A3) - ("\\d{t}" ?=E1=B9=AD) - ("\\d{u}" ?=E1=BB=A5) - ("\\d{v}" ?=E1=B9=BF) - ("\\d{w}" ?=E1=BA=89) - ("\\d{y}" ?=E1=BB=B5) - ("\\d{z}" ?=E1=BA=93) + ;; ("\\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" ?=E2=80=99) - ("\\u" ?=CC=86) - ("\\v" ?=CC=8C) - ("\\v{L}" ?=C4=BD) - ("\\v{i}" ?=C7=90) - ("\\v{j}" ?=C7=B0) - ("\\v{l}" ?=C4=BE) - ("\\yen" ?=C2=A5) + + ;; 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 \\([^- ]+\\)\\'") =20 ("\\Box" ?=E2=96=A1) ("\\Bumpeq" ?=E2=89=8E) ("\\Cap" ?=E2=8B=92) ("\\Cup" ?=E2=8B=93) - ("\\Delta" ?=CE=94) ("\\Diamond" ?=E2=97=87) ("\\Downarrow" ?=E2=87=93) - ("\\Gamma" ?=CE=93) - ("\\H" ?=CC=8B) ("\\H{o}" ?=C5=91) ("\\Im" ?=E2=84=91) ("\\Join" ?=E2=8B=88) - ("\\Lambda" ?=CE=9B) ("\\Leftarrow" ?=E2=87=90) ("\\Leftrightarrow" ?=E2=87=94) ("\\Ll" ?=E2=8B=98) @@ -528,27 +308,18 @@ ("\\Longleftrightarrow" ?=E2=87=94) ("\\Longrightarrow" ?=E2=87=92) ("\\Lsh" ?=E2=86=B0) - ("\\Omega" ?=CE=A9) - ("\\Phi" ?=CE=A6) - ("\\Pi" ?=CE=A0) - ("\\Psi" ?=CE=A8) ("\\Re" ?=E2=84=9C) ("\\Rightarrow" ?=E2=87=92) ("\\Rrightarrow" ?=E2=87=9B) ("\\Rsh" ?=E2=86=B1) - ("\\Sigma" ?=CE=A3) ("\\Subset" ?=E2=8B=90) ("\\Supset" ?=E2=8B=91) - ("\\Theta" ?=CE=98) ("\\Uparrow" ?=E2=87=91) ("\\Updownarrow" ?=E2=87=95) - ("\\Upsilon" ?=CE=A5) ("\\Vdash" ?=E2=8A=A9) ("\\Vert" ?=E2=80=96) ("\\Vvdash" ?=E2=8A=AA) - ("\\Xi" ?=CE=9E) ("\\aleph" ?=E2=84=B5) - ("\\alpha" ?=CE=B1) ("\\amalg" ?=E2=88=90) ("\\angle" ?=E2=88=A0) ("\\approx" ?=E2=89=88) @@ -563,7 +334,6 @@ ("\\backslash" ?\\) ("\\barwedge" ?=E2=8A=BC) ("\\because" ?=E2=88=B5) - ("\\beta" ?=CE=B2) ("\\beth" ?=E2=84=B6) ("\\between" ?=E2=89=AC) ("\\bigcap" ?=E2=8B=82) @@ -602,7 +372,7 @@ ("\\circledcirc" ?=E2=8A=9A) ("\\circleddash" ?=E2=8A=9D) ("\\clubsuit" ?=E2=99=A3) - ("\\colon" ?:) + ("\\colon" ?:) ;FIXME: Conflict with "COLON SIGN"= =E2=82=A1. ("\\coloneq" ?=E2=89=94) ("\\complement" ?=E2=88=81) ("\\cong" ?=E2=89=85) @@ -623,7 +393,6 @@ ("\\ddag" ?=E2=80=A1) ("\\ddagger" ?=E2=80=A1) ("\\ddots" ?=E2=8B=B1) - ("\\delta" ?=CE=B4) ("\\diamond" ?=E2=8B=84) ("\\diamondsuit" ?=E2=99=A2) ("\\digamma" ?=CF=9C) @@ -638,14 +407,11 @@ ("\\downrightharpoon" ?=E2=87=82) ("\\ell" ?=E2=84=93) ("\\emptyset" ?=E2=88=85) - ("\\epsilon" ?=CE=B5) ("\\eqcirc" ?=E2=89=96) ("\\eqcolon" ?=E2=89=95) ("\\eqslantgtr" ?=E2=8B=9D) ("\\eqslantless" ?=E2=8B=9C) ("\\equiv" ?=E2=89=A1) - ("\\eta" ?=CE=B7) - ("\\euro" ?=E2=82=AC) ("\\exists" ?=E2=88=83) ("\\fallingdotseq" ?=E2=89=92) ("\\flat" ?=E2=99=AD) @@ -667,7 +433,6 @@ ("\\frac58" ?=E2=85=9D) ("\\frac78" ?=E2=85=9E) ("\\frown" ?=E2=8C=A2) - ("\\gamma" ?=CE=B3) ("\\ge" ?=E2=89=A5) ("\\geq" ?=E2=89=A5) ("\\geqq" ?=E2=89=A7) @@ -697,9 +462,6 @@ ("\\infty" ?=E2=88=9E) ("\\int" ?=E2=88=AB) ("\\intercal" ?=E2=8A=BA) - ("\\iota" ?=CE=B9) - ("\\kappa" ?=CE=BA) - ("\\lambda" ?=CE=BB) ("\\langle" ?=E2=8C=A9) ("\\lbrace" ?{) ("\\lbrack" ?\[) @@ -783,7 +545,7 @@ ("\\nleqslant" ?=E2=89=B0) ("\\nless" ?=E2=89=AE) ("\\nmid" ?=E2=88=A4) - ("\\not" ?=CC=B8) + ("\\not" ?=CC=B8) ;FIXME: conflict with "NOT S= IGN" =C2=AC. ("\\notin" ?=E2=88=89) ("\\nparallel" ?=E2=88=A6) ("\\nprec" ?=E2=8A=80) @@ -805,13 +567,11 @@ ("\\ntrianglelefteq" ?=E2=8B=AC) ("\\ntriangleright" ?=E2=8B=AB) ("\\ntrianglerighteq" ?=E2=8B=AD) - ("\\nu" ?=CE=BD) ("\\nvDash" ?=E2=8A=AD) ("\\nvdash" ?=E2=8A=AC) ("\\nwarrow" ?=E2=86=96) ("\\odot" ?=E2=8A=99) ("\\oint" ?=E2=88=AE) - ("\\omega" ?=CF=89) ("\\ominus" ?=E2=8A=96) ("\\oplus" ?=E2=8A=95) ("\\oslash" ?=E2=8A=98) @@ -820,8 +580,6 @@ ("\\parallel" ?=E2=88=A5) ("\\partial" ?=E2=88=82) ("\\perp" ?=E2=8A=A5) - ("\\phi" ?=CF=86) - ("\\pi" ?=CF=80) ("\\pitchfork" ?=E2=8B=94) ("\\prec" ?=E2=89=BA) ("\\precapprox" ?=E2=89=BE) @@ -832,7 +590,6 @@ ("\\prime" ?=E2=80=B2) ("\\prod" ?=E2=88=8F) ("\\propto" ?=E2=88=9D) - ("\\psi" ?=CF=88) ("\\qed" ?=E2=88=8E) ("\\quad" ?=E2=80=81) ("\\rangle" ?=E2=8C=AA) @@ -857,7 +614,6 @@ ("\\sharp" ?=E2=99=AF) ("\\shortmid" ?=E2=88=A3) ("\\shortparallel" ?=E2=88=A5) - ("\\sigma" ?=CF=83) ("\\sim" ?=E2=88=BC) ("\\simeq" ?=E2=89=83) ("\\smallamalg" ?=E2=88=90) @@ -896,9 +652,7 @@ ("\\supsetneqq" ?=E2=8A=8B) ("\\surd" ?=E2=88=9A) ("\\swarrow" ?=E2=86=99) - ("\\tau" ?=CF=84) ("\\therefore" ?=E2=88=B4) - ("\\theta" ?=CE=B8) ("\\thickapprox" ?=E2=89=88) ("\\thicksim" ?=E2=88=BC) ("\\to" ?=E2=86=92) @@ -918,19 +672,18 @@ ("\\upleftharpoon" ?=E2=86=BF) ("\\uplus" ?=E2=8A=8E) ("\\uprightharpoon" ?=E2=86=BE) - ("\\upsilon" ?=CF=85) ("\\upuparrows" ?=E2=87=88) ("\\urcorner" ?=E2=8C=9D) ("\\u{i}" ?=C4=AD) ("\\vDash" ?=E2=8A=A8) - ("\\varkappa" ?=CF=B0) - ("\\varphi" ?=CF=95) - ("\\varpi" ?=CF=96) + + ((lambda (name char) + (concat "\\var" (downcase (match-string 1 name)))) + "\\`GREEK \\([^- ]+\\) SYMBOL\\'") + ("\\varprime" ?=E2=80=B2) ("\\varpropto" ?=E2=88=9D) - ("\\varrho" ?=CF=B1) - ("\\varsigma" ?=CF=82) - ("\\vartheta" ?=CF=91) + ("\\varsigma" ?=CF=82) ;FIXME: Looks reversed with th= e non\var. ("\\vartriangleleft" ?=E2=8A=B2) ("\\vartriangleright" ?=E2=8A=B3) ("\\vdash" ?=E2=8A=A2) @@ -941,8 +694,6 @@ ("\\wedge" ?=E2=88=A7) ("\\wp" ?=E2=84=98) ("\\wr" ?=E2=89=80) - ("\\xi" ?=CE=BE) - ("\\zeta" ?=CE=B6) =20 ("\\Bbb{N}" ?=E2=84=95) ; AMS commands for blackboard bold ("\\Bbb{P}" ?=E2=84=99) ; Also sometimes \mathbb. @@ -954,8 +705,6 @@ ;; a bug where the user finds his ~ key doesn't insert a ~ any more. ("\\ " ?=C2=A0) ("\\\\" ?\\) - ("\\mu" ?=CE=BC) - ("\\rho" ?=CF=81) ("\\mathscr{I}" ?=E2=84=90) ; moment of inertia ("\\Smiley" ?=E2=98=BA) ("\\blacksmiley" ?=E2=98=BB) @@ -980,13 +729,10 @@ ;; ("\\Writinghand" ?=E2=9C=8D) ;; ("\\Yinyang" ?=E2=98=AF) ;; ("\\Heart" ?=E2=99=A1) - ("\\registered" ?=C2=AE) - ("\\currency" ?=C2=A4) ("\\dh" ?=C3=B0) ("\\DH" ?=C3=90) ("\\th" ?=C3=BE) ("\\TH" ?=C3=9E) - ("\\micro" ?=C2=B5) ("\\lnot" ?=C2=AC) ("\\ordfeminine" ?=C2=AA) ("\\ordmasculine" ?=C2=BA) @@ -995,7 +741,6 @@ ;; by analogy with lq, rq: ("\\ldq" ?\=E2=80=9C) ("\\rdq" ?\=E2=80=9D) - ("\\minus" ?=E2=88=92) ("\\defs" ?=E2=89=99) ; per fuzz/zed ;; ("\\sqrt[3]" ?=E2=88=9B) ("\\llbracket" ?\=E3=80=9A) ; stmaryrd