[DRE-commits] [ruby-org] 253/303: Fix regexps for replacing Org-mode entities.

Jérémy Bobbio lunar at alioth.debian.org
Fri Aug 9 17:34:08 UTC 2013


This is an automated email from the git hooks/post-receive script.

lunar pushed a commit to branch master
in repository ruby-org.

commit 12a6174e73bd9a73a8196064c4b7d734adfe06bf
Author: vonavi <ivvl82 at gmail.com>
Date:   Thu Jan 31 02:29:55 2013 +0200

    Fix regexps for replacing Org-mode entities.
---
 lib/org-ruby/html_symbol_replace.rb    |  697 +++++++++++++++----------------
 lib/org-ruby/textile_symbol_replace.rb |  699 ++++++++++++++++----------------
 util/gen-special-replace.el            |   49 ++-
 3 files changed, 748 insertions(+), 697 deletions(-)

diff --git a/lib/org-ruby/html_symbol_replace.rb b/lib/org-ruby/html_symbol_replace.rb
index 3942348..3b1c58c 100644
--- a/lib/org-ruby/html_symbol_replace.rb
+++ b/lib/org-ruby/html_symbol_replace.rb
@@ -1,345 +1,362 @@
 # Autogenerated by util/gen-special-replace.el
 
 module Orgmode
-  def Orgmode.special_symbols_to_html(str)
-    str.gsub!(/\\Agrave((\{\})|(\s|$))/, "À\\3")
-    str.gsub!(/\\agrave((\{\})|(\s|$))/, "à\\3")
-    str.gsub!(/\\Aacute((\{\})|(\s|$))/, "Á\\3")
-    str.gsub!(/\\aacute((\{\})|(\s|$))/, "á\\3")
-    str.gsub!(/\\Acirc((\{\})|(\s|$))/, "Â\\3")
-    str.gsub!(/\\acirc((\{\})|(\s|$))/, "â\\3")
-    str.gsub!(/\\Atilde((\{\})|(\s|$))/, "Ã\\3")
-    str.gsub!(/\\atilde((\{\})|(\s|$))/, "ã\\3")
-    str.gsub!(/\\Auml((\{\})|(\s|$))/, "Ä\\3")
-    str.gsub!(/\\auml((\{\})|(\s|$))/, "ä\\3")
-    str.gsub!(/\\Aring((\{\})|(\s|$))/, "Å\\3")
-    str.gsub!(/\\AA((\{\})|(\s|$))/, "Å\\3")
-    str.gsub!(/\\aring((\{\})|(\s|$))/, "å\\3")
-    str.gsub!(/\\AElig((\{\})|(\s|$))/, "Æ\\3")
-    str.gsub!(/\\aelig((\{\})|(\s|$))/, "æ\\3")
-    str.gsub!(/\\Ccedil((\{\})|(\s|$))/, "Ç\\3")
-    str.gsub!(/\\ccedil((\{\})|(\s|$))/, "ç\\3")
-    str.gsub!(/\\Egrave((\{\})|(\s|$))/, "È\\3")
-    str.gsub!(/\\egrave((\{\})|(\s|$))/, "è\\3")
-    str.gsub!(/\\Eacute((\{\})|(\s|$))/, "É\\3")
-    str.gsub!(/\\eacute((\{\})|(\s|$))/, "é\\3")
-    str.gsub!(/\\Ecirc((\{\})|(\s|$))/, "Ê\\3")
-    str.gsub!(/\\ecirc((\{\})|(\s|$))/, "ê\\3")
-    str.gsub!(/\\Euml((\{\})|(\s|$))/, "Ë\\3")
-    str.gsub!(/\\euml((\{\})|(\s|$))/, "ë\\3")
-    str.gsub!(/\\Igrave((\{\})|(\s|$))/, "Ì\\3")
-    str.gsub!(/\\igrave((\{\})|(\s|$))/, "ì\\3")
-    str.gsub!(/\\Iacute((\{\})|(\s|$))/, "Í\\3")
-    str.gsub!(/\\iacute((\{\})|(\s|$))/, "í\\3")
-    str.gsub!(/\\Icirc((\{\})|(\s|$))/, "Î\\3")
-    str.gsub!(/\\icirc((\{\})|(\s|$))/, "î\\3")
-    str.gsub!(/\\Iuml((\{\})|(\s|$))/, "Ï\\3")
-    str.gsub!(/\\iuml((\{\})|(\s|$))/, "ï\\3")
-    str.gsub!(/\\Ntilde((\{\})|(\s|$))/, "Ñ\\3")
-    str.gsub!(/\\ntilde((\{\})|(\s|$))/, "ñ\\3")
-    str.gsub!(/\\Ograve((\{\})|(\s|$))/, "Ò\\3")
-    str.gsub!(/\\ograve((\{\})|(\s|$))/, "ò\\3")
-    str.gsub!(/\\Oacute((\{\})|(\s|$))/, "Ó\\3")
-    str.gsub!(/\\oacute((\{\})|(\s|$))/, "ó\\3")
-    str.gsub!(/\\Ocirc((\{\})|(\s|$))/, "Ô\\3")
-    str.gsub!(/\\ocirc((\{\})|(\s|$))/, "ô\\3")
-    str.gsub!(/\\Otilde((\{\})|(\s|$))/, "Õ\\3")
-    str.gsub!(/\\otilde((\{\})|(\s|$))/, "õ\\3")
-    str.gsub!(/\\Ouml((\{\})|(\s|$))/, "Ö\\3")
-    str.gsub!(/\\ouml((\{\})|(\s|$))/, "ö\\3")
-    str.gsub!(/\\Oslash((\{\})|(\s|$))/, "Ø\\3")
-    str.gsub!(/\\oslash((\{\})|(\s|$))/, "ø\\3")
-    str.gsub!(/\\OElig((\{\})|(\s|$))/, "Œ\\3")
-    str.gsub!(/\\oelig((\{\})|(\s|$))/, "œ\\3")
-    str.gsub!(/\\Scaron((\{\})|(\s|$))/, "Š\\3")
-    str.gsub!(/\\scaron((\{\})|(\s|$))/, "š\\3")
-    str.gsub!(/\\szlig((\{\})|(\s|$))/, "ß\\3")
-    str.gsub!(/\\Ugrave((\{\})|(\s|$))/, "Ù\\3")
-    str.gsub!(/\\ugrave((\{\})|(\s|$))/, "ù\\3")
-    str.gsub!(/\\Uacute((\{\})|(\s|$))/, "Ú\\3")
-    str.gsub!(/\\uacute((\{\})|(\s|$))/, "ú\\3")
-    str.gsub!(/\\Ucirc((\{\})|(\s|$))/, "Û\\3")
-    str.gsub!(/\\ucirc((\{\})|(\s|$))/, "û\\3")
-    str.gsub!(/\\Uuml((\{\})|(\s|$))/, "Ü\\3")
-    str.gsub!(/\\uuml((\{\})|(\s|$))/, "ü\\3")
-    str.gsub!(/\\Yacute((\{\})|(\s|$))/, "Ý\\3")
-    str.gsub!(/\\yacute((\{\})|(\s|$))/, "ý\\3")
-    str.gsub!(/\\Yuml((\{\})|(\s|$))/, "Ÿ\\3")
-    str.gsub!(/\\yuml((\{\})|(\s|$))/, "ÿ\\3")
-    str.gsub!(/\\fnof((\{\})|(\s|$))/, "ƒ\\3")
-    str.gsub!(/\\real((\{\})|(\s|$))/, "ℜ\\3")
-    str.gsub!(/\\image((\{\})|(\s|$))/, "ℑ\\3")
-    str.gsub!(/\\weierp((\{\})|(\s|$))/, "℘\\3")
-    str.gsub!(/\\Alpha((\{\})|(\s|$))/, "Α\\3")
-    str.gsub!(/\\alpha((\{\})|(\s|$))/, "α\\3")
-    str.gsub!(/\\Beta((\{\})|(\s|$))/, "Β\\3")
-    str.gsub!(/\\beta((\{\})|(\s|$))/, "β\\3")
-    str.gsub!(/\\Gamma((\{\})|(\s|$))/, "Γ\\3")
-    str.gsub!(/\\gamma((\{\})|(\s|$))/, "γ\\3")
-    str.gsub!(/\\Delta((\{\})|(\s|$))/, "Δ\\3")
-    str.gsub!(/\\delta((\{\})|(\s|$))/, "δ\\3")
-    str.gsub!(/\\Epsilon((\{\})|(\s|$))/, "Ε\\3")
-    str.gsub!(/\\epsilon((\{\})|(\s|$))/, "ε\\3")
-    str.gsub!(/\\varepsilon((\{\})|(\s|$))/, "ε\\3")
-    str.gsub!(/\\Zeta((\{\})|(\s|$))/, "Ζ\\3")
-    str.gsub!(/\\zeta((\{\})|(\s|$))/, "ζ\\3")
-    str.gsub!(/\\Eta((\{\})|(\s|$))/, "Η\\3")
-    str.gsub!(/\\eta((\{\})|(\s|$))/, "η\\3")
-    str.gsub!(/\\Theta((\{\})|(\s|$))/, "Θ\\3")
-    str.gsub!(/\\theta((\{\})|(\s|$))/, "θ\\3")
-    str.gsub!(/\\thetasym((\{\})|(\s|$))/, "ϑ\\3")
-    str.gsub!(/\\vartheta((\{\})|(\s|$))/, "ϑ\\3")
-    str.gsub!(/\\Iota((\{\})|(\s|$))/, "Ι\\3")
-    str.gsub!(/\\iota((\{\})|(\s|$))/, "ι\\3")
-    str.gsub!(/\\Kappa((\{\})|(\s|$))/, "Κ\\3")
-    str.gsub!(/\\kappa((\{\})|(\s|$))/, "κ\\3")
-    str.gsub!(/\\Lambda((\{\})|(\s|$))/, "Λ\\3")
-    str.gsub!(/\\lambda((\{\})|(\s|$))/, "λ\\3")
-    str.gsub!(/\\Mu((\{\})|(\s|$))/, "Μ\\3")
-    str.gsub!(/\\mu((\{\})|(\s|$))/, "μ\\3")
-    str.gsub!(/\\nu((\{\})|(\s|$))/, "ν\\3")
-    str.gsub!(/\\Nu((\{\})|(\s|$))/, "Ν\\3")
-    str.gsub!(/\\Xi((\{\})|(\s|$))/, "Ξ\\3")
-    str.gsub!(/\\xi((\{\})|(\s|$))/, "ξ\\3")
-    str.gsub!(/\\Omicron((\{\})|(\s|$))/, "Ο\\3")
-    str.gsub!(/\\omicron((\{\})|(\s|$))/, "ο\\3")
-    str.gsub!(/\\Pi((\{\})|(\s|$))/, "Π\\3")
-    str.gsub!(/\\pi((\{\})|(\s|$))/, "π\\3")
-    str.gsub!(/\\Rho((\{\})|(\s|$))/, "Ρ\\3")
-    str.gsub!(/\\rho((\{\})|(\s|$))/, "ρ\\3")
-    str.gsub!(/\\Sigma((\{\})|(\s|$))/, "Σ\\3")
-    str.gsub!(/\\sigma((\{\})|(\s|$))/, "σ\\3")
-    str.gsub!(/\\sigmaf((\{\})|(\s|$))/, "ς\\3")
-    str.gsub!(/\\varsigma((\{\})|(\s|$))/, "ς\\3")
-    str.gsub!(/\\Tau((\{\})|(\s|$))/, "Τ\\3")
-    str.gsub!(/\\Upsilon((\{\})|(\s|$))/, "Υ\\3")
-    str.gsub!(/\\upsih((\{\})|(\s|$))/, "ϒ\\3")
-    str.gsub!(/\\upsilon((\{\})|(\s|$))/, "υ\\3")
-    str.gsub!(/\\Phi((\{\})|(\s|$))/, "Φ\\3")
-    str.gsub!(/\\phi((\{\})|(\s|$))/, "φ\\3")
-    str.gsub!(/\\Chi((\{\})|(\s|$))/, "Χ\\3")
-    str.gsub!(/\\chi((\{\})|(\s|$))/, "χ\\3")
-    str.gsub!(/\\acutex((\{\})|(\s|$))/, "´x\\3")
-    str.gsub!(/\\Psi((\{\})|(\s|$))/, "Ψ\\3")
-    str.gsub!(/\\psi((\{\})|(\s|$))/, "ψ\\3")
-    str.gsub!(/\\tau((\{\})|(\s|$))/, "τ\\3")
-    str.gsub!(/\\Omega((\{\})|(\s|$))/, "Ω\\3")
-    str.gsub!(/\\omega((\{\})|(\s|$))/, "ω\\3")
-    str.gsub!(/\\piv((\{\})|(\s|$))/, "ϖ\\3")
-    str.gsub!(/\\partial((\{\})|(\s|$))/, "∂\\3")
-    str.gsub!(/\\alefsym((\{\})|(\s|$))/, "ℵ\\3")
-    str.gsub!(/\\ETH((\{\})|(\s|$))/, "Ð\\3")
-    str.gsub!(/\\eth((\{\})|(\s|$))/, "ð\\3")
-    str.gsub!(/\\THORN((\{\})|(\s|$))/, "Þ\\3")
-    str.gsub!(/\\thorn((\{\})|(\s|$))/, "þ\\3")
-    str.gsub!(/\\dots((\{\})|(\s|$))/, "…\\3")
-    str.gsub!(/\\hellip((\{\})|(\s|$))/, "…\\3")
-    str.gsub!(/\\middot((\{\})|(\s|$))/, "·\\3")
-    str.gsub!(/\\iexcl((\{\})|(\s|$))/, "¡\\3")
-    str.gsub!(/\\iquest((\{\})|(\s|$))/, "¿\\3")
-    str.gsub!(/\\shy((\{\})|(\s|$))/, "­\\3")
-    str.gsub!(/\\ndash((\{\})|(\s|$))/, "–\\3")
-    str.gsub!(/\\mdash((\{\})|(\s|$))/, "—\\3")
-    str.gsub!(/\\quot((\{\})|(\s|$))/, ""\\3")
-    str.gsub!(/\\acute((\{\})|(\s|$))/, "´\\3")
-    str.gsub!(/\\ldquo((\{\})|(\s|$))/, "“\\3")
-    str.gsub!(/\\rdquo((\{\})|(\s|$))/, "”\\3")
-    str.gsub!(/\\bdquo((\{\})|(\s|$))/, "„\\3")
-    str.gsub!(/\\lsquo((\{\})|(\s|$))/, "‘\\3")
-    str.gsub!(/\\rsquo((\{\})|(\s|$))/, "’\\3")
-    str.gsub!(/\\sbquo((\{\})|(\s|$))/, "‚\\3")
-    str.gsub!(/\\laquo((\{\})|(\s|$))/, "«\\3")
-    str.gsub!(/\\raquo((\{\})|(\s|$))/, "»\\3")
-    str.gsub!(/\\lsaquo((\{\})|(\s|$))/, "‹\\3")
-    str.gsub!(/\\rsaquo((\{\})|(\s|$))/, "›\\3")
-    str.gsub!(/\\circ((\{\})|(\s|$))/, "ˆ\\3")
-    str.gsub!(/\\vert((\{\})|(\s|$))/, "|\\3")
-    str.gsub!(/\\brvbar((\{\})|(\s|$))/, "¦\\3")
-    str.gsub!(/\\sect((\{\})|(\s|$))/, "§\\3")
-    str.gsub!(/\\amp((\{\})|(\s|$))/, "&\\3")
-    str.gsub!(/\\lt((\{\})|(\s|$))/, "<\\3")
-    str.gsub!(/\\gt((\{\})|(\s|$))/, ">\\3")
-    str.gsub!(/\\tilde((\{\})|(\s|$))/, "˜\\3")
-    str.gsub!(/\\dagger((\{\})|(\s|$))/, "†\\3")
-    str.gsub!(/\\Dagger((\{\})|(\s|$))/, "‡\\3")
-    str.gsub!(/\\nbsp((\{\})|(\s|$))/, " \\3")
-    str.gsub!(/\\ensp((\{\})|(\s|$))/, " \\3")
-    str.gsub!(/\\emsp((\{\})|(\s|$))/, " \\3")
-    str.gsub!(/\\thinsp((\{\})|(\s|$))/, " \\3")
-    str.gsub!(/\\curren((\{\})|(\s|$))/, "¤\\3")
-    str.gsub!(/\\cent((\{\})|(\s|$))/, "¢\\3")
-    str.gsub!(/\\pound((\{\})|(\s|$))/, "£\\3")
-    str.gsub!(/\\yen((\{\})|(\s|$))/, "¥\\3")
-    str.gsub!(/\\euro((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EUR((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EURdig((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EURhv((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EURcr((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EURtm((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\copy((\{\})|(\s|$))/, "©\\3")
-    str.gsub!(/\\reg((\{\})|(\s|$))/, "®\\3")
-    str.gsub!(/\\trade((\{\})|(\s|$))/, "™\\3")
-    str.gsub!(/\\minus((\{\})|(\s|$))/, "−\\3")
-    str.gsub!(/\\pm((\{\})|(\s|$))/, "±\\3")
-    str.gsub!(/\\plusmn((\{\})|(\s|$))/, "±\\3")
-    str.gsub!(/\\times((\{\})|(\s|$))/, "×\\3")
-    str.gsub!(/\\frasl((\{\})|(\s|$))/, "⁄\\3")
-    str.gsub!(/\\div((\{\})|(\s|$))/, "÷\\3")
-    str.gsub!(/\\frac12((\{\})|(\s|$))/, "&frac12;\\3")
-    str.gsub!(/\\frac14((\{\})|(\s|$))/, "&frac14;\\3")
-    str.gsub!(/\\frac34((\{\})|(\s|$))/, "&frac34;\\3")
-    str.gsub!(/\\permil((\{\})|(\s|$))/, "‰\\3")
-    str.gsub!(/\\sup1((\{\})|(\s|$))/, "&sup1;\\3")
-    str.gsub!(/\\sup2((\{\})|(\s|$))/, "&sup2;\\3")
-    str.gsub!(/\\sup3((\{\})|(\s|$))/, "&sup3;\\3")
-    str.gsub!(/\\radic((\{\})|(\s|$))/, "√\\3")
-    str.gsub!(/\\sum((\{\})|(\s|$))/, "∑\\3")
-    str.gsub!(/\\prod((\{\})|(\s|$))/, "∏\\3")
-    str.gsub!(/\\micro((\{\})|(\s|$))/, "µ\\3")
-    str.gsub!(/\\macr((\{\})|(\s|$))/, "¯\\3")
-    str.gsub!(/\\deg((\{\})|(\s|$))/, "°\\3")
-    str.gsub!(/\\prime((\{\})|(\s|$))/, "′\\3")
-    str.gsub!(/\\Prime((\{\})|(\s|$))/, "″\\3")
-    str.gsub!(/\\infin((\{\})|(\s|$))/, "∞\\3")
-    str.gsub!(/\\infty((\{\})|(\s|$))/, "∞\\3")
-    str.gsub!(/\\prop((\{\})|(\s|$))/, "∝\\3")
-    str.gsub!(/\\proptp((\{\})|(\s|$))/, "∝\\3")
-    str.gsub!(/\\not((\{\})|(\s|$))/, "¬\\3")
-    str.gsub!(/\\land((\{\})|(\s|$))/, "∧\\3")
-    str.gsub!(/\\wedge((\{\})|(\s|$))/, "∧\\3")
-    str.gsub!(/\\lor((\{\})|(\s|$))/, "∨\\3")
-    str.gsub!(/\\vee((\{\})|(\s|$))/, "∨\\3")
-    str.gsub!(/\\cap((\{\})|(\s|$))/, "∩\\3")
-    str.gsub!(/\\cup((\{\})|(\s|$))/, "∪\\3")
-    str.gsub!(/\\int((\{\})|(\s|$))/, "∫\\3")
-    str.gsub!(/\\there4((\{\})|(\s|$))/, "&there4;\\3")
-    str.gsub!(/\\sim((\{\})|(\s|$))/, "∼\\3")
-    str.gsub!(/\\cong((\{\})|(\s|$))/, "≅\\3")
-    str.gsub!(/\\simeq((\{\})|(\s|$))/, "≅\\3")
-    str.gsub!(/\\asymp((\{\})|(\s|$))/, "≈\\3")
-    str.gsub!(/\\approx((\{\})|(\s|$))/, "≈\\3")
-    str.gsub!(/\\ne((\{\})|(\s|$))/, "≠\\3")
-    str.gsub!(/\\neq((\{\})|(\s|$))/, "≠\\3")
-    str.gsub!(/\\equiv((\{\})|(\s|$))/, "≡\\3")
-    str.gsub!(/\\le((\{\})|(\s|$))/, "≤\\3")
-    str.gsub!(/\\ge((\{\})|(\s|$))/, "≥\\3")
-    str.gsub!(/\\sub((\{\})|(\s|$))/, "⊂\\3")
-    str.gsub!(/\\subset((\{\})|(\s|$))/, "⊂\\3")
-    str.gsub!(/\\sup((\{\})|(\s|$))/, "⊃\\3")
-    str.gsub!(/\\supset((\{\})|(\s|$))/, "⊃\\3")
-    str.gsub!(/\\nsub((\{\})|(\s|$))/, "⊄\\3")
-    str.gsub!(/\\sube((\{\})|(\s|$))/, "⊆\\3")
-    str.gsub!(/\\nsup((\{\})|(\s|$))/, "⊅\\3")
-    str.gsub!(/\\supe((\{\})|(\s|$))/, "⊇\\3")
-    str.gsub!(/\\forall((\{\})|(\s|$))/, "∀\\3")
-    str.gsub!(/\\exist((\{\})|(\s|$))/, "∃\\3")
-    str.gsub!(/\\exists((\{\})|(\s|$))/, "∃\\3")
-    str.gsub!(/\\empty((\{\})|(\s|$))/, "∅\\3")
-    str.gsub!(/\\emptyset((\{\})|(\s|$))/, "∅\\3")
-    str.gsub!(/\\isin((\{\})|(\s|$))/, "∈\\3")
-    str.gsub!(/\\in((\{\})|(\s|$))/, "∈\\3")
-    str.gsub!(/\\notin((\{\})|(\s|$))/, "∉\\3")
-    str.gsub!(/\\ni((\{\})|(\s|$))/, "∋\\3")
-    str.gsub!(/\\nabla((\{\})|(\s|$))/, "∇\\3")
-    str.gsub!(/\\ang((\{\})|(\s|$))/, "∠\\3")
-    str.gsub!(/\\angle((\{\})|(\s|$))/, "∠\\3")
-    str.gsub!(/\\perp((\{\})|(\s|$))/, "⊥\\3")
-    str.gsub!(/\\sdot((\{\})|(\s|$))/, "⋅\\3")
-    str.gsub!(/\\cdot((\{\})|(\s|$))/, "⋅\\3")
-    str.gsub!(/\\lceil((\{\})|(\s|$))/, "⌈\\3")
-    str.gsub!(/\\rceil((\{\})|(\s|$))/, "⌉\\3")
-    str.gsub!(/\\lfloor((\{\})|(\s|$))/, "⌊\\3")
-    str.gsub!(/\\rfloor((\{\})|(\s|$))/, "⌋\\3")
-    str.gsub!(/\\lang((\{\})|(\s|$))/, "⟨\\3")
-    str.gsub!(/\\rang((\{\})|(\s|$))/, "⟩\\3")
-    str.gsub!(/\\larr((\{\})|(\s|$))/, "←\\3")
-    str.gsub!(/\\leftarrow((\{\})|(\s|$))/, "←\\3")
-    str.gsub!(/\\gets((\{\})|(\s|$))/, "←\\3")
-    str.gsub!(/\\lArr((\{\})|(\s|$))/, "⇐\\3")
-    str.gsub!(/\\Leftarrow((\{\})|(\s|$))/, "⇐\\3")
-    str.gsub!(/\\uarr((\{\})|(\s|$))/, "↑\\3")
-    str.gsub!(/\\uparrow((\{\})|(\s|$))/, "↑\\3")
-    str.gsub!(/\\uArr((\{\})|(\s|$))/, "⇑\\3")
-    str.gsub!(/\\Uparrow((\{\})|(\s|$))/, "⇑\\3")
-    str.gsub!(/\\rarr((\{\})|(\s|$))/, "→\\3")
-    str.gsub!(/\\to((\{\})|(\s|$))/, "→\\3")
-    str.gsub!(/\\rightarrow((\{\})|(\s|$))/, "→\\3")
-    str.gsub!(/\\rArr((\{\})|(\s|$))/, "⇒\\3")
-    str.gsub!(/\\Rightarrow((\{\})|(\s|$))/, "⇒\\3")
-    str.gsub!(/\\darr((\{\})|(\s|$))/, "↓\\3")
-    str.gsub!(/\\downarrow((\{\})|(\s|$))/, "↓\\3")
-    str.gsub!(/\\dArr((\{\})|(\s|$))/, "⇓\\3")
-    str.gsub!(/\\Downarrow((\{\})|(\s|$))/, "⇓\\3")
-    str.gsub!(/\\harr((\{\})|(\s|$))/, "↔\\3")
-    str.gsub!(/\\leftrightarrow((\{\})|(\s|$))/, "↔\\3")
-    str.gsub!(/\\hArr((\{\})|(\s|$))/, "⇔\\3")
-    str.gsub!(/\\Leftrightarrow((\{\})|(\s|$))/, "⇔\\3")
-    str.gsub!(/\\crarr((\{\})|(\s|$))/, "↵\\3")
-    str.gsub!(/\\hookleftarrow((\{\})|(\s|$))/, "↵\\3")
-    str.gsub!(/\\arccos((\{\})|(\s|$))/, "arccos\\3")
-    str.gsub!(/\\arcsin((\{\})|(\s|$))/, "arcsin\\3")
-    str.gsub!(/\\arctan((\{\})|(\s|$))/, "arctan\\3")
-    str.gsub!(/\\arg((\{\})|(\s|$))/, "arg\\3")
-    str.gsub!(/\\cos((\{\})|(\s|$))/, "cos\\3")
-    str.gsub!(/\\cosh((\{\})|(\s|$))/, "cosh\\3")
-    str.gsub!(/\\cot((\{\})|(\s|$))/, "cot\\3")
-    str.gsub!(/\\coth((\{\})|(\s|$))/, "coth\\3")
-    str.gsub!(/\\csc((\{\})|(\s|$))/, "csc\\3")
-    str.gsub!(/\\deg((\{\})|(\s|$))/, "°\\3")
-    str.gsub!(/\\det((\{\})|(\s|$))/, "det\\3")
-    str.gsub!(/\\dim((\{\})|(\s|$))/, "dim\\3")
-    str.gsub!(/\\exp((\{\})|(\s|$))/, "exp\\3")
-    str.gsub!(/\\gcd((\{\})|(\s|$))/, "gcd\\3")
-    str.gsub!(/\\hom((\{\})|(\s|$))/, "hom\\3")
-    str.gsub!(/\\inf((\{\})|(\s|$))/, "inf\\3")
-    str.gsub!(/\\ker((\{\})|(\s|$))/, "ker\\3")
-    str.gsub!(/\\lg((\{\})|(\s|$))/, "lg\\3")
-    str.gsub!(/\\lim((\{\})|(\s|$))/, "lim\\3")
-    str.gsub!(/\\liminf((\{\})|(\s|$))/, "liminf\\3")
-    str.gsub!(/\\limsup((\{\})|(\s|$))/, "limsup\\3")
-    str.gsub!(/\\ln((\{\})|(\s|$))/, "ln\\3")
-    str.gsub!(/\\log((\{\})|(\s|$))/, "log\\3")
-    str.gsub!(/\\max((\{\})|(\s|$))/, "max\\3")
-    str.gsub!(/\\min((\{\})|(\s|$))/, "min\\3")
-    str.gsub!(/\\Pr((\{\})|(\s|$))/, "Pr\\3")
-    str.gsub!(/\\sec((\{\})|(\s|$))/, "sec\\3")
-    str.gsub!(/\\sin((\{\})|(\s|$))/, "sin\\3")
-    str.gsub!(/\\sinh((\{\})|(\s|$))/, "sinh\\3")
-    str.gsub!(/\\sup((\{\})|(\s|$))/, "⊃\\3")
-    str.gsub!(/\\tan((\{\})|(\s|$))/, "tan\\3")
-    str.gsub!(/\\tanh((\{\})|(\s|$))/, "tanh\\3")
-    str.gsub!(/\\bull((\{\})|(\s|$))/, "•\\3")
-    str.gsub!(/\\bullet((\{\})|(\s|$))/, "•\\3")
-    str.gsub!(/\\star((\{\})|(\s|$))/, "*\\3")
-    str.gsub!(/\\lowast((\{\})|(\s|$))/, "∗\\3")
-    str.gsub!(/\\ast((\{\})|(\s|$))/, "∗\\3")
-    str.gsub!(/\\odot((\{\})|(\s|$))/, "o\\3")
-    str.gsub!(/\\oplus((\{\})|(\s|$))/, "⊕\\3")
-    str.gsub!(/\\otimes((\{\})|(\s|$))/, "⊗\\3")
-    str.gsub!(/\\checkmark((\{\})|(\s|$))/, "✓\\3")
-    str.gsub!(/\\para((\{\})|(\s|$))/, "¶\\3")
-    str.gsub!(/\\ordf((\{\})|(\s|$))/, "ª\\3")
-    str.gsub!(/\\ordm((\{\})|(\s|$))/, "º\\3")
-    str.gsub!(/\\cedil((\{\})|(\s|$))/, "¸\\3")
-    str.gsub!(/\\oline((\{\})|(\s|$))/, "‾\\3")
-    str.gsub!(/\\uml((\{\})|(\s|$))/, "¨\\3")
-    str.gsub!(/\\zwnj((\{\})|(\s|$))/, "‌\\3")
-    str.gsub!(/\\zwj((\{\})|(\s|$))/, "‍\\3")
-    str.gsub!(/\\lrm((\{\})|(\s|$))/, "‎\\3")
-    str.gsub!(/\\rlm((\{\})|(\s|$))/, "‏\\3")
-    str.gsub!(/\\smile((\{\})|(\s|$))/, "☺\\3")
-    str.gsub!(/\\smiley((\{\})|(\s|$))/, "☺\\3")
-    str.gsub!(/\\blacksmile((\{\})|(\s|$))/, "☻\\3")
-    str.gsub!(/\\sad((\{\})|(\s|$))/, "☹\\3")
-    str.gsub!(/\\clubs((\{\})|(\s|$))/, "♣\\3")
-    str.gsub!(/\\clubsuit((\{\})|(\s|$))/, "♣\\3")
-    str.gsub!(/\\spades((\{\})|(\s|$))/, "♠\\3")
-    str.gsub!(/\\spadesuit((\{\})|(\s|$))/, "♠\\3")
-    str.gsub!(/\\hearts((\{\})|(\s|$))/, "♥\\3")
-    str.gsub!(/\\heartsuit((\{\})|(\s|$))/, "♥\\3")
-    str.gsub!(/\\diams((\{\})|(\s|$))/, "♦\\3")
-    str.gsub!(/\\diamondsuit((\{\})|(\s|$))/, "♦\\3")
-    str.gsub!(/\\Diamond((\{\})|(\s|$))/, "⋄\\3")
-    str.gsub!(/\\loz((\{\})|(\s|$))/, "◊\\3")
+  HtmlEntities = {
+    "Agrave" => "À",
+    "agrave" => "à",
+    "Aacute" => "Á",
+    "aacute" => "á",
+    "Acirc" => "Â",
+    "acirc" => "â",
+    "Atilde" => "Ã",
+    "atilde" => "ã",
+    "Auml" => "Ä",
+    "auml" => "ä",
+    "Aring" => "Å",
+    "AA" => "Å",
+    "aring" => "å",
+    "AElig" => "Æ",
+    "aelig" => "æ",
+    "Ccedil" => "Ç",
+    "ccedil" => "ç",
+    "Egrave" => "È",
+    "egrave" => "è",
+    "Eacute" => "É",
+    "eacute" => "é",
+    "Ecirc" => "Ê",
+    "ecirc" => "ê",
+    "Euml" => "Ë",
+    "euml" => "ë",
+    "Igrave" => "Ì",
+    "igrave" => "ì",
+    "Iacute" => "Í",
+    "iacute" => "í",
+    "Icirc" => "Î",
+    "icirc" => "î",
+    "Iuml" => "Ï",
+    "iuml" => "ï",
+    "Ntilde" => "Ñ",
+    "ntilde" => "ñ",
+    "Ograve" => "Ò",
+    "ograve" => "ò",
+    "Oacute" => "Ó",
+    "oacute" => "ó",
+    "Ocirc" => "Ô",
+    "ocirc" => "ô",
+    "Otilde" => "Õ",
+    "otilde" => "õ",
+    "Ouml" => "Ö",
+    "ouml" => "ö",
+    "Oslash" => "Ø",
+    "oslash" => "ø",
+    "OElig" => "Œ",
+    "oelig" => "œ",
+    "Scaron" => "Š",
+    "scaron" => "š",
+    "szlig" => "ß",
+    "Ugrave" => "Ù",
+    "ugrave" => "ù",
+    "Uacute" => "Ú",
+    "uacute" => "ú",
+    "Ucirc" => "Û",
+    "ucirc" => "û",
+    "Uuml" => "Ü",
+    "uuml" => "ü",
+    "Yacute" => "Ý",
+    "yacute" => "ý",
+    "Yuml" => "Ÿ",
+    "yuml" => "ÿ",
+    "fnof" => "ƒ",
+    "real" => "ℜ",
+    "image" => "ℑ",
+    "weierp" => "℘",
+    "Alpha" => "Α",
+    "alpha" => "α",
+    "Beta" => "Β",
+    "beta" => "β",
+    "Gamma" => "Γ",
+    "gamma" => "γ",
+    "Delta" => "Δ",
+    "delta" => "δ",
+    "Epsilon" => "Ε",
+    "epsilon" => "ε",
+    "varepsilon" => "ε",
+    "Zeta" => "Ζ",
+    "zeta" => "ζ",
+    "Eta" => "Η",
+    "eta" => "η",
+    "Theta" => "Θ",
+    "theta" => "θ",
+    "thetasym" => "ϑ",
+    "vartheta" => "ϑ",
+    "Iota" => "Ι",
+    "iota" => "ι",
+    "Kappa" => "Κ",
+    "kappa" => "κ",
+    "Lambda" => "Λ",
+    "lambda" => "λ",
+    "Mu" => "Μ",
+    "mu" => "μ",
+    "nu" => "ν",
+    "Nu" => "Ν",
+    "Xi" => "Ξ",
+    "xi" => "ξ",
+    "Omicron" => "Ο",
+    "omicron" => "ο",
+    "Pi" => "Π",
+    "pi" => "π",
+    "Rho" => "Ρ",
+    "rho" => "ρ",
+    "Sigma" => "Σ",
+    "sigma" => "σ",
+    "sigmaf" => "ς",
+    "varsigma" => "ς",
+    "Tau" => "Τ",
+    "Upsilon" => "Υ",
+    "upsih" => "ϒ",
+    "upsilon" => "υ",
+    "Phi" => "Φ",
+    "phi" => "φ",
+    "Chi" => "Χ",
+    "chi" => "χ",
+    "acutex" => "´x",
+    "Psi" => "Ψ",
+    "psi" => "ψ",
+    "tau" => "τ",
+    "Omega" => "Ω",
+    "omega" => "ω",
+    "piv" => "ϖ",
+    "partial" => "∂",
+    "alefsym" => "ℵ",
+    "ETH" => "Ð",
+    "eth" => "ð",
+    "THORN" => "Þ",
+    "thorn" => "þ",
+    "dots" => "…",
+    "hellip" => "…",
+    "middot" => "·",
+    "iexcl" => "¡",
+    "iquest" => "¿",
+    "shy" => "­",
+    "ndash" => "–",
+    "mdash" => "—",
+    "quot" => """,
+    "acute" => "´",
+    "ldquo" => "“",
+    "rdquo" => "”",
+    "bdquo" => "„",
+    "lsquo" => "‘",
+    "rsquo" => "’",
+    "sbquo" => "‚",
+    "laquo" => "«",
+    "raquo" => "»",
+    "lsaquo" => "‹",
+    "rsaquo" => "›",
+    "circ" => "ˆ",
+    "vert" => "|",
+    "brvbar" => "¦",
+    "sect" => "§",
+    "amp" => "&",
+    "lt" => "<",
+    "gt" => ">",
+    "tilde" => "˜",
+    "slash" => "/",
+    "plus" => "+",
+    "under" => "_",
+    "equal" => "=",
+    "asciicirc" => "^",
+    "dagger" => "†",
+    "Dagger" => "‡",
+    "nbsp" => " ",
+    "ensp" => " ",
+    "emsp" => " ",
+    "thinsp" => " ",
+    "curren" => "¤",
+    "cent" => "¢",
+    "pound" => "£",
+    "yen" => "¥",
+    "euro" => "€",
+    "EUR" => "€",
+    "EURdig" => "€",
+    "EURhv" => "€",
+    "EURcr" => "€",
+    "EURtm" => "€",
+    "copy" => "©",
+    "reg" => "®",
+    "trade" => "™",
+    "minus" => "−",
+    "pm" => "±",
+    "plusmn" => "±",
+    "times" => "×",
+    "frasl" => "⁄",
+    "div" => "÷",
+    "frac12" => "&frac12;",
+    "frac14" => "&frac14;",
+    "frac34" => "&frac34;",
+    "permil" => "‰",
+    "sup1" => "&sup1;",
+    "sup2" => "&sup2;",
+    "sup3" => "&sup3;",
+    "radic" => "√",
+    "sum" => "∑",
+    "prod" => "∏",
+    "micro" => "µ",
+    "macr" => "¯",
+    "deg" => "°",
+    "prime" => "′",
+    "Prime" => "″",
+    "infin" => "∞",
+    "infty" => "∞",
+    "prop" => "∝",
+    "proptp" => "∝",
+    "not" => "¬",
+    "neg" => "¬",
+    "land" => "∧",
+    "wedge" => "∧",
+    "lor" => "∨",
+    "vee" => "∨",
+    "cap" => "∩",
+    "cup" => "∪",
+    "int" => "∫",
+    "there4" => "&there4;",
+    "sim" => "∼",
+    "cong" => "≅",
+    "simeq" => "≅",
+    "asymp" => "≈",
+    "approx" => "≈",
+    "ne" => "≠",
+    "neq" => "≠",
+    "equiv" => "≡",
+    "le" => "≤",
+    "ge" => "≥",
+    "sub" => "⊂",
+    "subset" => "⊂",
+    "sup" => "⊃",
+    "supset" => "⊃",
+    "nsub" => "⊄",
+    "sube" => "⊆",
+    "nsup" => "⊅",
+    "supe" => "⊇",
+    "forall" => "∀",
+    "exist" => "∃",
+    "exists" => "∃",
+    "empty" => "∅",
+    "emptyset" => "∅",
+    "isin" => "∈",
+    "in" => "∈",
+    "notin" => "∉",
+    "ni" => "∋",
+    "nabla" => "∇",
+    "ang" => "∠",
+    "angle" => "∠",
+    "perp" => "⊥",
+    "sdot" => "⋅",
+    "cdot" => "⋅",
+    "lceil" => "⌈",
+    "rceil" => "⌉",
+    "lfloor" => "⌊",
+    "rfloor" => "⌋",
+    "lang" => "⟨",
+    "rang" => "⟩",
+    "larr" => "←",
+    "leftarrow" => "←",
+    "gets" => "←",
+    "lArr" => "⇐",
+    "Leftarrow" => "⇐",
+    "uarr" => "↑",
+    "uparrow" => "↑",
+    "uArr" => "⇑",
+    "Uparrow" => "⇑",
+    "rarr" => "→",
+    "to" => "→",
+    "rightarrow" => "→",
+    "rArr" => "⇒",
+    "Rightarrow" => "⇒",
+    "darr" => "↓",
+    "downarrow" => "↓",
+    "dArr" => "⇓",
+    "Downarrow" => "⇓",
+    "harr" => "↔",
+    "leftrightarrow" => "↔",
+    "hArr" => "⇔",
+    "Leftrightarrow" => "⇔",
+    "crarr" => "↵",
+    "hookleftarrow" => "↵",
+    "arccos" => "arccos",
+    "arcsin" => "arcsin",
+    "arctan" => "arctan",
+    "arg" => "arg",
+    "cos" => "cos",
+    "cosh" => "cosh",
+    "cot" => "cot",
+    "coth" => "coth",
+    "csc" => "csc",
+    "deg" => "°",
+    "det" => "det",
+    "dim" => "dim",
+    "exp" => "exp",
+    "gcd" => "gcd",
+    "hom" => "hom",
+    "inf" => "inf",
+    "ker" => "ker",
+    "lg" => "lg",
+    "lim" => "lim",
+    "liminf" => "liminf",
+    "limsup" => "limsup",
+    "ln" => "ln",
+    "log" => "log",
+    "max" => "max",
+    "min" => "min",
+    "Pr" => "Pr",
+    "sec" => "sec",
+    "sin" => "sin",
+    "sinh" => "sinh",
+    "sup" => "⊃",
+    "tan" => "tan",
+    "tanh" => "tanh",
+    "bull" => "•",
+    "bullet" => "•",
+    "star" => "*",
+    "lowast" => "∗",
+    "ast" => "∗",
+    "odot" => "o",
+    "oplus" => "⊕",
+    "otimes" => "⊗",
+    "checkmark" => "✓",
+    "para" => "¶",
+    "ordf" => "ª",
+    "ordm" => "º",
+    "cedil" => "¸",
+    "oline" => "‾",
+    "uml" => "¨",
+    "zwnj" => "‌",
+    "zwj" => "‍",
+    "lrm" => "‎",
+    "rlm" => "‏",
+    "smile" => "☺",
+    "smiley" => "☺",
+    "blacksmile" => "☻",
+    "sad" => "☹",
+    "clubs" => "♣",
+    "clubsuit" => "♣",
+    "spades" => "♠",
+    "spadesuit" => "♠",
+    "hearts" => "♥",
+    "heartsuit" => "♥",
+    "diams" => "♦",
+    "diamondsuit" => "♦",
+    "Diamond" => "⋄",
+    "loz" => "◊"
+  }
+  @org_entities_regexp = /\\(there4|sup[123]|frac[13][24]|[a-zA-Z]+)($|\{\}|[^a-zA-Z])/
+
+  def Orgmode.special_symbols_to_html str
+    str.gsub! @org_entities_regexp do |match|
+      if HtmlEntities[$1]
+        if $2 == "{}" then "#{HtmlEntities[$1]}"
+        else "#{HtmlEntities[$1]}#{$2}"
+        end
+      end
+    end
   end
 end # module Orgmode
diff --git a/lib/org-ruby/textile_symbol_replace.rb b/lib/org-ruby/textile_symbol_replace.rb
index bcb0535..8afbbca 100644
--- a/lib/org-ruby/textile_symbol_replace.rb
+++ b/lib/org-ruby/textile_symbol_replace.rb
@@ -1,346 +1,363 @@
-# encoding: utf-8
+# -*- coding: utf-8 -*-
 # Autogenerated by util/gen-special-replace.el
 
 module Orgmode
-  def Orgmode.special_symbols_to_textile(str)
-    str.gsub!(/\\Agrave((\{\})|(\s|$))/, "À\\3")
-    str.gsub!(/\\agrave((\{\})|(\s|$))/, "à\\3")
-    str.gsub!(/\\Aacute((\{\})|(\s|$))/, "Á\\3")
-    str.gsub!(/\\aacute((\{\})|(\s|$))/, "á\\3")
-    str.gsub!(/\\Acirc((\{\})|(\s|$))/, "Â\\3")
-    str.gsub!(/\\acirc((\{\})|(\s|$))/, "â\\3")
-    str.gsub!(/\\Atilde((\{\})|(\s|$))/, "Ã\\3")
-    str.gsub!(/\\atilde((\{\})|(\s|$))/, "ã\\3")
-    str.gsub!(/\\Auml((\{\})|(\s|$))/, "Ä\\3")
-    str.gsub!(/\\auml((\{\})|(\s|$))/, "ä\\3")
-    str.gsub!(/\\Aring((\{\})|(\s|$))/, "Å\\3")
-    str.gsub!(/\\AA((\{\})|(\s|$))/, "Å\\3")
-    str.gsub!(/\\aring((\{\})|(\s|$))/, "å\\3")
-    str.gsub!(/\\AElig((\{\})|(\s|$))/, "Æ\\3")
-    str.gsub!(/\\aelig((\{\})|(\s|$))/, "æ\\3")
-    str.gsub!(/\\Ccedil((\{\})|(\s|$))/, "Ç\\3")
-    str.gsub!(/\\ccedil((\{\})|(\s|$))/, "ç\\3")
-    str.gsub!(/\\Egrave((\{\})|(\s|$))/, "È\\3")
-    str.gsub!(/\\egrave((\{\})|(\s|$))/, "è\\3")
-    str.gsub!(/\\Eacute((\{\})|(\s|$))/, "É\\3")
-    str.gsub!(/\\eacute((\{\})|(\s|$))/, "é\\3")
-    str.gsub!(/\\Ecirc((\{\})|(\s|$))/, "Ê\\3")
-    str.gsub!(/\\ecirc((\{\})|(\s|$))/, "ê\\3")
-    str.gsub!(/\\Euml((\{\})|(\s|$))/, "Ë\\3")
-    str.gsub!(/\\euml((\{\})|(\s|$))/, "ë\\3")
-    str.gsub!(/\\Igrave((\{\})|(\s|$))/, "Ì\\3")
-    str.gsub!(/\\igrave((\{\})|(\s|$))/, "ì\\3")
-    str.gsub!(/\\Iacute((\{\})|(\s|$))/, "Í\\3")
-    str.gsub!(/\\iacute((\{\})|(\s|$))/, "í\\3")
-    str.gsub!(/\\Icirc((\{\})|(\s|$))/, "Î\\3")
-    str.gsub!(/\\icirc((\{\})|(\s|$))/, "î\\3")
-    str.gsub!(/\\Iuml((\{\})|(\s|$))/, "Ï\\3")
-    str.gsub!(/\\iuml((\{\})|(\s|$))/, "ï\\3")
-    str.gsub!(/\\Ntilde((\{\})|(\s|$))/, "Ñ\\3")
-    str.gsub!(/\\ntilde((\{\})|(\s|$))/, "ñ\\3")
-    str.gsub!(/\\Ograve((\{\})|(\s|$))/, "Ò\\3")
-    str.gsub!(/\\ograve((\{\})|(\s|$))/, "ò\\3")
-    str.gsub!(/\\Oacute((\{\})|(\s|$))/, "Ó\\3")
-    str.gsub!(/\\oacute((\{\})|(\s|$))/, "ó\\3")
-    str.gsub!(/\\Ocirc((\{\})|(\s|$))/, "Ô\\3")
-    str.gsub!(/\\ocirc((\{\})|(\s|$))/, "ô\\3")
-    str.gsub!(/\\Otilde((\{\})|(\s|$))/, "Õ\\3")
-    str.gsub!(/\\otilde((\{\})|(\s|$))/, "õ\\3")
-    str.gsub!(/\\Ouml((\{\})|(\s|$))/, "Ö\\3")
-    str.gsub!(/\\ouml((\{\})|(\s|$))/, "ö\\3")
-    str.gsub!(/\\Oslash((\{\})|(\s|$))/, "Ø\\3")
-    str.gsub!(/\\oslash((\{\})|(\s|$))/, "ø\\3")
-    str.gsub!(/\\OElig((\{\})|(\s|$))/, "Œ\\3")
-    str.gsub!(/\\oelig((\{\})|(\s|$))/, "œ\\3")
-    str.gsub!(/\\Scaron((\{\})|(\s|$))/, "Š\\3")
-    str.gsub!(/\\scaron((\{\})|(\s|$))/, "š\\3")
-    str.gsub!(/\\szlig((\{\})|(\s|$))/, "ß\\3")
-    str.gsub!(/\\Ugrave((\{\})|(\s|$))/, "Ù\\3")
-    str.gsub!(/\\ugrave((\{\})|(\s|$))/, "ù\\3")
-    str.gsub!(/\\Uacute((\{\})|(\s|$))/, "Ú\\3")
-    str.gsub!(/\\uacute((\{\})|(\s|$))/, "ú\\3")
-    str.gsub!(/\\Ucirc((\{\})|(\s|$))/, "Û\\3")
-    str.gsub!(/\\ucirc((\{\})|(\s|$))/, "û\\3")
-    str.gsub!(/\\Uuml((\{\})|(\s|$))/, "Ü\\3")
-    str.gsub!(/\\uuml((\{\})|(\s|$))/, "ü\\3")
-    str.gsub!(/\\Yacute((\{\})|(\s|$))/, "Ý\\3")
-    str.gsub!(/\\yacute((\{\})|(\s|$))/, "ý\\3")
-    str.gsub!(/\\Yuml((\{\})|(\s|$))/, "Ÿ\\3")
-    str.gsub!(/\\yuml((\{\})|(\s|$))/, "ÿ\\3")
-    str.gsub!(/\\fnof((\{\})|(\s|$))/, "ƒ\\3")
-    str.gsub!(/\\real((\{\})|(\s|$))/, "ℜ\\3")
-    str.gsub!(/\\image((\{\})|(\s|$))/, "ℑ\\3")
-    str.gsub!(/\\weierp((\{\})|(\s|$))/, "℘\\3")
-    str.gsub!(/\\Alpha((\{\})|(\s|$))/, "Α\\3")
-    str.gsub!(/\\alpha((\{\})|(\s|$))/, "α\\3")
-    str.gsub!(/\\Beta((\{\})|(\s|$))/, "Β\\3")
-    str.gsub!(/\\beta((\{\})|(\s|$))/, "β\\3")
-    str.gsub!(/\\Gamma((\{\})|(\s|$))/, "Γ\\3")
-    str.gsub!(/\\gamma((\{\})|(\s|$))/, "γ\\3")
-    str.gsub!(/\\Delta((\{\})|(\s|$))/, "Δ\\3")
-    str.gsub!(/\\delta((\{\})|(\s|$))/, "δ\\3")
-    str.gsub!(/\\Epsilon((\{\})|(\s|$))/, "Ε\\3")
-    str.gsub!(/\\epsilon((\{\})|(\s|$))/, "ε\\3")
-    str.gsub!(/\\varepsilon((\{\})|(\s|$))/, "ε\\3")
-    str.gsub!(/\\Zeta((\{\})|(\s|$))/, "Ζ\\3")
-    str.gsub!(/\\zeta((\{\})|(\s|$))/, "ζ\\3")
-    str.gsub!(/\\Eta((\{\})|(\s|$))/, "Η\\3")
-    str.gsub!(/\\eta((\{\})|(\s|$))/, "η\\3")
-    str.gsub!(/\\Theta((\{\})|(\s|$))/, "Θ\\3")
-    str.gsub!(/\\theta((\{\})|(\s|$))/, "θ\\3")
-    str.gsub!(/\\thetasym((\{\})|(\s|$))/, "ϑ\\3")
-    str.gsub!(/\\vartheta((\{\})|(\s|$))/, "ϑ\\3")
-    str.gsub!(/\\Iota((\{\})|(\s|$))/, "Ι\\3")
-    str.gsub!(/\\iota((\{\})|(\s|$))/, "ι\\3")
-    str.gsub!(/\\Kappa((\{\})|(\s|$))/, "Κ\\3")
-    str.gsub!(/\\kappa((\{\})|(\s|$))/, "κ\\3")
-    str.gsub!(/\\Lambda((\{\})|(\s|$))/, "Λ\\3")
-    str.gsub!(/\\lambda((\{\})|(\s|$))/, "λ\\3")
-    str.gsub!(/\\Mu((\{\})|(\s|$))/, "Μ\\3")
-    str.gsub!(/\\mu((\{\})|(\s|$))/, "μ\\3")
-    str.gsub!(/\\nu((\{\})|(\s|$))/, "ν\\3")
-    str.gsub!(/\\Nu((\{\})|(\s|$))/, "Ν\\3")
-    str.gsub!(/\\Xi((\{\})|(\s|$))/, "Ξ\\3")
-    str.gsub!(/\\xi((\{\})|(\s|$))/, "ξ\\3")
-    str.gsub!(/\\Omicron((\{\})|(\s|$))/, "Ο\\3")
-    str.gsub!(/\\omicron((\{\})|(\s|$))/, "ο\\3")
-    str.gsub!(/\\Pi((\{\})|(\s|$))/, "Π\\3")
-    str.gsub!(/\\pi((\{\})|(\s|$))/, "π\\3")
-    str.gsub!(/\\Rho((\{\})|(\s|$))/, "Ρ\\3")
-    str.gsub!(/\\rho((\{\})|(\s|$))/, "ρ\\3")
-    str.gsub!(/\\Sigma((\{\})|(\s|$))/, "Σ\\3")
-    str.gsub!(/\\sigma((\{\})|(\s|$))/, "σ\\3")
-    str.gsub!(/\\sigmaf((\{\})|(\s|$))/, "ς\\3")
-    str.gsub!(/\\varsigma((\{\})|(\s|$))/, "ς\\3")
-    str.gsub!(/\\Tau((\{\})|(\s|$))/, "Τ\\3")
-    str.gsub!(/\\Upsilon((\{\})|(\s|$))/, "Υ\\3")
-    str.gsub!(/\\upsih((\{\})|(\s|$))/, "ϒ\\3")
-    str.gsub!(/\\upsilon((\{\})|(\s|$))/, "υ\\3")
-    str.gsub!(/\\Phi((\{\})|(\s|$))/, "Φ\\3")
-    str.gsub!(/\\phi((\{\})|(\s|$))/, "φ\\3")
-    str.gsub!(/\\Chi((\{\})|(\s|$))/, "Χ\\3")
-    str.gsub!(/\\chi((\{\})|(\s|$))/, "χ\\3")
-    str.gsub!(/\\acutex((\{\})|(\s|$))/, "𝑥́\\3")
-    str.gsub!(/\\Psi((\{\})|(\s|$))/, "Ψ\\3")
-    str.gsub!(/\\psi((\{\})|(\s|$))/, "ψ\\3")
-    str.gsub!(/\\tau((\{\})|(\s|$))/, "τ\\3")
-    str.gsub!(/\\Omega((\{\})|(\s|$))/, "Ω\\3")
-    str.gsub!(/\\omega((\{\})|(\s|$))/, "ω\\3")
-    str.gsub!(/\\piv((\{\})|(\s|$))/, "ϖ\\3")
-    str.gsub!(/\\partial((\{\})|(\s|$))/, "∂\\3")
-    str.gsub!(/\\alefsym((\{\})|(\s|$))/, "ℵ\\3")
-    str.gsub!(/\\ETH((\{\})|(\s|$))/, "Ð\\3")
-    str.gsub!(/\\eth((\{\})|(\s|$))/, "ð\\3")
-    str.gsub!(/\\THORN((\{\})|(\s|$))/, "Þ\\3")
-    str.gsub!(/\\thorn((\{\})|(\s|$))/, "þ\\3")
-    str.gsub!(/\\dots((\{\})|(\s|$))/, "…\\3")
-    str.gsub!(/\\hellip((\{\})|(\s|$))/, "…\\3")
-    str.gsub!(/\\middot((\{\})|(\s|$))/, "·\\3")
-    str.gsub!(/\\iexcl((\{\})|(\s|$))/, "¡\\3")
-    str.gsub!(/\\iquest((\{\})|(\s|$))/, "¿\\3")
-    str.gsub!(/\\shy((\{\})|(\s|$))/, "\\3")
-    str.gsub!(/\\ndash((\{\})|(\s|$))/, "–\\3")
-    str.gsub!(/\\mdash((\{\})|(\s|$))/, "—\\3")
-    str.gsub!(/\\quot((\{\})|(\s|$))/, "\"\\3")
-    str.gsub!(/\\acute((\{\})|(\s|$))/, "´\\3")
-    str.gsub!(/\\ldquo((\{\})|(\s|$))/, "“\\3")
-    str.gsub!(/\\rdquo((\{\})|(\s|$))/, "”\\3")
-    str.gsub!(/\\bdquo((\{\})|(\s|$))/, "„\\3")
-    str.gsub!(/\\lsquo((\{\})|(\s|$))/, "‘\\3")
-    str.gsub!(/\\rsquo((\{\})|(\s|$))/, "’\\3")
-    str.gsub!(/\\sbquo((\{\})|(\s|$))/, "‚\\3")
-    str.gsub!(/\\laquo((\{\})|(\s|$))/, "«\\3")
-    str.gsub!(/\\raquo((\{\})|(\s|$))/, "»\\3")
-    str.gsub!(/\\lsaquo((\{\})|(\s|$))/, "‹\\3")
-    str.gsub!(/\\rsaquo((\{\})|(\s|$))/, "›\\3")
-    str.gsub!(/\\circ((\{\})|(\s|$))/, "ˆ\\3")
-    str.gsub!(/\\vert((\{\})|(\s|$))/, "|\\3")
-    str.gsub!(/\\brvbar((\{\})|(\s|$))/, "¦\\3")
-    str.gsub!(/\\sect((\{\})|(\s|$))/, "§\\3")
-    str.gsub!(/\\amp((\{\})|(\s|$))/, "&\\3")
-    str.gsub!(/\\lt((\{\})|(\s|$))/, "<\\3")
-    str.gsub!(/\\gt((\{\})|(\s|$))/, ">\\3")
-    str.gsub!(/\\tilde((\{\})|(\s|$))/, "~\\3")
-    str.gsub!(/\\dagger((\{\})|(\s|$))/, "†\\3")
-    str.gsub!(/\\Dagger((\{\})|(\s|$))/, "‡\\3")
-    str.gsub!(/\\nbsp((\{\})|(\s|$))/, " \\3")
-    str.gsub!(/\\ensp((\{\})|(\s|$))/, " \\3")
-    str.gsub!(/\\emsp((\{\})|(\s|$))/, " \\3")
-    str.gsub!(/\\thinsp((\{\})|(\s|$))/, " \\3")
-    str.gsub!(/\\curren((\{\})|(\s|$))/, "¤\\3")
-    str.gsub!(/\\cent((\{\})|(\s|$))/, "¢\\3")
-    str.gsub!(/\\pound((\{\})|(\s|$))/, "£\\3")
-    str.gsub!(/\\yen((\{\})|(\s|$))/, "¥\\3")
-    str.gsub!(/\\euro((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EUR((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EURdig((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EURhv((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EURcr((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\EURtm((\{\})|(\s|$))/, "€\\3")
-    str.gsub!(/\\copy((\{\})|(\s|$))/, "©\\3")
-    str.gsub!(/\\reg((\{\})|(\s|$))/, "®\\3")
-    str.gsub!(/\\trade((\{\})|(\s|$))/, "™\\3")
-    str.gsub!(/\\minus((\{\})|(\s|$))/, "−\\3")
-    str.gsub!(/\\pm((\{\})|(\s|$))/, "±\\3")
-    str.gsub!(/\\plusmn((\{\})|(\s|$))/, "±\\3")
-    str.gsub!(/\\times((\{\})|(\s|$))/, "×\\3")
-    str.gsub!(/\\frasl((\{\})|(\s|$))/, "⁄\\3")
-    str.gsub!(/\\div((\{\})|(\s|$))/, "÷\\3")
-    str.gsub!(/\\frac12((\{\})|(\s|$))/, "½\\3")
-    str.gsub!(/\\frac14((\{\})|(\s|$))/, "¼\\3")
-    str.gsub!(/\\frac34((\{\})|(\s|$))/, "¾\\3")
-    str.gsub!(/\\permil((\{\})|(\s|$))/, "‰\\3")
-    str.gsub!(/\\sup1((\{\})|(\s|$))/, "¹\\3")
-    str.gsub!(/\\sup2((\{\})|(\s|$))/, "²\\3")
-    str.gsub!(/\\sup3((\{\})|(\s|$))/, "³\\3")
-    str.gsub!(/\\radic((\{\})|(\s|$))/, "√\\3")
-    str.gsub!(/\\sum((\{\})|(\s|$))/, "∑\\3")
-    str.gsub!(/\\prod((\{\})|(\s|$))/, "∏\\3")
-    str.gsub!(/\\micro((\{\})|(\s|$))/, "µ\\3")
-    str.gsub!(/\\macr((\{\})|(\s|$))/, "¯\\3")
-    str.gsub!(/\\deg((\{\})|(\s|$))/, "°\\3")
-    str.gsub!(/\\prime((\{\})|(\s|$))/, "′\\3")
-    str.gsub!(/\\Prime((\{\})|(\s|$))/, "″\\3")
-    str.gsub!(/\\infin((\{\})|(\s|$))/, "∞\\3")
-    str.gsub!(/\\infty((\{\})|(\s|$))/, "∞\\3")
-    str.gsub!(/\\prop((\{\})|(\s|$))/, "∝\\3")
-    str.gsub!(/\\proptp((\{\})|(\s|$))/, "∝\\3")
-    str.gsub!(/\\not((\{\})|(\s|$))/, "¬\\3")
-    str.gsub!(/\\land((\{\})|(\s|$))/, "∧\\3")
-    str.gsub!(/\\wedge((\{\})|(\s|$))/, "∧\\3")
-    str.gsub!(/\\lor((\{\})|(\s|$))/, "∨\\3")
-    str.gsub!(/\\vee((\{\})|(\s|$))/, "∨\\3")
-    str.gsub!(/\\cap((\{\})|(\s|$))/, "∩\\3")
-    str.gsub!(/\\cup((\{\})|(\s|$))/, "∪\\3")
-    str.gsub!(/\\int((\{\})|(\s|$))/, "∫\\3")
-    str.gsub!(/\\there4((\{\})|(\s|$))/, "∴\\3")
-    str.gsub!(/\\sim((\{\})|(\s|$))/, "∼\\3")
-    str.gsub!(/\\cong((\{\})|(\s|$))/, "≅\\3")
-    str.gsub!(/\\simeq((\{\})|(\s|$))/, "≅\\3")
-    str.gsub!(/\\asymp((\{\})|(\s|$))/, "≈\\3")
-    str.gsub!(/\\approx((\{\})|(\s|$))/, "≈\\3")
-    str.gsub!(/\\ne((\{\})|(\s|$))/, "≠\\3")
-    str.gsub!(/\\neq((\{\})|(\s|$))/, "≠\\3")
-    str.gsub!(/\\equiv((\{\})|(\s|$))/, "≡\\3")
-    str.gsub!(/\\le((\{\})|(\s|$))/, "≤\\3")
-    str.gsub!(/\\ge((\{\})|(\s|$))/, "≥\\3")
-    str.gsub!(/\\sub((\{\})|(\s|$))/, "⊂\\3")
-    str.gsub!(/\\subset((\{\})|(\s|$))/, "⊂\\3")
-    str.gsub!(/\\sup((\{\})|(\s|$))/, "⊃\\3")
-    str.gsub!(/\\supset((\{\})|(\s|$))/, "⊃\\3")
-    str.gsub!(/\\nsub((\{\})|(\s|$))/, "⊄\\3")
-    str.gsub!(/\\sube((\{\})|(\s|$))/, "⊆\\3")
-    str.gsub!(/\\nsup((\{\})|(\s|$))/, "⊅\\3")
-    str.gsub!(/\\supe((\{\})|(\s|$))/, "⊇\\3")
-    str.gsub!(/\\forall((\{\})|(\s|$))/, "∀\\3")
-    str.gsub!(/\\exist((\{\})|(\s|$))/, "∃\\3")
-    str.gsub!(/\\exists((\{\})|(\s|$))/, "∃\\3")
-    str.gsub!(/\\empty((\{\})|(\s|$))/, "∅\\3")
-    str.gsub!(/\\emptyset((\{\})|(\s|$))/, "∅\\3")
-    str.gsub!(/\\isin((\{\})|(\s|$))/, "∈\\3")
-    str.gsub!(/\\in((\{\})|(\s|$))/, "∈\\3")
-    str.gsub!(/\\notin((\{\})|(\s|$))/, "∉\\3")
-    str.gsub!(/\\ni((\{\})|(\s|$))/, "∋\\3")
-    str.gsub!(/\\nabla((\{\})|(\s|$))/, "∇\\3")
-    str.gsub!(/\\ang((\{\})|(\s|$))/, "∠\\3")
-    str.gsub!(/\\angle((\{\})|(\s|$))/, "∠\\3")
-    str.gsub!(/\\perp((\{\})|(\s|$))/, "⊥\\3")
-    str.gsub!(/\\sdot((\{\})|(\s|$))/, "⋅\\3")
-    str.gsub!(/\\cdot((\{\})|(\s|$))/, "⋅\\3")
-    str.gsub!(/\\lceil((\{\})|(\s|$))/, "⌈\\3")
-    str.gsub!(/\\rceil((\{\})|(\s|$))/, "⌉\\3")
-    str.gsub!(/\\lfloor((\{\})|(\s|$))/, "⌊\\3")
-    str.gsub!(/\\rfloor((\{\})|(\s|$))/, "⌋\\3")
-    str.gsub!(/\\lang((\{\})|(\s|$))/, "⟨\\3")
-    str.gsub!(/\\rang((\{\})|(\s|$))/, "⟩\\3")
-    str.gsub!(/\\larr((\{\})|(\s|$))/, "←\\3")
-    str.gsub!(/\\leftarrow((\{\})|(\s|$))/, "←\\3")
-    str.gsub!(/\\gets((\{\})|(\s|$))/, "←\\3")
-    str.gsub!(/\\lArr((\{\})|(\s|$))/, "⇐\\3")
-    str.gsub!(/\\Leftarrow((\{\})|(\s|$))/, "⇐\\3")
-    str.gsub!(/\\uarr((\{\})|(\s|$))/, "↑\\3")
-    str.gsub!(/\\uparrow((\{\})|(\s|$))/, "↑\\3")
-    str.gsub!(/\\uArr((\{\})|(\s|$))/, "⇑\\3")
-    str.gsub!(/\\Uparrow((\{\})|(\s|$))/, "⇑\\3")
-    str.gsub!(/\\rarr((\{\})|(\s|$))/, "→\\3")
-    str.gsub!(/\\to((\{\})|(\s|$))/, "→\\3")
-    str.gsub!(/\\rightarrow((\{\})|(\s|$))/, "→\\3")
-    str.gsub!(/\\rArr((\{\})|(\s|$))/, "⇒\\3")
-    str.gsub!(/\\Rightarrow((\{\})|(\s|$))/, "⇒\\3")
-    str.gsub!(/\\darr((\{\})|(\s|$))/, "↓\\3")
-    str.gsub!(/\\downarrow((\{\})|(\s|$))/, "↓\\3")
-    str.gsub!(/\\dArr((\{\})|(\s|$))/, "⇓\\3")
-    str.gsub!(/\\Downarrow((\{\})|(\s|$))/, "⇓\\3")
-    str.gsub!(/\\harr((\{\})|(\s|$))/, "↔\\3")
-    str.gsub!(/\\leftrightarrow((\{\})|(\s|$))/, "↔\\3")
-    str.gsub!(/\\hArr((\{\})|(\s|$))/, "⇔\\3")
-    str.gsub!(/\\Leftrightarrow((\{\})|(\s|$))/, "⇔\\3")
-    str.gsub!(/\\crarr((\{\})|(\s|$))/, "↵\\3")
-    str.gsub!(/\\hookleftarrow((\{\})|(\s|$))/, "↵\\3")
-    str.gsub!(/\\arccos((\{\})|(\s|$))/, "arccos\\3")
-    str.gsub!(/\\arcsin((\{\})|(\s|$))/, "arcsin\\3")
-    str.gsub!(/\\arctan((\{\})|(\s|$))/, "arctan\\3")
-    str.gsub!(/\\arg((\{\})|(\s|$))/, "arg\\3")
-    str.gsub!(/\\cos((\{\})|(\s|$))/, "cos\\3")
-    str.gsub!(/\\cosh((\{\})|(\s|$))/, "cosh\\3")
-    str.gsub!(/\\cot((\{\})|(\s|$))/, "cot\\3")
-    str.gsub!(/\\coth((\{\})|(\s|$))/, "coth\\3")
-    str.gsub!(/\\csc((\{\})|(\s|$))/, "csc\\3")
-    str.gsub!(/\\deg((\{\})|(\s|$))/, "deg\\3")
-    str.gsub!(/\\det((\{\})|(\s|$))/, "det\\3")
-    str.gsub!(/\\dim((\{\})|(\s|$))/, "dim\\3")
-    str.gsub!(/\\exp((\{\})|(\s|$))/, "exp\\3")
-    str.gsub!(/\\gcd((\{\})|(\s|$))/, "gcd\\3")
-    str.gsub!(/\\hom((\{\})|(\s|$))/, "hom\\3")
-    str.gsub!(/\\inf((\{\})|(\s|$))/, "inf\\3")
-    str.gsub!(/\\ker((\{\})|(\s|$))/, "ker\\3")
-    str.gsub!(/\\lg((\{\})|(\s|$))/, "lg\\3")
-    str.gsub!(/\\lim((\{\})|(\s|$))/, "lim\\3")
-    str.gsub!(/\\liminf((\{\})|(\s|$))/, "liminf\\3")
-    str.gsub!(/\\limsup((\{\})|(\s|$))/, "limsup\\3")
-    str.gsub!(/\\ln((\{\})|(\s|$))/, "ln\\3")
-    str.gsub!(/\\log((\{\})|(\s|$))/, "log\\3")
-    str.gsub!(/\\max((\{\})|(\s|$))/, "max\\3")
-    str.gsub!(/\\min((\{\})|(\s|$))/, "min\\3")
-    str.gsub!(/\\Pr((\{\})|(\s|$))/, "Pr\\3")
-    str.gsub!(/\\sec((\{\})|(\s|$))/, "sec\\3")
-    str.gsub!(/\\sin((\{\})|(\s|$))/, "sin\\3")
-    str.gsub!(/\\sinh((\{\})|(\s|$))/, "sinh\\3")
-    str.gsub!(/\\sup((\{\})|(\s|$))/, "sup\\3")
-    str.gsub!(/\\tan((\{\})|(\s|$))/, "tan\\3")
-    str.gsub!(/\\tanh((\{\})|(\s|$))/, "tanh\\3")
-    str.gsub!(/\\bull((\{\})|(\s|$))/, "•\\3")
-    str.gsub!(/\\bullet((\{\})|(\s|$))/, "•\\3")
-    str.gsub!(/\\star((\{\})|(\s|$))/, "⋆\\3")
-    str.gsub!(/\\lowast((\{\})|(\s|$))/, "∗\\3")
-    str.gsub!(/\\ast((\{\})|(\s|$))/, "*\\3")
-    str.gsub!(/\\odot((\{\})|(\s|$))/, "ʘ\\3")
-    str.gsub!(/\\oplus((\{\})|(\s|$))/, "⊕\\3")
-    str.gsub!(/\\otimes((\{\})|(\s|$))/, "⊗\\3")
-    str.gsub!(/\\checkmark((\{\})|(\s|$))/, "✓\\3")
-    str.gsub!(/\\para((\{\})|(\s|$))/, "¶\\3")
-    str.gsub!(/\\ordf((\{\})|(\s|$))/, "ª\\3")
-    str.gsub!(/\\ordm((\{\})|(\s|$))/, "º\\3")
-    str.gsub!(/\\cedil((\{\})|(\s|$))/, "¸\\3")
-    str.gsub!(/\\oline((\{\})|(\s|$))/, "‾\\3")
-    str.gsub!(/\\uml((\{\})|(\s|$))/, "¨\\3")
-    str.gsub!(/\\zwnj((\{\})|(\s|$))/, "‌\\3")
-    str.gsub!(/\\zwj((\{\})|(\s|$))/, "‍\\3")
-    str.gsub!(/\\lrm((\{\})|(\s|$))/, "‎\\3")
-    str.gsub!(/\\rlm((\{\})|(\s|$))/, "‏\\3")
-    str.gsub!(/\\smile((\{\})|(\s|$))/, "⌣\\3")
-    str.gsub!(/\\smiley((\{\})|(\s|$))/, "☺\\3")
-    str.gsub!(/\\blacksmile((\{\})|(\s|$))/, "☻\\3")
-    str.gsub!(/\\sad((\{\})|(\s|$))/, "☹\\3")
-    str.gsub!(/\\clubs((\{\})|(\s|$))/, "♣\\3")
-    str.gsub!(/\\clubsuit((\{\})|(\s|$))/, "♣\\3")
-    str.gsub!(/\\spades((\{\})|(\s|$))/, "♠\\3")
-    str.gsub!(/\\spadesuit((\{\})|(\s|$))/, "♠\\3")
-    str.gsub!(/\\hearts((\{\})|(\s|$))/, "♥\\3")
-    str.gsub!(/\\heartsuit((\{\})|(\s|$))/, "♥\\3")
-    str.gsub!(/\\diams((\{\})|(\s|$))/, "♦\\3")
-    str.gsub!(/\\diamondsuit((\{\})|(\s|$))/, "♦\\3")
-    str.gsub!(/\\Diamond((\{\})|(\s|$))/, "⋄\\3")
-    str.gsub!(/\\loz((\{\})|(\s|$))/, "◊\\3")
+  TextileEntities = {
+    "Agrave" => "À",
+    "agrave" => "à",
+    "Aacute" => "Á",
+    "aacute" => "á",
+    "Acirc" => "Â",
+    "acirc" => "â",
+    "Atilde" => "Ã",
+    "atilde" => "ã",
+    "Auml" => "Ä",
+    "auml" => "ä",
+    "Aring" => "Å",
+    "AA" => "Å",
+    "aring" => "å",
+    "AElig" => "Æ",
+    "aelig" => "æ",
+    "Ccedil" => "Ç",
+    "ccedil" => "ç",
+    "Egrave" => "È",
+    "egrave" => "è",
+    "Eacute" => "É",
+    "eacute" => "é",
+    "Ecirc" => "Ê",
+    "ecirc" => "ê",
+    "Euml" => "Ë",
+    "euml" => "ë",
+    "Igrave" => "Ì",
+    "igrave" => "ì",
+    "Iacute" => "Í",
+    "iacute" => "í",
+    "Icirc" => "Î",
+    "icirc" => "î",
+    "Iuml" => "Ï",
+    "iuml" => "ï",
+    "Ntilde" => "Ñ",
+    "ntilde" => "ñ",
+    "Ograve" => "Ò",
+    "ograve" => "ò",
+    "Oacute" => "Ó",
+    "oacute" => "ó",
+    "Ocirc" => "Ô",
+    "ocirc" => "ô",
+    "Otilde" => "Õ",
+    "otilde" => "õ",
+    "Ouml" => "Ö",
+    "ouml" => "ö",
+    "Oslash" => "Ø",
+    "oslash" => "ø",
+    "OElig" => "Œ",
+    "oelig" => "œ",
+    "Scaron" => "Š",
+    "scaron" => "š",
+    "szlig" => "ß",
+    "Ugrave" => "Ù",
+    "ugrave" => "ù",
+    "Uacute" => "Ú",
+    "uacute" => "ú",
+    "Ucirc" => "Û",
+    "ucirc" => "û",
+    "Uuml" => "Ü",
+    "uuml" => "ü",
+    "Yacute" => "Ý",
+    "yacute" => "ý",
+    "Yuml" => "Ÿ",
+    "yuml" => "ÿ",
+    "fnof" => "ƒ",
+    "real" => "ℜ",
+    "image" => "ℑ",
+    "weierp" => "℘",
+    "Alpha" => "Α",
+    "alpha" => "α",
+    "Beta" => "Β",
+    "beta" => "β",
+    "Gamma" => "Γ",
+    "gamma" => "γ",
+    "Delta" => "Δ",
+    "delta" => "δ",
+    "Epsilon" => "Ε",
+    "epsilon" => "ε",
+    "varepsilon" => "ε",
+    "Zeta" => "Ζ",
+    "zeta" => "ζ",
+    "Eta" => "Η",
+    "eta" => "η",
+    "Theta" => "Θ",
+    "theta" => "θ",
+    "thetasym" => "ϑ",
+    "vartheta" => "ϑ",
+    "Iota" => "Ι",
+    "iota" => "ι",
+    "Kappa" => "Κ",
+    "kappa" => "κ",
+    "Lambda" => "Λ",
+    "lambda" => "λ",
+    "Mu" => "Μ",
+    "mu" => "μ",
+    "nu" => "ν",
+    "Nu" => "Ν",
+    "Xi" => "Ξ",
+    "xi" => "ξ",
+    "Omicron" => "Ο",
+    "omicron" => "ο",
+    "Pi" => "Π",
+    "pi" => "π",
+    "Rho" => "Ρ",
+    "rho" => "ρ",
+    "Sigma" => "Σ",
+    "sigma" => "σ",
+    "sigmaf" => "ς",
+    "varsigma" => "ς",
+    "Tau" => "Τ",
+    "Upsilon" => "Υ",
+    "upsih" => "ϒ",
+    "upsilon" => "υ",
+    "Phi" => "Φ",
+    "phi" => "φ",
+    "Chi" => "Χ",
+    "chi" => "χ",
+    "acutex" => "𝑥́",
+    "Psi" => "Ψ",
+    "psi" => "ψ",
+    "tau" => "τ",
+    "Omega" => "Ω",
+    "omega" => "ω",
+    "piv" => "ϖ",
+    "partial" => "∂",
+    "alefsym" => "ℵ",
+    "ETH" => "Ð",
+    "eth" => "ð",
+    "THORN" => "Þ",
+    "thorn" => "þ",
+    "dots" => "…",
+    "hellip" => "…",
+    "middot" => "·",
+    "iexcl" => "¡",
+    "iquest" => "¿",
+    "shy" => "",
+    "ndash" => "–",
+    "mdash" => "—",
+    "quot" => "\"",
+    "acute" => "´",
+    "ldquo" => "“",
+    "rdquo" => "”",
+    "bdquo" => "„",
+    "lsquo" => "‘",
+    "rsquo" => "’",
+    "sbquo" => "‚",
+    "laquo" => "«",
+    "raquo" => "»",
+    "lsaquo" => "‹",
+    "rsaquo" => "›",
+    "circ" => "ˆ",
+    "vert" => "|",
+    "brvbar" => "¦",
+    "sect" => "§",
+    "amp" => "&",
+    "lt" => "<",
+    "gt" => ">",
+    "tilde" => "~",
+    "slash" => "/",
+    "plus" => "+",
+    "under" => "_",
+    "equal" => "=",
+    "asciicirc" => "^",
+    "dagger" => "†",
+    "Dagger" => "‡",
+    "nbsp" => " ",
+    "ensp" => " ",
+    "emsp" => " ",
+    "thinsp" => " ",
+    "curren" => "¤",
+    "cent" => "¢",
+    "pound" => "£",
+    "yen" => "¥",
+    "euro" => "€",
+    "EUR" => "€",
+    "EURdig" => "€",
+    "EURhv" => "€",
+    "EURcr" => "€",
+    "EURtm" => "€",
+    "copy" => "©",
+    "reg" => "®",
+    "trade" => "™",
+    "minus" => "−",
+    "pm" => "±",
+    "plusmn" => "±",
+    "times" => "×",
+    "frasl" => "⁄",
+    "div" => "÷",
+    "frac12" => "½",
+    "frac14" => "¼",
+    "frac34" => "¾",
+    "permil" => "‰",
+    "sup1" => "¹",
+    "sup2" => "²",
+    "sup3" => "³",
+    "radic" => "√",
+    "sum" => "∑",
+    "prod" => "∏",
+    "micro" => "µ",
+    "macr" => "¯",
+    "deg" => "°",
+    "prime" => "′",
+    "Prime" => "″",
+    "infin" => "∞",
+    "infty" => "∞",
+    "prop" => "∝",
+    "proptp" => "∝",
+    "not" => "¬",
+    "neg" => "¬",
+    "land" => "∧",
+    "wedge" => "∧",
+    "lor" => "∨",
+    "vee" => "∨",
+    "cap" => "∩",
+    "cup" => "∪",
+    "int" => "∫",
+    "there4" => "∴",
+    "sim" => "∼",
+    "cong" => "≅",
+    "simeq" => "≅",
+    "asymp" => "≈",
+    "approx" => "≈",
+    "ne" => "≠",
+    "neq" => "≠",
+    "equiv" => "≡",
+    "le" => "≤",
+    "ge" => "≥",
+    "sub" => "⊂",
+    "subset" => "⊂",
+    "sup" => "⊃",
+    "supset" => "⊃",
+    "nsub" => "⊄",
+    "sube" => "⊆",
+    "nsup" => "⊅",
+    "supe" => "⊇",
+    "forall" => "∀",
+    "exist" => "∃",
+    "exists" => "∃",
+    "empty" => "∅",
+    "emptyset" => "∅",
+    "isin" => "∈",
+    "in" => "∈",
+    "notin" => "∉",
+    "ni" => "∋",
+    "nabla" => "∇",
+    "ang" => "∠",
+    "angle" => "∠",
+    "perp" => "⊥",
+    "sdot" => "⋅",
+    "cdot" => "⋅",
+    "lceil" => "⌈",
+    "rceil" => "⌉",
+    "lfloor" => "⌊",
+    "rfloor" => "⌋",
+    "lang" => "⟨",
+    "rang" => "⟩",
+    "larr" => "←",
+    "leftarrow" => "←",
+    "gets" => "←",
+    "lArr" => "⇐",
+    "Leftarrow" => "⇐",
+    "uarr" => "↑",
+    "uparrow" => "↑",
+    "uArr" => "⇑",
+    "Uparrow" => "⇑",
+    "rarr" => "→",
+    "to" => "→",
+    "rightarrow" => "→",
+    "rArr" => "⇒",
+    "Rightarrow" => "⇒",
+    "darr" => "↓",
+    "downarrow" => "↓",
+    "dArr" => "⇓",
+    "Downarrow" => "⇓",
+    "harr" => "↔",
+    "leftrightarrow" => "↔",
+    "hArr" => "⇔",
+    "Leftrightarrow" => "⇔",
+    "crarr" => "↵",
+    "hookleftarrow" => "↵",
+    "arccos" => "arccos",
+    "arcsin" => "arcsin",
+    "arctan" => "arctan",
+    "arg" => "arg",
+    "cos" => "cos",
+    "cosh" => "cosh",
+    "cot" => "cot",
+    "coth" => "coth",
+    "csc" => "csc",
+    "deg" => "deg",
+    "det" => "det",
+    "dim" => "dim",
+    "exp" => "exp",
+    "gcd" => "gcd",
+    "hom" => "hom",
+    "inf" => "inf",
+    "ker" => "ker",
+    "lg" => "lg",
+    "lim" => "lim",
+    "liminf" => "liminf",
+    "limsup" => "limsup",
+    "ln" => "ln",
+    "log" => "log",
+    "max" => "max",
+    "min" => "min",
+    "Pr" => "Pr",
+    "sec" => "sec",
+    "sin" => "sin",
+    "sinh" => "sinh",
+    "sup" => "sup",
+    "tan" => "tan",
+    "tanh" => "tanh",
+    "bull" => "•",
+    "bullet" => "•",
+    "star" => "⋆",
+    "lowast" => "∗",
+    "ast" => "*",
+    "odot" => "ʘ",
+    "oplus" => "⊕",
+    "otimes" => "⊗",
+    "checkmark" => "✓",
+    "para" => "¶",
+    "ordf" => "ª",
+    "ordm" => "º",
+    "cedil" => "¸",
+    "oline" => "‾",
+    "uml" => "¨",
+    "zwnj" => "‌",
+    "zwj" => "‍",
+    "lrm" => "‎",
+    "rlm" => "‏",
+    "smile" => "⌣",
+    "smiley" => "☺",
+    "blacksmile" => "☻",
+    "sad" => "☹",
+    "clubs" => "♣",
+    "clubsuit" => "♣",
+    "spades" => "♠",
+    "spadesuit" => "♠",
+    "hearts" => "♥",
+    "heartsuit" => "♥",
+    "diams" => "♦",
+    "diamondsuit" => "♦",
+    "Diamond" => "⋄",
+    "loz" => "◊"
+  }
+  @org_entities_regexp = /\\(there4|sup[123]|frac[13][24]|[a-zA-Z]+)($|\{\}|[^a-zA-Z])/
+
+  def Orgmode.special_symbols_to_textile str
+    str.gsub! @org_entities_regexp do |match|
+      if TextileEntities[$1]
+        if $2 == "{}" then "#{TextileEntities[$1]}"
+        else "#{TextileEntities[$1]}#{$2}"
+        end
+      end
+    end
   end
 end # module Orgmode
diff --git a/util/gen-special-replace.el b/util/gen-special-replace.el
index 84a0171..24113fe 100644
--- a/util/gen-special-replace.el
+++ b/util/gen-special-replace.el
@@ -11,27 +11,44 @@
               org-entities))
         (to (if (string= what "html") 3
               6))) ; use utf8 for textile
-    (insert "  def Orgmode.special_symbols_to_" what "(str)\n")
+    (insert "  " (capitalize what) "Entities = {")
     (dolist (entity ll)
       (when (listp entity)
         (let ((symb (nth to entity)))
-          (when (or (string= symb "\"") (string= symb "\\"))
-            (setq symb (concat "\\" symb)))
-          (insert "    str.gsub!(/\\\\" (car entity) "((\\{\\})|(\\s|$))/, \"" symb "\\\\3\")\n"))))
-    (insert "  end\n")))
+          ;; escape backslashes and quotation marks
+          (setq symb (replace-regexp-in-string "\\(\\\\\\|\\\"\\)" "\\\\\\&" symb))
+          (insert "\n    \"" (car entity) "\" => \"" symb "\","))))
+    ;; remove last comma from the sequence
+    (search-backward ",")
+    (replace-match "")
+    (insert "\n  }\n")))
+
+(defun generate-replace-header (what)
+  (insert
+   "# Autogenerated by util/gen-special-replace.el\n\n"
+   "module Orgmode\n"))
+
+(defun generate-replace-footer (what)
+  (insert
+   "  @org_entities_regexp = /\\\\(there4|sup[123]|frac[13][24]|[a-zA-Z]+)($|\\{\\}|[^a-zA-Z])/\n\n"
+   "  def Orgmode.special_symbols_to_" what " str\n"
+   "    str.gsub! @org_entities_regexp do |match|\n"
+   "      if " (capitalize what) "Entities[$1]\n"
+   "        if $2 == \"{}\" then \"#{" (capitalize what) "Entities[$1]}\"\n"
+   "        else \"#{" (capitalize what) "Entities[$1]}#{$2}\"\n"
+   "        end\n"
+   "      end\n"
+   "    end\n"
+   "  end\n"
+   "end # module Orgmode\n"))
 
 (defun generate-replace (file-name what)
-  (when (file-exists-p file-name)
-    (let ((buf (find-buffer-visiting file-name)))
-      (when buf
-        (kill-buffer buf)))
-    (delete-file file-name))
-  (find-file file-name)
-  (insert "# Autogenerated by util/gen-special-replace.el\n\nmodule Orgmode\n")
-  (generate-replace-inbuffer what)
-  (insert "end # module Orgmode\n")
-  (save-buffer)
-  (kill-buffer))
+  (let ((file (expand-file-name file-name)))
+    (with-temp-buffer
+      (generate-replace-header what)
+      (generate-replace-inbuffer what)
+      (generate-replace-footer what)
+      (write-file file))))
 
 (generate-replace "../lib/org-ruby/html_symbol_replace.rb" "html")
 (generate-replace "../lib/org-ruby/textile_symbol_replace.rb" "textile")

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-org.git



More information about the Pkg-ruby-extras-commits mailing list