;;; quail/u8tex.el -- Quail package to input in -*- coding: utf-8 -*- ;; Copyright (C) 2000 Sergei Pokrovsky ;; Time-stamp: <2000-12-08 19:00:30 pok>, v. 1.2 ;; Keywords: mule, multilingual, unicode, input method, TeX ;; Based on definitions stolen from "unicode-input.el" by ;; Florian Weimer . ;; The latest version is to be found at CTAN/support/emacs-modes/u8tex.el; ;; e.g. . ;; This file is not a part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; ;; This file is intended for use with Markus Kuhn's Unicode fonts, ;; see , and the ;; Otfried Cheong's extension of Mule-UCS, available at ;; . ;; The idea is to provide a routine way to input the many TeX ;; characters (and some more) using the familiar TeX notation. Surely ;; it is not convenient for typing a French or German text, for which ;; there are special packages; but I prefer to use it for a mixed ;; text, where some accented characters from various languages occur ;; sporadically, and it is better to type a longer key sequence ;; /"Arger for Ärger rather than suffer from unexpected äny" when ;; typing "any" (as it is usual with the shorter `"Arger' manner, or ;; with o'clock becoming oćlock etc). ;; I've taken some liberties with the TeX notation: ;; 1. Backslash is replaced with solidus in its escape function. The ;; reason is obvious: TeX users heavily use backspace for many other ;; purposes as well. ;; 2. The prefix "text" is systematically dropped; just /euro rather ;; than /texteuro, /perthousand rather than \textperthousand. ;; 3. No internal spaces, e.g. /cC rather than {/c C} or /c{C}. ;; 4. /! and /? are used instead of !` and ?` -- like in EuroTeX, ;; just to reduce the number of escape characters. ;; 5. /3/4 etc is used instead of \textthreequarters. ;; 6. If HTML offers a ahorter Latin-1 name, it is preferred: ;; /reg rather than \textregistered, /nbsp rather than \nobreakspace, ;; /copy rather than \copyright etc. (Such abbreviations are marked ;; with "HTML" in a comment field.) ;; Installation: ;; Save this file as quail/u8tex.el (the "quail" may be your ;; emacs/20.*/leim/quail or a directory on your load-path), byte ;; compile it and put a record like this: ;; ;; (register-input-method ;; "u8tex" "utf-8" 'quail-use-package ;; "τεχ" "Unicode input using (Euro)TeX names" ;; "quail/u8tex") ;; ;; into emacs/20.*/leim/leim-list.el (probably there exists a more ;; civilized way to extend leim-list?). Then (after reloading Mule) ;; you can switch to u8tex in the usual way (`C-x C-m C-\ u8tex'; the ;; first u... is sufficient for completion in my environment). ;;; Changes in v. 1.2: ;; 1. Documentation (reference to Otfried's package). ;; 2. Some HTML abbreviations are adopted (/copy, /reg etc). ;; 3. Errors corrected: /permil ;; 4. More amssymb characters. ;;; Code: (require 'quail) (quail-define-package "u8tex" "utf-8" "τεχ" t "Input Unicode characters using (Euro)TeX names. Use solidus (/) instead of backslash as Mule escape. effect | prefix | examples ------------+--------+------------------- acute | /' | /'a → á /'{} → ́ grave | /` | /`a → à /`{} → ̀ circumflex | /^ | /^a → â /^{} → ̂ diæresis | /\" | /\"a → ä /\"{} → ̈ dot above | /. | /.z → ż /.I → İ macron | /= | /=a → ā /=e → ē /=H → Ħ breve, háček| /u /v | /ua → ă /vc → č cedilla | /c | /cc → ç /cs → ş ogonek | /k | /ka → ą /kE → Ę // → /; /lq → ‘; /glqq → „; /S → §; /AE → Æ; /DH → Ð; x^2 → x²; /div → ÷ etc. " nil t nil nil nil nil nil nil nil nil t) (quail-define-rules ("/`A" ?À) ("/`a" ?à) ("/`E" ?È) ("/`e" ?è) ("/`I" ?Ì) ("/`i" ?ì) ("/`O" ?Ò) ("/`o" ?ò) ("/`U" ?Ù) ("/`u" ?ù) ("/'A" ?Á) ("/'a" ?á) ("/'C" ?Ć) ("/'c" ?ć) ("/'E" ?É) ("/'e" ?é) ("/'I" ?Í) ("/'i" ?í) ("/'N" ?Ń) ("/'n" ?ń) ("/'L" ?Ĺ) ("/'l" ?ĺ) ("/'O" ?Ó) ("/'o" ?ó) ("/'R" ?Ŕ) ("/'r" ?ŕ) ("/'S" ?Ś) ("/'s" ?ś) ("/'U" ?Ú) ("/'u" ?ú) ("/'Y" ?Ý) ("/'y" ?ý) ("/'Z" ?Ź) ("/'z" ?ź) ("/^A" ?Â) ("/^a" ?â) ("/^C" ?Ĉ) ("/^c" ?ĉ) ("/^E" ?Ê) ("/^e" ?ê) ("/^G" ?Ĝ) ("/^g" ?ĝ) ("/^H" ?Ĥ) ("/^h" ?ĥ) ("/^I" ?Î) ("/^i" ?î) ("/^J" ?Ĵ) ("/^j" ?ĵ) ("/^O" ?Ô) ("/^o" ?ô) ("/^S" ?Ŝ) ("/^s" ?ŝ) ("/^U" ?Û) ("/^u" ?û) ("/^W" ?Ŵ) ("/^w" ?ŵ) ("/^Y" ?Ŷ) ("/^y" ?ŷ) ("/~A" ?Ã) ("/~a" ?ã) ("/~I" ?Ĩ) ("/~i" ?ĩ) ("/~N" ?Ñ) ("/~n" ?ñ) ("/~I" ?Ĩ) ("/~i" ?ĩ) ("/~O" ?Õ) ("/~o" ?õ) ("/~U" ?Ũ) ("/~u" ?ũ) ("/rU" ?Ů) ("/ru" ?ů) ; \r[ing] like en EuroTeX ("/\"A" ?Ä) ("/\"a" ?ä) ("/\"E" ?Ë) ("/\"e" ?ë) ("/\"I" ?Ï) ("/\"i" ?ï) ("/\"O" ?Ö) ("/\"o" ?ö) ("/\"U" ?Ü) ("/\"u" ?ü) ("/\"Y" ?Ÿ) ("/\"y" ?ÿ) ("/cC" ?Ç) ("/cc" ?ç) ("/cG" ?Ģ) ("/cg" ?ģ) ; actually it must be comma ("/cN" ?Ņ) ("/cn" ?ņ) ("/cS" ?Ş) ("/cs" ?ş) ("/cT" ?Ţ) ("/ct" ?ţ) ; actually it must be comma ("/=A" ?Ā) ("/=a" ?ā) ("/=E" ?Ē) ("/=e" ?ē) ("/=I" ?Ī) ("/=i" ?ī) ("/=O" ?Ō) ("/=o" ?ō) ("/=U" ?Ū) ("/=u" ?ū) ("/=H" ?Ħ) ("/=h" ?ħ) ; abuse ("/=T" ?Ŧ) ("/=t" ?ŧ) ; abuse ("/uA" ?Ă) ("/ua" ?ă) ("/uE" ?Ĕ) ("/ue" ?ĕ) ("/uG" ?Ğ) ("/ug" ?ğ) ("/uI" ?Ĭ) ("/ui" ?ĭ) ("/uO" ?Ŏ) ("/uo" ?ŏ) ("/uU" ?Ŭ) ("/uu" ?ŭ) ("/vC" ?Č) ("/vc" ?č) ("/vD" ?Ď) ("/vd" ?ď) ("/vE" ?Ě) ("/ve" ?ě) ("/vL" ?Ľ) ("/vl" ?ľ) ("/vN" ?Ň) ("/vn" ?ň) ("/vR" ?Ř) ("/vr" ?ř) ("/vS" ?Š) ("/vs" ?š) ("/vT" ?Ť) ("/vt" ?ť) ("/vZ" ?Ž) ("/vz" ?ž) ("/.A" ?Ȧ) ("/.a" ?ȧ) ("/.C" ?Ċ) ("/.c" ?ċ) ("/.E" ?Ė) ("/.e" ?ė) ("/.G" ?Ġ) ("/.g" ?ġ) ("/.I" ?İ) ("/i" ?ı) ; also \imath ("/.O" ?Ȯ) ("/.o" ?ȯ) ("/.Z" ?Ż) ("/.z" ?ż) ("/HO" ?Ő) ("/Ho" ?ő) ("/HU" ?Ű) ("/Hu" ?ű) ("/kA" ?Ą) ("/ka" ?ą) ("/kE" ?Ę) ("/ke" ?ę) ("/kI" ?Į) ("/ki" ?į) ("/kU" ?Ų) ("/ku" ?ų) ("/AA" ?Å) ("/aa" ?å) ("/AE" ?Æ) ("/ae" ?æ) ("/DH" ?Ð) ("/dh" ?ð) ("/DJ" ?Đ) ("/dj" ?đ) ("/Y" ?IJ) ("/y" ?ij) ; Dutch ij ("/L" ?Ł) ("/l" ?ł) ("/Lp" ?Ŀ) ("/lp" ?ŀ) ; Catalan l dot, as in paraŀlel ("/NG" ?Ŋ) ("/ng" ?ŋ) ("/O" ?Ø) ("/o" ?ø) ("/OE" ?Œ) ("/oe" ?œ) ("/longs" ?ſ) ("/ss" ?ß) ("/st" ?ſt) ; or ?st ("/TH" ?Þ) ("/th" ?þ) ;; Lowercase Greek letters ;; (the missing caps like \Alpha come first) ("/Alpha" ?Α) ("/alpha" ?α) ("/Beta" ?Β) ("/beta" ?β) ("/gamma" ?γ) ("/Gamma" ?Γ) ("/delta" ?δ) ("/Delta" ?Δ) ("/Epsilon" ?Ε) ("/epsilon" ?ε) ("/Zeta" ?Ζ) ("/zeta" ?ζ) ("/Eta" ?Η) ("/eta" ?η) ("/theta" ?θ) ("/vartheta" ?ϑ) ("/Theta" ?Θ) ("/Iota" ?Ι) ("/iota" ?ι) ("/Kappa" ?Κ) ("/kappa" ?κ) ("/lambda" ?λ) ("/Lambda" ?Λ) ("/Mu" ?Μ) ("/mu" ?μ) ("/Nu" ?Ν) ("/nu" ?ν) ("/Omicron" ?Ο) ("/omicron" ?ο) ("/xi" ?ξ) ("/Xi" ?Ξ) ("/pi" ?π) ("/varpi" ?ϖ) ("/Pi" ?Π) ("/Rho" ?Ρ) ("/rho" ?ρ) ("/varrho" ?ϱ) ("/sigma" ?σ) ("/varsigma" ?ς) ("/Sigma" ?Σ) ("/Tau" ?Τ) ("/tau" ?τ) ("/upsilon" ?υ) ("/Upsilon" ?Υ) ("/phi" ?ϕ) ("/varphi" ?φ) ("/Phi" ?Φ) ("/Chi" ?Χ) ("/chi" ?χ) ("/psi" ?ψ) ("/Psi" ?Ψ) ("/omega" ?ω) ("/Omega" ?Ω) ;; Miscellaneous symbols ("/aleph" ?ℵ) ("/beth" ?ℶ) ("/gimel" ?ℷ) ("/daleth" ?ℸ) ("/hbar" ?ℏ) ("/imath" ?ı) ("/ell" ?ℓ) ("/wp" ?℘) ("/Re" ?ℜ) ("/Im" ?ℑ) ("/partial" ?∂) ("/infty" ?∞) ("/prime" ?′) ("/emptyset" ?∅) ("/nabla" ?∇) ("/surd" ?√) ("/top" ?⊤) ("/bot" ?⊥) ("/|" ?∥) ("/angle" ?∠) ("/triangle" ?△) ("/backslash" ?\\) ("//" ?/) ; special !! ("/forall" ?∀) ("/exists" ?∃) ("/neg" ?¬) ("/flat" ?♭) ("/natural" ?♮) ("/sharp" ?♯) ("/clubsuit" ?♣) ("/diamondsuit" ?♢) ("/heartsuit" ?♡) ("/spadesuit" ?♠) ("/mho" ?℧) ("/complement" ?∁) ("/lozenge" ?◊) ; amssymb ("/square" ?□) ("/blacksquare" ?■) ; amssymb ("/barwedge" ?⊼) ("/veebar" ?⊻) ; amssymb ;; “Large” operators ("/sum" ?∑) ("/prod" ?∏) ("/coprod" ?∐) ("/int" ?∫) ("/oint" ?∮) ("/bigcap" ?⋂) ("/bigcup" ?⋃) ("/bigvee" ?⋁) ("/bigwedge" ?⋀) ;; Binary operations ("/pm" ?±) ("/mp" ?∓) ("/setminus" ?∖) ("/cdot" ?⋅) ("/times" ?×) ("/ast" ?∗) ("/star" ?⋆) ("/diamond" ?⋄) ("/circ" ?∘) ("/bullet" ?∙) ("/div" ?÷) ("/cap" ?∩) ("/cup" ?∪) ("/uplus" ?⊎) ("/sqcap" ?⊓) ("/sqcup" ?⊔) ("/triangleleft" ?◁) ("/triangleright" ?▷) ("/wr" ?≀) ("/bigcirc" ?◯) ("/bigtriangleup" ?△) ("/bigtriangledown" ?▽) ("/vee" ?∨) ("/wedge" ?∧) ("/oplus" ?⊕) ("/ominus" ?⊖) ("/otimes" ?⊗) ("/oslash" ?⊘) ("/odot" ?⊙) ("/dagger" ?†) ("/ddagger" ?‡) ("/amalg" ?∐) ;; Relations ("/leq" ?≤) ("/prec" ?≺) ("/preceq" ?≼) ("/ll" ?≪) ("/subset" ?⊂) ("/subseteq" ?⊆) ("/sqsubseteq" ?⊑) ("/in" ?∈) ("/vdash" ?⊢) ("/smile" ?⌣) ("/frown" ?⌢) ("/geq" ?≥) ("/succ" ?≻) ("/succeq" ?≽) ("/gg" ?≫) ("/supset" ?⊃) ("/supseteq" ?⊇) ("/sqsupseteq" ?⊒) ("/ni" ?∋) ("/dashv" ?⊣) ("/mid" ?∣) ("/parallel" ?∥) ("/equiv" ?≡) ("/sim" ?∼) ("/simeq" ?≃) ("/asymp" ?≍) ("/approx" ?≈) ("/cong" ?≅) ("/bowtie" ?⋈) ("/propto" ?∝) ("/models" ?⊨) ("/doteq" ?≐) ("/perp" ?⊥) ;; Negated relations ("/not<" ?≮) ("/not/leq" ?≰) ("/not/prec" ?⊀) ("/not/preceq" ?⋠) ("/not/subset" ?⊄) ("/not/subseteq" ?⊈) ("/not/sqsubseteq" ?⋢) ("/not>" ?≯) ("/not/geq" ?≱) ("/not/succ" ?⊁) ("/not/succeq" ?⋡) ("/not/supset" ?⊅) ("/not/supseteq" ?⊉) ("/not/sqsupseteq" ?⋣) ("/not=" ?≠) ("/not/equiv" ?≢) ("/not/sim" ?≁) ("/not/simeq" ?≄) ("/not/approx" ?≉) ("/not/cong" ?≇) ("/not/asymp" ?≭) ;; Arrows ("/leftarrow" ?←) ("/Leftarrow" ?⇐) ("/rightarrow" ?→) ("/Rightarrow" ?⇒) ("/leftrightarrow" ?↔) ("/Leftrightarrow" ?⇔) ("/mapsto" ?↦) ("/hookleftarrow" ?↩) ("/leftharpoonup" ?↼) ("/leftharpoondown" ?↽) ("/rightleftharpoons" ?⇌) ("/hookrightarrow" ?↪) ("/rightharpoonup" ?⇀) ("/rightharpoondown" ?⇁) ("/searrow" ?↘) ("/swarrow" ?↙) ("/nwarrow" ?↖) ("/uparrow" ?↑) ("/Uparrow" ?⇑) ("/downarrow" ?↓) ("/Downarrow" ?⇓) ("/updownarrow" ?↕) ("/Updownarrow" ?⇕) ("/nearrow" ?↗) ;; Openings ;; Closings ("/lfloor" ?⌊) ("/rfloor" ?⌋) ("/langle" ?〈) ("/rangle" ?〉) ("/lceil" ?⌈) ("/rceil" ?⌉) ;; Alternate names ("/ne" ?≠) ("/neq" ?≠) ("/le" ?≤) ("/ge" ?≥) ("/to" ?→) ("/gets" ?←) ("/owns" ?∋) ("/land" ?∧) ("/lor" ?∨) ("/lnot" ?¬) ("/vert" ?∣) ("/Vert" ?∥) ;; Non-math symbols ("/S" ?§) ("/P" ?¶) ("/dag" ?†) ("/ddag" ?‡) ("/brokenbar" ?¦) ("/brvbar" ?¦) ; like in HTML ("/reg" ?®) ; like in HTML, unlike TeX's /registered ("/trade" ?™) ; like in HTML ("/frownie" ?☹) ("/smiley" ?☺) ("/blacksmiley" ?☻) ;; Typographic symbols and ligatures ("''" ?”) ("``" ?“) ("/lq" ?‘) ("/rq" ?’) ("/flqq" ?«) ("/frqq" ?») ; French double quotes ("/flq" ?‹) ("/frq" ?›) ; French double quotes ("/glqq" ?„) ("/grqq" ?‟) ; German double quotes ("/glq" ?‚) ("/grq" ?‛) ; German single quotes ("/dots" ?…) ("/-" ?‐) ; 2010 (HYPHEN) ("/--" ?–) ; 2013 (EN DASH) ("/---" ?—) ; 2014 (EM DASH) ("/minus" ?−) ; 2212 (MINUS SIGN) ("/nbsp" ? ) ; A0 (NO-BREAK SPACE), like in HTML ; ("/thinspace" ? ) ; ("/," ? ) ("/ff" ?ff) ("/fi" ?fi) ("/fl" ?fl) ("/ffi" ?ffi) ("/ffl" ?ffl) ("/!" ?¡) ("/?" ?¿); as in EuroTeX ("/copy" ?©) ; like in HTML, unlike TeX's \copyright ("/permil" ?‰) ; HTML (= PER MILLE SIGN) and wasysym ("/perthousand" ?‰); \textperthousand ("/micro" ?µ) ; different from GREEK SMALL LETTER /mu ("/deg" ?°) ; like in HTML, unlike TeX's \textdegree ("/1/4" ?¼) ; \textonequarter ("/1/2" ?½) ; \textonehalf ("/3/4" ?¾) ; \textthreequarters ;; Combining characters ("/'{}" ?́) ("/`{}" ?̀) ("/^{}" ?̂) ("/\"{}" ?̈) ("/~{}" ?̃) ("/={}" ?¯) ; or else COMBINING MACRON = ("/={}" ?̄) ? ("/.{}" ?̇) ("/u{}" ?̆) ("/v{}" ?̌) ("/H{}" ?̋) ("/t{}" ?͡) ("/c{}" ?̧) ("/d{}" ?̣) ("/b{}" ?̱) ;; Subscripts ("_0" ?₀) ("_1" ?₁) ("_2" ?₂) ("_3" ?₃) ("_4" ?₄) ("_5" ?₅) ("_6" ?₆) ("_7" ?₇) ("_8" ?₈) ("_9" ?₉) ("_+" ?₊) ("_-" ?₋) ("_=" ?₌) ("_(" ?₍) ("_)" ?₎) ;; Superscripts ("^0" ?⁰) ("^1" ?¹) ("^2" ?²) ("^3" ?³) ("^4" ?⁴) ("^5" ?⁵) ("^6" ?⁶) ("^7" ?⁷) ("^8" ?⁸) ("^9" ?⁹) ("^+" ?⁺) ("^-" ?⁻) ("^=" ?⁼) ("^(" ?⁽) ("^)" ?⁾) ("^a" ?ª) ("^n" ?ⁿ) ("^o" ?º) ;; Currency signs ("/cent" ?¢) ; after HTML and wasy ("/pound" ?£) ; after HTML ("/curren" ?¤) ; like in HTML, cf \textcurrency ("/euro" ?€) ; \texteuro ("/yen" ?¥) ; \textyen ;; \mathbb ("/bbC" ?ℂ) ("/bbH" ?ℍ) ("/bbN" ?ℕ) ("/bbP" ?ℙ) ("/bbQ" ?ℚ) ("/bbR" ?ℝ) ("/bbZ" ?ℤ) ;; IPA (there is a dedicated MULE method!) ("/turna" ?ɐ) ("/scripta" ?ɑ) ("/turnscripta" ?ɒ) ("/turnv" ?ʌ) ("/dezh" ?ʤ) ("/schwa" ?ə) ("/inve" ?ə) ("/schwahook" ?ɚ) ("/scriptg" ?ɡ) ("/turnh" ?ɥ) ("/openo" ?ɔ) ("/scr" ?ʀ) ("/invscr" ?ʁ) ("/tesh" ?ʧ) ("/upsilon" ?ʊ) ("/turnw" ?ʍ) ("/turny" ?ʎ) ("/esh" ?ʃ) ("/ezh" ?ʒ) ("/long" ?ː) ("/stress" ?ˈ) ; primary stress ("/secstress" ?ˌ) ; secondary stress ; Ancient Cyrillic (after x2enc): ("/FITA" ?Ѳ) ("/fita" ?ѳ) ("/YAT" ?Ѣ) ("/yat" ?ѣ) ("/BYUS" ?Ѫ) ("/byus" ?ѫ) ("/LYUS" ?Ѧ) ("/lyus" ?ѧ) ("/CYREPS" ?Є) ("/cyreps" ?є) ("/IE" ?Ѥ) ("/ie" ?ѥ) ("/`I" ?Ѝ) ("/`i" ?ѝ) ("/OT" ?Ѿ) ("/ot" ?ѿ) ("/UK" ?Ѹ) ("/uk" ?ѹ) ("/IZH" ?Ѵ) ("/izh" ?ѵ) ("/\"IZH" ?Ѷ) ("/\"izh" ?ѷ) ) ;;; u8tex.el ends here