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