Files
oddmuse/modules/tex.pl

171 lines
12 KiB
Perl
Raw Normal View History

2006-09-14 00:05:21 +00:00
# Copyright (C) 2006 Alex Schroeder <alex@emacswiki.org>
#
# This program 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 of the License, or
# (at your option) any later version.
#
# This program 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 this program; if not, write to the
# Free Software Foundation, Inc.
# 59 Temple Place, Suite 330
# Boston, MA 02111-1307 USA
2006-09-14 17:47:03 +00:00
$ModulesDescription .= '<p>$Id: tex.pl,v 1.2 2006/09/14 17:47:03 as Exp $</p>';
2006-09-14 00:05:21 +00:00
use vars qw($TeXInit);
my %h = qw( !` ¡ {\pounds} £ \pounds £ {\S} § \S § \"{} ¨ {\copyright} ©
\copyright © $^a$ ª \={} ¯ $\pm$ ± \pm ± $^2$ ² $^3$ ³ \'{} ´ {\P}
\P $\cdot$ · \cdot · \c{} ¸ $^1$ ¹ $^o$ º ?` ¿ \`{A} À \`A À \'{A} Á
\'A Á \^{A} Â \^A Â \~{A} Ã \~A Ã \"{A} Ä \"A Ä \k{A} Ą {\AA} Å \AA Å
{\AE} Æ \AE Æ \c{C} Ç \cC Ç \`{E} È \`E È \'{E} É \'E É \^{E} Ê \^E Ê
\"{E} Ë \"E Ë \k{E} Ę \`{I} Ì \`I Ì \'{I} Í \'I Í \^{I} Î \^I Î \"{I}
Ï \"I Ï \k{I} Į \~{N} Ñ \~N Ñ \`{O} Ò \`O Ò \'{O} Ó \'O Ó \^{O} Ô \^O
Ô \~{O} Õ \~O Õ \"{O} Ö \"O Ö \k{O} Ǫ $\times$ × \times × {\O} Ø \O Ø
\`{U} Ù \`U Ù \'{U} Ú \'U Ú \^{U} Û \^U Û \"{U} Ü \"U Ü \k{U} Ų \'{Y}
Ý \'Y Ý {\ss} ß \ss ß \`{a} à \`a à \'{a} á \'a á \^{a} â \^a â \~{a}
ã \~a ã \"{a} ä \"a ä \k{a} ą {\aa} å \aa å {\ae} æ \ae æ \c{c} ç \cc
ç \`{e} è \`e è \'{e} é \'e é \^{e} ê \^e ê \"{e} ë \"e ë \k{e} ę
\`{\i} ì \`i ì \'{\i} í \'i í \^{\i} î \^i î \"{\i} ï \"i ï \k{i} į
\~{n} ñ \~n ñ \`{o} ò \`o ò \'{o} ó \'o ó \^{o} ô \^o ô \~{o} õ \~o õ
\"{o} ö \"o ö \k{o} ǫ $\div$ ÷ \div ÷ {\o} ø \o ø \`{u} ù \`u ù \'{u}
ú \'u ú \^{u} û \^u û \"{u} ü \"u ü \k{u} ų \'{y} ý \'y ý \"{y} ÿ \"y
ÿ \={A} Ā \=A Ā \={a} ā \=a ā \u{A} Ă \uA Ă \u{a} ă \ua ă \'{C} Ć \'C
Ć \'{c} ć \'c ć \^{C} Ĉ \^C Ĉ \^{c} ĉ \^c ĉ \.{C} Ċ \.C Ċ \.{c} ċ \.c
ċ \v{C} Č \vC Č \v{c} č \vc č \v{D} Ď \vD Ď \v{d} ď \vd ď \={E} Ē \=E
Ē \={e} ē \=e ē \u{E} Ĕ \uE Ĕ \u{e} ĕ \ue ĕ \.{E} Ė \.E Ė \e{e} ė \ee
ė \v{E} Ě \vE Ě \v{e} ě \ve ě \^{G} Ĝ \^G Ĝ \^{g} ĝ \^g ĝ \u{G} Ğ \uG
Ğ \u{g} ğ \ug ğ \.{G} Ġ \.G Ġ \.{g} ġ \.g ġ \c{G} Ģ \cG Ģ \c{g} ģ \cg
ģ \^{H} Ĥ \^H Ĥ \^{h} ĥ \^h ĥ \~{I} Ĩ \~I Ĩ \~{\i} ĩ \~i ĩ \={I} Ī \=I
Ī \={\i} ī \=i ī \u{I} Ĭ \uI Ĭ \u{\i} ĭ \ui ĭ \.{I} İ \.I İ {\i} ı \i
ı \^{J} Ĵ \^J Ĵ \^{\j} ĵ \^j ĵ \c{K} Ķ \cK Ķ \c{k} ķ \ck ķ \'{L} Ĺ \'L
Ĺ \'{l} ĺ \'l ĺ \c{L} Ļ \cL Ļ \c{l} ļ \cl ļ {\L} Ł \L Ł {\l} ł \l ł
\'{N} Ń \'N Ń \'{n} ń \'n ń \c{N} Ņ \cN Ņ \c{n} ņ \cn ņ \v{N} Ň \vN Ň
\v{n} ň \vn ň \={O} Ō \=O Ō \={o} ō \=o ō \u{O} Ŏ \uO Ŏ \u{o} ŏ \uo ŏ
\H{O} Ő \HO Ő \U{o} ő \Uo ő {\OE} Œ \OE Œ {\oe} œ \oe œ \'{R} Ŕ \'R Ŕ
\'{r} ŕ \'r ŕ \c{R} Ŗ \cR Ŗ \c{r} ŗ \cr ŗ \v{R} Ř \vR Ř \v{r} ř \vr ř
\'{S} Ś \'S Ś \'{s} ś \'s ś \^{S} Ŝ \^S Ŝ \^{s} ŝ \^s ŝ \c{S} Ş \cS Ş
\c{s} ş \cs ş \v{S} Š \vS Š \v{s} š \vs š \c{T} Ţ \cT Ţ \c{t} ţ \ct ţ
\v{T} Ť \vT Ť \v{t} ť \vt ť \~{U} Ũ \~U Ũ \~{u} ũ \~u ũ \={U} Ū \=U Ū
\={u} ū \=u ū \u{U} Ŭ \uU Ŭ \u{u} ŭ \uu ŭ \H{U} Ű \HU Ű \H{u} ű \Hu ű
\^{W} Ŵ \^W Ŵ \^{w} ŵ \^w ŵ \^{Y} Ŷ \^Y Ŷ \^{y} ŷ \^y ŷ \"{Y} Ÿ \"Y Ÿ
\'{Z} Ź \'Z Ź \'{z} ź \'z ź \.{Z} Ż \.Z Ż \.{z} ż \.z ż \v{Z} Ž \vZ Ž
\v{z} ž \vz ž \v{A} Ǎ \vA Ǎ \v{a} ǎ \va ǎ \v{I} Ǐ \vI Ǐ \v{\i} ǐ \vi ǐ
\v{O} Ǒ \vO Ǒ \v{o} ǒ \vo ǒ \v{U} Ǔ \vU Ǔ \v{u} ǔ \vu ǔ \={\AE} Ǣ
\=\AE Ǣ \={\ae} ǣ \=\ae ǣ \v{G} Ǧ \vG Ǧ \v{g} ǧ \vg ǧ \v{K} Ǩ \vK Ǩ
\v{k} k \vk k \v{\j} ǰ \vj ǰ \'{G} Ǵ \'G Ǵ \'{g} ǵ \'g ǵ \`{N} Ǹ \`N Ǹ
\`{n} ǹ \`n ǹ \'{\AE} Ǽ \'\AE Ǽ \'{\ae} ǽ \'\ae ǽ \'{\O} Ǿ \'\O Ǿ
\'{\o} ǿ \'\o ǿ \v{H} Ȟ \vH Ȟ \v{h} ȟ \vh ȟ \.{A} Ȧ \.A Ȧ \.{a} ȧ \.a
ȧ \c{E} Ȩ \cE Ȩ \c{e} ȩ \ce ȩ \.{O} Ȯ \.O Ȯ \.{o} ȯ \.o ȯ \={Y} Ȳ \=Y
Ȳ \={y} ȳ \=y ȳ \v{} ˇ \u{} ˘ \.{} ˙ \~{} ˜ \H{} ˝ \' ́ \'K \'M
\'P \'W \'k \'m ḿ \'p \'w \, \. ̇ \.B \.D \.F \.H
\.M \.N \.P \.R \.S \.T \.W \.X \.Y \.b \.d \.e
ė \.f \.h \.m \.n \.p \.r \.s \.t \.w \.x \.y \/
\: \; \= ̄ \=G \=g ^( ^) ^+ ^- ^0 ^1 ¹ ^2 ² ^3 ³
^4 ^5 ^6 ^7 ^8 ^9 ^= ^\gamma ˠ ^h ʰ ^j ʲ ^l ˡ ^n ^o º
^r ʳ ^s ˢ ^w ʷ ^x ˣ ^y ʸ ^{SM} ^{TEL} ^{TM} _( _) _+ _-
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _= \~ ̃ \~E \~V
\~Y \~e \~v \~y \" ̈ \"H \"W \"X \"h \"t \"w \"x
\^ ̂ \^Z \^z \` ̀ \`W \`Y \`w \`y \b ̱ \c ̧ \c{D}
\c{H} \c{d} \c{h} \d ̣ \d{A} \d{B} \d{D} \d{E} \d{H}
\d{I} \d{K} \d{L} \d{M} \d{N} \d{O} \d{R} \d{S} \d{T}
\d{U} \d{V} \d{W} \d{Y} \d{Z} \d{a} \d{b} \d{d}
\d{e} \d{h} \d{i} \d{k} \d{l} \d{m} \d{n} \d{o} \d{r}
\d{s} \d{t} \d{u} \d{v} ṿ \d{w} \d{y} \d{z} \rq \u ̆
\v ̌ \v{L} Ľ \v{i} ǐ \v{j} ǰ \v{l} ľ \yen ¥ \Box \Bumpeq \Cap
\Cup \Delta Δ \Diamond \Downarrow \Gamma Γ \H ̋ \H{o} ő \Im
\Join \Lambda Λ \Leftarrow \Leftrightarrow \Ll \Lleftarrow
\Longleftarrow \Longleftrightarrow \Longrightarrow \Lsh \Omega
Ω \Phi Φ \Pi Π \Psi Ψ \Re \Rightarrow \Rrightarrow \Rsh \Sigma
Σ \Subset \Supset \Theta Θ \Uparrow \Updownarrow \Upsilon Υ
\Vdash \Vert \Vvdash \Xi Ξ \aleph א \alpha α \amalg \angle
\approx \approxeq \ast \asymp \backcong \backepsilon
\backprime \backsim \backsimeq \backslash \ \barwedge \because
\beta β \beth ב \between \bigcap \bigcirc \bigcup \bigstar
\bigtriangledown \bigtriangleup \bigvee \bigwedge
\blacklozenge \blacksquare \blacktriangle \blacktriangledown
\blacktriangleleft \blacktriangleright \bot \bowtie \boxminus
\boxplus \boxtimes \bullet \bumpeq \cap \cdots
\centerdot · \checkmark \chi χ \circ \circeq \circlearrowleft
\circlearrowright \circledR ® \circledS \circledast \circledcirc
\circleddash \clubsuit \colon : \coloneq \complement \cong
\coprod \cup \curlyeqprec \curlyeqsucc \curlypreceq
\curlyvee \curlywedge \curvearrowleft \curvearrowright \dag
\dagger \daleth ד \dashv \ddag \ddagger \ddots \delta δ
\diamond \diamondsuit \digamma Ϝ \divideontimes \doteq
\doteqdot \dotplus \dotsquare \downarrow \downdownarrows
\downleftharpoon \downrightharpoon \ell \emptyset \epsilon ε
\eqcirc \eqcolon \eqslantgtr \eqslantless \equiv \eta η
\euro \exists \fallingdotseq \flat \forall \frac1 \frac12
½ \frac13 \frac14 ¼ \frac15 \frac16 \frac18 \frac23 \frac25
\frac34 ¾ \frac35 \frac38 \frac45 \frac56 \frac58 \frac78
\frown \gamma γ \ge \geq \geqq \geqslant \gets \gg
\ggg \gimel ג \gnapprox \gneq \gneqq \gnsim \gtrapprox
\gtrdot \gtreqless \gtreqqless \gtrless \gtrsim \gvertneqq
\hbar \heartsuit \hookleftarrow \hookrightarrow \iff \imath
ı \in \infty \int \intercal \iota ι \kappa κ \lambda λ \langle
\lbrace { \lbrack [ \lceil \ldots \le \leadsto \leftarrow
\leftarrowtail \leftharpoondown \leftharpoonup \leftleftarrows
\leftparengtr \leftrightarrow \leftrightarrows
\leftrightharpoons \leftrightsquigarrow \leftthreetimes \leq
\leqq \leqslant \lessapprox \lessdot \lesseqgtr \lesseqqgtr
\lessgtr \lesssim \lfloor \lhd \rhd \ll \llcorner
\lnapprox \lneq \lneqq \lnsim \longleftarrow
\longleftrightarrow \longmapsto \longrightarrow \looparrowleft
\looparrowright \lozenge \lq \lrcorner \ltimes \lvertneqq
\maltese \mapsto \measuredangle \mho \mid \models \mp
\multimap \nLeftarrow \nLeftrightarrow \nRightarrow \nVDash
\nVdash \nabla \napprox \natural \ncong \ne \nearrow
\neg ¬ \neq \nequiv \newline \nexists \ngeq \ngeqq
\ngeqslant \ngtr \ni \nleftarrow \nleftrightarrow \nleq
\nleqq \nleqslant \nless \nmid \not ̸ \notin \nparallel
\nprec \npreceq \nrightarrow \nshortmid \nshortparallel
\nsim \nsimeq \nsubset \nsubseteq \nsubseteqq \nsucc
\nsucceq \nsupset \nsupseteq \nsupseteqq \ntriangleleft
\ntrianglelefteq \ntriangleright \ntrianglerighteq \nu ν \nvDash
\nvdash \nwarrow \odot \oint \omega ω \ominus \oplus
\oslash \otimes \par \parallel \partial \perp \phi φ \pi π
\pitchfork \prec \precapprox \preceq \precnapprox \precnsim
\precsim \prime \prod \propto \psi ψ \quad \rangle
\rbrace } \rbrack ] \rceil \rfloor \rightarrow \rightarrowtail
\rightharpoondown \rightharpoonup \rightleftarrows
\rightleftharpoons \rightparengtr \rightrightarrows
\rightthreetimes \risingdotseq \rtimes \sbs \searrow
\setminus \sharp \shortmid \shortparallel \sigma σ \sim
\simeq \smallamalg \smallsetminus \smallsmile \smile
\spadesuit \sphericalangle \sqcap \sqcup \sqsubset
\sqsubseteq \sqsupset \sqsupseteq \square \squigarrowright
\star \straightphi φ \subset \subseteq \subseteqq \subsetneq
\subsetneqq \succ \succapprox \succcurlyeq \succeq
\succnapprox \succnsim \succsim \sum \supset \supseteq
\supseteqq \supsetneq \supsetneqq \surd \swarrow \tau τ
\therefore \theta θ \thickapprox \thicksim \to \top
\triangle \triangledown \triangleleft \trianglelefteq
\triangleq \triangleright \trianglerighteq \twoheadleftarrow
\twoheadrightarrow \ulcorner \uparrow \updownarrow
\upleftharpoon \uplus \uprightharpoon \upsilon υ \upuparrows
\urcorner \u{i} ĭ \vDash \varkappa ϰ \varphi ϕ \varpi ϖ \varprime
\varpropto \varrho ϱ \varsigma ς \vartheta ϑ \vartriangleleft
\vartriangleright \vdash \vdots \vee \veebar \vert | \wedge
\wp \wr \xi ξ \zeta ζ \Bbb{N} \Bbb{P} \Bbb{R} \Bbb{Z} --
--- ~ \mu μ \rho ρ \mathscr{I} \Smiley \blacksmiley
\Frowny \Letter \permil \registered ® \currency ¤ \dh ð \DH Ð
\th þ \TH Þ \micro µ \lnot ¬ \ordfeminine ª \ordmasculine º \lambdabar
ƛ \celsius \ldq \rdq \minus \defs \llbracket \rrbracket
\ldata \rdata \glq \grq \glqq \"` \grqq \"' \flq
\frq \flqq « \"< « \frqq » \"> » \- ­ \textmu µ \textfractionsolidus
\textbigcircle \textmusicalnote \textdied \textcolonmonetary
\textwon \textnaira \textpeso \textlira \textrecipe
\textinterrobang \textpertenthousand \textbaht ฿ \textnumero
\textdiscount \textestimated \textopenbullet \textlquill
\textrquill \textcircledP \textreferencemark );
2006-09-14 17:47:03 +00:00
my $re = '(' . join('|', map {quotemeta} keys %h) . ')(\s|\b)';
2006-09-14 00:05:21 +00:00
push(@MyMacros, sub {s/$re/$h{$1}/go});