# LaTeX::Encode character encoding table package LaTeX::Encode::EncodingTable; use strict; use warnings; use vars qw(@EXPORT %latex_encoding $encoded_char_re); use base 'Exporter'; @EXPORT = qw(%latex_encoding $encoded_char_re); %latex_encoding = ( chr(0x23) => '\\#', # # - # chr(0x24) => '\\$', # $ - $ chr(0x25) => '\\%', # % - % chr(0x26) => '\\&', # & - & chr(0x5c) => '\\textbackslash', # \ - \ chr(0x5e) => '\\^{ }', # ^ - ^ chr(0x5f) => '\\_', # _ - _ chr(0x7b) => '\\{', # { - { chr(0x7d) => '\\}', # } - } chr(0x7e) => '\\texttildelow', # ~ - ~ chr(0xa0) => '~', #   -   chr(0xa1) => '\\textexclamdown', # ¡ - ¡ chr(0xa2) => '\\textcent', # ¢ - ¢ chr(0xa3) => '\\textsterling', # £ - £ chr(0xa4) => '\\textcurrency', # ¤ - ¤ chr(0xa5) => '\\textyen', # ¥ - ¥ chr(0xa6) => '\\textbrokenbar', # ¦ - ¦ chr(0xa7) => '\\textsection', # § - § chr(0xa8) => '\\textasciidieresis', # ¨ - ¨ chr(0xa9) => '\\textcopyright', # © - © chr(0xaa) => '\\textordfeminine', # ª - ª chr(0xab) => '\\guillemotleft', # « - « chr(0xac) => '\\textlnot', # ¬ - ¬ chr(0xad) => '\\-', # ­ - ­ chr(0xae) => '\\textregistered', # ® - ® chr(0xaf) => '\\textasciimacron', # ¯ - ¯ chr(0xb0) => '\\textdegree', # ° - ° chr(0xb1) => '\\textpm', # ± - ± chr(0xb2) => '\\texttwosuperior', # ² - ² chr(0xb3) => '\\textthreesuperior', # ³ - ³ chr(0xb4) => '\\textasciiacute', # ´ - ´ chr(0xb5) => '\\textmu', # µ - µ chr(0xb6) => '\\textparagraph', # ¶ - ¶ chr(0xb7) => '\\textperiodcentered', # · - · chr(0xb8) => '\\c{}', # ¸ - ¸ chr(0xb9) => '\\textonesuperior', # ¹ - ¹ chr(0xba) => '\\textordmasculine', # º - º chr(0xbb) => '\\guillemotright', # » - » chr(0xbc) => '\\textonequarter', # ¼ - ¼ chr(0xbd) => '\\textonehalf', # ½ - ½ chr(0xbe) => '\\textthreequarters', # ¾ - ¾ chr(0xbf) => '\\textquestiondown', # ¿ - ¿ chr(0xc0) => '\\`A', # À - À chr(0xc1) => '\\\'A', # Á - Á chr(0xc2) => '\\^A', #  -  chr(0xc3) => '\\~A', # à - à chr(0xc4) => '\\"A', # Ä - Ä chr(0xc5) => '\\AA', # Å - Å chr(0xc6) => '\\AE', # Æ - Æ chr(0xc7) => '\\c{C}', # Ç - Ç chr(0xc8) => '\\`E', # È - È chr(0xc9) => '\\\'E', # É - É chr(0xca) => '\\^E', # Ê - Ê chr(0xcb) => '\\"E', # Ë - Ë chr(0xcc) => '\\`I', # Ì - Ì chr(0xcd) => '\\\'I', # Í - Í chr(0xce) => '\\^I', # Î - Î chr(0xcf) => '\\"I', # Ï - Ï chr(0xd0) => '\\DH', # Ð - Ð chr(0xd1) => '\\~N', # Ñ - Ñ chr(0xd2) => '\\`O', # Ò - Ò chr(0xd3) => '\\\'O', # Ó - Ó chr(0xd4) => '\\^O', # Ô - Ô chr(0xd5) => '\\~O', # Õ - Õ chr(0xd6) => '\\"O', # Ö - Ö chr(0xd7) => '\\texttimes', # × - × chr(0xd8) => '\\O', # Ø - Ø chr(0xd9) => '\\`U', # Ù - Ù chr(0xda) => '\\\'U', # Ú - Ú chr(0xdb) => '\\^U', # Û - Û chr(0xdc) => '\\"U', # Ü - Ü chr(0xdd) => '\\\'Y', # Ý - Ý chr(0xde) => '\\TH', # Þ - Þ chr(0xdf) => '\\ss', # ß - ß chr(0xe0) => '\\`a', # à - à chr(0xe1) => '\\\'a', # á - á chr(0xe2) => '\\^a', # â - â chr(0xe3) => '\\~a', # ã - ã chr(0xe4) => '\\"a', # ä - ä chr(0xe5) => '\\aa', # å - å chr(0xe6) => '\\ae', # æ - æ chr(0xe7) => '\\c{c}', # ç - ç chr(0xe8) => '\\`e', # è - è chr(0xe9) => '\\\'e', # é - é chr(0xea) => '\\^e', # ê - ê chr(0xeb) => '\\"e', # ë - ë chr(0xec) => '\\`i', # ì - ì chr(0xed) => '\\\'i', # í - í chr(0xee) => '\\^i', # î - î chr(0xef) => '\\"i', # ï - ï chr(0xf0) => '\\dh', # ð - ð chr(0xf1) => '\\~n', # ñ - ñ chr(0xf2) => '\\`o', # ò - ò chr(0xf3) => '\\\'o', # ó - ó chr(0xf4) => '\\^o', # ô - ô chr(0xf5) => '\\~o', # õ - õ chr(0xf6) => '\\"o', # ö - ö chr(0xf7) => '\\textdiv', # ÷ - ÷ chr(0xf8) => '\\o', # ø - ø chr(0xf9) => '\\`u', # ù - ù chr(0xfa) => '\\\'u', # ú - ú chr(0xfb) => '\\^u', # û - û chr(0xfc) => '\\"u', # ü - ü chr(0xfd) => '\\\'y', # ý - ý chr(0xfe) => '\\th', # þ - þ chr(0xff) => '\\"y', # ÿ - ÿ chr(0x152) => '\\OE', # - Œ chr(0x153) => '\\oe', # - œ chr(0x160) => '\\v{S}', # - Š chr(0x161) => '\\v{s}', # - š chr(0x178) => '\\"Y', # - Ÿ chr(0x192) => '\\textflorin', # - ƒ chr(0x2c6) => '\\textasciicircum', # - ˆ chr(0x2dc) => '\\textasciitilde', # - ˜ chr(0x391) => '$\\mathrm{A}$', # - Α chr(0x392) => '$\\mathrm{B}$', # - Β chr(0x393) => '$\\Gamma$', # - Γ chr(0x394) => '$\\Delta$', # - Δ chr(0x395) => '$\\mathrm{E}$', # - Ε chr(0x396) => '$\\mathrm{Z}$', # - Ζ chr(0x397) => '$\\mathrm{H}$', # - Η chr(0x398) => '$\\Theta$', # - Θ chr(0x399) => '$\\mathrm{I}$', # - Ι chr(0x39a) => '$\\mathrm{K}$', # - Κ chr(0x39b) => '$\\Lambda$', # - Λ chr(0x39c) => '$\\mathrm{M}$', # - Μ chr(0x39d) => '$\\mathrm{N}$', # - Ν chr(0x39e) => '$\\Xi$', # - Ξ chr(0x39f) => '$\\mathrm{O}$', # - Ο chr(0x3a0) => '$\\Pi$', # - Π chr(0x3a1) => '$\\mathrm{R}$', # - Ρ chr(0x3a3) => '$\\Sigma$', # - Σ chr(0x3a4) => '$\\mathrm{T}$', # - Τ chr(0x3a5) => '$\\Upsilon$', # - Υ chr(0x3a6) => '$\\Phi$', # - Φ chr(0x3a7) => '$\\mathrm{X}$', # - Χ chr(0x3a8) => '$\\Psi$', # - Ψ chr(0x3a9) => '$\\Omega$', # - Ω chr(0x3b1) => '$\\alpha$', # - α chr(0x3b2) => '$\\beta$', # - β chr(0x3b3) => '$\\gamma$', # - γ chr(0x3b4) => '$\\delta$', # - δ chr(0x3b5) => '$\\epsilon$', # - ε chr(0x3b6) => '$\\zeta$', # - ζ chr(0x3b7) => '$\\eta$', # - η chr(0x3b8) => '$\\theta$', # - θ chr(0x3b9) => '$\\iota$', # - ι chr(0x3ba) => '$\\kappa$', # - κ chr(0x3bb) => '$\\lambda$', # - λ chr(0x3bc) => '$\\mu$', # - μ chr(0x3bd) => '$\\nu$', # - ν chr(0x3be) => '$\\xi$', # - ξ chr(0x3bf) => '$o$', # - ο chr(0x3c0) => '$\\pi$', # - π chr(0x3c1) => '$\\rho$', # - ρ chr(0x3c3) => '$\\sigma$', # - σ chr(0x3c4) => '$\\tau$', # - τ chr(0x3c5) => '$\\upsilon$', # - υ chr(0x3c6) => '$\\phi$', # - φ chr(0x3c7) => '$\\chi$', # - χ chr(0x3c8) => '$\\psi$', # - ψ chr(0x3c9) => '$\\omega$', # - ω chr(0x2002) => '\\phantom{n}', # -   chr(0x2003) => '\\hspace{1em}', # -   chr(0x2009) => '\\,', # -   chr(0x200c) => '', # - ‌ chr(0x2013) => '--', # - – chr(0x2014) => '---', # - — chr(0x2018) => '\\textquoteleft', # - ‘ chr(0x2019) => '\\textquoteright', # - ’ chr(0x201a) => '\\quotesinglbase', # - ‚ chr(0x201c) => '\\textquotedblleft', # - “ chr(0x201d) => '\\textquotedblright', # - ” chr(0x201e) => '\\quotedblbase', # - „ chr(0x2020) => '\\textdagger', # - † chr(0x2021) => '\\textdaggerdbl', # - ‡ chr(0x2022) => '\\textbullet', # - • chr(0x2026) => '\\textellipsis', # - … chr(0x2030) => '\\textperthousand', # - ‰ chr(0x2032) => '\\textquotesingle', # - ′ chr(0x2033) => '\\textquotedbl', # - ″ chr(0x2039) => '\\guilsinglleft', # - ‹ chr(0x203a) => '\\guilsinglright', # - › chr(0x203e) => '\\textasciimacron', # - ‾ chr(0x2044) => '\\textfractionsolidus', # - ⁄ chr(0x20ac) => '\\texteuro', # - € chr(0x2111) => '$\\Re$', # - ℑ chr(0x2118) => '$\\wp$', # - ℘ chr(0x211c) => '$\\Im$', # - ℜ chr(0x2122) => '\\texttrademark', # - ™ chr(0x2190) => '\\textleftarrow', # - ← chr(0x2191) => '\\textuparrow', # - ↑ chr(0x2192) => '\\textrightarrow', # - → chr(0x2193) => '\\textdownarrow', # - ↓ chr(0x2194) => '$\\leftrightarrow$', # - ↔ chr(0x21d0) => '$\\Leftarrow$', # - ⇐ chr(0x21d1) => '$\\Uparrow$', # - ⇑ chr(0x21d2) => '$\\Rightarrow$', # - ⇒ chr(0x21d3) => '$\\Downarrow$', # - ⇓ chr(0x21d4) => '$\\Leftrightarrow$', # - ⇔ chr(0x2200) => '$\\forall$', # - ∀ chr(0x2202) => '$\\partial$', # - ∂ chr(0x2203) => '$\\exists$', # - ∃ chr(0x2205) => '$\\emptyset$', # - ∅ chr(0x2207) => '$\\nabla$', # - ∇ chr(0x2208) => '$\\in$', # - ∈ chr(0x2209) => '$\\notin$', # - ∉ chr(0x220b) => '$\\ni$', # - ∋ chr(0x220f) => '$\\prod$', # - ∏ chr(0x2211) => '$\\sum$', # - ∑ chr(0x2212) => '$-$', # - − chr(0x2217) => '$\\ast$', # - ∗ chr(0x221a) => '$\\surd$', # - √ chr(0x221d) => '$\\propto$', # - ∝ chr(0x221e) => '$\\infty$', # - ∞ chr(0x2220) => '$\\angle$', # - ∠ chr(0x2227) => '$\\wedge$', # - ∧ chr(0x2228) => '$\\vee$', # - ∨ chr(0x2229) => '$\\cap$', # - ∩ chr(0x222a) => '$\\cup$', # - ∪ chr(0x222b) => '$\\int$', # - ∫ # chr(0x2234) => '$\\therefore$', # - ∴ chr(0x223c) => '$\\sim$', # - ∼ chr(0x2245) => '$\\cong$', # - ≅ chr(0x2248) => '$\\asymp$', # - ≈ chr(0x2260) => '$\\neq$', # - ≠ chr(0x2261) => '$\\equiv$', # - ≡ chr(0x2264) => '$\\leq$', # - ≤ chr(0x2265) => '$\\geq$', # - ≥ chr(0x2282) => '$\\subset$', # - ⊂ chr(0x2283) => '$\\supset$', # - ⊃ chr(0x2284) => '$\\not\\subset$', # - ⊄ chr(0x2286) => '$\\subseteq$', # - ⊆ chr(0x2287) => '$\\supseteq$', # - ⊇ chr(0x2295) => '$\\oplus$', # - ⊕ chr(0x2297) => '$\\otimes$', # - ⊗ chr(0x22a5) => '$\\perp$', # - ⊥ chr(0x22c5) => '$\\cdot$', # - ⋅ chr(0x2308) => '$\\lceil$', # - ⌈ chr(0x2309) => '$\\rceil$', # - ⌉ chr(0x230a) => '$\\lfloor$', # - ⌊ chr(0x230b) => '$\\rfloor$', # - ⌋ chr(0x2329) => '$\\langle$', # - ⟨ chr(0x232a) => '$\\rangle$', # - ⟩ # chr(0x25ca) => '$\\lozenge$', # - ◊ chr(0x2660) => '$\\spadesuit$', # - ♠ chr(0x2663) => '$\\clubsuit$', # - ♣ chr(0x2665) => '$\\heartsuit$', # - ♥ chr(0x2666) => '$\\diamondsuit$', # - ♦ ); $encoded_char_re = join('', sort keys %latex_encoding); $encoded_char_re =~ s/\\/\\\\/; $encoded_char_re = qr{ [$encoded_char_re] }x; 1;