;; utf8math.el -*- coding: utf-8 -*- ;; Copyright (C) 2004 Wlodek Bzyl ;; This file aims to provide an intuitive input method `utf8math' ;; to input UTF-8 encoded math symbols defined in plain TeX, LaTeX ;; and other TeX macro files. To input `��' it suffices to write ;; `/alpha', `���' -- /Leftrightarrow, etc. ;; The code below was taken from `u8tex.el' by Sergei Pokrovsky ;; (to be found on any CTAN server: support/emacs-modes/u8tex.el). ;; It differs from the orignal code. The stuff not relevant ;; to math was removed and several wrong UTF-8 codes were corrected. ;; Author: W{\l}odek Bzyl ;; Maintainer: matwb@univ.gda.pl ;; Keywords: unicode, math, mule, input method, EncTeX ;; 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. ;; Installation ;; ;; All you need to do is copy this file to any directory on your ;; load-path (`C-h v load-path' shows all directories on the load-path) ;; and add the following code: ;; ;; (register-input-method ;; "utf8math" "utf-8" 'quail-use-package ;; ""Unicode input using TeX macro names" ;; "utf8math") ;; ;; to one of the Emacs initialization files, for example to `.emacs' ;; or to `.../emacs/20.*/leim/leim-list.el'. ;; After that you can switch to the utf8math input method ;; in the usual way `C-x C-m C-\ utf8math' or by choosing input ;; method from the menu: ;; Options -> Mule -> Select Input Method utf8math ;;; Code: (require 'quail) (quail-define-package "utf8math" "utf-8" "������" t "Input Unicode characters using TeX macro names. Use slash (/) instead of backslash as Mule escape: to get `alpha' write /alpha, to get `integral' write `/int' etc. " nil t nil nil nil nil nil nil nil nil t) (quail-define-rules ;; Typographic symbols ("''" ?���) ("``" ?���) ("/lq" ?���) ("/rq" ?���) ("/flqq" ?��) ("/frqq" ?��) ; French double quotes ("/flq" ?���) ("/frq" ?���) ; French double quotes ("/glqq" ?���) ("/grqq" ?���) ; German double quotes ("/glq" ?���) ("/grq" ?���) ; German single quotes ("/dots" ?���) ("/plqq" ?���) ("/plrq" ?���) ; Polish double quotes ("/--" ?���) ; 2013 (EN DASH) ("/---" ?���) ; 2014 (EM DASH) ("/cent" ?��) ; after HTML and wasy ("/pound" ?��) ; after HTML ("/euro" ?���) ; \texteuro ("/yen" ?��) ; \textyen ;; 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" ?���) ; changed on 10.VII.2004 ("/triangleright" ?���) ; ditto ("/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" ?���) ; changed on 10 July 2004 ("/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" ?���) ; changed on 10 July 2004 ("/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" ?���) ;; Combining characters ("/'{}" ?��) ("/`{}" ?��) ("/^{}" ?��) ("/\"{}" ?��) ("/~{}" ?��) ("/={}" ?��) ; or else COMBINING MACRON = ("/={}" ?��) ? ("/.{}" ?��) ("/u{}" ?��) ("/v{}" ?��) ("/H{}" ?��) ("/t{}" ?��) ("/c{}" ?��) ("/d{}" ?��) ("/b{}" ?��) ;; \mathbb ("/bbC" ?���) ("/bbH" ?���) ("/bbN" ?���) ("/bbP" ?���) ("/bbQ" ?���) ("/bbR" ?���) ("/bbZ" ?���) ) ;;; utf8math.el ends here