packages feed

mediawiki2latex-7.5: src/MagicStrings.hs

{-DHUN| This module provides string constants DHUN-}
module MagicStrings where
import Data.Char
import Network.URI
import Data.List.Split
import qualified Data.Map as Map
 
{-DHUN| Wikimedia project prefixes so 'de' from de.wikipedia.org DHUN-}
 
foreignPrefixes :: [String]
foreignPrefixes
  = ["af", "als", "an", "roa-rup", "ast", "gn", "av", "ay", "az",
     "id", "ms", "bm", "zh-min-nan", "jv", "map-bms", "su", "bug", "bi",
     "bar", "bs", "br", "ca", "cbk-zam", "ch", "cs", "ny", "sn", "tum",
     "ve", "co", "za", "cy", "da", "pdc", "de", "nv", "na", "lad", "et",
     "ang", "en", "es", "eo", "ext", "eu", "to", "fo", "fr", "frp",
     "fy", "ff", "fur", "ga", "gv", "sm", "gd", "gl", "got", "hak",
     "haw", "hsb", "hr", "io", "ilo", "ig", "ia", "ie", "ik", "xh",
     "zu", "is", "it", "mh", "kl", "pam", "csb", "kw", "kg", "ki", "rw",
     "ky", "rn", "sw", "ht", "ku", "ksh", "la", "lv", "lb", "lt", "lij",
     "li", "ln", "jbo", "lg", "lmo", "hu", "mg", "mt", "mi", "cdo",
     "my", "nah", "fj", "nl", "cr", "ne", "nap", "pih", "no", "nn",
     "nrm", "oc", "om", "ng", "pag", "pi", "pap", "pms", "nds", "pl",
     "pt", "ty", "ro", "rmy", "rm", "qu", "se", "sg", "sc", "sco", "st",
     "tn", "sq", "scn", "simple", "ceb", "ss", "sk", "sl", "so", "sh",
     "fi", "sv", "tl", "tt", "tet", "vi", "tpi", "chy", "tr", "tk",
     "tw", "vec", "vo", "fiu-vro", "wa", "vls", "war", "wo", "ts", "yo",
     "bat-smg", "el", "ab", "ba", "be", "bg", "bxr", "cu", "os", "kk",
     "kv", "mk", "mn", "ce", "ru", "sr", "tg", "udm", "uk", "uz", "xal",
     "cv", "hy", "ka", "he", "yi", "ar", "fa", "ha", "ps", "sd", "ur",
     "ug", "arc", "dv", "as", "bh", "bn", "bo", "bpy", "dz", "gu", "hi",
     "kn", "ks", "ml", "mr", "ne", "new", "or", "pa", "sa", "si", "ta",
     "te", "km", "lo", "th", "am", "ti", "iu", "chr", "ko", "ja", "zh",
     "wuu", "lzh", "yue"]
 
{-DHUN| Wikimedia projects for interwiki links [[w:Foobar]] means en.wikipedia.org/wiki/Foobar DHUN-}
 
multilangwikis :: [(String, String)]
multilangwikis
  = ([("w", "wikipedia"), ("wikipedia", "wikipedia"),
      ("wikt", "wiktionary"), ("wiktionary", "wiktionary")]
       ++
       [("n", "wikinews"), ("wikinews", "wikinews"), ("b", "wikibooks"),
        ("wikibooks", "wikibooks"), ("q", "wikiquote")]
         ++
         [("wikiquote", "wikiquote"), ("s", "wikisource"),
          ("wikisource", "wikisource"), ("species", "wikispecies")]
           ++
           [("wikispecies", "wikispecies"), ("v", "wikiversity"),
            ("wikiversity", "wikiversity")])
 
{-DHUN| Wikimedia projects for interwiki links to wikis which only have got a single language version DHUN-}
 
singlelangwikis :: [(String, String)]
singlelangwikis
  = [("wikimedia", "wikimediafoundation"),
     ("foundation", "wikimediafoundation"),
     ("wmf", "wikimediafoundation"), ("mw", "mediawiki")]
 
{-DHUN| Wikimedia projects for interwiki links to wikis which only have got a single language version DHUN-}
 
wikimediasingellangwikis :: [(String, String)]
wikimediasingellangwikis
  = [("commons", "commons"), ("metawikipedia", "meta"),
     ("meta", "meta"), ("m", "meta"), ("incubator", "incubator"),
     ("strategy", "strategy")]
 
{-DHUN| All Wikis DHUN-}
 
allwikis :: [(String, String)]
allwikis
  = multilangwikis ++ singlelangwikis ++ wikimediasingellangwikis
 
{-DHUN| Prefixes for including images in wikis DHUN-}
 
imgtags :: [[Char]]
imgtags
  = [map toLower x |
     x <- ["\1589\1608\1585\1577", "Billede", "Im\225gen", "Image",
           "Immagine", "Bild", "Afbeelding", "Imagine", "\3619\3641\3611",
           "\22270\20687", "\1605\1604\1601", "Fil", "Archivo", "File",
           "Datei", "Bestand", "Fisier", "\3652\3615\3621\3660",
           "\25991\20214", "Fichier", "\1605\1604\1601", "Archiv",
           "\1060\1072\1081\1083", "\2458\2495\2468\2509\2480", "Datoteka",
           "Fitxer", "Image", "So", "Delwedd", "Fil", "Datei",
           "\913\961\967\949\943\959", "Dosiero", "Archivo", "Pilt",
           "\1662\1585\1608\1606\1583\1607", "Tiedosto", "Fichier",
           "\205omh\225", "\1511\1493\1489\1509", "Datoteka", ": ", "Berkas",
           "Video", "\12501\12449\12452\12523", "Gambar",
           "\4324\4304\4312\4314\4312", "\6063\6016\6047\6070\6042",
           "\54028\51068", "Fascic", "Fichier", "Plaetje", "\3758\3769\3738",
           "Vaizdas", "Att\275ls", "Image", "Sary",
           "\1055\1086\1076\1072\1090\1086\1090\1077\1082\1072", "Fi\351ier",
           "Fail", "Bestand", "Fil", "Fil", "Fichi\232r", "Plik", "Imagem",
           "Fi\351ier", ": ", "S\250bor", "Slika",
           "\1057\1083\1080\1082\1072", "Bild", "\3652\3615\3621\3660",
           "Talaksan", "Dosya", "\1496\1506\1511\1506", "\22294\20687",
           "\22294\20687"]]
 
{-DHUN| lower Greek letter for HTML entity to latex so &delta; to \\delta DHUN-}
 
lowergreek :: [[Char]]
lowergreek
  = ["alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta",
     "theta", "iota", "kappa", "lambda", "mu", "nu", "xi", "pi", "rho",
     "sigma", "tau", "upsilon", "phi", "chi", "psi", "omega"]
 
{-DHUN| not Greek but to be processed like the Greeks above DHUN-}
 
notsogreek :: [[Char]]
notsogreek = ["cap", "cup", "sim"]
 
{-DHUN| Full list of characters with Greek like processing explained above DHUN-}
 
greek :: [[Char]]
greek
  = concat
      (do g <- lowergreek
          case g of
              (x : xs) -> return [(toUpper x) : xs]
              [] -> return [])
      ++ lowergreek ++ notsogreek
 
{-DHUN| HTML entities to latex DHUN-}
 
htmlchars :: [([Char], [Char])]
htmlchars
  = [("thetasym", "{\\mbox{$\\vartheta$}}"),
     ("Upsilon", "{\\mbox{$\\Upsilon$}}"),
     ("epsilon", "{\\mbox{$\\varepsilon$}}"),
     ("upsilon", "{\\mbox{$\\upsilon$}}"),
     ("Epsilon", "{\\mbox{$\\Epsilon$}}"),
     ("Omicron", "{\\mbox{$\\text{O}$}}"),
     ("omicron", "{\\mbox{$\\text{o}$}}"),
     ("forall", "{\\mbox{$\\forall$}}"),
     ("lowast", "{\\mbox{$\\ast$}}"),
     ("there4", "{\\mbox{$\\therefore$}}"),
     ("otimes", "{\\mbox{$\\otimes$}}"),
     ("Lambda", "{\\mbox{$\\Lambda$}}"),
     ("lambda", "{\\mbox{$\\lambda$}}"),
     ("sigmaf", "{\\mbox{$\\varsigma$}}"),
     ("dagger", "{\\mbox{$\\dagger$}}"),
     ("Dagger", "{\\mbox{$\\ddagger$}}"),
     ("hellip", "{\\mbox{$\\ldots$}}"),
     ("lfloor", "{\\mbox{$\\lfloor$}}"),
     ("rfloor", "{\\mbox{$\\rfloor$}}"),
     ("spades", "{\\mbox{$\\spadesuit$}}"),
     ("hearts", "{\\mbox{$\\varheartsuit$}}"),
     ("plusmn", "{\\mbox{$\\pm$}}"), ("divide", "{\\mbox{$\\div$}}"),
     ("Scaron", "{\\mbox{$\\text{\\v{S}}$}}"),
     ("scaron", "{\\mbox{$\\text{\\v{s}}$}}"),
     ("thinsp", "{\\mbox{$\\,$}}"),
     ("permil", "{\\mbox{$\\text{\\textperthousand}$}}"),
     ("lsaquo", "{\\mbox{$\\text{\\guilsinglleft}$}}"),
     ("rsaquo", "{\\mbox{$\\text{\\guilsinglright}$}}"),
     ("curren", "{\\mbox{$\\text{\\currency}$}}"),
     ("brvbar", "{\\mbox{$\\text{\\textbrokenbar}$}}"),
     ("middot", "{\\mbox{$\\cdot$}}"),
     ("frac14", "{\\mbox{$\\frac{1}{4}$}}"),
     ("frac12", "{\\mbox{$\\frac{1}{2}$}}"),
     ("frac34", "{\\mbox{$\\frac{3}{4}$}}"),
     ("iquest", "{\\mbox{$\\text{\\textquestiondown}$}}"),
     ("Agrave", "{\\mbox{$\\text{\\`A}$}}"),
     ("Aacute", "{\\mbox{$\\text{\\'A}$}}"),
     ("Atilde", "{\\mbox{$\\text{\\~A}$}}"),
     ("Ccedil", "{\\mbox{$\\text{\\c{C}}$}}"),
     ("Egrave", "{\\mbox{$\\text{\\`E}$}}"),
     ("Eacute", "{\\mbox{$\\text{\\'E}$}}"),
     ("Igrave", "{\\mbox{$\\text{\\`I}$}}"),
     ("Iacute", "{\\mbox{$\\text{\\'I}$}}"),
     ("Ntilde", "{\\mbox{$\\text{\\~N}$}}"),
     ("Ograve", "{\\mbox{$\\text{\\`O}$}}"),
     ("Oacute", "{\\mbox{$\\text{\\'O}$}}"),
     ("Otilde", "{\\mbox{$\\text{\\~O}$}}"),
     ("Oslash", "{\\mbox{$\\O$}}"),
     ("Ugrave", "{\\mbox{$\\text{\\`U}$}}"),
     ("Uacute", "{\\mbox{$\\text{\\'U}$}}"),
     ("Yacute", "{\\mbox{$\\text{\\'Y}$}}"),
     ("agrave", "{\\mbox{$\\text{\\`a}$}}"),
     ("aacute", "{\\mbox{$\\text{\\'a}$}}"),
     ("atilde", "{\\mbox{$\\text{\\~a}$}}"),
     ("ccedil", "{\\mbox{$\\text{\\c{c}}$}}"),
     ("egrave", "{\\mbox{$\\text{\\`e}$}}"),
     ("eacute", "{\\mbox{$\\text{\\'e}$}}"),
     ("igrave", "{\\mbox{$\\text{\\`i}$}}"),
     ("iacute", "{\\mbox{$\\text{\\'i}$}}"),
     ("ntilde", "{\\mbox{$\\text{\\~n}$}}"),
     ("ograve", "{\\mbox{$\\text{\\`o}$}}"),
     ("oacute", "{\\mbox{$\\text{\\'o}$}}"),
     ("otilde", "{\\mbox{$\\text{\\~o}$}}"),
     ("oslash", "{\\mbox{$\\o$}}"),
     ("ugrave", "{\\mbox{$\\text{\\`u}$}}"),
     ("uacute", "{\\mbox{$\\text{\\'u}$}}"),
     ("yacute", "{\\mbox{$\\text{\\'y}$}}"), ("#x202f", "{\\,}"),
     ("#8704", "{\\mbox{$\\forall$}}"),
     ("#8706", "{\\mbox{$\\partial$}}"),
     ("#8707", "{\\mbox{$\\exists$}}"),
     ("exist", "{\\mbox{$\\exists$}}"),
     ("#8709", "{\\mbox{$\\varnothing$}}"),
     ("empty", "{\\mbox{$\\varnothing$}}"),
     ("#8711", "{\\mbox{$\\nabla$}}"), ("nabla", "{\\mbox{$\\nabla$}}"),
     ("#8712", "{\\mbox{$\\in$}}"), ("#8713", "{\\mbox{$\\notin$}}"),
     ("notin", "{\\mbox{$\\notin$}}"), ("#8715", "{\\mbox{$\\ni$}}"),
     ("#8719", "{\\mbox{$\\prod$}}"), ("#8721", "{\\mbox{$\\sum$}}"),
     ("#8722", "{\\mbox{$-$}}"), ("minus", "{\\mbox{$-$}}"),
     ("#8727", "{\\mbox{$\\ast$}}"), ("#8730", "{\\mbox{$\\sqrt$}}"),
     ("radic", "{\\mbox{$\\sqrt$}}"), ("#8733", "{\\mbox{$\\propto$}}"),
     ("#8734", "{\\mbox{$\\infty$}}"), ("infin", "{\\mbox{$\\infty$}}"),
     ("#8736", "{\\mbox{$\\angle$}}"), ("#8743", "{\\mbox{$\\wedge$}}"),
     ("#8744", "{\\mbox{$\\vee$}}"), ("#8745", "{\\mbox{$\\cap$}}"),
     ("#8746", "{\\mbox{$\\cup$}}"), ("#8747", "{\\mbox{$\\int$}}"),
     ("#8756", "{\\mbox{$\\therefore$}}"),
     ("#8764", "{\\mbox{$\\sim$}}"), ("#8773", "{\\mbox{$\\cong$}}"),
     ("#8776", "{\\mbox{$\\approx$}}"),
     ("asymp", "{\\mbox{$\\approx$}}"), ("#8800", "{\\mbox{$\\neq$}}"),
     ("#8801", "{\\mbox{$\\equiv$}}"), ("equiv", "{\\mbox{$\\equiv$}}"),
     ("#8804", "{\\mbox{$\\leq$}}"), ("#8805", "{\\mbox{$\\geq$}}"),
     ("#8834", "{\\mbox{$\\subset$}}"),
     ("#8835", "{\\mbox{$\\supset$}}"),
     ("#8836", "{\\mbox{$\\nsubset$}}"),
     ("#8838", "{\\mbox{$\\subseteq$}}"),
     ("#8839", "{\\mbox{$\\supseteq$}}"),
     ("#8853", "{\\mbox{$\\oplus$}}"), ("oplus", "{\\mbox{$\\oplus$}}"),
     ("#8855", "{\\mbox{$\\otimes$}}"), ("#8869", "{\\mbox{$\\bot$}}"),
     ("#8901", "{\\mbox{$\\cdot$}}"), ("Gamma", "{\\mbox{$\\Gamma$}}"),
     ("Delta", "{\\mbox{$\\Delta$}}"), ("Theta", "{\\mbox{$\\Theta$}}"),
     ("Sigma", "{\\mbox{$\\Sigma$}}"), ("Omega", "{\\mbox{$\\Omega$}}"),
     ("alpha", "{\\mbox{$\\alpha$}}"), ("gamma", "{\\mbox{$\\gamma$}}"),
     ("delta", "{\\mbox{$\\delta$}}"), ("theta", "{\\mbox{$\\theta$}}"),
     ("kappa", "{\\mbox{$\\kappa$}}"), ("sigma", "{\\mbox{$\\sigma$}}"),
     ("omega", "{\\mbox{$\\omega$}}"),
     ("#8224", "{\\mbox{$\\dagger$}}"),
     ("#8225", "{\\mbox{$\\ddagger$}}"),
     ("#8230", "{\\mbox{$\\ldots$}}"), ("#8242", "{\\mbox{$\\prime$}}"),
     ("prime", "{\\mbox{$\\prime$}}"),
     ("#8243", "{\\mbox{$\\second$}}"),
     ("Prime", "{\\mbox{$\\second$}}"),
     ("#8592", "{\\mbox{$\\leftarrow$}}"),
     ("#8593", "{\\mbox{$\\uparrow$}}"),
     ("#8594", "{\\mbox{$\\rightarrow$}}"),
     ("#8595", "{\\mbox{$\\downarrow$}}"),
     ("#8596", "{\\mbox{$\\leftrightarrow$}}"),
     ("#8968", "{\\mbox{$\\lceil$}}"), ("lceil", "{\\mbox{$\\lceil$}}"),
     ("#8969", "{\\mbox{$\\rceil$}}"), ("rceil", "{\\mbox{$\\rceil$}}"),
     ("#8970", "{\\mbox{$\\lfloor$}}"),
     ("#8971", "{\\mbox{$\\rfloor$}}"),
     ("#9674", "{\\mbox{$\\lozenge$}}"),
     ("#9824", "{\\mbox{$\\spadesuit$}}"),
     ("#9827", "{\\mbox{$\\clubsuit$}}"),
     ("clubs", "{\\mbox{$\\clubsuit$}}"),
     ("#9829", "{\\mbox{$\\varheartsuit$}}"),
     ("#9830", "{\\mbox{$\\vardiamondsuit$}}"),
     ("diams", "{\\mbox{$\\vardiamondsuit$}}"),
     ("pound", "{\\mbox{$\\pounds$}}"),
     ("micro", "{\\mbox{$\\Micro$}}"), ("times", "{\\mbox{$\\times$}}"),
     ("Alpha", "{\\mbox{$\\Alpha$}}"), ("Kappa", "{\\mbox{$\\Kappa$}}"),
     ("upsih", "{\\mbox{$\\Upsilon$}}"),
     ("OElig", "{\\mbox{$\\text{\\OE}$}}"),
     ("oelig", "{\\mbox{$\\text{\\oe}$}}"),
     ("tilde", "{\\mbox{$\\text{\\~{}}$}}"),
     ("#8194", "{\\mbox{$\\text{ }$}}"),
     ("#8195", "{\\mbox{$\\text{\\hspace*{1em}}$}}"),
     ("#8201", "{\\mbox{$\\,$}}"), ("#8211", "{\\mbox{$-$}}"),
     ("ndash", "{\\mbox{$-$}}"), ("#8212", "{\\mbox{$\\text{---}$}}"),
     ("mdash", "{\\mbox{$\\text{---}$}}"),
     ("#8216", "{\\mbox{$\\text{\\textquoteleft}$}}"),
     ("lsquo", "{\\mbox{$\\text{\\textquoteleft}$}}"),
     ("#8217", "{\\mbox{$\\text{\\textquoteright}$}}"),
     ("rsquo", "{\\mbox{$\\text{\\textquoteright}$}}"),
     ("#8218", "{\\mbox{$\\text{\\quotesinglbase}$}}"),
     ("sbquo", "{\\mbox{$\\text{\\quotesinglbase}$}}"),
     ("#8220", "{\\mbox{$\\text{\\textquotedblleft}$}}"),
     ("ldquo", "{\\mbox{$\\text{\\textquotedblleft}$}}"),
     ("#8221", "{\\mbox{$\\text{\\textquotedblright}$}}"),
     ("rdquo", "{\\mbox{$\\text{\\textquotedblright}$}}"),
     ("#8222", "{\\mbox{$\\text{\\quotedblbase}$}}"),
     ("bdquo", "{\\mbox{$\\text{\\quotedblbase}$}}"),
     ("#8226", "{\\mbox{$\\bullet$}}"),
     ("#8240", "{\\mbox{$\\text{\\textperthousand}$}}"),
     ("#8249", "{\\mbox{$\\text{\\guilsinglleft}$}}"),
     ("#8250", "{\\mbox{$\\text{\\guilsinglright}$}}"),
     ("#8254", "{\\mbox{$\\text{\\textasciimacron}$}}"),
     ("oline", "{\\mbox{$\\text{\\textasciimacron}$}}"),
     ("#8364", "{\\mbox{$\\text{\\EUR}$}}"),
     ("#8482", "{\\mbox{$\\text{\\texttrademark}$}}"),
     ("trade", "{\\mbox{$\\text{\\texttrademark}$}}"),
     ("#8629", "{\\mbox{$\\hookleftarrow$}}"),
     ("crarr", "{\\mbox{$\\hookleftarrow$}}"),
     ("iexcl", "{\\mbox{$\\text{\\textexclamdown}$}}"),
     ("laquo", "{\\mbox{$\\text{\\guillemotleft}$}}"),
     ("acute", "{\\mbox{$\\text{\\'{}}$}}"),
     ("cedil", "{\\mbox{$\\c{}$}}"),
     ("raquo", "{\\mbox{$\\text{\\guillemotright}$}}"),
     ("Acirc", "{\\mbox{$\\text{\\^A}$}}"),
     ("Aring", "{\\mbox{$\\text{\\r{A}}$}}"),
     ("AElig", "{\\mbox{$\\text{\\AE}$}}"),
     ("Ecirc", "{\\mbox{$\\text{\\^E}$}}"),
     ("Icirc", "{\\mbox{$\\text{\\^I}$}}"),
     ("Ocirc", "{\\mbox{$\\text{\\^O}$}}"),
     ("Ucirc", "{\\mbox{$\\text{\\^U}$}}"),
     ("THORN", "{\\mbox{$\\text{\\Thorn}$}}"),
     ("szlig", "{\\mbox{$\\text{\\ss}$}}"),
     ("acirc", "{\\mbox{$\\text{\\^a}$}}"),
     ("aring", "{\\mbox{$\\text{\\r{a}}$}}"),
     ("aelig", "{\\mbox{$\\text{\\ae}$}}"),
     ("ecirc", "{\\mbox{$\\text{\\^e}$}}"),
     ("icirc", "{\\mbox{$\\text{\\^i}$}}"),
     ("ocirc", "{\\mbox{$\\text{\\^o}$}}"),
     ("ucirc", "{\\mbox{$\\text{\\^u}$}}"),
     ("thorn", "{\\mbox{$\\text{\\thorn}$}}"),
     ("part", "{\\mbox{$\\partial$}}"), ("isin", "{\\mbox{$\\in$}}"),
     ("prod", "{\\mbox{$\\prod$}}"), ("prop", "{\\mbox{$\\propto$}}"),
     ("cong", "{\\mbox{$\\cong$}}"), ("nsub", "{\\mbox{$\\nsubset$}}"),
     ("sube", "{\\mbox{$\\subseteq$}}"),
     ("supe", "{\\mbox{$\\supseteq$}}"), ("perp", "{\\mbox{$\\bot$}}"),
     ("sdot", "{\\mbox{$\\cdot$}}"), ("#915", "{\\mbox{$\\Gamma$}}"),
     ("#916", "{\\mbox{$\\Delta$}}"), ("#920", "{\\mbox{$\\Theta$}}"),
     ("#923", "{\\mbox{$\\Lambda$}}"), ("#926", "{\\mbox{$\\Xi$}}"),
     ("#928", "{\\mbox{$\\Pi$}}"), ("#931", "{\\mbox{$\\Sigma$}}"),
     ("#933", "{\\mbox{$\\Upsilon$}}"), ("#934", "{\\mbox{$\\Phi$}}"),
     ("#936", "{\\mbox{$\\Psi$}}"), ("#937", "{\\mbox{$\\Omega$}}"),
     ("#945", "{\\mbox{$\\alpha$}}"), ("#946", "{\\mbox{$\\beta$}}"),
     ("beta", "{\\mbox{$\\beta$}}"), ("#947", "{\\mbox{$\\gamma$}}"),
     ("#948", "{\\mbox{$\\delta$}}"),
     ("#949", "{\\mbox{$\\varepsilon$}}"),
     ("#950", "{\\mbox{$\\zeta$}}"), ("zeta", "{\\mbox{$\\zeta$}}"),
     ("#951", "{\\mbox{$\\eta$}}"), ("#952", "{\\mbox{$\\theta$}}"),
     ("#953", "{\\mbox{$\\iota$}}"), ("iota", "{\\mbox{$\\iota$}}"),
     ("#954", "{\\mbox{$\\kappa$}}"), ("#955", "{\\mbox{$\\lambda$}}"),
     ("#956", "{\\mbox{$\\mu$}}"), ("#957", "{\\mbox{$\\nu$}}"),
     ("#958", "{\\mbox{$\\xi$}}"), ("#960", "{\\mbox{$\\pi$}}"),
     ("#961", "{\\mbox{$\\rho$}}"), ("#962", "{\\mbox{$\\varsigma$}}"),
     ("#963", "{\\mbox{$\\sigma$}}"), ("#964", "{\\mbox{$\\tau$}}"),
     ("#965", "{\\mbox{$\\upsilon$}}"),
     ("#966", "{\\mbox{$\\varphi$}}"), ("#967", "{\\mbox{$\\chi$}}"),
     ("#968", "{\\mbox{$\\psi$}}"), ("#969", "{\\mbox{$\\omega$}}"),
     ("#977", "{\\mbox{$\\vartheta$}}"),
     ("#982", "{\\mbox{$\\varpi$}}"), ("#402", "{\\mbox{$f$}}"),
     ("fnof", "{\\mbox{$f$}}"), ("larr", "{\\mbox{$\\leftarrow$}}"),
     ("uarr", "{\\mbox{$\\uparrow$}}"),
     ("rarr", "{\\mbox{$\\rightarrow$}}"),
     ("darr", "{\\mbox{$\\downarrow$}}"),
     ("harr", "{\\mbox{$\\leftrightarrow$}}"),
     ("#160", "{\\mbox{$~$}}"), ("nbsp", "{\\mbox{$~$}}"),
     ("#162", "{\\mbox{$\\cent$}}"), ("cent", "{\\mbox{$\\cent$}}"),
     ("#163", "{\\mbox{$\\pounds$}}"), ("#165", "{\\mbox{$\\yen$}}"),
     ("#168", "{\\mbox{$\\spddot$}}"), ("#172", "{\\mbox{$\\neg$}}"),
     ("#174", "{\\mbox{$\\circledR$}}"), ("#177", "{\\mbox{$\\pm$}}"),
     ("#181", "{\\mbox{$\\Micro$}}"), ("#215", "{\\mbox{$\\times$}}"),
     ("#247", "{\\mbox{$\\div$}}"), ("#240", "{\\mbox{$\\eth$}}"),
     ("#913", "{\\mbox{$\\Alpha$}}"), ("#914", "{\\mbox{$\\Beta$}}"),
     ("Beta", "{\\mbox{$\\Beta$}}"), ("#917", "{\\mbox{$\\Epsilon$}}"),
     ("#918", "{\\mbox{$\\Zeta$}}"), ("Zeta", "{\\mbox{$\\Zeta$}}"),
     ("#919", "{\\mbox{$\\Eta$}}"), ("#921", "{\\mbox{$\\Iota$}}"),
     ("Iota", "{\\mbox{$\\Iota$}}"), ("#922", "{\\mbox{$\\Kappa$}}"),
     ("#924", "{\\mbox{$\\Mu$}}"), ("#925", "{\\mbox{$\\Nu$}}"),
     ("#927", "{\\mbox{$\\text{O}$}}"), ("#929", "{\\mbox{$\\Rho$}}"),
     ("#932", "{\\mbox{$\\Tau$}}"), ("#935", "{\\mbox{$\\Chi$}}"),
     ("#959", "{\\mbox{$\\text{o}$}}"),
     ("#978", "{\\mbox{$\\Upsilon$}}"),
     ("#338", "{\\mbox{$\\text{\\OE}$}}"),
     ("#339", "{\\mbox{$\\text{\\oe}$}}"),
     ("#352", "{\\mbox{$\\text{\\v{S}}$}}"),
     ("#353", "{\\mbox{$\\text{\\v{s}}$}}"),
     ("#376", "{\\mbox{$\\text{\\\"Y}$}}"),
     ("Yuml", "{\\mbox{$\\text{\\\"Y}$}}"),
     ("#710", "{\\mbox{$\\text{\\^{}}$}}"),
     ("circ", "{\\mbox{$\\text{\\^{}}$}}"),
     ("#732", "{\\mbox{$\\text{\\~{}}$}}"),
     ("ensp", "{\\mbox{$\\text{ }$}}"),
     ("emsp", "{\\mbox{$\\text{\\hspace*{1em}}$}}"),
     ("bull", "{\\mbox{$\\bullet$}}"),
     ("euro", "{\\mbox{$\\text{\\EUR}$}}"),
     ("quot", "{\\mbox{$\\text{\\symbol{34}}$}}"),
     ("#161", "{\\mbox{$\\text{\\textexclamdown}$}}"),
     ("#164", "{\\mbox{$\\text{\\currency}$}}"),
     ("#166", "{\\mbox{$\\text{\\textbrokenbar}$}}"),
     ("#167", "{\\mbox{$\\text{\\S}$}}"),
     ("sect", "{\\mbox{$\\text{\\S}$}}"),
     ("#169", "{\\mbox{$\\copyright$}}"),
     ("copy", "{\\mbox{$\\copyright$}}"),
     ("#170", "{\\mbox{$\\text{\\textordfeminine{}}$}}"),
     ("ordf", "{\\mbox{$\\text{\\textordfeminine{}}$}}"),
     ("#171", "{\\mbox{$\\text{\\guillemotleft}$}}"),
     ("#173", "{\\mbox{$\\text{\\-}$}}"),
     ("#175", "{\\mbox{$\\text{\\textasciimacron}$}}"),
     ("macr", "{\\mbox{$\\text{\\textasciimacron}$}}"),
     ("#176", "{\\mbox{$^\\circ$}}"), ("#178", "{\\mbox{${}^2$}}"),
     ("sup2", "{\\mbox{${}^2$}}"), ("#179", "{\\mbox{${}^3$}}"),
     ("sup3", "{\\mbox{${}^3$}}"),
     ("#180", "{\\mbox{$\\text{\\'{}}$}}"),
     ("#182", "{\\mbox{$\\text{\\textparagraph}$}}"),
     ("para", "{\\mbox{$\\text{\\textparagraph}$}}"),
     ("#183", "{\\mbox{$\\cdot$}}"), ("#184", "{\\mbox{$\\c{}$}}"),
     ("#185", "{\\mbox{${}^1$}}"), ("sup1", "{\\mbox{${}^1$}}"),
     ("#186", "{\\mbox{$\\text{\\textordmasculine{}}$}}"),
     ("ordm", "{\\mbox{$\\text{\\textordmasculine{}}$}}"),
     ("#187", "{\\mbox{$\\text{\\guillemotright}$}}"),
     ("#188", "{\\mbox{$\\frac{1}{4}$}}"),
     ("#189", "{\\mbox{$\\frac{1}{2}$}}"),
     ("#190", "{\\mbox{$\\frac{3}{4}$}}"),
     ("#191", "{\\mbox{$\\text{\\textquestiondown}$}}"),
     ("#192", "{\\mbox{$\\text{\\`A}$}}"),
     ("#193", "{\\mbox{$\\text{\\'A}$}}"),
     ("#194", "{\\mbox{$\\text{\\^A}$}}"),
     ("#195", "{\\mbox{$\\text{\\~A}$}}"),
     ("#196", "{\\mbox{$\\text{\\\"A}$}}"),
     ("Auml", "{\\mbox{$\\text{\\\"A}$}}"),
     ("#197", "{\\mbox{$\\text{\\r{A}}$}}"),
     ("#198", "{\\mbox{$\\text{\\AE}$}}"),
     ("#199", "{\\mbox{$\\text{\\c{C}}$}}"),
     ("#200", "{\\mbox{$\\text{\\`E}$}}"),
     ("#201", "{\\mbox{$\\text{\\'E}$}}"),
     ("#202", "{\\mbox{$\\text{\\^E}$}}"),
     ("#203", "{\\mbox{$\\text{\\\"E}$}}"),
     ("Euml", "{\\mbox{$\\text{\\\"E}$}}"),
     ("#204", "{\\mbox{$\\text{\\`I}$}}"),
     ("#205", "{\\mbox{$\\text{\\'I}$}}"),
     ("#206", "{\\mbox{$\\text{\\^I}$}}"),
     ("#207", "{\\mbox{$\\text{\\\"I}$}}"),
     ("Iuml", "{\\mbox{$\\text{\\\"I}$}}"),
     ("#208", "{\\mbox{$\\DH$}}"), ("#209", "{\\mbox{$\\text{\\~N}$}}"),
     ("#210", "{\\mbox{$\\text{\\`O}$}}"),
     ("#211", "{\\mbox{$\\text{\\'O}$}}"),
     ("#212", "{\\mbox{$\\text{\\^O}$}}"),
     ("#213", "{\\mbox{$\\text{\\~O}$}}"),
     ("#214", "{\\mbox{$\\text{\\\"O}$}}"),
     ("Ouml", "{\\mbox{$\\text{\\\"O}$}}"), ("#216", "{\\mbox{$\\O$}}"),
     ("#217", "{\\mbox{$\\text{\\`U}$}}"),
     ("#218", "{\\mbox{$\\text{\\'U}$}}"),
     ("#219", "{\\mbox{$\\text{\\^U}$}}"),
     ("#220", "{\\mbox{$\\text{\\\"U}$}}"),
     ("Uuml", "{\\mbox{$\\text{\\\"U}$}}"),
     ("#221", "{\\mbox{$\\text{\\'Y}$}}"),
     ("#222", "{\\mbox{$\\text{\\Thorn}$}}"),
     ("#223", "{\\mbox{$\\text{\\ss}$}}"),
     ("#224", "{\\mbox{$\\text{\\`a}$}}"),
     ("#225", "{\\mbox{$\\text{\\'a}$}}"),
     ("#226", "{\\mbox{$\\text{\\^a}$}}"),
     ("#227", "{\\mbox{$\\text{\\~a}$}}"),
     ("#228", "{\\mbox{$\\text{\\\"a}$}}"),
     ("auml", "{\\mbox{$\\text{\\\"a}$}}"),
     ("#229", "{\\mbox{$\\text{\\r{a}}$}}"),
     ("#230", "{\\mbox{$\\text{\\ae}$}}"),
     ("#231", "{\\mbox{$\\text{\\c{c}}$}}"),
     ("#232", "{\\mbox{$\\text{\\`e}$}}"),
     ("#233", "{\\mbox{$\\text{\\'e}$}}"),
     ("#234", "{\\mbox{$\\text{\\^e}$}}"),
     ("#235", "{\\mbox{$\\text{\\\"e}$}}"),
     ("euml", "{\\mbox{$\\text{\\\"e}$}}"),
     ("#236", "{\\mbox{$\\text{\\`i}$}}"),
     ("#237", "{\\mbox{$\\text{\\'i}$}}"),
     ("#238", "{\\mbox{$\\text{\\^i}$}}"),
     ("#239", "{\\mbox{$\\text{\\\"i}$}}"),
     ("iuml", "{\\mbox{$\\text{\\\"i}$}}"),
     ("#241", "{\\mbox{$\\text{\\~n}$}}"),
     ("#242", "{\\mbox{$\\text{\\`o}$}}"),
     ("#243", "{\\mbox{$\\text{\\'o}$}}"),
     ("#244", "{\\mbox{$\\text{\\^o}$}}"),
     ("#245", "{\\mbox{$\\text{\\~o}$}}"),
     ("#246", "{\\mbox{$\\text{\\\"o}$}}"),
     ("ouml", "{\\mbox{$\\text{\\\"o}$}}"), ("#248", "{\\mbox{$\\o$}}"),
     ("#249", "{\\mbox{$\\text{\\`u}$}}"),
     ("#250", "{\\mbox{$\\text{\\'u}$}}"),
     ("#251", "{\\mbox{$\\text{\\^u}$}}"),
     ("#252", "{\\mbox{$\\text{\\\"u}$}}"),
     ("uuml", "{\\mbox{$\\text{\\\"u}$}}"),
     ("#253", "{\\mbox{$\\text{\\'y}$}}"),
     ("#254", "{\\mbox{$\\text{\\thorn}$}}"),
     ("#255", "{\\mbox{$\\text{\\\"y}$}}"),
     ("yuml", "{\\mbox{$\\text{\\\"y}$}}"),
     ("sum", "{\\mbox{$\\sum$}}"), ("ang", "{\\mbox{$\\angle$}}"),
     ("and", "{\\mbox{$\\wedge$}}"), ("cap", "{\\mbox{$\\cap$}}"),
     ("cup", "{\\mbox{$\\cup$}}"), ("int", "{\\mbox{$\\int$}}"),
     ("sim", "{\\mbox{$\\sim$}}"), ("sub", "{\\mbox{$\\subset$}}"),
     ("sup", "{\\mbox{$\\supset$}}"), ("Phi", "{\\mbox{$\\Phi$}}"),
     ("Psi", "{\\mbox{$\\Psi$}}"), ("eta", "{\\mbox{$\\eta$}}"),
     ("rho", "{\\mbox{$\\rho$}}"), ("tau", "{\\mbox{$\\tau$}}"),
     ("phi", "{\\mbox{$\\varphi$}}"), ("chi", "{\\mbox{$\\chi$}}"),
     ("psi", "{\\mbox{$\\psi$}}"), ("piv", "{\\mbox{$\\varpi$}}"),
     ("loz", "{\\mbox{$\\lozenge$}}"), ("#38", "{\\mbox{$\\&$}}"),
     ("amp", "{\\mbox{$\\&$}}"), ("#60", "{\\mbox{$<$}}"),
     ("#62", "{\\mbox{$>$}}"), ("yen", "{\\mbox{$\\yen$}}"),
     ("uml", "{\\mbox{$\\spddot$}}"), ("not", "{\\mbox{$\\neg$}}"),
     ("reg", "{\\mbox{$\\circledR$}}"), ("eth", "{\\mbox{$\\eth$}}"),
     ("Eta", "{\\mbox{$\\Eta$}}"), ("Rho", "{\\mbox{$\\Rho$}}"),
     ("Tau", "{\\mbox{$\\Tau$}}"), ("Chi", "{\\mbox{$\\Chi$}}"),
     ("#34", "{\\mbox{$\\text{\\symbol{34}}$}}"),
     ("shy", "{\\mbox{$\\text{\\-}$}}"), ("deg", "{\\mbox{$^\\circ$}}"),
     ("ETH", "{\\mbox{$\\DH$}}"), ("ni", "{\\mbox{$\\ni$}}"),
     ("or", "{\\mbox{$\\vee$}}"), ("ne", "{\\mbox{$\\neq$}}"),
     ("le", "{\\mbox{$\\leq$}}"), ("ge", "{\\mbox{$\\geq$}}"),
     ("Xi", "{\\mbox{$\\Xi$}}"), ("Pi", "{\\mbox{$\\Pi$}}"),
     ("mu", "{\\mbox{$\\mu$}}"), ("nu", "{\\mbox{$\\nu$}}"),
     ("xi", "{\\mbox{$\\xi$}}"), ("pi", "{\\mbox{$\\pi$}}"),
     ("lt", "{\\mbox{$<$}}"), ("weierp", "{\\mbox{$\\wp$}}"),
     ("image", "{\\mbox{$\\Im$}}"), ("real", "{\\mbox{$\\Re$}}"),
     ("alefsym", "{\\mbox{$\\aleph$}}"),
     ("uArr", "{\\mbox{$\\Uparrow$}}"),
     ("rArr", "{\\mbox{$\\Rightarrow$}}"),
     ("dArr", "{\\mbox{$\\Downarrow$}}"),
     ("hArr", "{\\mbox{$\\Leftrightarrow$}}"),
     ("lArr", "{\\mbox{$\\Leftarrow$}}"),
     ("rang", "{\\mbox{$\\rangle$}}"), ("lang", "{\\mbox{$\\langle$}}"),
     ("zwnj", "{}"), ("zwj", ""), ("lrm", ""), ("rlm", ""),
     ("gt", "{\\mbox{$>$}}"), ("Mu", "{\\mbox{$\\Mu$}}"),
     ("#151", "{--}"), ("Nu", "{\\mbox{$\\Nu$}}"), ("frasl", "\8260")]
 
{-DHUN| get latex representation of HTML entity like &amp; DHUN-}
 
getHtmlChar :: String -> String
getHtmlChar x = Map.findWithDefault [] x (Map.fromList htmlchars)
 
removePrintVersion :: [Char] -> [Char]
removePrintVersion lem
  = fun
      ["/Print version", "/Complete Wikibook", "/All Chapters",
       "/Print Version", "/print version", "/Printable version", "/The Whole Book"]
      lem
  where fun (y : ys) x
          = case splitOn y x of
                (z : _) -> fun ys z
                _ -> []
        fun [] x = x
 
{-DHUN| Nearly all HTML tags DHUN-}
 
goodtags1 :: [[Char]]
goodtags1
  = ["includeonly", "references", "blockquote", "noinclude",
     "noframes", "frameset", "colgroup", "fieldset", "basefont",
     "!DOCTYPE", "noscript", "address", "acronym", "caption", "strong",
     "applet", "script", "button", "select", "section", "legend",
     "strike", "object", "input", "center", "legend", "iframe", "small",
     "video", "audio", "style", "input", "label", "tbody", "thead",
     "title", "frame", "param", "base", "area", "font", "code", "span",
     "abbr", "body", "link", "menu", "meta", "samp", "cite", "head",
     "html", "poem", "form", "cite", "ref", "div", "pre", "sub", "sup",
     "big", "del", "map", "bdo", "var", "dfn", "kbd", "col", "ins",
     "dir", "img", "h1", "h2", "h3", "h4", "h5", "h6", "li", "ul", "ol",
     "tt", "dd", "dl", "dt", "hr", "em", "b", "i", "s", "u", "p", "q",
     "a"]
 
{-DHUN| HTML tags for tables rows in tables and so on, only lower case DHUN-}
 
tabletags :: [[Char]]
tabletags = ["table", "td", "th", "tr"]
 
{-DHUN| HTML tags for tables rows in tables and so on, lower case as well as upper case  DHUN-}
 
listOfTableTags :: [[Char]]
listOfTableTags = tabletags ++ (map (map toUpper) tabletags)
 
{-DHUN| All HTML tags DHUN-}
 
listOfTags :: [[Char]]
listOfTags = goodtags1 ++ (map (map toUpper) goodtags1)
 
{-DHUN| Character escaping from Unicode to latex DHUN-}
 
chartrans :: Char -> String
chartrans '\'' = "\\textquotesingle{}"
chartrans '[' = "{$\\text{[}$}"
chartrans ']' = "{$\\text{]}$}"
chartrans '&' = "\\&"
chartrans '%' = "\\%"
chartrans '{' = "\\{"
chartrans '}' = "\\}"
chartrans '_' = "\\_"
chartrans '$' = "\\${}"
chartrans '#' = "\\#"
chartrans '~' = "\\~{}"
chartrans '^' = "\\^{}"
chartrans '"' = "\\symbol{34}"
chartrans '\\' = "\\textbackslash{}"
chartrans '<' = "<{}"
chartrans '>' = ">{}"
chartrans '-' = "-{}"
chartrans c = c : []
 
{-DHUN| Character escaping from Unicode to web links inside latex with the URL package DHUN-}
 
chartransforlink :: Char -> String
chartransforlink '&' = "\\&"
chartransforlink '%' = "\\%"
chartransforlink '{' = "\\{"
chartransforlink '}' = "\\}"
chartransforlink '#' = "\\#"
chartransforlink '$' = "\\${}"
chartransforlink '\\' = "\\textbackslash{}"
chartransforlink '<' = "<{}"
chartransforlink '>' = ">{}"
chartransforlink c
  | 127 < ord c =
    concat (map chartransforlink $ escapeURIString (const False) [c])
chartransforlink c = c : []