* leim/quail/latin-ltx.el: Auto-generate some of the entries.
[bpt/emacs.git] / leim / quail / latin-ltx.el
CommitLineData
e7cc1c83 1;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: utf-8;-*-
44a7591e 2
acaf905b 3;; Copyright (C) 2001-2012 Free Software Foundation, Inc.
95df8112
GM
4;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
5;; 2010, 2011
698218a2
KH
6;; National Institute of Advanced Industrial Science and Technology (AIST)
7;; Registration Number H14PRO021
44a7591e 8
804c0109
DL
9;; Author: TAKAHASHI Naoto <ntakahas@m17n.org>
10;; Dave Love <fx@gnu.org>
f042e7b9 11;; Keywords: multilingual, input, Greek, i18n
44a7591e
KH
12
13;; This file is part of GNU Emacs.
14
3d544458 15;; GNU Emacs is free software: you can redistribute it and/or modify
44a7591e 16;; it under the terms of the GNU General Public License as published by
3d544458
GM
17;; the Free Software Foundation, either version 3 of the License, or
18;; (at your option) any later version.
44a7591e
KH
19
20;; GNU Emacs is distributed in the hope that it will be useful,
21;; but WITHOUT ANY WARRANTY; without even the implied warranty of
22;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23;; GNU General Public License for more details.
24
25;; You should have received a copy of the GNU General Public License
3d544458 26;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
44a7591e 27
be567141
PJ
28;;; Commentary:
29
44a7591e
KH
30;;; Code:
31
32(require 'quail)
33
34(quail-define-package
f042e7b9
DL
35 "TeX" "UTF-8" "\\" t
36 "LaTeX-like input method for many characters.
37These characters are from the charsets used by the `utf-8' coding
38system, including many technical ones. Examples:
e7cc1c83
SM
39 \\'a -> á \\`{a} -> à
40 \\pi -> π \\int -> ∫ ^1 -> ¹"
f042e7b9 41
eebfcf8e
KH
42 '(("\t" . quail-completion))
43 t t nil nil nil nil nil nil nil t)
44a7591e 44
f8f2e1d8
SM
45(eval-when-compile
46 (defun latin-ltx--ascii-p (char)
47 (and (characterp char) (< char 128)))
48
49 (defmacro latin-ltx--define-rules (&rest rules)
50 (load "uni-name")
51 (let ((newrules ()))
52 (dolist (rule rules)
53 (pcase rule
54 (`(,_ ,(pred characterp)) (push rule newrules)) ;; Normal quail rule.
55 (`(,seq ,re)
56 (let ((count 0))
57 (dolist (pair (ucs-names))
58 (let ((name (car pair))
59 (char (cdr pair)))
60 (when (and (characterp char) ;; Ignore char-ranges.
61 (string-match re name))
62 (let ((keys (if (stringp seq)
63 (replace-match seq nil nil name)
64 (funcall seq name char))))
65 (if (listp keys)
66 (dolist (x keys)
67 (setq count (1+ count))
68 (push (list x char) newrules))
69 (setq count (1+ count))
70 (push (list keys char) newrules))))))
71 (message "latin-ltx: %d mapping for %S" count re)))))
72 `(quail-define-rules ,@(nreverse (delete-dups newrules))))))
73
74(latin-ltx--define-rules
e7cc1c83 75 ("!`" ?¡)
d781da00
SM
76 ("\\pounds" ?£) ;; ("{\\pounds}" ?£)
77 ("\\S" ?§) ;; ("{\\S}" ?§)
e7cc1c83 78 ("$^a$" ?ª)
e7cc1c83
SM
79 ("$\\pm$" ?±) ("\\pm" ?±)
80 ("$^2$" ?²)
81 ("$^3$" ?³)
d781da00 82 ("\\P" ?¶) ;; ("{\\P}" ?¶)
e7cc1c83
SM
83 ;; Fixme: Yudit has the equivalent of ("\\cdot" ?⋅), for U+22C5, DOT
84 ;; OPERATOR, whereas · is MIDDLE DOT. JadeTeX translates both to
f042e7b9 85 ;; \cdot.
e7cc1c83 86 ("$\\cdot$" ?·) ("\\cdot" ?·)
e7cc1c83
SM
87 ("$^1$" ?¹)
88 ("$^o$" ?º)
89 ("?`" ?¿)
90
f8f2e1d8
SM
91 ("\\`" ?̀)
92 ("\\`{}" ?`)
93 ((lambda (name char)
94 (let ((c (if (match-end 1)
95 (downcase (match-string 2 name))
96 (match-string 2 name))))
97 (list (format "\\`{%s}" c) (format "\\`%s" c))))
98 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH GRAVE")
99
100 ("\\'" ?́)
101 ("\\'{}" ?´)
102 ((lambda (name char)
103 (let ((c (if (match-end 1)
104 (downcase (match-string 2 name))
105 (match-string 2 name))))
106 (list (format "\\'{%s}" c) (format "\\'%s" c))))
107 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH ACUTE")
108
109 ("\\^" ?̂)
110 ("\\^{}" ?^)
111 ((lambda (name char)
112 (let ((c (if (match-end 1)
113 (downcase (match-string 2 name))
114 (match-string 2 name))))
115 (list (format "\\^{%s}" c) (format "\\^%s" c))))
116 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CIRCUMFLEX")
117
118 ("\\~" ?̃)
119 ("\\~{}" ?˜)
120 ((lambda (name char)
121 (let ((c (if (match-end 1)
122 (downcase (match-string 2 name))
123 (match-string 2 name))))
124 (list (format "\\~{%s}" c) (format "\\~%s" c))))
125 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH TILDE")
126
127 ("\\\"" ?̈)
128 ("\\\"{}" ?¨)
129 ((lambda (name char)
130 (let ((c (if (match-end 1)
131 (downcase (match-string 2 name))
132 (match-string 2 name))))
133 (list (format "\\\"{%s}" c) (format "\\\"%s" c))))
134 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DIAERESIS")
135
136 ("\\k" ?̨)
137 ("\\k{}" ?˛)
138 ((lambda (name char)
139 (let ((c (if (match-end 1)
140 (downcase (match-string 2 name))
141 (match-string 2 name))))
142 (list (format "\\k{%s}" c) ;; (format "\\k%s" c)
143 )))
144 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH OGONEK")
145
146 ("\\c" ?̧)
147 ("\\c{}" ?¸)
148 ((lambda (name char)
149 (let ((c (if (match-end 1)
150 (downcase (match-string 2 name))
151 (match-string 2 name))))
152 (list (format "\\c{%s}" c) (format "\\c%s" c))))
153 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CEDILLA")
154
d781da00
SM
155 ("\\AA" ?Å) ;; ("{\\AA}" ?Å)
156 ("\\AE" ?Æ) ;; ("{\\AE}" ?Æ)
f8f2e1d8 157
e7cc1c83 158 ("$\\times$" ?×) ("\\times" ?×)
d781da00 159 ("\\O" ?Ø) ;; ("{\\O}" ?Ø)
d781da00 160 ("\\ss" ?ß) ;; ("{\\ss}" ?ß)
e7cc1c83 161
d781da00
SM
162 ("\\aa" ?å) ;; ("{\\aa}" ?å)
163 ("\\ae" ?æ) ;; ("{\\ae}" ?æ)
f8f2e1d8 164
e7cc1c83 165 ("$\\div$" ?÷) ("\\div" ?÷)
d781da00 166 ("\\o" ?ø) ;; ("{\\o}" ?ø)
f8f2e1d8
SM
167
168 ("\\=" ?̄)
169 ("\\={}" ?¯)
170 ((lambda (name char)
171 (let ((c (if (match-end 1)
172 (downcase (match-string 2 name))
173 (match-string 2 name))))
174 (list (format "\\={%s}" c) (format "\\=%s" c))))
175 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH MACRON")
176
177 ("\\u" ?̆)
178 ("\\u{}" ?˘)
179 ((lambda (name char)
180 (let ((c (if (match-end 1)
181 (downcase (match-string 2 name))
182 (match-string 2 name))))
183 (list (format "\\u{%s}" c) (format "\\u%s" c))))
184 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH BREVE")
185
186 ("\\." ?̇)
187 ("\\.{}" ?˙)
188 ((lambda (name char)
189 (let ((c (if (match-end 1)
190 (downcase (match-string 2 name))
191 (match-string 2 name))))
192 (list (format "\\.{%s}" c) (format "\\.%s" c))))
193 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT ABOVE")
194
195 ("\\v" ?̌)
196 ("\\v{}" ?ˇ)
197 ((lambda (name char)
198 (let ((c (if (match-end 1)
199 (downcase (match-string 2 name))
200 (match-string 2 name))))
201 (list (format "\\v{%s}" c) (format "\\v%s" c))))
202 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CARON")
203
204 ("\\~{\\i}" ?ĩ)
205 ("\\={\\i}" ?ī)
206 ("\\u{\\i}" ?ĭ)
207
d781da00 208 ("\\i" ?ı) ;; ("{\\i}" ?ı)
f8f2e1d8 209 ("\\^{\\j}" ?ĵ)
e7cc1c83 210
d781da00
SM
211 ("\\L" ?Ł) ;; ("{\\L}" ?Ł)
212 ("\\l" ?ł) ;; ("{\\l}" ?ł)
f8f2e1d8
SM
213
214 ("\\H" ?̋)
215 ("\\H{}" ?˝)
216 ((lambda (name char)
217 (let ((c (if (match-end 1)
218 (downcase (match-string 2 name))
219 (match-string 2 name))))
220 (list (format "\\H{%s}" c) (format "\\H%s" c))))
221 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOUBLE ACUTE")
222 ("\\U{o}" ?ő) ("\\Uo" ?ő) ;; FIXME: Was it just a typo?
223
d781da00
SM
224 ("\\OE" ?Œ) ;; ("{\\OE}" ?Œ)
225 ("\\oe" ?œ) ;; ("{\\oe}" ?œ)
f8f2e1d8
SM
226
227 ("\\v{\\i}" ?ǐ)
e7cc1c83
SM
228
229 ("\\={\\AE}" ?Ǣ) ("\\=\\AE" ?Ǣ)
230 ("\\={\\ae}" ?ǣ) ("\\=\\ae" ?ǣ)
f8f2e1d8
SM
231
232 ("\\v{\\j}" ?ǰ)
e7cc1c83
SM
233 ("\\'{\\AE}" ?Ǽ) ("\\'\\AE" ?Ǽ)
234 ("\\'{\\ae}" ?ǽ) ("\\'\\ae" ?ǽ)
235 ("\\'{\\O}" ?Ǿ) ("\\'\\O" ?Ǿ)
236 ("\\'{\\o}" ?ǿ) ("\\'\\o" ?ǿ)
237
c814bdfc 238 ("\\," ? )
e7cc1c83
SM
239 ("\\/" ?‌)
240 ("\\:" ? )
241 ("\\;" ? )
f8f2e1d8
SM
242
243 ((lambda (name char)
244 (let* ((base (concat (match-string 1 name) (match-string 3 name)))
245 (basechar (cdr (assoc base (ucs-names)))))
246 (when (latin-ltx--ascii-p basechar)
247 (string (if (match-end 2) ?^ ?_) basechar))))
248 "\\(.*\\)SU\\(?:B\\|\\(PER\\)\\)SCRIPT \\(.*\\)")
249
e7cc1c83 250 ("^\\gamma" ?ˠ)
f8f2e1d8
SM
251
252 ((lambda (name char)
253 (let* ((base (format "LATIN %s LETTER %s"
254 (match-string 1 name) (match-string 2 name)))
255 (basechar (cdr (assoc base (ucs-names)))))
256 (when (latin-ltx--ascii-p basechar)
257 (string ?^ basechar))))
258 "MODIFIER LETTER \\(SMALL\\|CAPITAL\\) \\(.*\\)")
259
260 ;; ((lambda (name char) (format "^%s" (downcase (match-string 1 name))))
261 ;; "\\`MODIFIER LETTER SMALL \\(.\\)\\'")
262 ;; ("^\\1" "\\`MODIFIER LETTER CAPITAL \\(.\\)\\'")
b31b81a5 263 ("^o_" ?º)
e7cc1c83
SM
264 ("^{SM}" ?℠)
265 ("^{TEL}" ?℡)
266 ("^{TM}" ?™)
e7cc1c83 267
e7cc1c83 268 ("\\b" ?̱)
f8f2e1d8 269
e7cc1c83 270 ("\\d" ?̣)
f8f2e1d8
SM
271 ;; ("\\d{}" ?) ;; FIXME: can't find the DOT BELOW character.
272 ((lambda (name char)
273 (let ((c (if (match-end 1)
274 (downcase (match-string 2 name))
275 (match-string 2 name))))
276 (list (format "\\d{%s}" c) ;; (format "\\d%s" c)
277 )))
278 "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT BELOW")
279
e7cc1c83 280 ("\\rq" ?’)
f8f2e1d8
SM
281
282 ;; FIXME: Provides some useful entries (yen, euro, copyright, registered,
283 ;; currency, minus, micro), but also a lot of dubious ones.
284 ((lambda (name char)
285 (unless (latin-ltx--ascii-p char)
286 (concat "\\" (downcase (match-string 1 name)))))
287 "\\`\\([^- ]+\\) SIGN\\'")
288
289 ((lambda (name char)
290 (concat "\\" (funcall (if (match-end 1) #' capitalize #'downcase)
291 (match-string 2 name))))
292 "\\`GREEK \\(?:SMALL\\|CAPITA\\(L\\)\\) LETTER \\([^- ]+\\)\\'")
e7cc1c83
SM
293
294 ("\\Box" ?□)
295 ("\\Bumpeq" ?≎)
296 ("\\Cap" ?⋒)
297 ("\\Cup" ?⋓)
e7cc1c83
SM
298 ("\\Diamond" ?◇)
299 ("\\Downarrow" ?⇓)
e7cc1c83
SM
300 ("\\H{o}" ?ő)
301 ("\\Im" ?ℑ)
302 ("\\Join" ?⋈)
e7cc1c83
SM
303 ("\\Leftarrow" ?⇐)
304 ("\\Leftrightarrow" ?⇔)
305 ("\\Ll" ?⋘)
306 ("\\Lleftarrow" ?⇚)
307 ("\\Longleftarrow" ?⇐)
308 ("\\Longleftrightarrow" ?⇔)
309 ("\\Longrightarrow" ?⇒)
310 ("\\Lsh" ?↰)
e7cc1c83
SM
311 ("\\Re" ?ℜ)
312 ("\\Rightarrow" ?⇒)
313 ("\\Rrightarrow" ?⇛)
314 ("\\Rsh" ?↱)
e7cc1c83
SM
315 ("\\Subset" ?⋐)
316 ("\\Supset" ?⋑)
e7cc1c83
SM
317 ("\\Uparrow" ?⇑)
318 ("\\Updownarrow" ?⇕)
e7cc1c83
SM
319 ("\\Vdash" ?⊩)
320 ("\\Vert" ?‖)
321 ("\\Vvdash" ?⊪)
6b4e1d0d 322 ("\\aleph" ?ℵ)
e7cc1c83
SM
323 ("\\amalg" ?∐)
324 ("\\angle" ?∠)
325 ("\\approx" ?≈)
326 ("\\approxeq" ?≊)
327 ("\\ast" ?∗)
328 ("\\asymp" ?≍)
329 ("\\backcong" ?≌)
330 ("\\backepsilon" ?∍)
331 ("\\backprime" ?‵)
332 ("\\backsim" ?∽)
333 ("\\backsimeq" ?⋍)
f042e7b9 334 ("\\backslash" ?\\)
e7cc1c83
SM
335 ("\\barwedge" ?⊼)
336 ("\\because" ?∵)
b1c07b7b 337 ("\\beth" ?ℶ)
e7cc1c83
SM
338 ("\\between" ?≬)
339 ("\\bigcap" ?⋂)
340 ("\\bigcirc" ?◯)
341 ("\\bigcup" ?⋃)
342 ("\\bigstar" ?★)
343 ("\\bigtriangledown" ?▽)
344 ("\\bigtriangleup" ?△)
345 ("\\bigvee" ?⋁)
346 ("\\bigwedge" ?⋀)
347 ("\\blacklozenge" ?✦)
348 ("\\blacksquare" ?▪)
349 ("\\blacktriangle" ?▴)
350 ("\\blacktriangledown" ?▾)
351 ("\\blacktriangleleft" ?◂)
352 ("\\blacktriangleright" ?▸)
353 ("\\bot" ?⊥)
354 ("\\bowtie" ?⋈)
355 ("\\boxminus" ?⊟)
356 ("\\boxplus" ?⊞)
357 ("\\boxtimes" ?⊠)
358 ("\\bullet" ?•)
359 ("\\bumpeq" ?≏)
360 ("\\cap" ?∩)
361 ("\\cdots" ?⋯)
362 ("\\centerdot" ?·)
363 ("\\checkmark" ?✓)
364 ("\\chi" ?χ)
a0c07f4e 365 ("\\circ" ?∘)
e7cc1c83
SM
366 ("\\circeq" ?≗)
367 ("\\circlearrowleft" ?↺)
368 ("\\circlearrowright" ?↻)
369 ("\\circledR" ?®)
370 ("\\circledS" ?Ⓢ)
371 ("\\circledast" ?⊛)
372 ("\\circledcirc" ?⊚)
373 ("\\circleddash" ?⊝)
374 ("\\clubsuit" ?♣)
f8f2e1d8 375 ("\\colon" ?:) ;FIXME: Conflict with "COLON SIGN" ₡.
e7cc1c83
SM
376 ("\\coloneq" ?≔)
377 ("\\complement" ?∁)
378 ("\\cong" ?≅)
379 ("\\coprod" ?∐)
380 ("\\cup" ?∪)
381 ("\\curlyeqprec" ?⋞)
382 ("\\curlyeqsucc" ?⋟)
383 ("\\curlypreceq" ?≼)
384 ("\\curlyvee" ?⋎)
385 ("\\curlywedge" ?⋏)
386 ("\\curvearrowleft" ?↶)
387 ("\\curvearrowright" ?↷)
388
389 ("\\dag" ?†)
390 ("\\dagger" ?†)
b1c07b7b 391 ("\\daleth" ?ℸ)
e7cc1c83
SM
392 ("\\dashv" ?⊣)
393 ("\\ddag" ?‡)
394 ("\\ddagger" ?‡)
395 ("\\ddots" ?⋱)
e7cc1c83
SM
396 ("\\diamond" ?⋄)
397 ("\\diamondsuit" ?♢)
398 ("\\digamma" ?Ϝ)
399 ("\\divideontimes" ?⋇)
400 ("\\doteq" ?≐)
401 ("\\doteqdot" ?≑)
402 ("\\dotplus" ?∔)
403 ("\\dotsquare" ?⊡)
404 ("\\downarrow" ?↓)
405 ("\\downdownarrows" ?⇊)
406 ("\\downleftharpoon" ?⇃)
407 ("\\downrightharpoon" ?⇂)
408 ("\\ell" ?ℓ)
409 ("\\emptyset" ?∅)
e7cc1c83
SM
410 ("\\eqcirc" ?≖)
411 ("\\eqcolon" ?≕)
412 ("\\eqslantgtr" ?⋝)
413 ("\\eqslantless" ?⋜)
414 ("\\equiv" ?≡)
e7cc1c83
SM
415 ("\\exists" ?∃)
416 ("\\fallingdotseq" ?≒)
417 ("\\flat" ?♭)
418 ("\\forall" ?∀)
419 ("\\frac1" ?⅟)
420 ("\\frac12" ?½)
421 ("\\frac13" ?⅓)
422 ("\\frac14" ?¼)
423 ("\\frac15" ?⅕)
424 ("\\frac16" ?⅙)
425 ("\\frac18" ?⅛)
426 ("\\frac23" ?⅔)
427 ("\\frac25" ?⅖)
428 ("\\frac34" ?¾)
429 ("\\frac35" ?⅗)
430 ("\\frac38" ?⅜)
431 ("\\frac45" ?⅘)
432 ("\\frac56" ?⅚)
433 ("\\frac58" ?⅝)
434 ("\\frac78" ?⅞)
435 ("\\frown" ?⌢)
e7cc1c83
SM
436 ("\\ge" ?≥)
437 ("\\geq" ?≥)
438 ("\\geqq" ?≧)
439 ("\\geqslant" ?≥)
440 ("\\gets" ?←)
441 ("\\gg" ?≫)
442 ("\\ggg" ?⋙)
b1c07b7b 443 ("\\gimel" ?ℷ)
e7cc1c83
SM
444 ("\\gnapprox" ?⋧)
445 ("\\gneq" ?≩)
446 ("\\gneqq" ?≩)
447 ("\\gnsim" ?⋧)
448 ("\\gtrapprox" ?≳)
449 ("\\gtrdot" ?⋗)
450 ("\\gtreqless" ?⋛)
451 ("\\gtreqqless" ?⋛)
452 ("\\gtrless" ?≷)
453 ("\\gtrsim" ?≳)
454 ("\\gvertneqq" ?≩)
455 ("\\hbar" ?ℏ)
456 ("\\heartsuit" ?♥)
457 ("\\hookleftarrow" ?↩)
458 ("\\hookrightarrow" ?↪)
459 ("\\iff" ?⇔)
460 ("\\imath" ?ı)
461 ("\\in" ?∈)
462 ("\\infty" ?∞)
463 ("\\int" ?∫)
464 ("\\intercal" ?⊺)
e7cc1c83 465 ("\\langle" ?〈)
f042e7b9 466 ("\\lbrace" ?{)
e099e659 467 ("\\lbrack" ?\[)
e7cc1c83
SM
468 ("\\lceil" ?⌈)
469 ("\\ldots" ?…)
470 ("\\le" ?≤)
471 ("\\leadsto" ?↝)
472 ("\\leftarrow" ?←)
473 ("\\leftarrowtail" ?↢)
474 ("\\leftharpoondown" ?↽)
475 ("\\leftharpoonup" ?↼)
476 ("\\leftleftarrows" ?⇇)
477 ("\\leftparengtr" ?〈)
478 ("\\leftrightarrow" ?↔)
479 ("\\leftrightarrows" ?⇆)
480 ("\\leftrightharpoons" ?⇋)
481 ("\\leftrightsquigarrow" ?↭)
482 ("\\leftthreetimes" ?⋋)
483 ("\\leq" ?≤)
484 ("\\leqq" ?≦)
485 ("\\leqslant" ?≤)
486 ("\\lessapprox" ?≲)
487 ("\\lessdot" ?⋖)
488 ("\\lesseqgtr" ?⋚)
489 ("\\lesseqqgtr" ?⋚)
490 ("\\lessgtr" ?≶)
491 ("\\lesssim" ?≲)
492 ("\\lfloor" ?⌊)
493 ("\\lhd" ?◁)
494 ("\\rhd" ?▷)
495 ("\\ll" ?≪)
496 ("\\llcorner" ?⌞)
497 ("\\lnapprox" ?⋦)
498 ("\\lneq" ?≨)
499 ("\\lneqq" ?≨)
500 ("\\lnsim" ?⋦)
501 ("\\longleftarrow" ?←)
502 ("\\longleftrightarrow" ?↔)
503 ("\\longmapsto" ?↦)
504 ("\\longrightarrow" ?→)
505 ("\\looparrowleft" ?↫)
506 ("\\looparrowright" ?↬)
507 ("\\lozenge" ?✧)
508 ("\\lq" ?‘)
509 ("\\lrcorner" ?⌟)
510 ("\\ltimes" ?⋉)
511 ("\\lvertneqq" ?≨)
512 ("\\maltese" ?✠)
513 ("\\mapsto" ?↦)
514 ("\\measuredangle" ?∡)
515 ("\\mho" ?℧)
516 ("\\mid" ?∣)
517 ("\\models" ?⊧)
518 ("\\mp" ?∓)
519 ("\\multimap" ?⊸)
520 ("\\nLeftarrow" ?⇍)
521 ("\\nLeftrightarrow" ?⇎)
522 ("\\nRightarrow" ?⇏)
523 ("\\nVDash" ?⊯)
524 ("\\nVdash" ?⊮)
525 ("\\nabla" ?∇)
526 ("\\napprox" ?≉)
527 ("\\natural" ?♮)
528 ("\\ncong" ?≇)
529 ("\\ne" ?≠)
530 ("\\nearrow" ?↗)
531 ("\\neg" ?¬)
532 ("\\neq" ?≠)
533 ("\\nequiv" ?≢)
534 ("\\newline" ?
)
535 ("\\nexists" ?∄)
536 ("\\ngeq" ?≱)
537 ("\\ngeqq" ?≱)
538 ("\\ngeqslant" ?≱)
539 ("\\ngtr" ?≯)
540 ("\\ni" ?∋)
541 ("\\nleftarrow" ?↚)
542 ("\\nleftrightarrow" ?↮)
543 ("\\nleq" ?≰)
544 ("\\nleqq" ?≰)
545 ("\\nleqslant" ?≰)
546 ("\\nless" ?≮)
547 ("\\nmid" ?∤)
f8f2e1d8 548 ("\\not" ?̸) ;FIXME: conflict with "NOT SIGN" ¬.
e7cc1c83
SM
549 ("\\notin" ?∉)
550 ("\\nparallel" ?∦)
551 ("\\nprec" ?⊀)
552 ("\\npreceq" ?⋠)
553 ("\\nrightarrow" ?↛)
554 ("\\nshortmid" ?∤)
555 ("\\nshortparallel" ?∦)
556 ("\\nsim" ?≁)
557 ("\\nsimeq" ?≄)
558 ("\\nsubset" ?⊄)
559 ("\\nsubseteq" ?⊈)
560 ("\\nsubseteqq" ?⊈)
561 ("\\nsucc" ?⊁)
562 ("\\nsucceq" ?⋡)
563 ("\\nsupset" ?⊅)
564 ("\\nsupseteq" ?⊉)
565 ("\\nsupseteqq" ?⊉)
566 ("\\ntriangleleft" ?⋪)
567 ("\\ntrianglelefteq" ?⋬)
568 ("\\ntriangleright" ?⋫)
569 ("\\ntrianglerighteq" ?⋭)
e7cc1c83
SM
570 ("\\nvDash" ?⊭)
571 ("\\nvdash" ?⊬)
572 ("\\nwarrow" ?↖)
573 ("\\odot" ?⊙)
574 ("\\oint" ?∮)
e7cc1c83
SM
575 ("\\ominus" ?⊖)
576 ("\\oplus" ?⊕)
577 ("\\oslash" ?⊘)
578 ("\\otimes" ?⊗)
579 ("\\par" ?
)
580 ("\\parallel" ?∥)
581 ("\\partial" ?∂)
582 ("\\perp" ?⊥)
e7cc1c83
SM
583 ("\\pitchfork" ?⋔)
584 ("\\prec" ?≺)
585 ("\\precapprox" ?≾)
586 ("\\preceq" ?≼)
587 ("\\precnapprox" ?⋨)
588 ("\\precnsim" ?⋨)
589 ("\\precsim" ?≾)
590 ("\\prime" ?′)
591 ("\\prod" ?∏)
592 ("\\propto" ?∝)
fbd80e28 593 ("\\qed" ?∎)
e7cc1c83
SM
594 ("\\quad" ? )
595 ("\\rangle" ?〉)
f042e7b9 596 ("\\rbrace" ?})
e099e659 597 ("\\rbrack" ?\])
e7cc1c83
SM
598 ("\\rceil" ?⌉)
599 ("\\rfloor" ?⌋)
600 ("\\rightarrow" ?→)
601 ("\\rightarrowtail" ?↣)
602 ("\\rightharpoondown" ?⇁)
603 ("\\rightharpoonup" ?⇀)
604 ("\\rightleftarrows" ?⇄)
605 ("\\rightleftharpoons" ?⇌)
606 ("\\rightparengtr" ?〉)
607 ("\\rightrightarrows" ?⇉)
608 ("\\rightthreetimes" ?⋌)
609 ("\\risingdotseq" ?≓)
610 ("\\rtimes" ?⋊)
611 ("\\sbs" ?﹨)
612 ("\\searrow" ?↘)
613 ("\\setminus" ?∖)
614 ("\\sharp" ?♯)
615 ("\\shortmid" ?∣)
616 ("\\shortparallel" ?∥)
e7cc1c83
SM
617 ("\\sim" ?∼)
618 ("\\simeq" ?≃)
619 ("\\smallamalg" ?∐)
620 ("\\smallsetminus" ?∖)
621 ("\\smallsmile" ?⌣)
622 ("\\smile" ?⌣)
623 ("\\spadesuit" ?♠)
624 ("\\sphericalangle" ?∢)
625 ("\\sqcap" ?⊓)
626 ("\\sqcup" ?⊔)
627 ("\\sqsubset" ?⊏)
628 ("\\sqsubseteq" ?⊑)
629 ("\\sqsupset" ?⊐)
630 ("\\sqsupseteq" ?⊒)
631 ("\\square" ?□)
632 ("\\squigarrowright" ?⇝)
633 ("\\star" ?⋆)
634 ("\\straightphi" ?φ)
635 ("\\subset" ?⊂)
636 ("\\subseteq" ?⊆)
637 ("\\subseteqq" ?⊆)
638 ("\\subsetneq" ?⊊)
639 ("\\subsetneqq" ?⊊)
640 ("\\succ" ?≻)
641 ("\\succapprox" ?≿)
642 ("\\succcurlyeq" ?≽)
643 ("\\succeq" ?≽)
644 ("\\succnapprox" ?⋩)
645 ("\\succnsim" ?⋩)
646 ("\\succsim" ?≿)
647 ("\\sum" ?∑)
648 ("\\supset" ?⊃)
649 ("\\supseteq" ?⊇)
650 ("\\supseteqq" ?⊇)
651 ("\\supsetneq" ?⊋)
652 ("\\supsetneqq" ?⊋)
653 ("\\surd" ?√)
654 ("\\swarrow" ?↙)
e7cc1c83 655 ("\\therefore" ?∴)
e7cc1c83
SM
656 ("\\thickapprox" ?≈)
657 ("\\thicksim" ?∼)
658 ("\\to" ?→)
659 ("\\top" ?⊤)
660 ("\\triangle" ?▵)
661 ("\\triangledown" ?▿)
662 ("\\triangleleft" ?◃)
663 ("\\trianglelefteq" ?⊴)
664 ("\\triangleq" ?≜)
665 ("\\triangleright" ?▹)
666 ("\\trianglerighteq" ?⊵)
667 ("\\twoheadleftarrow" ?↞)
668 ("\\twoheadrightarrow" ?↠)
669 ("\\ulcorner" ?⌜)
670 ("\\uparrow" ?↑)
671 ("\\updownarrow" ?↕)
672 ("\\upleftharpoon" ?↿)
673 ("\\uplus" ?⊎)
674 ("\\uprightharpoon" ?↾)
e7cc1c83
SM
675 ("\\upuparrows" ?⇈)
676 ("\\urcorner" ?⌝)
677 ("\\u{i}" ?ĭ)
678 ("\\vDash" ?⊨)
f8f2e1d8
SM
679
680 ((lambda (name char)
681 (concat "\\var" (downcase (match-string 1 name))))
682 "\\`GREEK \\([^- ]+\\) SYMBOL\\'")
683
e7cc1c83
SM
684 ("\\varprime" ?′)
685 ("\\varpropto" ?∝)
f8f2e1d8 686 ("\\varsigma" ?ς) ;FIXME: Looks reversed with the non\var.
e7cc1c83
SM
687 ("\\vartriangleleft" ?⊲)
688 ("\\vartriangleright" ?⊳)
689 ("\\vdash" ?⊢)
690 ("\\vdots" ?⋮)
691 ("\\vee" ?∨)
692 ("\\veebar" ?⊻)
f042e7b9 693 ("\\vert" ?|)
e7cc1c83
SM
694 ("\\wedge" ?∧)
695 ("\\wp" ?℘)
696 ("\\wr" ?≀)
e7cc1c83
SM
697
698 ("\\Bbb{N}" ?ℕ) ; AMS commands for blackboard bold
699 ("\\Bbb{P}" ?ℙ) ; Also sometimes \mathbb.
700 ("\\Bbb{R}" ?ℝ)
701 ("\\Bbb{Z}" ?ℤ)
702 ("--" ?–)
703 ("---" ?—)
8be6f5ae
SM
704 ;; We used to use ~ for NBSP but that's inconvenient and may even look like
705 ;; a bug where the user finds his ~ key doesn't insert a ~ any more.
706 ("\\ " ? )
707 ("\\\\" ?\\)
e7cc1c83
SM
708 ("\\mathscr{I}" ?ℐ) ; moment of inertia
709 ("\\Smiley" ?☺)
710 ("\\blacksmiley" ?☻)
711 ("\\Frowny" ?☹)
712 ("\\Letter" ?✉)
713 ("\\permil" ?‰)
8be6f5ae
SM
714 ;; Probably not useful enough:
715 ;; ("\\Telefon" ?☎) ; there are other possibilities
716 ;; ("\\Radioactivity" ?☢)
717 ;; ("\Biohazard" ?☣)
718 ;; ("\\Male" ?♂)
719 ;; ("\\Female" ?♀)
720 ;; ("\\Lightning" ?☇)
721 ;; ("\\Mercury" ?☿)
722 ;; ("\\Earth" ?♁)
723 ;; ("\\Jupiter" ?♃)
724 ;; ("\\Saturn" ?♄)
725 ;; ("\\Uranus" ?♅)
726 ;; ("\\Neptune" ?♆)
727 ;; ("\\Pluto" ?♇)
728 ;; ("\\Sun" ?☉)
729 ;; ("\\Writinghand" ?✍)
730 ;; ("\\Yinyang" ?☯)
731 ;; ("\\Heart" ?♡)
e7cc1c83
SM
732 ("\\dh" ?ð)
733 ("\\DH" ?Ð)
734 ("\\th" ?þ)
735 ("\\TH" ?Þ)
e7cc1c83
SM
736 ("\\lnot" ?¬)
737 ("\\ordfeminine" ?ª)
738 ("\\ordmasculine" ?º)
739 ("\\lambdabar" ?ƛ)
740 ("\\celsius" ?℃)
804c0109 741 ;; by analogy with lq, rq:
e7cc1c83
SM
742 ("\\ldq" ?\“)
743 ("\\rdq" ?\”)
e7cc1c83 744 ("\\defs" ?≙) ; per fuzz/zed
8be6f5ae 745 ;; ("\\sqrt[3]" ?∛)
e7cc1c83
SM
746 ("\\llbracket" ?\〚) ; stmaryrd
747 ("\\rrbracket" ?\〛)
8be6f5ae
SM
748 ;; ("\\lbag" ?\〚) ; fuzz
749 ;; ("\\rbag" ?\〛)
e7cc1c83
SM
750 ("\\ldata" ?\《) ; fuzz/zed
751 ("\\rdata" ?\》)
d2c846aa
SM
752 ;; From Karl Eichwalder.
753 ("\\glq" ?‚)
754 ("\\grq" ?‘)
bef96454
SM
755 ("\\glqq" ?„) ("\\\"`" ?„)
756 ("\\grqq" ?“) ("\\\"'" ?“)
d2c846aa
SM
757 ("\\flq" ?‹)
758 ("\\frq" ?›)
e89e3726
SM
759 ("\\flqq" ?\«) ("\\\"<" ?\«)
760 ("\\frqq" ?\») ("\\\">" ?\»)
c814bdfc
KH
761
762 ("\\-" ?­) ;; soft hyphen
763
764 ("\\textmu" ?µ)
765 ("\\textfractionsolidus" ?⁄)
766 ("\\textbigcircle" ?⃝)
767 ("\\textmusicalnote" ?♪)
768 ("\\textdied" ?✝)
769 ("\\textcolonmonetary" ?₡)
770 ("\\textwon" ?₩)
771 ("\\textnaira" ?₦)
772 ("\\textpeso" ?₱)
773 ("\\textlira" ?₤)
774 ("\\textrecipe" ?℞)
775 ("\\textinterrobang" ?‽)
776 ("\\textpertenthousand" ?‱)
777 ("\\textbaht" ?฿)
778 ("\\textnumero" ?№)
779 ("\\textdiscount" ?⁒)
780 ("\\textestimated" ?℮)
781 ("\\textopenbullet" ?◦)
782 ("\\textlquill" ?⁅)
783 ("\\textrquill" ?⁆)
784 ("\\textcircledP" ?℗)
785 ("\\textreferencemark" ?※)
564cc607 786 )
be567141
PJ
787
788;;; latin-ltx.el ends here