Advertisement
singmann

apa-bibtex & biber

Jan 25th, 2014
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {
  2.     "translatorID": "9cb70025-a888-4a29-a210-93ec52da40d4N",
  3.     "translatorType": 3,
  4.     "label": "BibTeX-Biber",
  5.     "creator": "Simon Kornblith, Richard Karnesky and Emiliano heyns and Henrik Singmann",
  6.     "target": "bib",
  7.     "minVersion": "2.1.9",
  8.     "maxVersion": null,
  9.     "priority": 200,
  10.     "inRepository": true,
  11.     "browserSupport": "gcsv",
  12.     "configOptions": {
  13.         "getCollections": "true"
  14.     },
  15.     "displayOptions": {
  16.         "exportCharset": "UTF-8",
  17.         "exportNotes": true,
  18.         "exportFileData": false,
  19.         "useJournalAbbreviation": false
  20.     },
  21.     "lastUpdated": "2014-02-10 18:15:00"
  22. }
  23.  
  24. function detectImport() {
  25.     var maxChars = 1048576; // 1MB
  26.    
  27.     var inComment = false;
  28.     var block = "";
  29.     var buffer = "";
  30.     var chr = "";
  31.     var charsRead = 0;
  32.    
  33.     var re = /^\s*@[a-zA-Z]+[\(\{]/;
  34.     while((buffer = Zotero.read(4096)) && charsRead < maxChars) {
  35.         Zotero.debug("Scanning " + buffer.length + " characters for BibTeX");
  36.         charsRead += buffer.length;
  37.         for (var i=0; i<buffer.length; i++) {
  38.             chr = buffer[i];
  39.            
  40.             if (inComment && chr != "\r" && chr != "\n") {
  41.                 continue;
  42.             }
  43.             inComment = false;
  44.            
  45.             if(chr == "%") {
  46.                 // read until next newline
  47.                 block = "";
  48.                 inComment = true;
  49.             } else if((chr == "\n" || chr == "\r"
  50.                 // allow one-line entries
  51.                         || i == (buffer.length - 1))
  52.                         && block) {
  53.                 // check if this is a BibTeX entry
  54.                 if(re.test(block)) {
  55.                     return true;
  56.                 }
  57.                
  58.                 block = "";
  59.             } else if(" \n\r\t".indexOf(chr) == -1) {
  60.                 block += chr;
  61.             }
  62.         }
  63.     }
  64. }
  65.  
  66. //%a = first author surname
  67. //%y = year
  68. //%t = first word of title
  69. var citeKeyFormat = "%a_%t_%y";
  70.  
  71. var fieldMap = {
  72.     address:"place",
  73.     chapter:"section",
  74.     edition:"edition",
  75.     type:"type",
  76.     series:"series",
  77.     title:"title",
  78.     volume:"volume",
  79.     copyright:"rights",
  80.     isbn:"ISBN",
  81.     issn:"ISSN",
  82.     lccn:"callNumber",
  83.     shorttitle:"shortTitle",
  84.     //url:"url",
  85.     doi:"DOI",
  86.     //abstract:"abstractNote",
  87.     nationality: "country",
  88.     language:"language",
  89.     assignee:"assignee"
  90. };
  91.  
  92. var inputFieldMap = {
  93.     booktitle :"publicationTitle",
  94.     school:"publisher",
  95.     institution:"publisher",
  96.     publisher:"publisher",
  97.     issue:"issue",
  98.     location:"place"
  99. };
  100.  
  101. var zotero2bibtexTypeMap = {
  102.     "book":"book",
  103.     "bookSection":"incollection",
  104.     "journalArticle":"article",
  105.     "magazineArticle":"article",
  106.     "newspaperArticle":"article",
  107.     "thesis":"phdthesis",
  108.     "letter":"misc",
  109.     "manuscript":"unpublished",
  110.     "patent" :"patent",
  111.     "interview":"misc",
  112.     "film":"misc",
  113.     "artwork":"misc",
  114.     "webpage":"misc",
  115.     "conferencePaper":"inproceedings",
  116.     "report":"techreport"
  117. };
  118.  
  119. var bibtex2zoteroTypeMap = {
  120.     "book":"book", // or booklet, proceedings
  121.     "inbook":"bookSection",
  122.     "incollection":"bookSection",
  123.     "article":"journalArticle", // or magazineArticle or newspaperArticle
  124.     "patent" :"patent",
  125.     "phdthesis":"thesis",
  126.     "unpublished":"manuscript",
  127.     "inproceedings":"conferencePaper", // check for conference also
  128.     "conference":"conferencePaper",
  129.     "techreport":"report",
  130.     "booklet":"book",
  131.     "manual":"book",
  132.     "mastersthesis":"thesis",
  133.     "misc":"book",
  134.     "proceedings":"book"
  135. };
  136.  
  137. /*
  138.  * three-letter month abbreviations. i assume these are the same ones that the
  139.  * docs say are defined in some appendix of the LaTeX book. (i don't have the
  140.  * LaTeX book.)
  141.  */
  142. var months = ["jan", "feb", "mar", "apr", "may", "jun",
  143.               "jul", "aug", "sep", "oct", "nov", "dec"];
  144.  
  145. var jabref = {
  146.     format: null,
  147.     root: {}
  148. };
  149.  
  150. /*
  151.  * new mapping table based on that from Matthias Steffens,
  152.  * then enhanced with some fields generated from the unicode table.
  153.  */
  154.  
  155. var mappingTable = {
  156.     "\u00A0":"~", // NO-BREAK SPACE
  157.     "\u00A1":"{\\textexclamdown}", // INVERTED EXCLAMATION MARK
  158.     "\u00A2":"{\\textcent}", // CENT SIGN
  159.     "\u00A3":"{\\textsterling}", // POUND SIGN
  160.     "\u00A5":"{\\textyen}", // YEN SIGN
  161.     "\u00A6":"{\\textbrokenbar}", // BROKEN BAR
  162.     "\u00A7":"{\\textsection}", // SECTION SIGN
  163.     "\u00A8":"{\\textasciidieresis}", // DIAERESIS
  164.     "\u00A9":"{\\textcopyright}", // COPYRIGHT SIGN
  165.     "\u00AA":"{\\textordfeminine}", // FEMININE ORDINAL INDICATOR
  166.     "\u00AB":"{\\guillemotleft}", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
  167.     "\u00AC":"{\\textlnot}", // NOT SIGN
  168.     "\u00AD":"-", // SOFT HYPHEN
  169.     "\u00AE":"{\\textregistered}", // REGISTERED SIGN
  170.     "\u00AF":"{\\textasciimacron}", // MACRON
  171.     "\u00B0":"{\\textdegree}", // DEGREE SIGN
  172.     "\u00B1":"{\\textpm}", // PLUS-MINUS SIGN
  173.     "\u00B2":"{\\texttwosuperior}", // SUPERSCRIPT TWO
  174.     "\u00B3":"{\\textthreesuperior}", // SUPERSCRIPT THREE
  175.     "\u00B4":"{\\textasciiacute}", // ACUTE ACCENT
  176.     "\u00B5":"{\\textmu}", // MICRO SIGN
  177.     "\u00B6":"{\\textparagraph}", // PILCROW SIGN
  178.     "\u00B7":"{\\textperiodcentered}", // MIDDLE DOT
  179.     "\u00B8":"{\\c\\ }", // CEDILLA
  180.     "\u00B9":"{\\textonesuperior}", // SUPERSCRIPT ONE
  181.     "\u00BA":"{\\textordmasculine}", // MASCULINE ORDINAL INDICATOR
  182.     "\u00BB":"{\\guillemotright}", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
  183.     "\u00BC":"{\\textonequarter}", // VULGAR FRACTION ONE QUARTER
  184.     "\u00BD":"{\\textonehalf}", // VULGAR FRACTION ONE HALF
  185.     "\u00BE":"{\\textthreequarters}", // VULGAR FRACTION THREE QUARTERS
  186.     "\u00BF":"{\\textquestiondown}", // INVERTED QUESTION MARK
  187.     "\u00C6":"{\\AE}", // LATIN CAPITAL LETTER AE
  188.     "\u00D0":"{\\DH}", // LATIN CAPITAL LETTER ETH
  189.     "\u00D7":"{\\texttimes}", // MULTIPLICATION SIGN
  190.     "\u00D8":"{\\O}", // LATIN CAPITAL LETTER O WITH STROKE
  191.     "\u00DE":"{\\TH}", // LATIN CAPITAL LETTER THORN
  192.     "\u00DF":"{\\ss}", // LATIN SMALL LETTER SHARP S
  193.     "\u00E6":"{\\ae}", // LATIN SMALL LETTER AE
  194.     "\u00F0":"{\\dh}", // LATIN SMALL LETTER ETH
  195.     "\u00F7":"{\\textdiv}", // DIVISION SIGN
  196.     "\u00F8":"{\\o}", // LATIN SMALL LETTER O WITH STROKE
  197.     "\u00FE":"{\\th}", // LATIN SMALL LETTER THORN
  198.     "\u0131":"{\\i}", // LATIN SMALL LETTER DOTLESS I
  199.     "\u0132":"IJ", // LATIN CAPITAL LIGATURE IJ
  200.     "\u0133":"ij", // LATIN SMALL LIGATURE IJ
  201.     "\u0138":"k", // LATIN SMALL LETTER KRA
  202.     "\u0149":"'n", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
  203.     "\u014A":"{\\NG}", // LATIN CAPITAL LETTER ENG
  204.     "\u014B":"{\\ng}", // LATIN SMALL LETTER ENG
  205.     "\u0152":"{\\OE}", // LATIN CAPITAL LIGATURE OE
  206.     "\u0153":"{\\oe}", // LATIN SMALL LIGATURE OE
  207.     "\u017F":"s", // LATIN SMALL LETTER LONG S
  208.     "\u02B9":"'", // MODIFIER LETTER PRIME
  209.     "\u02BB":"'", // MODIFIER LETTER TURNED COMMA
  210.     "\u02BC":"'", // MODIFIER LETTER APOSTROPHE
  211.     "\u02BD":"'", // MODIFIER LETTER REVERSED COMMA
  212.     "\u02C6":"{\\textasciicircum}", // MODIFIER LETTER CIRCUMFLEX ACCENT
  213.     "\u02C8":"'", // MODIFIER LETTER VERTICAL LINE
  214.     "\u02C9":"-", // MODIFIER LETTER MACRON
  215.     "\u02CC":",", // MODIFIER LETTER LOW VERTICAL LINE
  216.     "\u02D0":":", // MODIFIER LETTER TRIANGULAR COLON
  217.     "\u02DA":"o", // RING ABOVE
  218.     "\u02DC":"\\~{}", // SMALL TILDE
  219.     "\u02DD":"{\\textacutedbl}", // DOUBLE ACUTE ACCENT
  220.     "\u0374":"'", // GREEK NUMERAL SIGN
  221.     "\u0375":",", // GREEK LOWER NUMERAL SIGN
  222.     "\u037E":";", // GREEK QUESTION MARK
  223.     //Greek letters courtesy of spartanroc
  224.     "\u0393":"$\\Gamma$", // GREEK Gamma
  225.     "\u0394":"$\\Delta$", // GREEK Delta
  226.     "\u0398":"$\\Theta$", // GREEK Theta
  227.     "\u039B":"$\\Lambda$", // GREEK Lambda
  228.     "\u039E":"$\\Xi$", // GREEK Xi
  229.     "\u03A0":"$\\Pi$", // GREEK Pi
  230.     "\u03A3":"$\\Sigma$", // GREEK Sigma
  231.     "\u03A6":"$\\Phi$", // GREEK Phi
  232.     "\u03A8":"$\\Psi$", // GREEK Psi
  233.     "\u03A9":"$\\Omega$", // GREEK Omega
  234.     "\u03B1":"$\\alpha$", // GREEK alpha
  235.     "\u03B2":"$\\beta$", // GREEK beta
  236.     "\u03B3":"$\\gamma$", // GREEK gamma
  237.     "\u03B4":"$\\delta$", // GREEK delta
  238.     "\u03B5":"$\\varepsilon$", // GREEK var-epsilon
  239.     "\u03B6":"$\\zeta$", // GREEK zeta
  240.     "\u03B7":"$\\eta$", // GREEK eta
  241.     "\u03B8":"$\\theta$", // GREEK theta
  242.     "\u03B9":"$\\iota$", // GREEK iota
  243.     "\u03BA":"$\\kappa$", // GREEK kappa
  244.     "\u03BB":"$\\lambda$", // GREEK lambda
  245.     "\u03BC":"$\\mu$", // GREEK mu
  246.     "\u03BD":"$\\nu$", // GREEK nu
  247.     "\u03BE":"$\\xi$", // GREEK xi
  248.     "\u03C0":"$\\pi$", // GREEK pi
  249.     "\u03C1":"$\\rho$", // GREEK rho
  250.     "\u03C2":"$\\varsigma$", // GREEK var-sigma
  251.     "\u03C3":"$\\sigma$", // GREEK sigma
  252.     "\u03C4":"$\\tau$", // GREEK tau
  253.     "\u03C5":"$\\upsilon$", // GREEK upsilon
  254.     "\u03C6":"$\\varphi$", // GREEK var-phi
  255.     "\u03C7":"$\\chi$", // GREEK chi
  256.     "\u03C8":"$\\psi$", // GREEK psi
  257.     "\u03C9":"$\\omega$", // GREEK omega
  258.     "\u03D1":"$\\vartheta$", // GREEK var-theta
  259.     "\u03D2":"$\\Upsilon$", // GREEK Upsilon
  260.     "\u03D5":"$\\phi$", // GREEK phi
  261.     "\u03D6":"$\\varpi$", // GREEK var-pi
  262.     "\u03F1":"$\\varrho$", // GREEK var-rho
  263.     "\u03F5":"$\\epsilon$", // GREEK epsilon
  264.     //Greek letters end
  265.     "\u2000":" ", // EN QUAD
  266.     "\u2001":"  ", // EM QUAD
  267.     "\u2002":" ", // EN SPACE
  268.     "\u2003":"  ", // EM SPACE
  269.     "\u2004":" ", // THREE-PER-EM SPACE
  270.     "\u2005":" ", // FOUR-PER-EM SPACE
  271.     "\u2006":" ", // SIX-PER-EM SPACE
  272.     "\u2007":" ", // FIGURE SPACE
  273.     "\u2008":" ", // PUNCTUATION SPACE
  274.     "\u2009":" ", // THIN SPACE
  275.     "\u2010":"-", // HYPHEN
  276.     "\u2011":"-", // NON-BREAKING HYPHEN
  277.     "\u2012":"-", // FIGURE DASH
  278.     "\u2013":"{\\textendash}", // EN DASH
  279.     "\u2014":"{\\textemdash}", // EM DASH
  280.     "\u2015":"{\\textemdash}", // HORIZONTAL BAR or QUOTATION DASH (not in LaTeX -- use EM DASH)
  281.     "\u2016":"{\\textbardbl}", // DOUBLE VERTICAL LINE
  282.     "\u2017":"{\\textunderscore}", // DOUBLE LOW LINE
  283.     "\u2018":"{\\textquoteleft}", // LEFT SINGLE QUOTATION MARK
  284.     "\u2019":"{\\textquoteright}", // RIGHT SINGLE QUOTATION MARK
  285.     "`" : "\u2018", // LEFT SINGLE QUOTATION MARK
  286.     "'" : "\u2019", // RIGHT SINGLE QUOTATION MARK
  287.     "\u201A":"{\\quotesinglbase}", // SINGLE LOW-9 QUOTATION MARK
  288.     "\u201B":"'", // SINGLE HIGH-REVERSED-9 QUOTATION MARK
  289.     "\u201C":"{\\textquotedblleft}", // LEFT DOUBLE QUOTATION MARK
  290.     "\u201D":"{\\textquotedblright}", // RIGHT DOUBLE QUOTATION MARK
  291.     "\u201E":"{\\quotedblbase}", // DOUBLE LOW-9 QUOTATION MARK
  292.     "\u201F":"{\\quotedblbase}", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK
  293.     "\u2020":"{\\textdagger}", // DAGGER
  294.     "\u2021":"{\\textdaggerdbl}", // DOUBLE DAGGER
  295.     "\u2022":"{\\textbullet}", // BULLET
  296.     "\u2023":">", // TRIANGULAR BULLET
  297.     "\u2024":".", // ONE DOT LEADER
  298.     "\u2025":"..", // TWO DOT LEADER
  299.     "\u2026":"{\\textellipsis}", // HORIZONTAL ELLIPSIS
  300.     "\u2027":"-", // HYPHENATION POINT
  301.     "\u202F":" ", // NARROW NO-BREAK SPACE
  302.     "\u2030":"{\\textperthousand}", // PER MILLE SIGN
  303.     "\u2032":"'", // PRIME
  304.     "\u2033":"'", // DOUBLE PRIME
  305.     "\u2034":"'''", // TRIPLE PRIME
  306.     "\u2035":"`", // REVERSED PRIME
  307.     "\u2036":"``", // REVERSED DOUBLE PRIME
  308.     "\u2037":"```", // REVERSED TRIPLE PRIME
  309.     "\u2039":"{\\guilsinglleft}", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
  310.     "\u203A":"{\\guilsinglright}", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
  311.     "\u203C":"!!", // DOUBLE EXCLAMATION MARK
  312.     "\u203E":"-", // OVERLINE
  313.     "\u2043":"-", // HYPHEN BULLET
  314.     "\u2044":"{\\textfractionsolidus}", // FRACTION SLASH
  315.     "\u2048":"?!", // QUESTION EXCLAMATION MARK
  316.     "\u2049":"!?", // EXCLAMATION QUESTION MARK
  317.     "\u204A":"7", // TIRONIAN SIGN ET
  318.     "\u2070":"$^{0}$", // SUPERSCRIPT ZERO
  319.     "\u2074":"$^{4}$", // SUPERSCRIPT FOUR
  320.     "\u2075":"$^{5}$", // SUPERSCRIPT FIVE
  321.     "\u2076":"$^{6}$", // SUPERSCRIPT SIX
  322.     "\u2077":"$^{7}$", // SUPERSCRIPT SEVEN
  323.     "\u2078":"$^{8}$", // SUPERSCRIPT EIGHT
  324.     "\u2079":"$^{9}$", // SUPERSCRIPT NINE
  325.     "\u207A":"$^{+}$", // SUPERSCRIPT PLUS SIGN
  326.     "\u207B":"$^{-}$", // SUPERSCRIPT MINUS
  327.     "\u207C":"$^{=}$", // SUPERSCRIPT EQUALS SIGN
  328.     "\u207D":"$^{(}$", // SUPERSCRIPT LEFT PARENTHESIS
  329.     "\u207E":"$^{)}$", // SUPERSCRIPT RIGHT PARENTHESIS
  330.     "\u207F":"$^{n}$", // SUPERSCRIPT LATIN SMALL LETTER N
  331.     "\u2080":"$_{0}$", // SUBSCRIPT ZERO
  332.     "\u2081":"$_{1}$", // SUBSCRIPT ONE
  333.     "\u2082":"$_{2}$", // SUBSCRIPT TWO
  334.     "\u2083":"$_{3}$", // SUBSCRIPT THREE
  335.     "\u2084":"$_{4}$", // SUBSCRIPT FOUR
  336.     "\u2085":"$_{5}$", // SUBSCRIPT FIVE
  337.     "\u2086":"$_{6}$", // SUBSCRIPT SIX
  338.     "\u2087":"$_{7}$", // SUBSCRIPT SEVEN
  339.     "\u2088":"$_{8}$", // SUBSCRIPT EIGHT
  340.     "\u2089":"$_{9}$", // SUBSCRIPT NINE
  341.     "\u208A":"$_{+}$", // SUBSCRIPT PLUS SIGN
  342.     "\u208B":"$_{-}$", // SUBSCRIPT MINUS
  343.     "\u208C":"$_{=}$", // SUBSCRIPT EQUALS SIGN
  344.     "\u208D":"$_{(}$", // SUBSCRIPT LEFT PARENTHESIS
  345.     "\u208E":"$_{)}$", // SUBSCRIPT RIGHT PARENTHESIS
  346.     "\u20AC":"{\\texteuro}", // EURO SIGN
  347.     "\u2100":"a/c", // ACCOUNT OF
  348.     "\u2101":"a/s", // ADDRESSED TO THE SUBJECT
  349.     "\u2103":"{\\textcelsius}", // DEGREE CELSIUS
  350.     "\u2105":"c/o", // CARE OF
  351.     "\u2106":"c/u", // CADA UNA
  352.     "\u2109":"F", // DEGREE FAHRENHEIT
  353.     "\u2113":"l", // SCRIPT SMALL L
  354.     "\u2116":"{\\textnumero}", // NUMERO SIGN
  355.     "\u2117":"{\\textcircledP}", // SOUND RECORDING COPYRIGHT
  356.     "\u2120":"{\\textservicemark}", // SERVICE MARK
  357.     "\u2121":"TEL", // TELEPHONE SIGN
  358.     "\u2122":"{\\texttrademark}", // TRADE MARK SIGN
  359.     "\u2126":"{\\textohm}", // OHM SIGN
  360.     "\u212A":"K", // KELVIN SIGN
  361.     "\u212B":"A", // ANGSTROM SIGN
  362.     "\u212E":"{\\textestimated}", // ESTIMATED SYMBOL
  363.     "\u2153":" 1/3", // VULGAR FRACTION ONE THIRD
  364.     "\u2154":" 2/3", // VULGAR FRACTION TWO THIRDS
  365.     "\u2155":" 1/5", // VULGAR FRACTION ONE FIFTH
  366.     "\u2156":" 2/5", // VULGAR FRACTION TWO FIFTHS
  367.     "\u2157":" 3/5", // VULGAR FRACTION THREE FIFTHS
  368.     "\u2158":" 4/5", // VULGAR FRACTION FOUR FIFTHS
  369.     "\u2159":" 1/6", // VULGAR FRACTION ONE SIXTH
  370.     "\u215A":" 5/6", // VULGAR FRACTION FIVE SIXTHS
  371.     "\u215B":" 1/8", // VULGAR FRACTION ONE EIGHTH
  372.     "\u215C":" 3/8", // VULGAR FRACTION THREE EIGHTHS
  373.     "\u215D":" 5/8", // VULGAR FRACTION FIVE EIGHTHS
  374.     "\u215E":" 7/8", // VULGAR FRACTION SEVEN EIGHTHS
  375.     "\u215F":" 1/", // FRACTION NUMERATOR ONE
  376.     "\u2160":"I", // ROMAN NUMERAL ONE
  377.     "\u2161":"II", // ROMAN NUMERAL TWO
  378.     "\u2162":"III", // ROMAN NUMERAL THREE
  379.     "\u2163":"IV", // ROMAN NUMERAL FOUR
  380.     "\u2164":"V", // ROMAN NUMERAL FIVE
  381.     "\u2165":"VI", // ROMAN NUMERAL SIX
  382.     "\u2166":"VII", // ROMAN NUMERAL SEVEN
  383.     "\u2167":"VIII", // ROMAN NUMERAL EIGHT
  384.     "\u2168":"IX", // ROMAN NUMERAL NINE
  385.     "\u2169":"X", // ROMAN NUMERAL TEN
  386.     "\u216A":"XI", // ROMAN NUMERAL ELEVEN
  387.     "\u216B":"XII", // ROMAN NUMERAL TWELVE
  388.     "\u216C":"L", // ROMAN NUMERAL FIFTY
  389.     "\u216D":"C", // ROMAN NUMERAL ONE HUNDRED
  390.     "\u216E":"D", // ROMAN NUMERAL FIVE HUNDRED
  391.     "\u216F":"M", // ROMAN NUMERAL ONE THOUSAND
  392.     "\u2170":"i", // SMALL ROMAN NUMERAL ONE
  393.     "\u2171":"ii", // SMALL ROMAN NUMERAL TWO
  394.     "\u2172":"iii", // SMALL ROMAN NUMERAL THREE
  395.     "\u2173":"iv", // SMALL ROMAN NUMERAL FOUR
  396.     "\u2174":"v", // SMALL ROMAN NUMERAL FIVE
  397.     "\u2175":"vi", // SMALL ROMAN NUMERAL SIX
  398.     "\u2176":"vii", // SMALL ROMAN NUMERAL SEVEN
  399.     "\u2177":"viii", // SMALL ROMAN NUMERAL EIGHT
  400.     "\u2178":"ix", // SMALL ROMAN NUMERAL NINE
  401.     "\u2179":"x", // SMALL ROMAN NUMERAL TEN
  402.     "\u217A":"xi", // SMALL ROMAN NUMERAL ELEVEN
  403.     "\u217B":"xii", // SMALL ROMAN NUMERAL TWELVE
  404.     "\u217C":"l", // SMALL ROMAN NUMERAL FIFTY
  405.     "\u217D":"c", // SMALL ROMAN NUMERAL ONE HUNDRED
  406.     "\u217E":"d", // SMALL ROMAN NUMERAL FIVE HUNDRED
  407.     "\u217F":"m", // SMALL ROMAN NUMERAL ONE THOUSAND
  408.     "\u2190":"{\\textleftarrow}", // LEFTWARDS ARROW
  409.     "\u2191":"{\\textuparrow}", // UPWARDS ARROW
  410.     "\u2192":"{\\textrightarrow}", // RIGHTWARDS ARROW
  411.     "\u2193":"{\\textdownarrow}", // DOWNWARDS ARROW
  412.     "\u2194":"<->", // LEFT RIGHT ARROW
  413.     "\u21D0":"<=", // LEFTWARDS DOUBLE ARROW
  414.     "\u21D2":"=>", // RIGHTWARDS DOUBLE ARROW
  415.     "\u21D4":"<=>", // LEFT RIGHT DOUBLE ARROW
  416.     "\u2212":"-", // MINUS SIGN
  417.     "\u2215":"/", // DIVISION SLASH
  418.     "\u2216":"\\", // SET MINUS
  419.     "\u2217":"*", // ASTERISK OPERATOR
  420.     "\u2218":"o", // RING OPERATOR
  421.     "\u2219":".", // BULLET OPERATOR
  422.     "\u221E":"$\\infty$", // INFINITY
  423.     "\u2223":"|", // DIVIDES
  424.     "\u2225":"||", // PARALLEL TO
  425.     "\u2236":":", // RATIO
  426.     "\u223C":"\\~{}", // TILDE OPERATOR
  427.     "\u2260":"/=", // NOT EQUAL TO
  428.     "\u2261":"=", // IDENTICAL TO
  429.     "\u2264":"<=", // LESS-THAN OR EQUAL TO
  430.     "\u2265":">=", // GREATER-THAN OR EQUAL TO
  431.     "\u226A":"<<", // MUCH LESS-THAN
  432.     "\u226B":">>", // MUCH GREATER-THAN
  433.     "\u2295":"(+)", // CIRCLED PLUS
  434.     "\u2296":"(-)", // CIRCLED MINUS
  435.     "\u2297":"(x)", // CIRCLED TIMES
  436.     "\u2298":"(/)", // CIRCLED DIVISION SLASH
  437.     "\u22A2":"|-", // RIGHT TACK
  438.     "\u22A3":"-|", // LEFT TACK
  439.     "\u22A6":"|-", // ASSERTION
  440.     "\u22A7":"|=", // MODELS
  441.     "\u22A8":"|=", // TRUE
  442.     "\u22A9":"||-", // FORCES
  443.     "\u22C5":".", // DOT OPERATOR
  444.     "\u22C6":"*", // STAR OPERATOR
  445.     "\u22D5":"$\\#$", // EQUAL AND PARALLEL TO
  446.     "\u22D8":"<<<", // VERY MUCH LESS-THAN
  447.     "\u22D9":">>>", // VERY MUCH GREATER-THAN
  448.     "\u2329":"{\\textlangle}", // LEFT-POINTING ANGLE BRACKET
  449.     "\u232A":"{\\textrangle}", // RIGHT-POINTING ANGLE BRACKET
  450.     "\u2400":"NUL", // SYMBOL FOR NULL
  451.     "\u2401":"SOH", // SYMBOL FOR START OF HEADING
  452.     "\u2402":"STX", // SYMBOL FOR START OF TEXT
  453.     "\u2403":"ETX", // SYMBOL FOR END OF TEXT
  454.     "\u2404":"EOT", // SYMBOL FOR END OF TRANSMISSION
  455.     "\u2405":"ENQ", // SYMBOL FOR ENQUIRY
  456.     "\u2406":"ACK", // SYMBOL FOR ACKNOWLEDGE
  457.     "\u2407":"BEL", // SYMBOL FOR BELL
  458.     "\u2408":"BS", // SYMBOL FOR BACKSPACE
  459.     "\u2409":"HT", // SYMBOL FOR HORIZONTAL TABULATION
  460.     "\u240A":"LF", // SYMBOL FOR LINE FEED
  461.     "\u240B":"VT", // SYMBOL FOR VERTICAL TABULATION
  462.     "\u240C":"FF", // SYMBOL FOR FORM FEED
  463.     "\u240D":"CR", // SYMBOL FOR CARRIAGE RETURN
  464.     "\u240E":"SO", // SYMBOL FOR SHIFT OUT
  465.     "\u240F":"SI", // SYMBOL FOR SHIFT IN
  466.     "\u2410":"DLE", // SYMBOL FOR DATA LINK ESCAPE
  467.     "\u2411":"DC1", // SYMBOL FOR DEVICE CONTROL ONE
  468.     "\u2412":"DC2", // SYMBOL FOR DEVICE CONTROL TWO
  469.     "\u2413":"DC3", // SYMBOL FOR DEVICE CONTROL THREE
  470.     "\u2414":"DC4", // SYMBOL FOR DEVICE CONTROL FOUR
  471.     "\u2415":"NAK", // SYMBOL FOR NEGATIVE ACKNOWLEDGE
  472.     "\u2416":"SYN", // SYMBOL FOR SYNCHRONOUS IDLE
  473.     "\u2417":"ETB", // SYMBOL FOR END OF TRANSMISSION BLOCK
  474.     "\u2418":"CAN", // SYMBOL FOR CANCEL
  475.     "\u2419":"EM", // SYMBOL FOR END OF MEDIUM
  476.     "\u241A":"SUB", // SYMBOL FOR SUBSTITUTE
  477.     "\u241B":"ESC", // SYMBOL FOR ESCAPE
  478.     "\u241C":"FS", // SYMBOL FOR FILE SEPARATOR
  479.     "\u241D":"GS", // SYMBOL FOR GROUP SEPARATOR
  480.     "\u241E":"RS", // SYMBOL FOR RECORD SEPARATOR
  481.     "\u241F":"US", // SYMBOL FOR UNIT SEPARATOR
  482.     "\u2420":"SP", // SYMBOL FOR SPACE
  483.     "\u2421":"DEL", // SYMBOL FOR DELETE
  484.     "\u2423":"{\\textvisiblespace}", // OPEN BOX
  485.     "\u2424":"NL", // SYMBOL FOR NEWLINE
  486.     "\u2425":"///", // SYMBOL FOR DELETE FORM TWO
  487.     "\u2426":"?", // SYMBOL FOR SUBSTITUTE FORM TWO
  488.     "\u2460":"(1)", // CIRCLED DIGIT ONE
  489.     "\u2461":"(2)", // CIRCLED DIGIT TWO
  490.     "\u2462":"(3)", // CIRCLED DIGIT THREE
  491.     "\u2463":"(4)", // CIRCLED DIGIT FOUR
  492.     "\u2464":"(5)", // CIRCLED DIGIT FIVE
  493.     "\u2465":"(6)", // CIRCLED DIGIT SIX
  494.     "\u2466":"(7)", // CIRCLED DIGIT SEVEN
  495.     "\u2467":"(8)", // CIRCLED DIGIT EIGHT
  496.     "\u2468":"(9)", // CIRCLED DIGIT NINE
  497.     "\u2469":"(10)", // CIRCLED NUMBER TEN
  498.     "\u246A":"(11)", // CIRCLED NUMBER ELEVEN
  499.     "\u246B":"(12)", // CIRCLED NUMBER TWELVE
  500.     "\u246C":"(13)", // CIRCLED NUMBER THIRTEEN
  501.     "\u246D":"(14)", // CIRCLED NUMBER FOURTEEN
  502.     "\u246E":"(15)", // CIRCLED NUMBER FIFTEEN
  503.     "\u246F":"(16)", // CIRCLED NUMBER SIXTEEN
  504.     "\u2470":"(17)", // CIRCLED NUMBER SEVENTEEN
  505.     "\u2471":"(18)", // CIRCLED NUMBER EIGHTEEN
  506.     "\u2472":"(19)", // CIRCLED NUMBER NINETEEN
  507.     "\u2473":"(20)", // CIRCLED NUMBER TWENTY
  508.     "\u2474":"(1)", // PARENTHESIZED DIGIT ONE
  509.     "\u2475":"(2)", // PARENTHESIZED DIGIT TWO
  510.     "\u2476":"(3)", // PARENTHESIZED DIGIT THREE
  511.     "\u2477":"(4)", // PARENTHESIZED DIGIT FOUR
  512.     "\u2478":"(5)", // PARENTHESIZED DIGIT FIVE
  513.     "\u2479":"(6)", // PARENTHESIZED DIGIT SIX
  514.     "\u247A":"(7)", // PARENTHESIZED DIGIT SEVEN
  515.     "\u247B":"(8)", // PARENTHESIZED DIGIT EIGHT
  516.     "\u247C":"(9)", // PARENTHESIZED DIGIT NINE
  517.     "\u247D":"(10)", // PARENTHESIZED NUMBER TEN
  518.     "\u247E":"(11)", // PARENTHESIZED NUMBER ELEVEN
  519.     "\u247F":"(12)", // PARENTHESIZED NUMBER TWELVE
  520.     "\u2480":"(13)", // PARENTHESIZED NUMBER THIRTEEN
  521.     "\u2481":"(14)", // PARENTHESIZED NUMBER FOURTEEN
  522.     "\u2482":"(15)", // PARENTHESIZED NUMBER FIFTEEN
  523.     "\u2483":"(16)", // PARENTHESIZED NUMBER SIXTEEN
  524.     "\u2484":"(17)", // PARENTHESIZED NUMBER SEVENTEEN
  525.     "\u2485":"(18)", // PARENTHESIZED NUMBER EIGHTEEN
  526.     "\u2486":"(19)", // PARENTHESIZED NUMBER NINETEEN
  527.     "\u2487":"(20)", // PARENTHESIZED NUMBER TWENTY
  528.     "\u2488":"1.", // DIGIT ONE FULL STOP
  529.     "\u2489":"2.", // DIGIT TWO FULL STOP
  530.     "\u248A":"3.", // DIGIT THREE FULL STOP
  531.     "\u248B":"4.", // DIGIT FOUR FULL STOP
  532.     "\u248C":"5.", // DIGIT FIVE FULL STOP
  533.     "\u248D":"6.", // DIGIT SIX FULL STOP
  534.     "\u248E":"7.", // DIGIT SEVEN FULL STOP
  535.     "\u248F":"8.", // DIGIT EIGHT FULL STOP
  536.     "\u2490":"9.", // DIGIT NINE FULL STOP
  537.     "\u2491":"10.", // NUMBER TEN FULL STOP
  538.     "\u2492":"11.", // NUMBER ELEVEN FULL STOP
  539.     "\u2493":"12.", // NUMBER TWELVE FULL STOP
  540.     "\u2494":"13.", // NUMBER THIRTEEN FULL STOP
  541.     "\u2495":"14.", // NUMBER FOURTEEN FULL STOP
  542.     "\u2496":"15.", // NUMBER FIFTEEN FULL STOP
  543.     "\u2497":"16.", // NUMBER SIXTEEN FULL STOP
  544.     "\u2498":"17.", // NUMBER SEVENTEEN FULL STOP
  545.     "\u2499":"18.", // NUMBER EIGHTEEN FULL STOP
  546.     "\u249A":"19.", // NUMBER NINETEEN FULL STOP
  547.     "\u249B":"20.", // NUMBER TWENTY FULL STOP
  548.     "\u249C":"(a)", // PARENTHESIZED LATIN SMALL LETTER A
  549.     "\u249D":"(b)", // PARENTHESIZED LATIN SMALL LETTER B
  550.     "\u249E":"(c)", // PARENTHESIZED LATIN SMALL LETTER C
  551.     "\u249F":"(d)", // PARENTHESIZED LATIN SMALL LETTER D
  552.     "\u24A0":"(e)", // PARENTHESIZED LATIN SMALL LETTER E
  553.     "\u24A1":"(f)", // PARENTHESIZED LATIN SMALL LETTER F
  554.     "\u24A2":"(g)", // PARENTHESIZED LATIN SMALL LETTER G
  555.     "\u24A3":"(h)", // PARENTHESIZED LATIN SMALL LETTER H
  556.     "\u24A4":"(i)", // PARENTHESIZED LATIN SMALL LETTER I
  557.     "\u24A5":"(j)", // PARENTHESIZED LATIN SMALL LETTER J
  558.     "\u24A6":"(k)", // PARENTHESIZED LATIN SMALL LETTER K
  559.     "\u24A7":"(l)", // PARENTHESIZED LATIN SMALL LETTER L
  560.     "\u24A8":"(m)", // PARENTHESIZED LATIN SMALL LETTER M
  561.     "\u24A9":"(n)", // PARENTHESIZED LATIN SMALL LETTER N
  562.     "\u24AA":"(o)", // PARENTHESIZED LATIN SMALL LETTER O
  563.     "\u24AB":"(p)", // PARENTHESIZED LATIN SMALL LETTER P
  564.     "\u24AC":"(q)", // PARENTHESIZED LATIN SMALL LETTER Q
  565.     "\u24AD":"(r)", // PARENTHESIZED LATIN SMALL LETTER R
  566.     "\u24AE":"(s)", // PARENTHESIZED LATIN SMALL LETTER S
  567.     "\u24AF":"(t)", // PARENTHESIZED LATIN SMALL LETTER T
  568.     "\u24B0":"(u)", // PARENTHESIZED LATIN SMALL LETTER U
  569.     "\u24B1":"(v)", // PARENTHESIZED LATIN SMALL LETTER V
  570.     "\u24B2":"(w)", // PARENTHESIZED LATIN SMALL LETTER W
  571.     "\u24B3":"(x)", // PARENTHESIZED LATIN SMALL LETTER X
  572.     "\u24B4":"(y)", // PARENTHESIZED LATIN SMALL LETTER Y
  573.     "\u24B5":"(z)", // PARENTHESIZED LATIN SMALL LETTER Z
  574.     "\u24B6":"(A)", // CIRCLED LATIN CAPITAL LETTER A
  575.     "\u24B7":"(B)", // CIRCLED LATIN CAPITAL LETTER B
  576.     "\u24B8":"(C)", // CIRCLED LATIN CAPITAL LETTER C
  577.     "\u24B9":"(D)", // CIRCLED LATIN CAPITAL LETTER D
  578.     "\u24BA":"(E)", // CIRCLED LATIN CAPITAL LETTER E
  579.     "\u24BB":"(F)", // CIRCLED LATIN CAPITAL LETTER F
  580.     "\u24BC":"(G)", // CIRCLED LATIN CAPITAL LETTER G
  581.     "\u24BD":"(H)", // CIRCLED LATIN CAPITAL LETTER H
  582.     "\u24BE":"(I)", // CIRCLED LATIN CAPITAL LETTER I
  583.     "\u24BF":"(J)", // CIRCLED LATIN CAPITAL LETTER J
  584.     "\u24C0":"(K)", // CIRCLED LATIN CAPITAL LETTER K
  585.     "\u24C1":"(L)", // CIRCLED LATIN CAPITAL LETTER L
  586.     "\u24C2":"(M)", // CIRCLED LATIN CAPITAL LETTER M
  587.     "\u24C3":"(N)", // CIRCLED LATIN CAPITAL LETTER N
  588.     "\u24C4":"(O)", // CIRCLED LATIN CAPITAL LETTER O
  589.     "\u24C5":"(P)", // CIRCLED LATIN CAPITAL LETTER P
  590.     "\u24C6":"(Q)", // CIRCLED LATIN CAPITAL LETTER Q
  591.     "\u24C7":"(R)", // CIRCLED LATIN CAPITAL LETTER R
  592.     "\u24C8":"(S)", // CIRCLED LATIN CAPITAL LETTER S
  593.     "\u24C9":"(T)", // CIRCLED LATIN CAPITAL LETTER T
  594.     "\u24CA":"(U)", // CIRCLED LATIN CAPITAL LETTER U
  595.     "\u24CB":"(V)", // CIRCLED LATIN CAPITAL LETTER V
  596.     "\u24CC":"(W)", // CIRCLED LATIN CAPITAL LETTER W
  597.     "\u24CD":"(X)", // CIRCLED LATIN CAPITAL LETTER X
  598.     "\u24CE":"(Y)", // CIRCLED LATIN CAPITAL LETTER Y
  599.     "\u24CF":"(Z)", // CIRCLED LATIN CAPITAL LETTER Z
  600.     "\u24D0":"(a)", // CIRCLED LATIN SMALL LETTER A
  601.     "\u24D1":"(b)", // CIRCLED LATIN SMALL LETTER B
  602.     "\u24D2":"(c)", // CIRCLED LATIN SMALL LETTER C
  603.     "\u24D3":"(d)", // CIRCLED LATIN SMALL LETTER D
  604.     "\u24D4":"(e)", // CIRCLED LATIN SMALL LETTER E
  605.     "\u24D5":"(f)", // CIRCLED LATIN SMALL LETTER F
  606.     "\u24D6":"(g)", // CIRCLED LATIN SMALL LETTER G
  607.     "\u24D7":"(h)", // CIRCLED LATIN SMALL LETTER H
  608.     "\u24D8":"(i)", // CIRCLED LATIN SMALL LETTER I
  609.     "\u24D9":"(j)", // CIRCLED LATIN SMALL LETTER J
  610.     "\u24DA":"(k)", // CIRCLED LATIN SMALL LETTER K
  611.     "\u24DB":"(l)", // CIRCLED LATIN SMALL LETTER L
  612.     "\u24DC":"(m)", // CIRCLED LATIN SMALL LETTER M
  613.     "\u24DD":"(n)", // CIRCLED LATIN SMALL LETTER N
  614.     "\u24DE":"(o)", // CIRCLED LATIN SMALL LETTER O
  615.     "\u24DF":"(p)", // CIRCLED LATIN SMALL LETTER P
  616.     "\u24E0":"(q)", // CIRCLED LATIN SMALL LETTER Q
  617.     "\u24E1":"(r)", // CIRCLED LATIN SMALL LETTER R
  618.     "\u24E2":"(s)", // CIRCLED LATIN SMALL LETTER S
  619.     "\u24E3":"(t)", // CIRCLED LATIN SMALL LETTER T
  620.     "\u24E4":"(u)", // CIRCLED LATIN SMALL LETTER U
  621.     "\u24E5":"(v)", // CIRCLED LATIN SMALL LETTER V
  622.     "\u24E6":"(w)", // CIRCLED LATIN SMALL LETTER W
  623.     "\u24E7":"(x)", // CIRCLED LATIN SMALL LETTER X
  624.     "\u24E8":"(y)", // CIRCLED LATIN SMALL LETTER Y
  625.     "\u24E9":"(z)", // CIRCLED LATIN SMALL LETTER Z
  626.     "\u24EA":"(0)", // CIRCLED DIGIT ZERO
  627.     "\u2500":"-", // BOX DRAWINGS LIGHT HORIZONTAL
  628.     "\u2501":"=", // BOX DRAWINGS HEAVY HORIZONTAL
  629.     "\u2502":"|", // BOX DRAWINGS LIGHT VERTICAL
  630.     "\u2503":"|", // BOX DRAWINGS HEAVY VERTICAL
  631.     "\u2504":"-", // BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
  632.     "\u2505":"=", // BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
  633.     "\u2506":"|", // BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
  634.     "\u2507":"|", // BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
  635.     "\u2508":"-", // BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
  636.     "\u2509":"=", // BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
  637.     "\u250A":"|", // BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
  638.     "\u250B":"|", // BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
  639.     "\u250C":"+", // BOX DRAWINGS LIGHT DOWN AND RIGHT
  640.     "\u250D":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
  641.     "\u250E":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
  642.     "\u250F":"+", // BOX DRAWINGS HEAVY DOWN AND RIGHT
  643.     "\u2510":"+", // BOX DRAWINGS LIGHT DOWN AND LEFT
  644.     "\u2511":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
  645.     "\u2512":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
  646.     "\u2513":"+", // BOX DRAWINGS HEAVY DOWN AND LEFT
  647.     "\u2514":"+", // BOX DRAWINGS LIGHT UP AND RIGHT
  648.     "\u2515":"+", // BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
  649.     "\u2516":"+", // BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
  650.     "\u2517":"+", // BOX DRAWINGS HEAVY UP AND RIGHT
  651.     "\u2518":"+", // BOX DRAWINGS LIGHT UP AND LEFT
  652.     "\u2519":"+", // BOX DRAWINGS UP LIGHT AND LEFT HEAVY
  653.     "\u251A":"+", // BOX DRAWINGS UP HEAVY AND LEFT LIGHT
  654.     "\u251B":"+", // BOX DRAWINGS HEAVY UP AND LEFT
  655.     "\u251C":"+", // BOX DRAWINGS LIGHT VERTICAL AND RIGHT
  656.     "\u251D":"+", // BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
  657.     "\u251E":"+", // BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
  658.     "\u251F":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
  659.     "\u2520":"+", // BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
  660.     "\u2521":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
  661.     "\u2522":"+", // BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
  662.     "\u2523":"+", // BOX DRAWINGS HEAVY VERTICAL AND RIGHT
  663.     "\u2524":"+", // BOX DRAWINGS LIGHT VERTICAL AND LEFT
  664.     "\u2525":"+", // BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
  665.     "\u2526":"+", // BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
  666.     "\u2527":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
  667.     "\u2528":"+", // BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
  668.     "\u2529":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
  669.     "\u252A":"+", // BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
  670.     "\u252B":"+", // BOX DRAWINGS HEAVY VERTICAL AND LEFT
  671.     "\u252C":"+", // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
  672.     "\u252D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
  673.     "\u252E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
  674.     "\u252F":"+", // BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
  675.     "\u2530":"+", // BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
  676.     "\u2531":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
  677.     "\u2532":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
  678.     "\u2533":"+", // BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
  679.     "\u2534":"+", // BOX DRAWINGS LIGHT UP AND HORIZONTAL
  680.     "\u2535":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
  681.     "\u2536":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
  682.     "\u2537":"+", // BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
  683.     "\u2538":"+", // BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
  684.     "\u2539":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
  685.     "\u253A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
  686.     "\u253B":"+", // BOX DRAWINGS HEAVY UP AND HORIZONTAL
  687.     "\u253C":"+", // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
  688.     "\u253D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
  689.     "\u253E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
  690.     "\u253F":"+", // BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
  691.     "\u2540":"+", // BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
  692.     "\u2541":"+", // BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
  693.     "\u2542":"+", // BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
  694.     "\u2543":"+", // BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
  695.     "\u2544":"+", // BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
  696.     "\u2545":"+", // BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
  697.     "\u2546":"+", // BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
  698.     "\u2547":"+", // BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
  699.     "\u2548":"+", // BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
  700.     "\u2549":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
  701.     "\u254A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
  702.     "\u254B":"+", // BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
  703.     "\u254C":"-", // BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
  704.     "\u254D":"=", // BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
  705.     "\u254E":"|", // BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
  706.     "\u254F":"|", // BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
  707.     "\u2550":"=", // BOX DRAWINGS DOUBLE HORIZONTAL
  708.     "\u2551":"|", // BOX DRAWINGS DOUBLE VERTICAL
  709.     "\u2552":"+", // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
  710.     "\u2553":"+", // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
  711.     "\u2554":"+", // BOX DRAWINGS DOUBLE DOWN AND RIGHT
  712.     "\u2555":"+", // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
  713.     "\u2556":"+", // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
  714.     "\u2557":"+", // BOX DRAWINGS DOUBLE DOWN AND LEFT
  715.     "\u2558":"+", // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
  716.     "\u2559":"+", // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
  717.     "\u255A":"+", // BOX DRAWINGS DOUBLE UP AND RIGHT
  718.     "\u255B":"+", // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
  719.     "\u255C":"+", // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
  720.     "\u255D":"+", // BOX DRAWINGS DOUBLE UP AND LEFT
  721.     "\u255E":"+", // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
  722.     "\u255F":"+", // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
  723.     "\u2560":"+", // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
  724.     "\u2561":"+", // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
  725.     "\u2562":"+", // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
  726.     "\u2563":"+", // BOX DRAWINGS DOUBLE VERTICAL AND LEFT
  727.     "\u2564":"+", // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
  728.     "\u2565":"+", // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
  729.     "\u2566":"+", // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
  730.     "\u2567":"+", // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
  731.     "\u2568":"+", // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
  732.     "\u2569":"+", // BOX DRAWINGS DOUBLE UP AND HORIZONTAL
  733.     "\u256A":"+", // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
  734.     "\u256B":"+", // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
  735.     "\u256C":"+", // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
  736.     "\u256D":"+", // BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
  737.     "\u256E":"+", // BOX DRAWINGS LIGHT ARC DOWN AND LEFT
  738.     "\u256F":"+", // BOX DRAWINGS LIGHT ARC UP AND LEFT
  739.     "\u2570":"+", // BOX DRAWINGS LIGHT ARC UP AND RIGHT
  740.     "\u2571":"/", // BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
  741.     "\u2572":"\\", // BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
  742.     "\u2573":"X", // BOX DRAWINGS LIGHT DIAGONAL CROSS
  743.     "\u257C":"-", // BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
  744.     "\u257D":"|", // BOX DRAWINGS LIGHT UP AND HEAVY DOWN
  745.     "\u257E":"-", // BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
  746.     "\u257F":"|", // BOX DRAWINGS HEAVY UP AND LIGHT DOWN
  747.     "\u25CB":"o", // WHITE CIRCLE
  748.     "\u25E6":"{\\textopenbullet}", // WHITE BULLET
  749.     "\u2605":"*", // BLACK STAR
  750.     "\u2606":"*", // WHITE STAR
  751.     "\u2612":"X", // BALLOT BOX WITH X
  752.     "\u2613":"X", // SALTIRE
  753.     "\u2639":":-(", // WHITE FROWNING FACE
  754.     "\u263A":":-)", // WHITE SMILING FACE
  755.     "\u263B":"(-:", // BLACK SMILING FACE
  756.     "\u266D":"b", // MUSIC FLAT SIGN
  757.     "\u266F":"$\\#$", // MUSIC SHARP SIGN
  758.     "\u2701":"$\\%<$", // UPPER BLADE SCISSORS
  759.     "\u2702":"$\\%<$", // BLACK SCISSORS
  760.     "\u2703":"$\\%<$", // LOWER BLADE SCISSORS
  761.     "\u2704":"$\\%<$", // WHITE SCISSORS
  762.     "\u270C":"V", // VICTORY HAND
  763.     "\u2713":"v", // CHECK MARK
  764.     "\u2714":"V", // HEAVY CHECK MARK
  765.     "\u2715":"x", // MULTIPLICATION X
  766.     "\u2716":"x", // HEAVY MULTIPLICATION X
  767.     "\u2717":"X", // BALLOT X
  768.     "\u2718":"X", // HEAVY BALLOT X
  769.     "\u2719":"+", // OUTLINED GREEK CROSS
  770.     "\u271A":"+", // HEAVY GREEK CROSS
  771.     "\u271B":"+", // OPEN CENTRE CROSS
  772.     "\u271C":"+", // HEAVY OPEN CENTRE CROSS
  773.     "\u271D":"+", // LATIN CROSS
  774.     "\u271E":"+", // SHADOWED WHITE LATIN CROSS
  775.     "\u271F":"+", // OUTLINED LATIN CROSS
  776.     "\u2720":"+", // MALTESE CROSS
  777.     "\u2721":"*", // STAR OF DAVID
  778.     "\u2722":"+", // FOUR TEARDROP-SPOKED ASTERISK
  779.     "\u2723":"+", // FOUR BALLOON-SPOKED ASTERISK
  780.     "\u2724":"+", // HEAVY FOUR BALLOON-SPOKED ASTERISK
  781.     "\u2725":"+", // FOUR CLUB-SPOKED ASTERISK
  782.     "\u2726":"+", // BLACK FOUR POINTED STAR
  783.     "\u2727":"+", // WHITE FOUR POINTED STAR
  784.     "\u2729":"*", // STRESS OUTLINED WHITE STAR
  785.     "\u272A":"*", // CIRCLED WHITE STAR
  786.     "\u272B":"*", // OPEN CENTRE BLACK STAR
  787.     "\u272C":"*", // BLACK CENTRE WHITE STAR
  788.     "\u272D":"*", // OUTLINED BLACK STAR
  789.     "\u272E":"*", // HEAVY OUTLINED BLACK STAR
  790.     "\u272F":"*", // PINWHEEL STAR
  791.     "\u2730":"*", // SHADOWED WHITE STAR
  792.     "\u2731":"*", // HEAVY ASTERISK
  793.     "\u2732":"*", // OPEN CENTRE ASTERISK
  794.     "\u2733":"*", // EIGHT SPOKED ASTERISK
  795.     "\u2734":"*", // EIGHT POINTED BLACK STAR
  796.     "\u2735":"*", // EIGHT POINTED PINWHEEL STAR
  797.     "\u2736":"*", // SIX POINTED BLACK STAR
  798.     "\u2737":"*", // EIGHT POINTED RECTILINEAR BLACK STAR
  799.     "\u2738":"*", // HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
  800.     "\u2739":"*", // TWELVE POINTED BLACK STAR
  801.     "\u273A":"*", // SIXTEEN POINTED ASTERISK
  802.     "\u273B":"*", // TEARDROP-SPOKED ASTERISK
  803.     "\u273C":"*", // OPEN CENTRE TEARDROP-SPOKED ASTERISK
  804.     "\u273D":"*", // HEAVY TEARDROP-SPOKED ASTERISK
  805.     "\u273E":"*", // SIX PETALLED BLACK AND WHITE FLORETTE
  806.     "\u273F":"*", // BLACK FLORETTE
  807.     "\u2740":"*", // WHITE FLORETTE
  808.     "\u2741":"*", // EIGHT PETALLED OUTLINED BLACK FLORETTE
  809.     "\u2742":"*", // CIRCLED OPEN CENTRE EIGHT POINTED STAR
  810.     "\u2743":"*", // HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
  811.     "\u2744":"*", // SNOWFLAKE
  812.     "\u2745":"*", // TIGHT TRIFOLIATE SNOWFLAKE
  813.     "\u2746":"*", // HEAVY CHEVRON SNOWFLAKE
  814.     "\u2747":"*", // SPARKLE
  815.     "\u2748":"*", // HEAVY SPARKLE
  816.     "\u2749":"*", // BALLOON-SPOKED ASTERISK
  817.     "\u274A":"*", // EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
  818.     "\u274B":"*", // HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
  819.     "\uFB00":"ff", // LATIN SMALL LIGATURE FF
  820.     "\uFB01":"fi", // LATIN SMALL LIGATURE FI
  821.     "\uFB02":"fl", // LATIN SMALL LIGATURE FL
  822.     "\uFB03":"ffi", // LATIN SMALL LIGATURE FFI
  823.     "\uFB04":"ffl", // LATIN SMALL LIGATURE FFL
  824.     "\uFB05":"st", // LATIN SMALL LIGATURE LONG S T
  825.     "\uFB06":"st", // LATIN SMALL LIGATURE ST
  826. /* Derived accented characters */
  827.  
  828. /* These two require the "semtrans" package to work; uncomment to enable */
  829. /*  "\u02BF":"\{\\Ayn}", // MGR Ayn
  830.     "\u02BE":"\{\\Alif}", // MGR Alif/Hamza
  831. */
  832.     "\u00C0":"{\\`A}", // LATIN CAPITAL LETTER A WITH GRAVE
  833.     "\u00C1":"{\\'A}", // LATIN CAPITAL LETTER A WITH ACUTE
  834.     "\u00C2":"{\\^A}", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
  835.     "\u00C3":"{\\~A}", // LATIN CAPITAL LETTER A WITH TILDE
  836.     "\u00C4":"{\\\"A}", // LATIN CAPITAL LETTER A WITH DIAERESIS
  837.     "\u00C5":"{\\r A}", // LATIN CAPITAL LETTER A WITH RING ABOVE
  838.     "\u00C7":"{\\c C}", // LATIN CAPITAL LETTER C WITH CEDILLA
  839.     "\u00C8":"{\\`E}", // LATIN CAPITAL LETTER E WITH GRAVE
  840.     "\u00C9":"{\\'E}", // LATIN CAPITAL LETTER E WITH ACUTE
  841.     "\u00CA":"{\\^E}", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
  842.     "\u00CB":"{\\\"E}", // LATIN CAPITAL LETTER E WITH DIAERESIS
  843.     "\u00CC":"{\\`I}", // LATIN CAPITAL LETTER I WITH GRAVE
  844.     "\u00CD":"{\\'I}", // LATIN CAPITAL LETTER I WITH ACUTE
  845.     "\u00CE":"{\\^I}", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
  846.     "\u00CF":"{\\\"I}", // LATIN CAPITAL LETTER I WITH DIAERESIS
  847.     "\u00D1":"{\\~N}", // LATIN CAPITAL LETTER N WITH TILDE
  848.     "\u00D2":"{\\`O}", // LATIN CAPITAL LETTER O WITH GRAVE
  849.     "\u00D3":"{\\'O}", // LATIN CAPITAL LETTER O WITH ACUTE
  850.     "\u00D4":"{\\^O}", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
  851.     "\u00D5":"{\\~O}", // LATIN CAPITAL LETTER O WITH TILDE
  852.     "\u00D6":"{\\\"O}", // LATIN CAPITAL LETTER O WITH DIAERESIS
  853.     "\u00D9":"{\\`U}", // LATIN CAPITAL LETTER U WITH GRAVE
  854.     "\u00DA":"{\\'U}", // LATIN CAPITAL LETTER U WITH ACUTE
  855.     "\u00DB":"{\\^U}", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
  856.     "\u00DC":"{\\\"U}", // LATIN CAPITAL LETTER U WITH DIAERESIS
  857.     "\u00DD":"{\\'Y}", // LATIN CAPITAL LETTER Y WITH ACUTE
  858.     "\u00E0":"{\\`a}", // LATIN SMALL LETTER A WITH GRAVE
  859.     "\u00E1":"{\\'a}", // LATIN SMALL LETTER A WITH ACUTE
  860.     "\u00E2":"{\\^a}", // LATIN SMALL LETTER A WITH CIRCUMFLEX
  861.     "\u00E3":"{\\~a}", // LATIN SMALL LETTER A WITH TILDE
  862.     "\u00E4":"{\\\"a}", // LATIN SMALL LETTER A WITH DIAERESIS
  863.     "\u00E5":"{\\r a}", // LATIN SMALL LETTER A WITH RING ABOVE
  864.     "\u00E7":"{\\c c}", // LATIN SMALL LETTER C WITH CEDILLA
  865.     "\u00E8":"{\\`e}", // LATIN SMALL LETTER E WITH GRAVE
  866.     "\u00E9":"{\\'e}", // LATIN SMALL LETTER E WITH ACUTE
  867.     "\u00EA":"{\\^e}", // LATIN SMALL LETTER E WITH CIRCUMFLEX
  868.     "\u00EB":"{\\\"e}", // LATIN SMALL LETTER E WITH DIAERESIS
  869.     "\u00EC":"{\\`i}", // LATIN SMALL LETTER I WITH GRAVE
  870.     "\u00ED":"{\\'i}", // LATIN SMALL LETTER I WITH ACUTE
  871.     "\u00EE":"{\\^i}", // LATIN SMALL LETTER I WITH CIRCUMFLEX
  872.     "\u00EF":"{\\\"i}", // LATIN SMALL LETTER I WITH DIAERESIS
  873.     "\u00F1":"{\\~n}", // LATIN SMALL LETTER N WITH TILDE
  874.     "\u00F2":"{\\`o}", // LATIN SMALL LETTER O WITH GRAVE
  875.     "\u00F3":"{\\'o}", // LATIN SMALL LETTER O WITH ACUTE
  876.     "\u00F4":"{\\^o}", // LATIN SMALL LETTER O WITH CIRCUMFLEX
  877.     "\u00F5":"{\\~o}", // LATIN SMALL LETTER O WITH TILDE
  878.     "\u00F6":"{\\\"o}", // LATIN SMALL LETTER O WITH DIAERESIS
  879.     "\u00F9":"{\\`u}", // LATIN SMALL LETTER U WITH GRAVE
  880.     "\u00FA":"{\\'u}", // LATIN SMALL LETTER U WITH ACUTE
  881.     "\u00FB":"{\\^u}", // LATIN SMALL LETTER U WITH CIRCUMFLEX
  882.     "\u00FC":"{\\\"u}", // LATIN SMALL LETTER U WITH DIAERESIS
  883.     "\u00FD":"{\\'y}", // LATIN SMALL LETTER Y WITH ACUTE
  884.     "\u00FF":"{\\\"y}", // LATIN SMALL LETTER Y WITH DIAERESIS
  885.     "\u0100":"{\\=A}", // LATIN CAPITAL LETTER A WITH MACRON
  886.     "\u0101":"{\\=a}", // LATIN SMALL LETTER A WITH MACRON
  887.     "\u0102":"{\\u A}", // LATIN CAPITAL LETTER A WITH BREVE
  888.     "\u0103":"{\\u a}", // LATIN SMALL LETTER A WITH BREVE
  889.     "\u0104":"{\\k A}", // LATIN CAPITAL LETTER A WITH OGONEK
  890.     "\u0105":"{\\k a}", // LATIN SMALL LETTER A WITH OGONEK
  891.     "\u0106":"{\\'C}", // LATIN CAPITAL LETTER C WITH ACUTE
  892.     "\u0107":"{\\'c}", // LATIN SMALL LETTER C WITH ACUTE
  893.     "\u0108":"{\\^C}", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
  894.     "\u0109":"{\\^c}", // LATIN SMALL LETTER C WITH CIRCUMFLEX
  895.     "\u010A":"{\\.C}", // LATIN CAPITAL LETTER C WITH DOT ABOVE
  896.     "\u010B":"{\\.c}", // LATIN SMALL LETTER C WITH DOT ABOVE
  897.     "\u010C":"{\\v C}", // LATIN CAPITAL LETTER C WITH CARON
  898.     "\u010D":"{\\v c}", // LATIN SMALL LETTER C WITH CARON
  899.     "\u010E":"{\\v D}", // LATIN CAPITAL LETTER D WITH CARON
  900.     "\u010F":"{\\v d}", // LATIN SMALL LETTER D WITH CARON
  901.     "\u0112":"{\\=E}", // LATIN CAPITAL LETTER E WITH MACRON
  902.     "\u0113":"{\\=e}", // LATIN SMALL LETTER E WITH MACRON
  903.     "\u0114":"{\\u E}", // LATIN CAPITAL LETTER E WITH BREVE
  904.     "\u0115":"{\\u e}", // LATIN SMALL LETTER E WITH BREVE
  905.     "\u0116":"{\\.E}", // LATIN CAPITAL LETTER E WITH DOT ABOVE
  906.     "\u0117":"{\\.e}", // LATIN SMALL LETTER E WITH DOT ABOVE
  907.     "\u0118":"{\\k E}", // LATIN CAPITAL LETTER E WITH OGONEK
  908.     "\u0119":"{\\k e}", // LATIN SMALL LETTER E WITH OGONEK
  909.     "\u011A":"{\\v E}", // LATIN CAPITAL LETTER E WITH CARON
  910.     "\u011B":"{\\v e}", // LATIN SMALL LETTER E WITH CARON
  911.     "\u011C":"{\\^G}", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
  912.     "\u011D":"{\\^g}", // LATIN SMALL LETTER G WITH CIRCUMFLEX
  913.     "\u011E":"{\\u G}", // LATIN CAPITAL LETTER G WITH BREVE
  914.     "\u011F":"{\\u g}", // LATIN SMALL LETTER G WITH BREVE
  915.     "\u0120":"{\\.G}", // LATIN CAPITAL LETTER G WITH DOT ABOVE
  916.     "\u0121":"{\\.g}", // LATIN SMALL LETTER G WITH DOT ABOVE
  917.     "\u0122":"{\\c G}", // LATIN CAPITAL LETTER G WITH CEDILLA
  918.     "\u0123":"{\\c g}", // LATIN SMALL LETTER G WITH CEDILLA
  919.     "\u0124":"{\\^H}", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
  920.     "\u0125":"{\\^h}", // LATIN SMALL LETTER H WITH CIRCUMFLEX
  921.     "\u0128":"{\\~I}", // LATIN CAPITAL LETTER I WITH TILDE
  922.     "\u0129":"{\\~i}", // LATIN SMALL LETTER I WITH TILDE
  923.     "\u012A":"{\\=I}", // LATIN CAPITAL LETTER I WITH MACRON
  924.     "\u012B":"{\\=\\i}", // LATIN SMALL LETTER I WITH MACRON
  925.     "\u012C":"{\\u I}", // LATIN CAPITAL LETTER I WITH BREVE
  926.     "\u012D":"{\\u i}", // LATIN SMALL LETTER I WITH BREVE
  927.     "\u012E":"{\\k I}", // LATIN CAPITAL LETTER I WITH OGONEK
  928.     "\u012F":"{\\k i}", // LATIN SMALL LETTER I WITH OGONEK
  929.     "\u0130":"{\\.I}", // LATIN CAPITAL LETTER I WITH DOT ABOVE
  930.     "\u0134":"{\\^J}", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
  931.     "\u0135":"{\\^j}", // LATIN SMALL LETTER J WITH CIRCUMFLEX
  932.     "\u0136":"{\\c K}", // LATIN CAPITAL LETTER K WITH CEDILLA
  933.     "\u0137":"{\\c k}", // LATIN SMALL LETTER K WITH CEDILLA
  934.     "\u0139":"{\\'L}", // LATIN CAPITAL LETTER L WITH ACUTE
  935.     "\u013A":"{\\'l}", // LATIN SMALL LETTER L WITH ACUTE
  936.     "\u013B":"{\\c L}", // LATIN CAPITAL LETTER L WITH CEDILLA
  937.     "\u013C":"{\\c l}", // LATIN SMALL LETTER L WITH CEDILLA
  938.     "\u013D":"{\\v L}", // LATIN CAPITAL LETTER L WITH CARON
  939.     "\u013E":"{\\v l}", // LATIN SMALL LETTER L WITH CARON
  940.     "\u0141":"{\\L }", //LATIN CAPITAL LETTER L WITH STROKE
  941.     "\u0142":"{\\l }", //LATIN SMALL LETTER L WITH STROKE
  942.     "\u0143":"{\\'N}", // LATIN CAPITAL LETTER N WITH ACUTE
  943.     "\u0144":"{\\'n}", // LATIN SMALL LETTER N WITH ACUTE
  944.     "\u0145":"{\\c N}", // LATIN CAPITAL LETTER N WITH CEDILLA
  945.     "\u0146":"{\\c n}", // LATIN SMALL LETTER N WITH CEDILLA
  946.     "\u0147":"{\\v N}", // LATIN CAPITAL LETTER N WITH CARON
  947.     "\u0148":"{\\v n}", // LATIN SMALL LETTER N WITH CARON
  948.     "\u014C":"{\\=O}", // LATIN CAPITAL LETTER O WITH MACRON
  949.     "\u014D":"{\\=o}", // LATIN SMALL LETTER O WITH MACRON
  950.     "\u014E":"{\\u O}", // LATIN CAPITAL LETTER O WITH BREVE
  951.     "\u014F":"{\\u o}", // LATIN SMALL LETTER O WITH BREVE
  952.     "\u0150":"{\\H O}", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
  953.     "\u0151":"{\\H o}", // LATIN SMALL LETTER O WITH DOUBLE ACUTE
  954.     "\u0154":"{\\'R}", // LATIN CAPITAL LETTER R WITH ACUTE
  955.     "\u0155":"{\\'r}", // LATIN SMALL LETTER R WITH ACUTE
  956.     "\u0156":"{\\c R}", // LATIN CAPITAL LETTER R WITH CEDILLA
  957.     "\u0157":"{\\c r}", // LATIN SMALL LETTER R WITH CEDILLA
  958.     "\u0158":"{\\v R}", // LATIN CAPITAL LETTER R WITH CARON
  959.     "\u0159":"{\\v r}", // LATIN SMALL LETTER R WITH CARON
  960.     "\u015A":"{\\'S}", // LATIN CAPITAL LETTER S WITH ACUTE
  961.     "\u015B":"{\\'s}", // LATIN SMALL LETTER S WITH ACUTE
  962.     "\u015C":"{\\^S}", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
  963.     "\u015D":"{\\^s}", // LATIN SMALL LETTER S WITH CIRCUMFLEX
  964.     "\u015E":"{\\c S}", // LATIN CAPITAL LETTER S WITH CEDILLA
  965.     "\u015F":"{\\c s}", // LATIN SMALL LETTER S WITH CEDILLA
  966.     "\u0160":"{\\v S}", // LATIN CAPITAL LETTER S WITH CARON
  967.     "\u0161":"{\\v s}", // LATIN SMALL LETTER S WITH CARON
  968.     "\u0162":"{\\c T}", // LATIN CAPITAL LETTER T WITH CEDILLA
  969.     "\u0163":"{\\c t}", // LATIN SMALL LETTER T WITH CEDILLA
  970.     "\u0164":"{\\v T}", // LATIN CAPITAL LETTER T WITH CARON
  971.     "\u0165":"{\\v t}", // LATIN SMALL LETTER T WITH CARON
  972.     "\u0168":"{\\~U}", // LATIN CAPITAL LETTER U WITH TILDE
  973.     "\u0169":"{\\~u}", // LATIN SMALL LETTER U WITH TILDE
  974.     "\u016A":"{\\=U}", // LATIN CAPITAL LETTER U WITH MACRON
  975.     "\u016B":"{\\=u}", // LATIN SMALL LETTER U WITH MACRON
  976.     "\u016C":"{\\u U}", // LATIN CAPITAL LETTER U WITH BREVE
  977.     "\u016D":"{\\u u}", // LATIN SMALL LETTER U WITH BREVE
  978.     "\u0170":"{\\H U}", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
  979.     "\u0171":"{\\H u}", // LATIN SMALL LETTER U WITH DOUBLE ACUTE
  980.     "\u0172":"{\\k U}", // LATIN CAPITAL LETTER U WITH OGONEK
  981.     "\u0173":"{\\k u}", // LATIN SMALL LETTER U WITH OGONEK
  982.     "\u0174":"{\\^W}", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
  983.     "\u0175":"{\\^w}", // LATIN SMALL LETTER W WITH CIRCUMFLEX
  984.     "\u0176":"{\\^Y}", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
  985.     "\u0177":"{\\^y}", // LATIN SMALL LETTER Y WITH CIRCUMFLEX
  986.     "\u0178":"{\\\"Y}", // LATIN CAPITAL LETTER Y WITH DIAERESIS
  987.     "\u0179":"{\\'Z}", // LATIN CAPITAL LETTER Z WITH ACUTE
  988.     "\u017A":"{\\'z}", // LATIN SMALL LETTER Z WITH ACUTE
  989.     "\u017B":"{\\.Z}", // LATIN CAPITAL LETTER Z WITH DOT ABOVE
  990.     "\u017C":"{\\.z}", // LATIN SMALL LETTER Z WITH DOT ABOVE
  991.     "\u017D":"{\\v Z}", // LATIN CAPITAL LETTER Z WITH CARON
  992.     "\u017E":"{\\v z}", // LATIN SMALL LETTER Z WITH CARON
  993.     "\u01CD":"{\\v A}", // LATIN CAPITAL LETTER A WITH CARON
  994.     "\u01CE":"{\\v a}", // LATIN SMALL LETTER A WITH CARON
  995.     "\u01CF":"{\\v I}", // LATIN CAPITAL LETTER I WITH CARON
  996.     "\u01D0":"{\\v i}", // LATIN SMALL LETTER I WITH CARON
  997.     "\u01D1":"{\\v O}", // LATIN CAPITAL LETTER O WITH CARON
  998.     "\u01D2":"{\\v o}", // LATIN SMALL LETTER O WITH CARON
  999.     "\u01D3":"{\\v U}", // LATIN CAPITAL LETTER U WITH CARON
  1000.     "\u01D4":"{\\v u}", // LATIN SMALL LETTER U WITH CARON
  1001.     "\u01E6":"{\\v G}", // LATIN CAPITAL LETTER G WITH CARON
  1002.     "\u01E7":"{\\v g}", // LATIN SMALL LETTER G WITH CARON
  1003.     "\u01E8":"{\\v K}", // LATIN CAPITAL LETTER K WITH CARON
  1004.     "\u01E9":"{\\v k}", // LATIN SMALL LETTER K WITH CARON
  1005.     "\u01EA":"{\\k O}", // LATIN CAPITAL LETTER O WITH OGONEK
  1006.     "\u01EB":"{\\k o}", // LATIN SMALL LETTER O WITH OGONEK
  1007.     "\u01F0":"{\\v j}", // LATIN SMALL LETTER J WITH CARON
  1008.     "\u01F4":"{\\'G}", // LATIN CAPITAL LETTER G WITH ACUTE
  1009.     "\u01F5":"{\\'g}", // LATIN SMALL LETTER G WITH ACUTE
  1010.     "\u1E02":"{\\.B}", // LATIN CAPITAL LETTER B WITH DOT ABOVE
  1011.     "\u1E03":"{\\.b}", // LATIN SMALL LETTER B WITH DOT ABOVE
  1012.     "\u1E04":"{\\d B}", // LATIN CAPITAL LETTER B WITH DOT BELOW
  1013.     "\u1E05":"{\\d b}", // LATIN SMALL LETTER B WITH DOT BELOW
  1014.     "\u1E06":"{\\b B}", // LATIN CAPITAL LETTER B WITH LINE BELOW
  1015.     "\u1E07":"{\\b b}", // LATIN SMALL LETTER B WITH LINE BELOW
  1016.     "\u1E0A":"{\\.D}", // LATIN CAPITAL LETTER D WITH DOT ABOVE
  1017.     "\u1E0B":"{\\.d}", // LATIN SMALL LETTER D WITH DOT ABOVE
  1018.     "\u1E0C":"{\\d D}", // LATIN CAPITAL LETTER D WITH DOT BELOW
  1019.     "\u1E0D":"{\\d d}", // LATIN SMALL LETTER D WITH DOT BELOW
  1020.     "\u1E0E":"{\\b D}", // LATIN CAPITAL LETTER D WITH LINE BELOW
  1021.     "\u1E0F":"{\\b d}", // LATIN SMALL LETTER D WITH LINE BELOW
  1022.     "\u1E10":"{\\c D}", // LATIN CAPITAL LETTER D WITH CEDILLA
  1023.     "\u1E11":"{\\c d}", // LATIN SMALL LETTER D WITH CEDILLA
  1024.     "\u1E1E":"{\\.F}", // LATIN CAPITAL LETTER F WITH DOT ABOVE
  1025.     "\u1E1F":"{\\.f}", // LATIN SMALL LETTER F WITH DOT ABOVE
  1026.     "\u1E20":"{\\=G}", // LATIN CAPITAL LETTER G WITH MACRON
  1027.     "\u1E21":"{\\=g}", // LATIN SMALL LETTER G WITH MACRON
  1028.     "\u1E22":"{\\.H}", // LATIN CAPITAL LETTER H WITH DOT ABOVE
  1029.     "\u1E23":"{\\.h}", // LATIN SMALL LETTER H WITH DOT ABOVE
  1030.     "\u1E24":"{\\d H}", // LATIN CAPITAL LETTER H WITH DOT BELOW
  1031.     "\u1E25":"{\\d h}", // LATIN SMALL LETTER H WITH DOT BELOW
  1032.     "\u1E26":"{\\\"H}", // LATIN CAPITAL LETTER H WITH DIAERESIS
  1033.     "\u1E27":"{\\\"h}", // LATIN SMALL LETTER H WITH DIAERESIS
  1034.     "\u1E28":"{\\c H}", // LATIN CAPITAL LETTER H WITH CEDILLA
  1035.     "\u1E29":"{\\c h}", // LATIN SMALL LETTER H WITH CEDILLA
  1036.     "\u1E30":"{\\'K}", // LATIN CAPITAL LETTER K WITH ACUTE
  1037.     "\u1E31":"{\\'k}", // LATIN SMALL LETTER K WITH ACUTE
  1038.     "\u1E32":"{\\d K}", // LATIN CAPITAL LETTER K WITH DOT BELOW
  1039.     "\u1E33":"{\\d k}", // LATIN SMALL LETTER K WITH DOT BELOW
  1040.     "\u1E34":"{\\b K}", // LATIN CAPITAL LETTER K WITH LINE BELOW
  1041.     "\u1E35":"{\\b k}", // LATIN SMALL LETTER K WITH LINE BELOW
  1042.     "\u1E36":"{\\d L}", // LATIN CAPITAL LETTER L WITH DOT BELOW
  1043.     "\u1E37":"{\\d l}", // LATIN SMALL LETTER L WITH DOT BELOW
  1044.     "\u1E3A":"{\\b L}", // LATIN CAPITAL LETTER L WITH LINE BELOW
  1045.     "\u1E3B":"{\\b l}", // LATIN SMALL LETTER L WITH LINE BELOW
  1046.     "\u1E3E":"{\\'M}", // LATIN CAPITAL LETTER M WITH ACUTE
  1047.     "\u1E3F":"{\\'m}", // LATIN SMALL LETTER M WITH ACUTE
  1048.     "\u1E40":"{\\.M}", // LATIN CAPITAL LETTER M WITH DOT ABOVE
  1049.     "\u1E41":"{\\.m}", // LATIN SMALL LETTER M WITH DOT ABOVE
  1050.     "\u1E42":"{\\d M}", // LATIN CAPITAL LETTER M WITH DOT BELOW
  1051.     "\u1E43":"{\\d m}", // LATIN SMALL LETTER M WITH DOT BELOW
  1052.     "\u1E44":"{\\.N}", // LATIN CAPITAL LETTER N WITH DOT ABOVE
  1053.     "\u1E45":"{\\.n}", // LATIN SMALL LETTER N WITH DOT ABOVE
  1054.     "\u1E46":"{\\d N}", // LATIN CAPITAL LETTER N WITH DOT BELOW
  1055.     "\u1E47":"{\\d n}", // LATIN SMALL LETTER N WITH DOT BELOW
  1056.     "\u1E48":"{\\b N}", // LATIN CAPITAL LETTER N WITH LINE BELOW
  1057.     "\u1E49":"{\\b n}", // LATIN SMALL LETTER N WITH LINE BELOW
  1058.     "\u1E54":"{\\'P}", // LATIN CAPITAL LETTER P WITH ACUTE
  1059.     "\u1E55":"{\\'p}", // LATIN SMALL LETTER P WITH ACUTE
  1060.     "\u1E56":"{\\.P}", // LATIN CAPITAL LETTER P WITH DOT ABOVE
  1061.     "\u1E57":"{\\.p}", // LATIN SMALL LETTER P WITH DOT ABOVE
  1062.     "\u1E58":"{\\.R}", // LATIN CAPITAL LETTER R WITH DOT ABOVE
  1063.     "\u1E59":"{\\.r}", // LATIN SMALL LETTER R WITH DOT ABOVE
  1064.     "\u1E5A":"{\\d R}", // LATIN CAPITAL LETTER R WITH DOT BELOW
  1065.     "\u1E5B":"{\\d r}", // LATIN SMALL LETTER R WITH DOT BELOW
  1066.     "\u1E5E":"{\\b R}", // LATIN CAPITAL LETTER R WITH LINE BELOW
  1067.     "\u1E5F":"{\\b r}", // LATIN SMALL LETTER R WITH LINE BELOW
  1068.     "\u1E60":"{\\.S}", // LATIN CAPITAL LETTER S WITH DOT ABOVE
  1069.     "\u1E61":"{\\.s}", // LATIN SMALL LETTER S WITH DOT ABOVE
  1070.     "\u1E62":"{\\d S}", // LATIN CAPITAL LETTER S WITH DOT BELOW
  1071.     "\u1E63":"{\\d s}", // LATIN SMALL LETTER S WITH DOT BELOW
  1072.     "\u1E6A":"{\\.T}", // LATIN CAPITAL LETTER T WITH DOT ABOVE
  1073.     "\u1E6B":"{\\.t}", // LATIN SMALL LETTER T WITH DOT ABOVE
  1074.     "\u1E6C":"{\\d T}", // LATIN CAPITAL LETTER T WITH DOT BELOW
  1075.     "\u1E6D":"{\\d t}", // LATIN SMALL LETTER T WITH DOT BELOW
  1076.     "\u1E6E":"{\\b T}", // LATIN CAPITAL LETTER T WITH LINE BELOW
  1077.     "\u1E6F":"{\\b t}", // LATIN SMALL LETTER T WITH LINE BELOW
  1078.     "\u1E7C":"{\\~V}", // LATIN CAPITAL LETTER V WITH TILDE
  1079.     "\u1E7D":"{\\~v}", // LATIN SMALL LETTER V WITH TILDE
  1080.     "\u1E7E":"{\\d V}", // LATIN CAPITAL LETTER V WITH DOT BELOW
  1081.     "\u1E7F":"{\\d v}", // LATIN SMALL LETTER V WITH DOT BELOW
  1082.     "\u1E80":"{\\`W}", // LATIN CAPITAL LETTER W WITH GRAVE
  1083.     "\u1E81":"{\\`w}", // LATIN SMALL LETTER W WITH GRAVE
  1084.     "\u1E82":"{\\'W}", // LATIN CAPITAL LETTER W WITH ACUTE
  1085.     "\u1E83":"{\\'w}", // LATIN SMALL LETTER W WITH ACUTE
  1086.     "\u1E84":"{\\\"W}", // LATIN CAPITAL LETTER W WITH DIAERESIS
  1087.     "\u1E85":"{\\\"w}", // LATIN SMALL LETTER W WITH DIAERESIS
  1088.     "\u1E86":"{\\.W}", // LATIN CAPITAL LETTER W WITH DOT ABOVE
  1089.     "\u1E87":"{\\.w}", // LATIN SMALL LETTER W WITH DOT ABOVE
  1090.     "\u1E88":"{\\d W}", // LATIN CAPITAL LETTER W WITH DOT BELOW
  1091.     "\u1E89":"{\\d w}", // LATIN SMALL LETTER W WITH DOT BELOW
  1092.     "\u1E8A":"{\\.X}", // LATIN CAPITAL LETTER X WITH DOT ABOVE
  1093.     "\u1E8B":"{\\.x}", // LATIN SMALL LETTER X WITH DOT ABOVE
  1094.     "\u1E8C":"{\\\"X}", // LATIN CAPITAL LETTER X WITH DIAERESIS
  1095.     "\u1E8D":"{\\\"x}", // LATIN SMALL LETTER X WITH DIAERESIS
  1096.     "\u1E8E":"{\\.Y}", // LATIN CAPITAL LETTER Y WITH DOT ABOVE
  1097.     "\u1E8F":"{\\.y}", // LATIN SMALL LETTER Y WITH DOT ABOVE
  1098.     "\u1E90":"{\\^Z}", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
  1099.     "\u1E91":"{\\^z}", // LATIN SMALL LETTER Z WITH CIRCUMFLEX
  1100.     "\u1E92":"{\\d Z}", // LATIN CAPITAL LETTER Z WITH DOT BELOW
  1101.     "\u1E93":"{\\d z}", // LATIN SMALL LETTER Z WITH DOT BELOW
  1102.     "\u1E94":"{\\b Z}", // LATIN CAPITAL LETTER Z WITH LINE BELOW
  1103.     "\u1E95":"{\\b z}", // LATIN SMALL LETTER Z WITH LINE BELOW
  1104.     "\u1E96":"{\\b h}", // LATIN SMALL LETTER H WITH LINE BELOW
  1105.     "\u1E97":"{\\\"t}", // LATIN SMALL LETTER T WITH DIAERESIS
  1106.     "\u1EA0":"{\\d A}", // LATIN CAPITAL LETTER A WITH DOT BELOW
  1107.     "\u1EA1":"{\\d a}", // LATIN SMALL LETTER A WITH DOT BELOW
  1108.     "\u1EB8":"{\\d E}", // LATIN CAPITAL LETTER E WITH DOT BELOW
  1109.     "\u1EB9":"{\\d e}", // LATIN SMALL LETTER E WITH DOT BELOW
  1110.     "\u1EBC":"{\\~E}", // LATIN CAPITAL LETTER E WITH TILDE
  1111.     "\u1EBD":"{\\~e}", // LATIN SMALL LETTER E WITH TILDE
  1112.     "\u1ECA":"{\\d I}", // LATIN CAPITAL LETTER I WITH DOT BELOW
  1113.     "\u1ECB":"{\\d i}", // LATIN SMALL LETTER I WITH DOT BELOW
  1114.     "\u1ECC":"{\\d O}", // LATIN CAPITAL LETTER O WITH DOT BELOW
  1115.     "\u1ECD":"{\\d o}", // LATIN SMALL LETTER O WITH DOT BELOW
  1116.     "\u1EE4":"{\\d U}", // LATIN CAPITAL LETTER U WITH DOT BELOW
  1117.     "\u1EE5":"{\\d u}", // LATIN SMALL LETTER U WITH DOT BELOW
  1118.     "\u1EF2":"{\\`Y}", // LATIN CAPITAL LETTER Y WITH GRAVE
  1119.     "\u1EF3":"{\\`y}", // LATIN SMALL LETTER Y WITH GRAVE
  1120.     "\u1EF4":"{\\d Y}", // LATIN CAPITAL LETTER Y WITH DOT BELOW
  1121.     "\u1EF5":"{\\d y}", // LATIN SMALL LETTER Y WITH DOT BELOW
  1122.     "\u1EF8":"{\\~Y}", // LATIN CAPITAL LETTER Y WITH TILDE
  1123.     "\u1EF9":"{\\~y}" // LATIN SMALL LETTER Y WITH TILDE
  1124. };
  1125.  
  1126. /* unfortunately the mapping isn't reversible - hence this second table - sigh! */
  1127. var reversemappingTable = {
  1128.     "\\url"                           : "",       // strip 'url'
  1129.     "\\href"                          : "",       // strip 'href'
  1130.     "{\\textexclamdown}"              : "\u00A1", // INVERTED EXCLAMATION MARK
  1131.     "{\\textcent}"                    : "\u00A2", // CENT SIGN
  1132.     "{\\textsterling}"                : "\u00A3", // POUND SIGN
  1133.     "{\\textyen}"                     : "\u00A5", // YEN SIGN
  1134.     "{\\textbrokenbar}"               : "\u00A6", // BROKEN BAR
  1135.     "{\\textsection}"                 : "\u00A7", // SECTION SIGN
  1136.     "{\\textasciidieresis}"           : "\u00A8", // DIAERESIS
  1137.     "{\\textcopyright}"               : "\u00A9", // COPYRIGHT SIGN
  1138.     "{\\textordfeminine}"             : "\u00AA", // FEMININE ORDINAL INDICATOR
  1139.     "{\\guillemotleft}"               : "\u00AB", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
  1140.     "{\\textlnot}"                    : "\u00AC", // NOT SIGN
  1141.     "{\\textregistered}"              : "\u00AE", // REGISTERED SIGN
  1142.     "{\\textasciimacron}"             : "\u00AF", // MACRON
  1143.     "{\\textdegree}"                  : "\u00B0", // DEGREE SIGN
  1144.     "{\\textpm}"                      : "\u00B1", // PLUS-MINUS SIGN
  1145.     "{\\texttwosuperior}"             : "\u00B2", // SUPERSCRIPT TWO
  1146.     "{\\textthreesuperior}"           : "\u00B3", // SUPERSCRIPT THREE
  1147.     "{\\textasciiacute}"              : "\u00B4", // ACUTE ACCENT
  1148.     "{\\textmu}"                      : "\u00B5", // MICRO SIGN
  1149.     "{\\textparagraph}"               : "\u00B6", // PILCROW SIGN
  1150.     "{\\textperiodcentered}"          : "\u00B7", // MIDDLE DOT
  1151.     "{\\c\\ }"                        : "\u00B8", // CEDILLA
  1152.     "{\\textonesuperior}"             : "\u00B9", // SUPERSCRIPT ONE
  1153.     "{\\textordmasculine}"            : "\u00BA", // MASCULINE ORDINAL INDICATOR
  1154.     "{\\guillemotright}"              : "\u00BB", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
  1155.     "{\\textonequarter}"              : "\u00BC", // VULGAR FRACTION ONE QUARTER
  1156.     "{\\textonehalf}"                 : "\u00BD", // VULGAR FRACTION ONE HALF
  1157.     "{\\textthreequarters}"           : "\u00BE", // VULGAR FRACTION THREE QUARTERS
  1158.     "{\\textquestiondown}"            : "\u00BF", // INVERTED QUESTION MARK
  1159.     "{\\AE}"                          : "\u00C6", // LATIN CAPITAL LETTER AE
  1160.     "{\\DH}"                          : "\u00D0", // LATIN CAPITAL LETTER ETH
  1161.     "{\\texttimes}"                   : "\u00D7", // MULTIPLICATION SIGN
  1162.     "{\\O}"                          :  "\u00D8", // LATIN SMALL LETTER O WITH STROKE
  1163.     "{\\TH}"                          : "\u00DE", // LATIN CAPITAL LETTER THORN
  1164.     "{\\ss}"                          : "\u00DF", // LATIN SMALL LETTER SHARP S
  1165.     "{\\ae}"                          : "\u00E6", // LATIN SMALL LETTER AE
  1166.     "{\\dh}"                          : "\u00F0", // LATIN SMALL LETTER ETH
  1167.     "{\\textdiv}"                     : "\u00F7", // DIVISION SIGN
  1168.     "{\\o}"                          : "\u00F8", // LATIN SMALL LETTER O WITH STROKE
  1169.     "{\\th}"                          : "\u00FE", // LATIN SMALL LETTER THORN
  1170.     "{\\i}"                           : "\u0131", // LATIN SMALL LETTER DOTLESS I
  1171.     //"'n"                              : "\u0149", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
  1172.     "{\\NG}"                          : "\u014A", // LATIN CAPITAL LETTER ENG
  1173.     "{\\ng}"                          : "\u014B", // LATIN SMALL LETTER ENG
  1174.     "{\\OE}"                          : "\u0152", // LATIN CAPITAL LIGATURE OE
  1175.     "{\\oe}"                          : "\u0153", // LATIN SMALL LIGATURE OE
  1176.     "{\\textasciicircum}"             : "\u02C6", // MODIFIER LETTER CIRCUMFLEX ACCENT
  1177. //    "\\~{}"                           : "\u02DC", // SMALL TILDE
  1178.     "{\\textacutedbl}"                : "\u02DD", // DOUBLE ACUTE ACCENT
  1179.    
  1180.     //Greek Letters Courtesy of Spartanroc
  1181.     "$\\Gamma$" : "\u0393", // GREEK Gamma
  1182.     "$\\Delta$" : "\u0394", // GREEK Delta
  1183.     "$\\Theta$" : "\u0398", // GREEK Theta
  1184.     "$\\Lambda$" : "\u039B", // GREEK Lambda
  1185.     "$\\Xi$" : "\u039E", // GREEK Xi
  1186.     "$\\Pi$" : "\u03A0", // GREEK Pi
  1187.     "$\\Sigma$" : "\u03A3", // GREEK Sigma
  1188.     "$\\Phi$" : "\u03A6", // GREEK Phi
  1189.     "$\\Psi$" : "\u03A8", // GREEK Psi
  1190.     "$\\Omega$" : "\u03A9", // GREEK Omega
  1191.     "$\\alpha$" : "\u03B1", // GREEK alpha
  1192.     "$\\beta$" : "\u03B2", // GREEK beta
  1193.     "$\\gamma$" : "\u03B3", // GREEK gamma
  1194.     "$\\delta$" : "\u03B4", // GREEK delta
  1195.     "$\\varepsilon$": "\u03B5", // GREEK var-epsilon
  1196.     "$\\zeta$" : "\u03B6", // GREEK zeta
  1197.     "$\\eta$" : "\u03B7", // GREEK eta
  1198.     "$\\theta$" : "\u03B8", // GREEK theta
  1199.     "$\\iota$" : "\u03B9", // GREEK iota
  1200.     "$\\kappa$" : "\u03BA", // GREEK kappa
  1201.     "$\\lambda$" : "\u03BB", // GREEK lambda
  1202.     "$\\mu$" : "\u03BC", // GREEK mu
  1203.     "$\\nu$" : "\u03BD", // GREEK nu
  1204.     "$\\xi$" : "\u03BE", // GREEK xi
  1205.     "$\\pi$" : "\u03C0", // GREEK pi
  1206.     "$\\rho$" : "\u03C1", // GREEK rho
  1207.     "$\\varsigma$" : "\u03C2", // GREEK var-sigma
  1208.     "$\\sigma$" : "\u03C3", // GREEK sigma
  1209.     "$\\tau$" : "\u03C4", // GREEK tau
  1210.     "$\\upsilon$" : "\u03C5", // GREEK upsilon
  1211.     "$\\varphi$" : "\u03C6", // GREEK var-phi
  1212.     "$\\chi$" : "\u03C7", // GREEK chi
  1213.     "$\\psi$" : "\u03C8", // GREEK psi
  1214.     "$\\omega$" : "\u03C9", // GREEK omega
  1215.     "$\\vartheta$" : "\u03D1", // GREEK var-theta
  1216.     "$\\Upsilon$" : "\u03D2", // GREEK Upsilon
  1217.     "$\\phi$" : "\u03D5", // GREEK phi
  1218.     "$\\varpi$" : "\u03D6", // GREEK var-pi
  1219.     "$\\varrho$" : "\u03F1", // GREEK var-rho
  1220.     "$\\epsilon$" : "\u03F5", // GREEK epsilon
  1221.     //Greek letters end
  1222.     "{\\textendash}"                  : "\u2013", // EN DASH
  1223.     "{\\textemdash}"                  : "\u2014", // EM DASH
  1224.     "---"                             : "\u2014", // EM DASH
  1225.     "--"                              : "\u2013", // EN DASH
  1226.     "{\\textbardbl}"                  : "\u2016", // DOUBLE VERTICAL LINE
  1227.     "{\\textunderscore}"              : "\u2017", // DOUBLE LOW LINE
  1228.     "{\\textquoteleft}"               : "\u2018", // LEFT SINGLE QUOTATION MARK
  1229.     "{\\textquoteright}"              : "\u2019", // RIGHT SINGLE QUOTATION MARK
  1230.     "{\\quotesinglbase}"              : "\u201A", // SINGLE LOW-9 QUOTATION MARK
  1231.     "{\\textquotedblleft}"            : "\u201C", // LEFT DOUBLE QUOTATION MARK
  1232.     "{\\textquotedblright}"           : "\u201D", // RIGHT DOUBLE QUOTATION MARK
  1233.     "{\\quotedblbase}"                : "\u201E", // DOUBLE LOW-9 QUOTATION MARK
  1234. //    "{\\quotedblbase}"                : "\u201F", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK
  1235.     "{\\textdagger}"                  : "\u2020", // DAGGER
  1236.     "{\\textdaggerdbl}"               : "\u2021", // DOUBLE DAGGER
  1237.     "{\\textbullet}"                  : "\u2022", // BULLET
  1238.     "{\\textellipsis}"                : "\u2026", // HORIZONTAL ELLIPSIS
  1239.     "{\\textperthousand}"             : "\u2030", // PER MILLE SIGN
  1240.     "'''"                             : "\u2034", // TRIPLE PRIME
  1241.     "''"                              : "\u201D", // RIGHT DOUBLE QUOTATION MARK (could be a double prime)
  1242.     "``"                              : "\u201C", // LEFT DOUBLE QUOTATION MARK (could be a reversed double prime)
  1243.     "```"                             : "\u2037", // REVERSED TRIPLE PRIME
  1244.     "{\\guilsinglleft}"               : "\u2039", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
  1245.     "{\\guilsinglright}"              : "\u203A", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
  1246.     "!!"                              : "\u203C", // DOUBLE EXCLAMATION MARK
  1247.     "{\\textfractionsolidus}"         : "\u2044", // FRACTION SLASH
  1248.     "?!"                              : "\u2048", // QUESTION EXCLAMATION MARK
  1249.     "!?"                              : "\u2049", // EXCLAMATION QUESTION MARK
  1250.     "$^{0}$"                          : "\u2070", // SUPERSCRIPT ZERO
  1251.     "$^{4}$"                          : "\u2074", // SUPERSCRIPT FOUR
  1252.     "$^{5}$"                          : "\u2075", // SUPERSCRIPT FIVE
  1253.     "$^{6}$"                          : "\u2076", // SUPERSCRIPT SIX
  1254.     "$^{7}$"                          : "\u2077", // SUPERSCRIPT SEVEN
  1255.     "$^{8}$"                          : "\u2078", // SUPERSCRIPT EIGHT
  1256.     "$^{9}$"                          : "\u2079", // SUPERSCRIPT NINE
  1257.     "$^{+}$"                          : "\u207A", // SUPERSCRIPT PLUS SIGN
  1258.     "$^{-}$"                          : "\u207B", // SUPERSCRIPT MINUS
  1259.     "$^{=}$"                          : "\u207C", // SUPERSCRIPT EQUALS SIGN
  1260.     "$^{(}$"                          : "\u207D", // SUPERSCRIPT LEFT PARENTHESIS
  1261.     "$^{)}$"                          : "\u207E", // SUPERSCRIPT RIGHT PARENTHESIS
  1262.     "$^{n}$"                          : "\u207F", // SUPERSCRIPT LATIN SMALL LETTER N
  1263.     "$_{0}$"                          : "\u2080", // SUBSCRIPT ZERO
  1264.     "$_{1}$"                          : "\u2081", // SUBSCRIPT ONE
  1265.     "$_{2}$"                          : "\u2082", // SUBSCRIPT TWO
  1266.     "$_{3}$"                          : "\u2083", // SUBSCRIPT THREE
  1267.     "$_{4}$"                          : "\u2084", // SUBSCRIPT FOUR
  1268.     "$_{5}$"                          : "\u2085", // SUBSCRIPT FIVE
  1269.     "$_{6}$"                          : "\u2086", // SUBSCRIPT SIX
  1270.     "$_{7}$"                          : "\u2087", // SUBSCRIPT SEVEN
  1271.     "$_{8}$"                          : "\u2088", // SUBSCRIPT EIGHT
  1272.     "$_{9}$"                          : "\u2089", // SUBSCRIPT NINE
  1273.     "$_{+}$"                          : "\u208A", // SUBSCRIPT PLUS SIGN
  1274.     "$_{-}$"                          : "\u208B", // SUBSCRIPT MINUS
  1275.     "$_{=}$"                          : "\u208C", // SUBSCRIPT EQUALS SIGN
  1276.     "$_{(}$"                          : "\u208D", // SUBSCRIPT LEFT PARENTHESIS
  1277.     "$_{)}$"                          : "\u208E", // SUBSCRIPT RIGHT PARENTHESIS
  1278.     "{\\texteuro}"                    : "\u20AC", // EURO SIGN
  1279.     //"a/c"                             : "\u2100", // ACCOUNT OF
  1280.     //"a/s"                             : "\u2101", // ADDRESSED TO THE SUBJECT
  1281.     "{\\textcelsius}"                 : "\u2103", // DEGREE CELSIUS
  1282.     //"c/o"                             : "\u2105", // CARE OF
  1283.     //"c/u"                             : "\u2106", // CADA UNA
  1284.     "{\\textnumero}"                  : "\u2116", // NUMERO SIGN
  1285.     "{\\textcircledP}"                : "\u2117", // SOUND RECORDING COPYRIGHT
  1286.     "{\\textservicemark}"             : "\u2120", // SERVICE MARK
  1287.     "{TEL}"                           : "\u2121", // TELEPHONE SIGN
  1288.     "{\\texttrademark}"               : "\u2122", // TRADE MARK SIGN
  1289.     "{\\textohm}"                     : "\u2126", // OHM SIGN
  1290.     "{\\textestimated}"               : "\u212E", // ESTIMATED SYMBOL
  1291.    
  1292.     /*" 1/3"                            : "\u2153", // VULGAR FRACTION ONE THIRD
  1293.     " 2/3"                            : "\u2154", // VULGAR FRACTION TWO THIRDS
  1294.     " 1/5"                            : "\u2155", // VULGAR FRACTION ONE FIFTH
  1295.     " 2/5"                            : "\u2156", // VULGAR FRACTION TWO FIFTHS
  1296.     " 3/5"                            : "\u2157", // VULGAR FRACTION THREE FIFTHS
  1297.     " 4/5"                            : "\u2158", // VULGAR FRACTION FOUR FIFTHS
  1298.     " 1/6"                            : "\u2159", // VULGAR FRACTION ONE SIXTH
  1299.     " 5/6"                            : "\u215A", // VULGAR FRACTION FIVE SIXTHS
  1300.     " 1/8"                            : "\u215B", // VULGAR FRACTION ONE EIGHTH
  1301.     " 3/8"                            : "\u215C", // VULGAR FRACTION THREE EIGHTHS
  1302.     " 5/8"                            : "\u215D", // VULGAR FRACTION FIVE EIGHTHS
  1303.     " 7/8"                            : "\u215E", // VULGAR FRACTION SEVEN EIGHTHS
  1304.     " 1/"                             : "\u215F", // FRACTION NUMERATOR ONE */
  1305.    
  1306.     "{\\textleftarrow}"               : "\u2190", // LEFTWARDS ARROW
  1307.     "{\\textuparrow}"                 : "\u2191", // UPWARDS ARROW
  1308.     "{\\textrightarrow}"              : "\u2192", // RIGHTWARDS ARROW
  1309.     "{\\textdownarrow}"               : "\u2193", // DOWNWARDS ARROW
  1310.     /*"<->"                             : "\u2194", // LEFT RIGHT ARROW
  1311.     "<="                              : "\u21D0", // LEFTWARDS DOUBLE ARROW
  1312.     "=>"                              : "\u21D2", // RIGHTWARDS DOUBLE ARROW
  1313.     "<=>"                             : "\u21D4", // LEFT RIGHT DOUBLE ARROW */
  1314.     "$\\infty$"                       : "\u221E", // INFINITY
  1315.    
  1316.     /*"||"                              : "\u2225", // PARALLEL TO
  1317.     "/="                              : "\u2260", // NOT EQUAL TO
  1318.     "<="                              : "\u2264", // LESS-THAN OR EQUAL TO
  1319.     ">="                              : "\u2265", // GREATER-THAN OR EQUAL TO
  1320.     "<<"                              : "\u226A", // MUCH LESS-THAN
  1321.     ">>"                              : "\u226B", // MUCH GREATER-THAN
  1322.     "(+)"                             : "\u2295", // CIRCLED PLUS
  1323.     "(-)"                             : "\u2296", // CIRCLED MINUS
  1324.     "(x)"                             : "\u2297", // CIRCLED TIMES
  1325.     "(/)"                             : "\u2298", // CIRCLED DIVISION SLASH
  1326.     "|-"                              : "\u22A2", // RIGHT TACK
  1327.     "-|"                              : "\u22A3", // LEFT TACK
  1328.     "|-"                              : "\u22A6", // ASSERTION
  1329.     "|="                              : "\u22A7", // MODELS
  1330.     "|="                              : "\u22A8", // TRUE
  1331.     "||-"                             : "\u22A9", // FORCES */
  1332.    
  1333.     "$\\#$"                           : "\u22D5", // EQUAL AND PARALLEL TO
  1334.     //"<<<"                             : "\u22D8", // VERY MUCH LESS-THAN
  1335.     //">>>"                             : "\u22D9", // VERY MUCH GREATER-THAN
  1336.     "{\\textlangle}"                  : "\u2329", // LEFT-POINTING ANGLE BRACKET
  1337.     "{\\textrangle}"                  : "\u232A", // RIGHT-POINTING ANGLE BRACKET
  1338.     "{\\textvisiblespace}"            : "\u2423", // OPEN BOX
  1339.     //"///"                             : "\u2425", // SYMBOL FOR DELETE FORM TWO
  1340.     "{\\textopenbullet}"              : "\u25E6", // WHITE BULLET
  1341.     //":-("                             : "\u2639", // WHITE FROWNING FACE
  1342.     //":-)"                             : "\u263A", // WHITE SMILING FACE
  1343.     //"(-: "                            : "\u263B", // BLACK SMILING FACE
  1344.     //    "$\\#$"                           : "\u266F", // MUSIC SHARP SIGN
  1345.     "$\\%<$"                          : "\u2701", // UPPER BLADE SCISSORS
  1346.     /*    "$\\%<$"                          : "\u2702", // BLACK SCISSORS
  1347.     "$\\%<$"                          : "\u2703", // LOWER BLADE SCISSORS
  1348.     "$\\%<$"                          : "\u2704", // WHITE SCISSORS */
  1349.     /* Derived accented characters */
  1350.     "{\\`A}"                          : "\u00C0", // LATIN CAPITAL LETTER A WITH GRAVE
  1351.     "{\\'A}"                          : "\u00C1", // LATIN CAPITAL LETTER A WITH ACUTE
  1352.     "{\\^A}"                          : "\u00C2", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
  1353.     "{\\~A}"                          : "\u00C3", // LATIN CAPITAL LETTER A WITH TILDE
  1354.     "{\\\"A}"                         : "\u00C4", // LATIN CAPITAL LETTER A WITH DIAERESIS
  1355.     "{\\r A}"                          : "\u00C5", // LATIN CAPITAL LETTER A WITH RING ABOVE
  1356.     "{\\c C}"                          : "\u00C7", // LATIN CAPITAL LETTER C WITH CEDILLA
  1357.     "{\\`E}"                          : "\u00C8", // LATIN CAPITAL LETTER E WITH GRAVE
  1358.     "{\\'E}"                          : "\u00C9", // LATIN CAPITAL LETTER E WITH ACUTE
  1359.     "{\\^E}"                          : "\u00CA", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
  1360.     "{\\\"E}"                         : "\u00CB", // LATIN CAPITAL LETTER E WITH DIAERESIS
  1361.     "{\\`I}"                          : "\u00CC", // LATIN CAPITAL LETTER I WITH GRAVE
  1362.     "{\\'I}"                          : "\u00CD", // LATIN CAPITAL LETTER I WITH ACUTE
  1363.     "{\\^I}"                          : "\u00CE", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
  1364.     "{\\\"I}"                         : "\u00CF", // LATIN CAPITAL LETTER I WITH DIAERESIS
  1365.     "{\\~N}"                          : "\u00D1", // LATIN CAPITAL LETTER N WITH TILDE
  1366.     "{\\`O}"                          : "\u00D2", // LATIN CAPITAL LETTER O WITH GRAVE
  1367.     "{\\'O}"                          : "\u00D3", // LATIN CAPITAL LETTER O WITH ACUTE
  1368.     "{\\^O}"                          : "\u00D4", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
  1369.     "{\\~O}"                          : "\u00D5", // LATIN CAPITAL LETTER O WITH TILDE
  1370.     "{\\\"O}"                         : "\u00D6", // LATIN CAPITAL LETTER O WITH DIAERESIS
  1371.     "{\\`U}"                          : "\u00D9", // LATIN CAPITAL LETTER U WITH GRAVE
  1372.     "{\\'U}"                          : "\u00DA", // LATIN CAPITAL LETTER U WITH ACUTE
  1373.     "{\\^U}"                          : "\u00DB", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
  1374.     "{\\\"U}"                         : "\u00DC", // LATIN CAPITAL LETTER U WITH DIAERESIS
  1375.     "{\\'Y}"                          : "\u00DD", // LATIN CAPITAL LETTER Y WITH ACUTE
  1376.     "{\\`a}"                          : "\u00E0", // LATIN SMALL LETTER A WITH GRAVE
  1377.     "{\\'a}"                          : "\u00E1", // LATIN SMALL LETTER A WITH ACUTE
  1378.     "{\\^a}"                          : "\u00E2", // LATIN SMALL LETTER A WITH CIRCUMFLEX
  1379.     "{\\~a}"                          : "\u00E3", // LATIN SMALL LETTER A WITH TILDE
  1380.     "{\\\"a}"                         : "\u00E4", // LATIN SMALL LETTER A WITH DIAERESIS
  1381.     "{\\r a}"                          : "\u00E5", // LATIN SMALL LETTER A WITH RING ABOVE
  1382.     "{\\c c}"                          : "\u00E7", // LATIN SMALL LETTER C WITH CEDILLA
  1383.     "{\\`e}"                          : "\u00E8", // LATIN SMALL LETTER E WITH GRAVE
  1384.     "{\\'e}"                          : "\u00E9", // LATIN SMALL LETTER E WITH ACUTE
  1385.     "{\\^e}"                          : "\u00EA", // LATIN SMALL LETTER E WITH CIRCUMFLEX
  1386.     "{\\\"e}"                         : "\u00EB", // LATIN SMALL LETTER E WITH DIAERESIS
  1387.     "{\\`i}"                          : "\u00EC", // LATIN SMALL LETTER I WITH GRAVE
  1388.     "{\\'i}"                          : "\u00ED", // LATIN SMALL LETTER I WITH ACUTE
  1389.     "{\\^i}"                          : "\u00EE", // LATIN SMALL LETTER I WITH CIRCUMFLEX
  1390.     "{\\\"i}"                         : "\u00EF", // LATIN SMALL LETTER I WITH DIAERESIS
  1391.     "{\\~n}"                          : "\u00F1", // LATIN SMALL LETTER N WITH TILDE
  1392.     "{\\`o}"                          : "\u00F2", // LATIN SMALL LETTER O WITH GRAVE
  1393.     "{\\'o}"                          : "\u00F3", // LATIN SMALL LETTER O WITH ACUTE
  1394.     "{\\^o}"                          : "\u00F4", // LATIN SMALL LETTER O WITH CIRCUMFLEX
  1395.     "{\\~o}"                          : "\u00F5", // LATIN SMALL LETTER O WITH TILDE
  1396.     "{\\\"o}"                         : "\u00F6", // LATIN SMALL LETTER O WITH DIAERESIS
  1397.     "{\\`u}"                          : "\u00F9", // LATIN SMALL LETTER U WITH GRAVE
  1398.     "{\\'u}"                          : "\u00FA", // LATIN SMALL LETTER U WITH ACUTE
  1399.     "{\\^u}"                          : "\u00FB", // LATIN SMALL LETTER U WITH CIRCUMFLEX
  1400.     "{\\\"u}"                         : "\u00FC", // LATIN SMALL LETTER U WITH DIAERESIS
  1401.     "{\\'y}"                          : "\u00FD", // LATIN SMALL LETTER Y WITH ACUTE
  1402.     "{\\\"y}"                         : "\u00FF", // LATIN SMALL LETTER Y WITH DIAERESIS
  1403.     "{\\=A}"                          : "\u0100", // LATIN CAPITAL LETTER A WITH MACRON
  1404.     "{\\=a}"                          : "\u0101", // LATIN SMALL LETTER A WITH MACRON
  1405.     "{\\u A}"                          : "\u0102", // LATIN CAPITAL LETTER A WITH BREVE
  1406.     "{\\u a}"                          : "\u0103", // LATIN SMALL LETTER A WITH BREVE
  1407.     "{\\k A}"                          : "\u0104", // LATIN CAPITAL LETTER A WITH OGONEK
  1408.     "{\\k a}"                          : "\u0105", // LATIN SMALL LETTER A WITH OGONEK
  1409.     "{\\'C}"                          : "\u0106", // LATIN CAPITAL LETTER C WITH ACUTE
  1410.     "{\\'c}"                          : "\u0107", // LATIN SMALL LETTER C WITH ACUTE
  1411.     "{\\^C}"                          : "\u0108", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
  1412.     "{\\^c}"                          : "\u0109", // LATIN SMALL LETTER C WITH CIRCUMFLEX
  1413.     "{\\.C}"                          : "\u010A", // LATIN CAPITAL LETTER C WITH DOT ABOVE
  1414.     "{\\.c}"                          : "\u010B", // LATIN SMALL LETTER C WITH DOT ABOVE
  1415.     "{\\v C}"                          : "\u010C", // LATIN CAPITAL LETTER C WITH CARON
  1416.     "{\\v c}"                          : "\u010D", // LATIN SMALL LETTER C WITH CARON
  1417.     "{\\v D}"                          : "\u010E", // LATIN CAPITAL LETTER D WITH CARON
  1418.     "{\\v d}"                          : "\u010F", // LATIN SMALL LETTER D WITH CARON
  1419.     "{\\=E}"                          : "\u0112", // LATIN CAPITAL LETTER E WITH MACRON
  1420.     "{\\=e}"                          : "\u0113", // LATIN SMALL LETTER E WITH MACRON
  1421.     "{\\u E}"                          : "\u0114", // LATIN CAPITAL LETTER E WITH BREVE
  1422.     "{\\u e}"                          : "\u0115", // LATIN SMALL LETTER E WITH BREVE
  1423.     "{\\.E}"                          : "\u0116", // LATIN CAPITAL LETTER E WITH DOT ABOVE
  1424.     "{\\.e}"                          : "\u0117", // LATIN SMALL LETTER E WITH DOT ABOVE
  1425.     "{\\k E}"                          : "\u0118", // LATIN CAPITAL LETTER E WITH OGONEK
  1426.     "{\\k e}"                          : "\u0119", // LATIN SMALL LETTER E WITH OGONEK
  1427.     "{\\v E}"                          : "\u011A", // LATIN CAPITAL LETTER E WITH CARON
  1428.     "{\\v e}"                          : "\u011B", // LATIN SMALL LETTER E WITH CARON
  1429.     "{\\^G}"                          : "\u011C", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
  1430.     "{\\^g}"                          : "\u011D", // LATIN SMALL LETTER G WITH CIRCUMFLEX
  1431.     "{\\u G}"                          : "\u011E", // LATIN CAPITAL LETTER G WITH BREVE
  1432.     "{\\u g}"                          : "\u011F", // LATIN SMALL LETTER G WITH BREVE
  1433.     "{\\.G}"                          : "\u0120", // LATIN CAPITAL LETTER G WITH DOT ABOVE
  1434.     "{\\.g}"                          : "\u0121", // LATIN SMALL LETTER G WITH DOT ABOVE
  1435.     "{\\c G}"                          : "\u0122", // LATIN CAPITAL LETTER G WITH CEDILLA
  1436.     "{\\c g}"                          : "\u0123", // LATIN SMALL LETTER G WITH CEDILLA
  1437.     "{\\^H}"                          : "\u0124", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
  1438.     "{\\^h}"                          : "\u0125", // LATIN SMALL LETTER H WITH CIRCUMFLEX
  1439.     "{\\~I}"                          : "\u0128", // LATIN CAPITAL LETTER I WITH TILDE
  1440.     "{\\~i}"                          : "\u0129", // LATIN SMALL LETTER I WITH TILDE
  1441.     "{\\=I}"                          : "\u012A", // LATIN CAPITAL LETTER I WITH MACRON
  1442.     "{\\=i}"                          : "\u012B", // LATIN SMALL LETTER I WITH MACRON
  1443.     "{\\=\\i}"                        : "\u012B", // LATIN SMALL LETTER I WITH MACRON
  1444.     "{\\u I}"                          : "\u012C", // LATIN CAPITAL LETTER I WITH BREVE
  1445.     "{\\u i}"                          : "\u012D", // LATIN SMALL LETTER I WITH BREVE
  1446.     "{\\k I}"                          : "\u012E", // LATIN CAPITAL LETTER I WITH OGONEK
  1447.     "{\\k i}"                          : "\u012F", // LATIN SMALL LETTER I WITH OGONEK
  1448.     "{\\.I}"                          : "\u0130", // LATIN CAPITAL LETTER I WITH DOT ABOVE
  1449.     "{\\^J}"                          : "\u0134", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
  1450.     "{\\^j}"                          : "\u0135", // LATIN SMALL LETTER J WITH CIRCUMFLEX
  1451.     "{\\c K}"                          : "\u0136", // LATIN CAPITAL LETTER K WITH CEDILLA
  1452.     "{\\c k}"                          : "\u0137", // LATIN SMALL LETTER K WITH CEDILLA
  1453.     "{\\'L}"                          : "\u0139", // LATIN CAPITAL LETTER L WITH ACUTE
  1454.     "{\\'l}"                          : "\u013A", // LATIN SMALL LETTER L WITH ACUTE
  1455.     "{\\c L}"                          : "\u013B", // LATIN CAPITAL LETTER L WITH CEDILLA
  1456.     "{\\c l}"                          : "\u013C", // LATIN SMALL LETTER L WITH CEDILLA
  1457.     "{\\v L}"                          : "\u013D", // LATIN CAPITAL LETTER L WITH CARON
  1458.     "{\\v l}"                          : "\u013E", // LATIN SMALL LETTER L WITH CARON
  1459.     "{\\L }"                           : "\u0141", //LATIN CAPITAL LETTER L WITH STROKE
  1460.     "{\\l }"                           : "\u0142", //LATIN SMALL LETTER L WITH STROKE
  1461.     "{\\'N}"                          : "\u0143", // LATIN CAPITAL LETTER N WITH ACUTE
  1462.     "{\\'n}"                          : "\u0144", // LATIN SMALL LETTER N WITH ACUTE
  1463.     "{\\c N}"                          : "\u0145", // LATIN CAPITAL LETTER N WITH CEDILLA
  1464.     "{\\c n}"                          : "\u0146", // LATIN SMALL LETTER N WITH CEDILLA
  1465.     "{\\v N}"                          : "\u0147", // LATIN CAPITAL LETTER N WITH CARON
  1466.     "{\\v n}"                          : "\u0148", // LATIN SMALL LETTER N WITH CARON
  1467.     "{\\=O}"                          : "\u014C", // LATIN CAPITAL LETTER O WITH MACRON
  1468.     "{\\=o}"                          : "\u014D", // LATIN SMALL LETTER O WITH MACRON
  1469.     "{\\u O}"                          : "\u014E", // LATIN CAPITAL LETTER O WITH BREVE
  1470.     "{\\u o}"                          : "\u014F", // LATIN SMALL LETTER O WITH BREVE
  1471.     "{\\H O}"                          : "\u0150", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
  1472.     "{\\H o}"                          : "\u0151", // LATIN SMALL LETTER O WITH DOUBLE ACUTE
  1473.     "{\\'R}"                          : "\u0154", // LATIN CAPITAL LETTER R WITH ACUTE
  1474.     "{\\'r}"                          : "\u0155", // LATIN SMALL LETTER R WITH ACUTE
  1475.     "{\\c R}"                          : "\u0156", // LATIN CAPITAL LETTER R WITH CEDILLA
  1476.     "{\\c r}"                          : "\u0157", // LATIN SMALL LETTER R WITH CEDILLA
  1477.     "{\\v R}"                          : "\u0158", // LATIN CAPITAL LETTER R WITH CARON
  1478.     "{\\v r}"                          : "\u0159", // LATIN SMALL LETTER R WITH CARON
  1479.     "{\\'S}"                          : "\u015A", // LATIN CAPITAL LETTER S WITH ACUTE
  1480.     "{\\'s}"                          : "\u015B", // LATIN SMALL LETTER S WITH ACUTE
  1481.     "{\\^S}"                          : "\u015C", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
  1482.     "{\\^s}"                          : "\u015D", // LATIN SMALL LETTER S WITH CIRCUMFLEX
  1483.     "{\\c S}"                          : "\u015E", // LATIN CAPITAL LETTER S WITH CEDILLA
  1484.     "{\\c s}"                          : "\u015F", // LATIN SMALL LETTER S WITH CEDILLA
  1485.     "{\\v S}"                          : "\u0160", // LATIN CAPITAL LETTER S WITH CARON
  1486.     "{\\v s}"                          : "\u0161", // LATIN SMALL LETTER S WITH CARON
  1487.     "{\\c T}"                          : "\u0162", // LATIN CAPITAL LETTER T WITH CEDILLA
  1488.     "{\\c t}"                          : "\u0163", // LATIN SMALL LETTER T WITH CEDILLA
  1489.     "{\\v T}"                          : "\u0164", // LATIN CAPITAL LETTER T WITH CARON
  1490.     "{\\v t}"                          : "\u0165", // LATIN SMALL LETTER T WITH CARON
  1491.     "{\\~U}"                          : "\u0168", // LATIN CAPITAL LETTER U WITH TILDE
  1492.     "{\\~u}"                          : "\u0169", // LATIN SMALL LETTER U WITH TILDE
  1493.     "{\\=U}"                          : "\u016A", // LATIN CAPITAL LETTER U WITH MACRON
  1494.     "{\\=u}"                          : "\u016B", // LATIN SMALL LETTER U WITH MACRON
  1495.     "{\\u U}"                          : "\u016C", // LATIN CAPITAL LETTER U WITH BREVE
  1496.     "{\\u u}"                          : "\u016D", // LATIN SMALL LETTER U WITH BREVE
  1497.     "{\\H U}"                          : "\u0170", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
  1498.     "{\\H u}"                          : "\u0171", // LATIN SMALL LETTER U WITH DOUBLE ACUTE
  1499.     "{\\k U}"                          : "\u0172", // LATIN CAPITAL LETTER U WITH OGONEK
  1500.     "{\\k u}"                          : "\u0173", // LATIN SMALL LETTER U WITH OGONEK
  1501.     "{\\^W}"                          : "\u0174", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
  1502.     "{\\^w}"                          : "\u0175", // LATIN SMALL LETTER W WITH CIRCUMFLEX
  1503.     "{\\^Y}"                          : "\u0176", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
  1504.     "{\\^y}"                          : "\u0177", // LATIN SMALL LETTER Y WITH CIRCUMFLEX
  1505.     "{\\\"Y}"                         : "\u0178", // LATIN CAPITAL LETTER Y WITH DIAERESIS
  1506.     "{\\'Z}"                          : "\u0179", // LATIN CAPITAL LETTER Z WITH ACUTE
  1507.     "{\\'z}"                          : "\u017A", // LATIN SMALL LETTER Z WITH ACUTE
  1508.     "{\\.Z}"                          : "\u017B", // LATIN CAPITAL LETTER Z WITH DOT ABOVE
  1509.     "{\\.z}"                          : "\u017C", // LATIN SMALL LETTER Z WITH DOT ABOVE
  1510.     "{\\v Z}"                          : "\u017D", // LATIN CAPITAL LETTER Z WITH CARON
  1511.     "{\\v z}"                          : "\u017E", // LATIN SMALL LETTER Z WITH CARON
  1512.     "{\\v A}"                          : "\u01CD", // LATIN CAPITAL LETTER A WITH CARON
  1513.     "{\\v a}"                          : "\u01CE", // LATIN SMALL LETTER A WITH CARON
  1514.     "{\\v I}"                          : "\u01CF", // LATIN CAPITAL LETTER I WITH CARON
  1515.     "{\\v i}"                          : "\u01D0", // LATIN SMALL LETTER I WITH CARON
  1516.     "{\\v O}"                          : "\u01D1", // LATIN CAPITAL LETTER O WITH CARON
  1517.     "{\\v o}"                          : "\u01D2", // LATIN SMALL LETTER O WITH CARON
  1518.     "{\\v U}"                          : "\u01D3", // LATIN CAPITAL LETTER U WITH CARON
  1519.     "{\\v u}"                          : "\u01D4", // LATIN SMALL LETTER U WITH CARON
  1520.     "{\\v G}"                          : "\u01E6", // LATIN CAPITAL LETTER G WITH CARON
  1521.     "{\\v g}"                          : "\u01E7", // LATIN SMALL LETTER G WITH CARON
  1522.     "{\\v K}"                          : "\u01E8", // LATIN CAPITAL LETTER K WITH CARON
  1523.     "{\\v k}"                          : "\u01E9", // LATIN SMALL LETTER K WITH CARON
  1524.     "{\\k O}"                          : "\u01EA", // LATIN CAPITAL LETTER O WITH OGONEK
  1525.     "{\\k o}"                          : "\u01EB", // LATIN SMALL LETTER O WITH OGONEK
  1526.     "{\\v j}"                          : "\u01F0", // LATIN SMALL LETTER J WITH CARON
  1527.     "{\\'G}"                          : "\u01F4", // LATIN CAPITAL LETTER G WITH ACUTE
  1528.     "{\\'g}"                          : "\u01F5", // LATIN SMALL LETTER G WITH ACUTE
  1529.     "{\\.B}"                          : "\u1E02", // LATIN CAPITAL LETTER B WITH DOT ABOVE
  1530.     "{\\.b}"                          : "\u1E03", // LATIN SMALL LETTER B WITH DOT ABOVE
  1531.     "{\\d B}"                          : "\u1E04", // LATIN CAPITAL LETTER B WITH DOT BELOW
  1532.     "{\\d b}"                          : "\u1E05", // LATIN SMALL LETTER B WITH DOT BELOW
  1533.     "{\\b B}"                          : "\u1E06", // LATIN CAPITAL LETTER B WITH LINE BELOW
  1534.     "{\\b b}"                          : "\u1E07", // LATIN SMALL LETTER B WITH LINE BELOW
  1535.     "{\\.D}"                          : "\u1E0A", // LATIN CAPITAL LETTER D WITH DOT ABOVE
  1536.     "{\\.d}"                          : "\u1E0B", // LATIN SMALL LETTER D WITH DOT ABOVE
  1537.     "{\\d D}"                          : "\u1E0C", // LATIN CAPITAL LETTER D WITH DOT BELOW
  1538.     "{\\d d}"                          : "\u1E0D", // LATIN SMALL LETTER D WITH DOT BELOW
  1539.     "{\\b D}"                          : "\u1E0E", // LATIN CAPITAL LETTER D WITH LINE BELOW
  1540.     "{\\b d}"                          : "\u1E0F", // LATIN SMALL LETTER D WITH LINE BELOW
  1541.     "{\\c D}"                          : "\u1E10", // LATIN CAPITAL LETTER D WITH CEDILLA
  1542.     "{\\c d}"                          : "\u1E11", // LATIN SMALL LETTER D WITH CEDILLA
  1543.     "{\\.F}"                          : "\u1E1E", // LATIN CAPITAL LETTER F WITH DOT ABOVE
  1544.     "{\\.f}"                          : "\u1E1F", // LATIN SMALL LETTER F WITH DOT ABOVE
  1545.     "{\\=G}"                          : "\u1E20", // LATIN CAPITAL LETTER G WITH MACRON
  1546.     "{\\=g}"                          : "\u1E21", // LATIN SMALL LETTER G WITH MACRON
  1547.     "{\\.H}"                          : "\u1E22", // LATIN CAPITAL LETTER H WITH DOT ABOVE
  1548.     "{\\.h}"                          : "\u1E23", // LATIN SMALL LETTER H WITH DOT ABOVE
  1549.     "{\\d H}"                          : "\u1E24", // LATIN CAPITAL LETTER H WITH DOT BELOW
  1550.     "{\\d h}"                          : "\u1E25", // LATIN SMALL LETTER H WITH DOT BELOW
  1551.     "{\\\"H}"                         : "\u1E26", // LATIN CAPITAL LETTER H WITH DIAERESIS
  1552.     "{\\\"h}"                         : "\u1E27", // LATIN SMALL LETTER H WITH DIAERESIS
  1553.     "{\\c H}"                          : "\u1E28", // LATIN CAPITAL LETTER H WITH CEDILLA
  1554.     "{\\c h}"                          : "\u1E29", // LATIN SMALL LETTER H WITH CEDILLA
  1555.     "{\\'K}"                          : "\u1E30", // LATIN CAPITAL LETTER K WITH ACUTE
  1556.     "{\\'k}"                          : "\u1E31", // LATIN SMALL LETTER K WITH ACUTE
  1557.     "{\\d K}"                          : "\u1E32", // LATIN CAPITAL LETTER K WITH DOT BELOW
  1558.     "{\\d k}"                          : "\u1E33", // LATIN SMALL LETTER K WITH DOT BELOW
  1559.     "{\\b K}"                          : "\u1E34", // LATIN CAPITAL LETTER K WITH LINE BELOW
  1560.     "{\\b k}"                          : "\u1E35", // LATIN SMALL LETTER K WITH LINE BELOW
  1561.     "{\\d L}"                          : "\u1E36", // LATIN CAPITAL LETTER L WITH DOT BELOW
  1562.     "{\\d l}"                          : "\u1E37", // LATIN SMALL LETTER L WITH DOT BELOW
  1563.     "{\\b L}"                          : "\u1E3A", // LATIN CAPITAL LETTER L WITH LINE BELOW
  1564.     "{\\b l}"                          : "\u1E3B", // LATIN SMALL LETTER L WITH LINE BELOW
  1565.     "{\\'M}"                          : "\u1E3E", // LATIN CAPITAL LETTER M WITH ACUTE
  1566.     "{\\'m}"                          : "\u1E3F", // LATIN SMALL LETTER M WITH ACUTE
  1567.     "{\\.M}"                          : "\u1E40", // LATIN CAPITAL LETTER M WITH DOT ABOVE
  1568.     "{\\.m}"                          : "\u1E41", // LATIN SMALL LETTER M WITH DOT ABOVE
  1569.     "{\\d M}"                          : "\u1E42", // LATIN CAPITAL LETTER M WITH DOT BELOW
  1570.     "{\\d m}"                          : "\u1E43", // LATIN SMALL LETTER M WITH DOT BELOW
  1571.     "{\\.N}"                          : "\u1E44", // LATIN CAPITAL LETTER N WITH DOT ABOVE
  1572.     "{\\.n}"                          : "\u1E45", // LATIN SMALL LETTER N WITH DOT ABOVE
  1573.     "{\\d N}"                          : "\u1E46", // LATIN CAPITAL LETTER N WITH DOT BELOW
  1574.     "{\\d n}"                          : "\u1E47", // LATIN SMALL LETTER N WITH DOT BELOW
  1575.     "{\\b N}"                          : "\u1E48", // LATIN CAPITAL LETTER N WITH LINE BELOW
  1576.     "{\\b n}"                          : "\u1E49", // LATIN SMALL LETTER N WITH LINE BELOW
  1577.     "{\\'P}"                          : "\u1E54", // LATIN CAPITAL LETTER P WITH ACUTE
  1578.     "{\\'p}"                          : "\u1E55", // LATIN SMALL LETTER P WITH ACUTE
  1579.     "{\\.P}"                          : "\u1E56", // LATIN CAPITAL LETTER P WITH DOT ABOVE
  1580.     "{\\.p}"                          : "\u1E57", // LATIN SMALL LETTER P WITH DOT ABOVE
  1581.     "{\\.R}"                          : "\u1E58", // LATIN CAPITAL LETTER R WITH DOT ABOVE
  1582.     "{\\.r}"                          : "\u1E59", // LATIN SMALL LETTER R WITH DOT ABOVE
  1583.     "{\\d R}"                          : "\u1E5A", // LATIN CAPITAL LETTER R WITH DOT BELOW
  1584.     "{\\d r}"                          : "\u1E5B", // LATIN SMALL LETTER R WITH DOT BELOW
  1585.     "{\\b R}"                          : "\u1E5E", // LATIN CAPITAL LETTER R WITH LINE BELOW
  1586.     "{\\b r}"                          : "\u1E5F", // LATIN SMALL LETTER R WITH LINE BELOW
  1587.     "{\\.S}"                          : "\u1E60", // LATIN CAPITAL LETTER S WITH DOT ABOVE
  1588.     "{\\.s}"                          : "\u1E61", // LATIN SMALL LETTER S WITH DOT ABOVE
  1589.     "{\\d S}"                          : "\u1E62", // LATIN CAPITAL LETTER S WITH DOT BELOW
  1590.     "{\\d s}"                          : "\u1E63", // LATIN SMALL LETTER S WITH DOT BELOW
  1591.     "{\\.T}"                          : "\u1E6A", // LATIN CAPITAL LETTER T WITH DOT ABOVE
  1592.     "{\\.t}"                          : "\u1E6B", // LATIN SMALL LETTER T WITH DOT ABOVE
  1593.     "{\\d T}"                          : "\u1E6C", // LATIN CAPITAL LETTER T WITH DOT BELOW
  1594.     "{\\d t}"                          : "\u1E6D", // LATIN SMALL LETTER T WITH DOT BELOW
  1595.     "{\\b T}"                          : "\u1E6E", // LATIN CAPITAL LETTER T WITH LINE BELOW
  1596.     "{\\b t}"                          : "\u1E6F", // LATIN SMALL LETTER T WITH LINE BELOW
  1597.     "{\\~V}"                          : "\u1E7C", // LATIN CAPITAL LETTER V WITH TILDE
  1598.     "{\\~v}"                          : "\u1E7D", // LATIN SMALL LETTER V WITH TILDE
  1599.     "{\\d V}"                          : "\u1E7E", // LATIN CAPITAL LETTER V WITH DOT BELOW
  1600.     "{\\d v}"                          : "\u1E7F", // LATIN SMALL LETTER V WITH DOT BELOW
  1601.     "{\\`W}"                          : "\u1E80", // LATIN CAPITAL LETTER W WITH GRAVE
  1602.     "{\\`w}"                          : "\u1E81", // LATIN SMALL LETTER W WITH GRAVE
  1603.     "{\\'W}"                          : "\u1E82", // LATIN CAPITAL LETTER W WITH ACUTE
  1604.     "{\\'w}"                          : "\u1E83", // LATIN SMALL LETTER W WITH ACUTE
  1605.     "{\\\"W}"                         : "\u1E84", // LATIN CAPITAL LETTER W WITH DIAERESIS
  1606.     "{\\\"w}"                         : "\u1E85", // LATIN SMALL LETTER W WITH DIAERESIS
  1607.     "{\\.W}"                          : "\u1E86", // LATIN CAPITAL LETTER W WITH DOT ABOVE
  1608.     "{\\.w}"                          : "\u1E87", // LATIN SMALL LETTER W WITH DOT ABOVE
  1609.     "{\\d W}"                          : "\u1E88", // LATIN CAPITAL LETTER W WITH DOT BELOW
  1610.     "{\\d w}"                          : "\u1E89", // LATIN SMALL LETTER W WITH DOT BELOW
  1611.     "{\\.X}"                          : "\u1E8A", // LATIN CAPITAL LETTER X WITH DOT ABOVE
  1612.     "{\\.x}"                          : "\u1E8B", // LATIN SMALL LETTER X WITH DOT ABOVE
  1613.     "{\\\"X}"                         : "\u1E8C", // LATIN CAPITAL LETTER X WITH DIAERESIS
  1614.     "{\\\"x}"                         : "\u1E8D", // LATIN SMALL LETTER X WITH DIAERESIS
  1615.     "{\\.Y}"                          : "\u1E8E", // LATIN CAPITAL LETTER Y WITH DOT ABOVE
  1616.     "{\\.y}"                          : "\u1E8F", // LATIN SMALL LETTER Y WITH DOT ABOVE
  1617.     "{\\^Z}"                          : "\u1E90", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
  1618.     "{\\^z}"                          : "\u1E91", // LATIN SMALL LETTER Z WITH CIRCUMFLEX
  1619.     "{\\d Z}"                          : "\u1E92", // LATIN CAPITAL LETTER Z WITH DOT BELOW
  1620.     "{\\d z}"                          : "\u1E93", // LATIN SMALL LETTER Z WITH DOT BELOW
  1621.     "{\\b Z}"                          : "\u1E94", // LATIN CAPITAL LETTER Z WITH LINE BELOW
  1622.     "{\\b z}"                          : "\u1E95", // LATIN SMALL LETTER Z WITH LINE BELOW
  1623.     "{\\b h}"                          : "\u1E96", // LATIN SMALL LETTER H WITH LINE BELOW
  1624.     "{\\\"t}"                         : "\u1E97", // LATIN SMALL LETTER T WITH DIAERESIS
  1625.     "{\\d A}"                          : "\u1EA0", // LATIN CAPITAL LETTER A WITH DOT BELOW
  1626.     "{\\d a}"                          : "\u1EA1", // LATIN SMALL LETTER A WITH DOT BELOW
  1627.     "{\\d E}"                          : "\u1EB8", // LATIN CAPITAL LETTER E WITH DOT BELOW
  1628.     "{\\d e}"                          : "\u1EB9", // LATIN SMALL LETTER E WITH DOT BELOW
  1629.     "{\\~E}"                          : "\u1EBC", // LATIN CAPITAL LETTER E WITH TILDE
  1630.     "{\\~e}"                          : "\u1EBD", // LATIN SMALL LETTER E WITH TILDE
  1631.     "{\\d I}"                          : "\u1ECA", // LATIN CAPITAL LETTER I WITH DOT BELOW
  1632.     "{\\d i}"                          : "\u1ECB", // LATIN SMALL LETTER I WITH DOT BELOW
  1633.     "{\\d O}"                          : "\u1ECC", // LATIN CAPITAL LETTER O WITH DOT BELOW
  1634.     "{\\d o}"                          : "\u1ECD", // LATIN SMALL LETTER O WITH DOT BELOW
  1635.     "{\\d U}"                          : "\u1EE4", // LATIN CAPITAL LETTER U WITH DOT BELOW
  1636.     "{\\d u}"                          : "\u1EE5", // LATIN SMALL LETTER U WITH DOT BELOW
  1637.     "{\\`Y}"                          : "\u1EF2", // LATIN CAPITAL LETTER Y WITH GRAVE
  1638.     "{\\`y}"                          : "\u1EF3", // LATIN SMALL LETTER Y WITH GRAVE
  1639.     "{\\d Y}"                          : "\u1EF4", // LATIN CAPITAL LETTER Y WITH DOT BELOW
  1640.     "{\\d y}"                          : "\u1EF5", // LATIN SMALL LETTER Y WITH DOT BELOW
  1641.     "{\\~Y}"                          : "\u1EF8", // LATIN CAPITAL LETTER Y WITH TILDE
  1642.     "{\\~y}"                          : "\u1EF9", // LATIN SMALL LETTER Y WITH TILDE
  1643.     "{\\~}"                           : "\u223C", // TILDE OPERATOR
  1644.     "~"                               : "\u00A0" // NO-BREAK SPACE
  1645. };
  1646.  
  1647. var alwaysMap = {
  1648.     "|":"{\\textbar}",
  1649.     "<":"{\\textless}",
  1650.     ">":"{\\textgreater}",
  1651.     "~":"{\\textasciitilde}",
  1652.     "^":"{\\textasciicircum}",
  1653.     "\\":"{\\textbackslash}",
  1654.     "{" : "\\{",
  1655.     "}" : "\\}"
  1656. };
  1657.  
  1658.  
  1659. var strings = {};
  1660. var keyRe = /[a-zA-Z0-9\-]/;
  1661. var keywordSplitOnSpace = true;
  1662. var keywordDelimRe = '\\s*[,;]\\s*';
  1663. var keywordDelimReFlags = '';
  1664.  
  1665. function setKeywordSplitOnSpace( val ) {
  1666.     keywordSplitOnSpace = val;
  1667. }
  1668.  
  1669. function setKeywordDelimRe( val, flags ) {
  1670.     //expect string, but it could be RegExp
  1671.     if(typeof(val) != 'string') {
  1672.         keywordDelimRe = val.toString().slice(1, val.toString().lastIndexOf('/'));
  1673.         keywordDelimReFlags = val.toString().slice(val.toString().lastIndexOf('/')+1);
  1674.     } else {
  1675.         keywordDelimRe = val;
  1676.         keywordDelimReFlags = flags;
  1677.     }
  1678. }
  1679.  
  1680. function processField(item, field, value) {
  1681.     if(Zotero.Utilities.trim(value) == '') return null;
  1682.     if(fieldMap[field]) {
  1683.         item[fieldMap[field]] = value;
  1684.     } else if(inputFieldMap[field]) {
  1685.         item[inputFieldMap[field]] = value;
  1686.     } else if(field == "journal") {
  1687.         if(item.publicationTitle) {
  1688.             item.journalAbbreviation = value;
  1689.         } else {
  1690.             item.publicationTitle = value;
  1691.         }
  1692.     } else if(field == "fjournal") {
  1693.         if(item.publicationTitle) {
  1694.             // move publicationTitle to abbreviation
  1695.             item.journalAbbreviation = value;
  1696.         }
  1697.         item.publicationTitle = value;
  1698.     } else if(field == "author" || field == "editor" || field == "translator") {
  1699.         // parse authors/editors/translators
  1700.         var names = value.split(/ and /i); // now case insensitive
  1701.         for(var i in names) {
  1702.             var name = names[i];
  1703.             // skip empty names
  1704.             if (name.trim() == '') {
  1705.                 continue;
  1706.             }
  1707.             // Names in BibTeX can have three commas
  1708.             pieces = name.split(',');
  1709.             var creator = {};
  1710.             if (pieces.length > 1) {
  1711.                 creator.firstName = pieces.pop().trim();
  1712.                 creator.lastName = pieces.join(',').trim();
  1713.                 creator.creatorType = field;
  1714.             } else {
  1715.                 creator = Zotero.Utilities.cleanAuthor(name, field, false);
  1716.             }
  1717.             item.creators.push(creator);
  1718.         }
  1719.     } else if(field == "institution" || field == "organization") {
  1720.         item.backupPublisher = value;
  1721.     } else if(field == "number"){ // fix for techreport
  1722.         if (item.itemType == "report") {
  1723.             item.reportNumber = value;
  1724.         } else if (item.itemType == "book" || item.itemType == "bookSection") {
  1725.             item.seriesNumber = value;
  1726.         } else if (item.itemType == "patent"){
  1727.             item.patentNumber = value;
  1728.         } else {
  1729.             item.issue = value;
  1730.         }
  1731.     } else if(field == "month") {
  1732.         var monthIndex = months.indexOf(value.toLowerCase());
  1733.         if(monthIndex != -1) {
  1734.             value = Zotero.Utilities.formatDate({month:monthIndex});
  1735.         } else {
  1736.             value += " ";
  1737.         }
  1738.        
  1739.         if(item.date) {
  1740.             if(value.indexOf(item.date) != -1) {
  1741.                 // value contains year and more
  1742.                 item.date = value;
  1743.             } else {
  1744.                 item.date = value+item.date;
  1745.             }
  1746.         } else {
  1747.             item.date = value;
  1748.         }
  1749.     } else if(field == "year") {
  1750.         if(item.date) {
  1751.             if(item.date.indexOf(value) == -1) {
  1752.                 // date does not already contain year
  1753.                 item.date += value;
  1754.             }
  1755.         } else {
  1756.             item.date = value;
  1757.         }
  1758.     } else if(field == "date") {
  1759.     //We're going to assume that "date" and the date parts don't occur together. If they do, we pick date, which should hold all.
  1760.         item.date = value;
  1761.     } else if(field == "pages") {
  1762.         if (item.itemType == "book" || item.itemType == "thesis" || item.itemType == "manuscript") {
  1763.             item.numPages = value;
  1764.         }
  1765.         else {
  1766.             item.pages = value.replace(/--/g, "-");
  1767.         }
  1768.     } else if(field == "note") {
  1769.         item.extra += "\n"+value;
  1770.     } else if(field == "howpublished") {
  1771.         if(value.length >= 7) {
  1772.             var str = value.substr(0, 7);
  1773.             if(str == "http://" || str == "https:/" || str == "mailto:") {
  1774.                 item.url = value;
  1775.             } else {
  1776.                 item.extra += "\nPublished: "+value;
  1777.             }
  1778.         }
  1779.    
  1780.     }
  1781.     //accept lastchecked or urldate for access date. These should never both occur.
  1782.     //If they do we don't know which is better so we might as well just take the second one
  1783.     else if (field == "lastchecked"|| field == "urldate"){
  1784.         item.accessDate = value;
  1785.     }
  1786.     else if(field == "keywords" || field == "keyword") {
  1787.         var re = new RegExp(keywordDelimRe, keywordDelimReFlags);
  1788.         if(!value.match(re) && keywordSplitOnSpace) {
  1789.             // keywords/tags
  1790.             item.tags = value.split(/\s+/);
  1791.         } else {
  1792.             item.tags = value.split(re);
  1793.         }
  1794.     } else if (field == "comment" || field == "annote" || field == "review") {
  1795.         item.notes.push({note:Zotero.Utilities.text2html(value)});
  1796.     } else if (field == "pdf" || field == "path" /*Papers2 compatibility*/) {
  1797.         item.attachments = [{path:value, mimeType:"application/pdf"}];
  1798.     } else if (field == "sentelink") { // the reference manager 'Sente' has a unique file scheme in exported BibTeX
  1799.         item.attachments = [{path:value.split(",")[0], mimeType:"application/pdf"}];
  1800.     } else if (field == "file") {
  1801.         var attachments = value.split(";");
  1802.         for(var i in attachments){
  1803.             var attachment = attachments[i];
  1804.             var parts = attachment.split(":");
  1805.             var filetitle = parts[0];
  1806.             var filepath = parts[1];
  1807.             if (filepath.trim() === '') continue; // skip empty entries
  1808.             var filetype = parts[2];
  1809.             if (filetitle.length == 0) {
  1810.                 filetitle = "Attachment";
  1811.             }
  1812.             if (filetype.match(/pdf/i)) {
  1813.                 item.attachments.push({path:filepath, mimeType:"application/pdf", title:filetitle});
  1814.             } else {
  1815.                 item.attachments.push({path:filepath, title:filetitle});
  1816.             }
  1817.         }
  1818.     }
  1819. }
  1820.  
  1821. function getFieldValue(read) {
  1822.     var value = "";
  1823.     // now, we have the first character of the field
  1824.     if(read == "{") {
  1825.         // character is a brace
  1826.         var openBraces = 1;
  1827.         while(read = Zotero.read(1)) {
  1828.             if(read == "{" && value[value.length-1] != "\\") {
  1829.                 openBraces++;
  1830.                 value += "{";
  1831.             } else if(read == "}" && value[value.length-1] != "\\") {
  1832.                 openBraces--;
  1833.                 if(openBraces == 0) {
  1834.                     break;
  1835.                 } else {
  1836.                     value += "}";
  1837.                 }
  1838.             } else {
  1839.                 value += read;
  1840.             }
  1841.         }
  1842.        
  1843.     } else if(read == '"') {
  1844.         var openBraces = 0;
  1845.         while(read = Zotero.read(1)) {
  1846.             if(read == "{" && value[value.length-1] != "\\") {
  1847.                 openBraces++;
  1848.                 value += "{";
  1849.             } else if(read == "}" && value[value.length-1] != "\\") {
  1850.                 openBraces--;
  1851.                 value += "}";
  1852.             } else if(read == '"' && openBraces == 0) {
  1853.                 break;
  1854.             } else {
  1855.                 value += read;
  1856.             }
  1857.         }
  1858.     }
  1859.    
  1860.     if(value.length > 1) {
  1861.         // replace accented characters (yucky slow)
  1862.         value = value.replace(/{?(\\[`"'^~=a-z]){?\\?([A-Za-z])}/g, "{$1$2}");
  1863.         //convert tex markup into permitted HTML
  1864.         value = mapTeXmarkup(value);
  1865.         for (var mapped in reversemappingTable) { // really really slow!
  1866.             var unicode = reversemappingTable[mapped];
  1867.             while(value.indexOf(mapped) !== -1) {
  1868.                 Zotero.debug("Replace " + mapped + " in " + value + " with " + unicode);
  1869.                 value = value.replace(mapped, unicode);
  1870.             }
  1871.             mapped = mapped.replace(/[{}]/g, "");
  1872.             while(value.indexOf(mapped) !== -1) {
  1873.                 //Z.debug(value)
  1874.                 Zotero.debug("Replace(2) " + mapped + " in " + value + " with " + unicode);
  1875.                 value = value.replace(mapped, unicode);
  1876.             }
  1877.         }
  1878.        
  1879.         // kill braces
  1880.         value = value.replace(/([^\\])[{}]+/g, "$1");
  1881.         if(value[0] == "{") {
  1882.             value = value.substr(1);
  1883.         }
  1884.        
  1885.         // chop off backslashes
  1886.         value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2");
  1887.         value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2");
  1888.         if(value[0] == "\\" && "#$%&~_^\\{}".indexOf(value[1]) != -1) {
  1889.             value = value.substr(1);
  1890.         }
  1891.         if(value[value.length-1] == "\\" && "#$%&~_^\\{}".indexOf(value[value.length-2]) != -1) {
  1892.             value = value.substr(0, value.length-1);
  1893.         }
  1894.         value = value.replace(/\\\\/g, "\\");
  1895.         value = value.replace(/\s+/g, " ");
  1896.     }
  1897.  
  1898.     return value;
  1899. }
  1900.  
  1901. function jabrefSplit(str, sep) {
  1902.     var quoted = false;
  1903.     var result = [];
  1904.  
  1905.     str = str.split('');
  1906.     while (str.length > 0) {
  1907.         if (result.length == 0) { result = ['']; }
  1908.  
  1909.         if (str[0] == sep) {
  1910.             str.shift();
  1911.             result.push('');
  1912.         } else {
  1913.             if (str[0] == '\\') { str.shift(); }
  1914.             result[result.length - 1] += str.shift();
  1915.         }
  1916.     }
  1917.     return result;
  1918. }
  1919.  
  1920. function jabrefCollect(arr, func) {
  1921.     if (arr == null) { return []; }
  1922.  
  1923.     var result = [];
  1924.  
  1925.     for (var i = 0; i < arr.length; i++) {
  1926.         if (func(arr[i])) {
  1927.             result.push(arr[i]);
  1928.         }
  1929.     }
  1930.     return result;
  1931. }
  1932.  
  1933. function processComment() {
  1934.     var comment = "";
  1935.     var read;
  1936.     var collectionPath = [];
  1937.     var parentCollection, collection;
  1938.  
  1939.     while(read = Zotero.read(1)) {
  1940.         if (read == "}") { break; } // JabRef ought to escape '}' but doesn't; embedded '}' chars will break the import just as it will on JabRef itself
  1941.         comment += read;
  1942.     }
  1943.  
  1944.     if (comment == 'jabref-meta: groupsversion:3;') {
  1945.         jabref.format = 3;
  1946.         return;
  1947.     }
  1948.  
  1949.     if (comment.indexOf('jabref-meta: groupstree:') == 0) {
  1950.         if (jabref.format != 3) {
  1951.             Zotero.debug("jabref: fatal: unsupported group format: " + jabref.format);
  1952.             return;
  1953.         }
  1954.         comment = comment.replace(/^jabref-meta: groupstree:/, '').replace(/[\r\n]/gm, '')
  1955.  
  1956.         var records = jabrefSplit(comment, ';');
  1957.         while (records.length > 0) {
  1958.             var record = records.shift();
  1959.             var keys = jabrefSplit(record, ';');
  1960.             if (keys.length < 2) { continue; }
  1961.  
  1962.             var record = {id: keys.shift()};
  1963.             record.data = record.id.match(/^([0-9]) ([^:]*):(.*)/);
  1964.             if (record.data == null) {
  1965.                 Zotero.debug("jabref: fatal: unexpected non-match for group " + record.id);
  1966.                 return;
  1967.             }
  1968.             record.level = parseInt(record.data[1]);
  1969.             record.type = record.data[2]
  1970.             record.name = record.data[3]
  1971.             record.intersection = keys.shift(); // 0 = independent, 1 = intersection, 2 = union
  1972.  
  1973.             if (isNaN(record.level)) {
  1974.                 Zotero.debug("jabref: fatal: unexpected record level in " + record.id);
  1975.                 return;
  1976.             }
  1977.  
  1978.             if (record.level == 0) { continue; }
  1979.             if (record.type != 'ExplicitGroup') {
  1980.                 Zotero.debug("jabref: fatal: group type " + record.type + " is not supported");
  1981.                 return;
  1982.             }
  1983.  
  1984.             collectionPath = collectionPath.slice(0, record.level - 1).concat([record.name]);
  1985.             Zotero.debug("jabref: locating level " + record.level + ": " + collectionPath.join('/'));
  1986.  
  1987.             if (jabref.root.hasOwnProperty(collectionPath[0])) {
  1988.                 collection = jabref.root[collectionPath[0]];
  1989.                 Zotero.debug("jabref: root " + collection.name + " found");
  1990.             } else {
  1991.                 collection = new Zotero.Collection();
  1992.                 collection.name = collectionPath[0];
  1993.                 collection.type = 'collection';
  1994.                 collection.children = [];
  1995.                 jabref.root[collectionPath[0]] = collection;
  1996.                 Zotero.debug("jabref: root " + collection.name + " created");
  1997.             }
  1998.             parentCollection = null;
  1999.  
  2000.             for (var i = 1; i < collectionPath.length; i++) {
  2001.                 var path = collectionPath[i];
  2002.                 Zotero.debug("jabref: looking for child " + path + " under " + collection.name);
  2003.  
  2004.                 var child = jabrefCollect(collection.children, function(n) { return (n.name == path)})
  2005.                 if (child.length != 0) {
  2006.                     child = child[0]
  2007.                     Zotero.debug("jabref: child " + child.name + " found under " + collection.name);
  2008.                 } else {
  2009.                     child = new Zotero.Collection();
  2010.                     child.name = path;
  2011.                     child.type = 'collection';
  2012.                     child.children = [];
  2013.  
  2014.                     collection.children.push(child);
  2015.                     Zotero.debug("jabref: child " + child.name + " created under " + collection.name);
  2016.                 }
  2017.  
  2018.                 parentCollection = collection;
  2019.                 collection = child;
  2020.             }
  2021.  
  2022.             if (parentCollection) {
  2023.                 parentCollection = jabrefCollect(parentCollection.children, function(n) { return (n.type == 'item') });
  2024.             }
  2025.  
  2026.             if (record.intersection == '2' && parentCollection) { // union with parent
  2027.                 collection.children = parentCollection;
  2028.             }
  2029.  
  2030.             while(keys.length > 0) {
  2031.                 key = keys.shift();
  2032.                 if (key != '') {
  2033.                     Zotero.debug('jabref: adding ' + key + ' to ' + collection.name);
  2034.                     collection.children.push({type: 'item', id: key});
  2035.                 }
  2036.             }
  2037.  
  2038.             if (parentCollection && record.intersection == '1') { // intersection with parent
  2039.                 collection.children = jabrefMap(collection.children, function(n) { parentCollection.indexOf(n) !== -1; });
  2040.             }
  2041.         }
  2042.     }
  2043. }
  2044.  
  2045. function beginRecord(type, closeChar) {
  2046.     type = Zotero.Utilities.trimInternal(type.toLowerCase());
  2047.     if(type != "string") {
  2048.         var zoteroType = bibtex2zoteroTypeMap[type];
  2049.         if (!zoteroType) {
  2050.             Zotero.debug("discarded item from BibTeX; type was "+type);
  2051.             return;
  2052.         }
  2053.         var item = new Zotero.Item(zoteroType);
  2054.        
  2055.         item.extra = "";
  2056.     }
  2057.    
  2058.     var field = "";
  2059.    
  2060.     // by setting dontRead to true, we can skip a read on the next iteration
  2061.     // of this loop. this is useful after we read past the end of a string.
  2062.     var dontRead = false;
  2063.    
  2064.     while(dontRead || (read = Zotero.read(1))) {
  2065.         dontRead = false;
  2066.        
  2067.         if(read == "=") {                               // equals begin a field
  2068.         // read whitespace
  2069.             var read = Zotero.read(1);
  2070.             while(" \n\r\t".indexOf(read) != -1) {
  2071.                 read = Zotero.read(1);
  2072.             }
  2073.            
  2074.             if(keyRe.test(read)) {
  2075.                 // read numeric data here, since we might get an end bracket
  2076.                 // that we should care about
  2077.                 value = "";
  2078.                 value += read;
  2079.                
  2080.                 // character is a number
  2081.                 while((read = Zotero.read(1)) && keyRe.test(read)) {
  2082.                     value += read;
  2083.                 }
  2084.                
  2085.                 // don't read the next char; instead, process the character
  2086.                 // we already read past the end of the string
  2087.                 dontRead = true;
  2088.                
  2089.                 // see if there's a defined string
  2090.                 if(strings[value]) value = strings[value];
  2091.             } else {
  2092.                 var value = getFieldValue(read);
  2093.             }
  2094.            
  2095.             if(item) {
  2096.                 processField(item, field.toLowerCase(), value);
  2097.             } else if(type == "string") {
  2098.                 strings[field] = value;
  2099.             }
  2100.             field = "";
  2101.         } else if(read == ",") {                        // commas reset
  2102.             if (item.itemID == null) {
  2103.                 item.itemID = field; // itemID = citekey
  2104.             }
  2105.             field = "";
  2106.         } else if(read == closeChar) {
  2107.             if(item) {
  2108.                 if(item.extra) item.extra = item.extra.substr(1); // chop \n
  2109.                 item.complete();
  2110.             }
  2111.             return;
  2112.         } else if(" \n\r\t".indexOf(read) == -1) {      // skip whitespace
  2113.             field += read;
  2114.         }
  2115.     }
  2116. }
  2117.  
  2118. function doImport() {
  2119.     var read = "", text = "", recordCloseElement = false;
  2120.     var type = false;
  2121.    
  2122.     while(read = Zotero.read(1)) {
  2123.         if(read == "@") {
  2124.             type = "";
  2125.         } else if(type !== false) {
  2126.             if(type == "comment") {
  2127.                 processComment();
  2128.                 type = false;
  2129.             } else if(read == "{") {        // possible open character
  2130.                 beginRecord(type, "}");
  2131.                 type = false;
  2132.             } else if(read == "(") {        // possible open character
  2133.                 beginRecord(type, ")");
  2134.                 type = false;
  2135.             } else if(/[a-zA-Z0-9-_]/.test(read)) {
  2136.                 type += read;
  2137.             }
  2138.         }
  2139.     }
  2140.  
  2141.     for (var key in jabref.root) {
  2142.         if (jabref.root.hasOwnProperty(key)) { jabref.root[key].complete(); }
  2143.     }
  2144. }
  2145.  
  2146. // some fields are, in fact, macros.  If that is the case then we should not put the
  2147. // data in the braces as it will cause the macros to not expand properly
  2148. function writeField(field, value, isMacro) {
  2149.     if (!value && typeof value != "number") return;
  2150.     value = value + ""; // convert integers to strings
  2151.     Zotero.write(",\n\t" + field + " = ");
  2152.     if (!isMacro) Zotero.write("{");
  2153.     // url field is preserved, for use with \href and \url
  2154.     // Other fields (DOI?) may need similar treatment
  2155.     if (!isMacro && !(field == "url" || field == "doi" || field == "file" || field == "lccn" )) {
  2156.         // I hope these are all the escape characters!
  2157.         value = value.replace(/[|\<\>\~\^\\\{\}]/g, mapEscape).replace(/([\#\$\%\&\_])/g, "\\$1");
  2158.  
  2159.         //disable
  2160.         /** if (field == "title" || field == "type" || field == "shorttitle" || field == "booktitle" || field == "series") {
  2161.             if (!isTitleCase(value)) {
  2162.                 //protect caps for everything but the first letter
  2163.                 value = value.replace(/(.)([A-Z]+)/g, "$1{$2}");
  2164.             } else {    //protect all-caps vords and initials
  2165.                 value = value.replace(/([\s.-])([A-Z]+)(?=\.)/g, "$1{$2}"); //protect initials
  2166.                 if(value.toUpperCase() != value) value = value.replace(/(\s)([A-Z]{2,})(?=[\.,\s]|$)/g, "$1{$2}");
  2167.             }
  2168.         }
  2169.         **/
  2170.  
  2171.         // Case of words with uppercase characters in non-initial positions is preserved with braces.
  2172.         // treat hyphen as whitespace for this purpose so that Large-scale etc. don't get enclosed
  2173.         // treat curly bracket as whitespace because of mark-up immediately preceding word
  2174.         // treat opening parentheses &brackets as whitespace
  2175.         if (field != "pages") {
  2176.             value = value.replace(/([^\s-\}\(\[]+[A-Z][^\s,]*)/g, "{$1}");
  2177.         }
  2178.     }
  2179.     if (Zotero.getOption("exportCharset") != "UTF-8") {
  2180.         value = value.replace(/[\u0080-\uFFFF]/g, mapAccent);
  2181.     }
  2182.     //convert the HTML markup allowed in Zotero for rich text to TeX; excluding doi/url/file shouldn't be necessary, but better to be safe;
  2183.     if (!((field == "url") || (field == "doi") || (field == "file"))) value = mapHTMLmarkup(value);
  2184.     Zotero.write(value);
  2185.     if (!isMacro) Zotero.write("}");
  2186. }
  2187.  
  2188. function mapHTMLmarkup(characters){
  2189.     //converts the HTML markup allowed in Zotero for rich text to TeX
  2190.     //since  < and > have already been escaped, we need this rather hideous code - I couldn't see a way around it though.
  2191.     //italics and bold
  2192.     characters = characters.replace(/\{\\textless\}i\{\\textgreater\}(.+?)\{\\textless\}\/i{\\textgreater\}/g, "\\textit{$1}")
  2193.         .replace(/\{\\textless\}b\{\\textgreater\}(.+?)\{\\textless\}\/b{\\textgreater\}/g, "\\textbf{$1}");
  2194.     //sub and superscript
  2195.     characters = characters.replace(/\{\\textless\}sup\{\\textgreater\}(.+?)\{\\textless\}\/sup{\\textgreater\}/g, "\$^{\\textrm{$1}}\$")
  2196.         .replace(/\{\\textless\}sub\{\\textgreater\}(.+?)\{\\textless\}\/sub\{\\textgreater\}/g, "\$_{\\textrm{$1}}\$");
  2197.     //two variants of small caps
  2198.     characters = characters.replace(/\{\\textless\}span\sstyle=\"small\-caps\"\{\\textgreater\}(.+?)\{\\textless\}\/span{\\textgreater\}/g, "\\textsc{$1}")
  2199.         .replace(/\{\\textless\}sc\{\\textgreater\}(.+?)\{\\textless\}\/sc\{\\textgreater\}/g, "\\textsc{$1}");
  2200.     return characters;
  2201. }
  2202.  
  2203.  
  2204. function mapTeXmarkup(tex){
  2205.     //reverse of the above - converts tex mark-up into html mark-up permitted by Zotero
  2206.     //italics and bold
  2207.     tex = tex.replace(/\\textit\{([^\}]+\})/g, "<i>$1</i>").replace(/\\textbf\{([^\}]+\})/g, "<b>$1</b>");
  2208.     //two versions of subscript the .* after $ is necessary because people m
  2209.     tex = tex.replace(/\$[^\{\$]*_\{([^\}]+\})\$/g, "<sub>$1</sub>").replace(/\$[^\{]*_\{\\textrm\{([^\}]+\}\})/g, "<sub>$1</sub>");   
  2210.     //two version of superscript
  2211.     tex = tex.replace(/\$[^\{]*\^\{([^\}]+\}\$)/g, "<sup>$1</sup>").replace(/\$[^\{]*\^\{\\textrm\{([^\}]+\}\})/g, "<sup>$1</sup>");   
  2212.     //small caps
  2213.     tex = tex.replace(/\\textsc\{([^\}]+)/g, "<span style=\"small-caps\">$1</span>");
  2214.     return tex;
  2215. }
  2216. //Disable the isTitleCase function until we decide what to do with it.
  2217. /* const skipWords = ["but", "or", "yet", "so", "for", "and", "nor",
  2218.     "a", "an", "the", "at", "by", "from", "in", "into", "of", "on",
  2219.     "to", "with", "up", "down", "as", "while", "aboard", "about",
  2220.     "above", "across", "after", "against", "along", "amid", "among",
  2221.     "anti", "around", "as", "before", "behind", "below", "beneath",
  2222.     "beside", "besides", "between", "beyond", "but", "despite",
  2223.     "down", "during", "except", "for", "inside", "like", "near",
  2224.     "off", "onto", "over", "past", "per", "plus", "round", "save",
  2225.     "since", "than", "through", "toward", "towards", "under",
  2226.     "underneath", "unlike", "until", "upon", "versus", "via",
  2227.     "within", "without"];
  2228.  
  2229. function isTitleCase(string) {
  2230.     const wordRE = /[\s[(]([^\s,\.:?!\])]+)/g;
  2231.  
  2232.     var word;
  2233.     while (word = wordRE.exec(string)) {
  2234.         word = word[1];
  2235.         if(word.search(/\d/) != -1  //ignore words with numbers (including just numbers)
  2236.             || skipWords.indexOf(word.toLowerCase()) != -1) {
  2237.             continue;
  2238.         }
  2239.  
  2240.         if(word.toLowerCase() == word) return false;
  2241.     }
  2242.     return true;
  2243. }
  2244. */
  2245.  
  2246. function mapEscape(character) {
  2247.     return alwaysMap[character];
  2248. }
  2249.  
  2250. function mapAccent(character) {
  2251.     return (mappingTable[character] ? mappingTable[character] : "?");
  2252. }
  2253.  
  2254. // a little substitution function for BibTeX keys, where we don't want LaTeX
  2255. // escaping, but we do want to preserve the base characters
  2256.  
  2257. function tidyAccents(s) {
  2258.     var r=s.toLowerCase();
  2259.  
  2260.     // XXX Remove conditional when we drop Zotero 2.1.x support
  2261.     // This is supported in Zotero 3.0 and higher
  2262.     if (ZU.removeDiacritics !== undefined)
  2263.         r = ZU.removeDiacritics(r, true);
  2264.     else {
  2265.     // We fall back on the replacement list we used previously
  2266.         r = r.replace(new RegExp("[ä]", 'g'),"ae");
  2267.         r = r.replace(new RegExp("[ö]", 'g'),"oe");
  2268.         r = r.replace(new RegExp("[ü]", 'g'),"ue");
  2269.         r = r.replace(new RegExp("[àáâãå]", 'g'),"a");
  2270.         r = r.replace(new RegExp("æ", 'g'),"ae");
  2271.         r = r.replace(new RegExp("ç", 'g'),"c");
  2272.         r = r.replace(new RegExp("[èéêë]", 'g'),"e");
  2273.         r = r.replace(new RegExp("[ìíîï]", 'g'),"i");
  2274.         r = r.replace(new RegExp("ñ", 'g'),"n");                            
  2275.         r = r.replace(new RegExp("[òóôõ]", 'g'),"o");
  2276.         r = r.replace(new RegExp("œ", 'g'),"oe");
  2277.         r = r.replace(new RegExp("[ùúû]", 'g'),"u");
  2278.         r = r.replace(new RegExp("[ýÿ]", 'g'),"y");
  2279.     }
  2280.  
  2281.     return r;
  2282. };
  2283.  
  2284. var numberRe = /^[0-9]+/;
  2285. // Below is a list of words that should not appear as part of the citation key
  2286. // in includes the indefinite articles of English, German, French and Spanish, as well as a small set of English prepositions whose
  2287. // force is more grammatical than lexical, i.e. which are likely to strike many as 'insignificant'.
  2288. // The assumption is that most who want a title word in their key would prefer the first word of significance.
  2289. var citeKeyTitleBannedRe = /\b(a|an|the|some|from|on|in|to|of|do|with|der|die|das|ein|eine|einer|eines|einem|einen|un|une|la|le|l\'|el|las|los|al|uno|una|unos|unas|de|des|del|d\')(\s+|\b)/g;
  2290. var citeKeyConversionsRe = /%([a-zA-Z])/;
  2291. var citeKeyCleanRe = /[^a-z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+/g;
  2292.  
  2293. var citeKeyConversions = {
  2294.     "a":function (flags, item) {
  2295.         if(item.creators && item.creators[0] && item.creators[0].lastName) {
  2296.             return item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,"");
  2297.         }
  2298.         return "";
  2299.     },
  2300.     "t":function (flags, item) {
  2301.         if (item["title"]) {
  2302.             return item["title"].toLowerCase().replace(citeKeyTitleBannedRe, "").split(/\s+/g)[0];
  2303.         }
  2304.         return "";
  2305.     },
  2306.     "y":function (flags, item) {
  2307.         if(item.date) {
  2308.             var date = Zotero.Utilities.strToDate(item.date);
  2309.             if(date.year && numberRe.test(date.year)) {
  2310.                 return date.year;
  2311.             }
  2312.         }
  2313.         return "xxxx";
  2314.     }
  2315. }
  2316.  
  2317.  
  2318. function buildCiteKey (item,citekeys) {
  2319.     var basekey = "";
  2320.     var counter = 0;
  2321.     citeKeyFormatRemaining = citeKeyFormat;
  2322.     while (citeKeyConversionsRe.test(citeKeyFormatRemaining)) {
  2323.         if (counter > 100) {
  2324.             Zotero.debug("Pathological BibTeX format: " + citeKeyFormat);
  2325.             break;
  2326.         }
  2327.         var m = citeKeyFormatRemaining.match(citeKeyConversionsRe);
  2328.         if (m.index > 0) {
  2329.             //add data before the conversion match to basekey
  2330.             basekey = basekey + citeKeyFormatRemaining.substr(0, m.index);
  2331.         }
  2332.         var flags = ""; // for now
  2333.         var f = citeKeyConversions[m[1]];
  2334.         if (typeof(f) == "function") {
  2335.             var value = f(flags, item);
  2336.             Zotero.debug("Got value " + value + " for %" + m[1]);
  2337.             //add conversion to basekey
  2338.             basekey = basekey + value;
  2339.         }
  2340.         citeKeyFormatRemaining = citeKeyFormatRemaining.substr(m.index + m.length);
  2341.         counter++;
  2342.     }
  2343.     if (citeKeyFormatRemaining.length > 0) {
  2344.         basekey = basekey + citeKeyFormatRemaining;
  2345.     }
  2346.  
  2347.     // for now, remove any characters not explicitly known to be allowed;
  2348.     // we might want to allow UTF-8 citation keys in the future, depending
  2349.     // on implementation support.
  2350.     //
  2351.     // no matter what, we want to make sure we exclude
  2352.     // " # % ' ( ) , = { } ~ and backslash
  2353.     // however, we want to keep the base characters
  2354.  
  2355.     basekey = tidyAccents(basekey);
  2356.     basekey = basekey.replace(citeKeyCleanRe, "");
  2357.     var citekey = basekey;
  2358.     var i = 0;
  2359.     while(citekeys[citekey]) {
  2360.         i++;
  2361.         citekey = basekey + "-" + i;
  2362.     }
  2363.     citekeys[citekey] = true;
  2364.     return citekey;
  2365. }
  2366.  
  2367. function doExport() {
  2368.     //Zotero.write("% BibTeX export generated by Zotero "+Zotero.Utilities.getVersion());
  2369.     // to make sure the BOM gets ignored
  2370.     Zotero.write("\n");
  2371.    
  2372.     var first = true;
  2373.     var citekeys = new Object();
  2374.     var item;
  2375.     while(item = Zotero.nextItem()) {
  2376.         //don't export standalone notes and attachments
  2377.         if(item.itemType == "note" || item.itemType == "attachment") continue;
  2378.  
  2379.         // determine type
  2380.         var type = zotero2bibtexTypeMap[item.itemType];
  2381.         if (typeof(type) == "function") { type = type(item); }
  2382.         if(!type) type = "misc";
  2383.        
  2384.         // create a unique citation key
  2385.         var citekey = buildCiteKey(item, citekeys);
  2386.        
  2387.         // write citation key
  2388.         Zotero.write((first ? "" : ",\n\n") + "@"+type+"{"+citekey);
  2389.         first = false;
  2390.        
  2391.         for(var field in fieldMap) {
  2392.             if(item[fieldMap[field]]) {
  2393.                 writeField(field, item[fieldMap[field]]);
  2394.             }
  2395.         }
  2396.  
  2397.         if(item.reportNumber || item.issue || item.seriesNumber || item.patentNumber) {
  2398.             writeField("number", item.reportNumber || item.issue || item.seriesNumber|| item.patentNumber);
  2399.         }
  2400.        
  2401.         if (item.accessDate && item.itemType != "journalArticle"){
  2402.             var accessYMD = item.accessDate.replace(/\s*\d+:\d+:\d+/, "");
  2403.             writeField("urldate", accessYMD);
  2404.         }
  2405.        
  2406.         if(item.publicationTitle) {
  2407.             if(item.itemType == "bookSection" || item.itemType == "conferencePaper") {
  2408.                 writeField("booktitle", item.publicationTitle);
  2409.             } else if(Zotero.getOption("useJournalAbbreviation") && item.journalAbbreviation){
  2410.                 writeField("journal", item.journalAbbreviation);
  2411.             } else {
  2412.                 writeField("journal", item.publicationTitle);
  2413.             }
  2414.         }
  2415.        
  2416.         if(item.publisher) {
  2417.             if(item.itemType == "thesis") {
  2418.                 writeField("school", item.publisher);
  2419.             } else if(item.itemType =="report") {
  2420.                 writeField("institution", item.publisher);
  2421.             } else {
  2422.                 writeField("publisher", item.publisher);
  2423.             }
  2424.         }
  2425.        
  2426.         if(item.creators && item.creators.length) {
  2427.             // split creators into subcategories
  2428.             var author = "";
  2429.             var editor = "";
  2430.             var translator = "";
  2431.             var collaborator = "";
  2432.             var primaryCreatorType = Zotero.Utilities.getCreatorsForType(item.itemType)[0];
  2433.             for(var i in item.creators) {
  2434.                 var creator = item.creators[i];
  2435.                 var creatorString = creator.lastName;
  2436.  
  2437.                 if (creator.firstName) {
  2438.                     creatorString = creator.lastName + ", " + creator.firstName;
  2439.                 }
  2440.                
  2441.                 creatorString = creatorString.replace(/[|\<\>\~\^\\\{\}]/g, mapEscape)
  2442.                                                                             .replace(/([\#\$\%\&\_])/g, "\\$1")
  2443.                                                                             .replace(/([^\s-\}\(\[]+[A-Z][^\s,]*)/g, "{$1}");
  2444.                                                                            
  2445.                 if (creator.fieldMode == true) { // fieldMode true, assume corporate author
  2446.                     creatorString = "{" + creatorString + "}";
  2447.                 }
  2448.  
  2449.                 if (creator.creatorType == "editor" || creator.creatorType == "seriesEditor") {
  2450.                     editor += " and "+creatorString;
  2451.                 } else if (creator.creatorType == "translator") {
  2452.                     translator += " and "+creatorString;
  2453.                 } else if (creator.creatorType == primaryCreatorType) {
  2454.                     author += " and "+creatorString;
  2455.                 } else {
  2456.                     collaborator += " and "+creatorString;
  2457.                 }
  2458.             }
  2459.            
  2460.             if(author) {
  2461.                 writeField("author", "{" + author.substr(5) + "}", true);
  2462.             }
  2463.             if(editor) {
  2464.                 writeField("editor", "{" + editor.substr(5) + "}", true);
  2465.             }
  2466.             if(translator) {
  2467.                 writeField("translator",  "{" + translator.substr(5) + "}", true);
  2468.             }
  2469.             if(collaborator) {
  2470.                 writeField("collaborator",  "{" + collaborator.substr(5) + "}", true);
  2471.             }
  2472.         }
  2473.        
  2474.         if(item.date) {
  2475.             if (item.rights == "npd") {
  2476.                 writeField("year", item.date);
  2477.             } else {
  2478.                 var date = Zotero.Utilities.strToDate(item.date);
  2479.                 // need to use non-localized abbreviation
  2480.                 if(typeof date.month == "number" && item.itemType != "journalArticle") {
  2481.                     writeField("month", months[date.month], true);
  2482.                 }
  2483.                 if(date.year) {
  2484.                     writeField("year", date.year);
  2485.                 }
  2486.                 else {
  2487.                     writeField("year", item.date);
  2488.                 }
  2489.             }
  2490.         }
  2491.        
  2492.         if(item.extra) {
  2493.             writeField("note", item.extra);
  2494.         }
  2495.        
  2496.         if(item.tags && item.tags.length) {
  2497.             var tagString = "";
  2498.             for(var i in item.tags) {
  2499.                 var tag = item.tags[i];
  2500.                 tagString += ", "+tag.tag;
  2501.             }
  2502.             writeField("keywords", tagString.substr(2));
  2503.         }
  2504.        
  2505.         if(item.pages) {
  2506.             writeField("pages", item.pages.replace("-","--").replace("–","--"));
  2507.         }
  2508.        
  2509.         // Commented out, because we don't want a books number of pages in the BibTeX "pages" field for books.
  2510.         //if(item.numPages) {
  2511.         //  writeField("pages", item.numPages);
  2512.         //}
  2513.        
  2514.         /* We'll prefer url over howpublished see
  2515.         https://forums.zotero.org/discussion/24554/bibtex-doubled-url/#Comment_157802
  2516.        
  2517.         if(item.itemType == "webpage") {
  2518.             writeField("howpublished", item.url);
  2519.         }*/
  2520.         if (item.notes && Zotero.getOption("exportNotes")) {
  2521.             for(var i in item.notes) {
  2522.                 var note = item.notes[i];
  2523.                 writeField("annote", Zotero.Utilities.unescapeHTML(note["note"]));
  2524.             }
  2525.         }      
  2526.        
  2527.         // if(item.attachments) {
  2528.             // var attachmentString = "";
  2529.            
  2530.             // for(var i in item.attachments) {
  2531.                 // var attachment = item.attachments[i];
  2532.                 // if(Zotero.getOption("exportFileData") && attachment.saveFile) {
  2533.                     // attachment.saveFile(attachment.defaultPath, true);
  2534.                     // attachmentString += ";" + attachment.title + ":" + attachment.defaultPath + ":" + attachment.mimeType;
  2535.                 // } else if(attachment.localPath) {
  2536.                     // attachmentString += ";" + attachment.title + ":" + attachment.localPath + ":" + attachment.mimeType;
  2537.                 // }
  2538.             // }
  2539.            
  2540.             // if(attachmentString) {
  2541.                 // writeField("file", attachmentString.substr(1));
  2542.             // }
  2543.         // }
  2544.        
  2545.         Zotero.write("\n}");
  2546.     }
  2547. }
  2548.  
  2549. var exports = {
  2550.     "doExport": doExport,
  2551.     "doImport": doImport,
  2552.     "setKeywordDelimRe": setKeywordDelimRe,
  2553.     "setKeywordSplitOnSpace": setKeywordSplitOnSpace
  2554. }
  2555.  
  2556. /** BEGIN TEST CASES **/
  2557. var testCases = [
  2558.     {
  2559.         "type": "import",
  2560.         "input": "@article{Adams2001,\nauthor = {Adams, Nancy K and DeSilva, Shanaka L and Self, Steven and Salas, Guido and Schubring, Steven and Permenter, Jason L and Arbesman, Kendra},\nfile = {:Users/heatherwright/Documents/Scientific Papers/Adams\\_Huaynaputina.pdf:pdf;::},\njournal = {Bulletin of Volcanology},\nkeywords = {Vulcanian eruptions,breadcrust,plinian},\npages = {493--518},\ntitle = {{The physical volcanology of the 1600 eruption of Huaynaputina, southern Peru}},\nvolume = {62},\nyear = {2001}\n}",
  2561.         "items": [
  2562.             {
  2563.                 "itemType": "journalArticle",
  2564.                 "creators": [
  2565.                     {
  2566.                         "firstName": "Nancy K",
  2567.                         "lastName": "Adams",
  2568.                         "creatorType": "author"
  2569.                     },
  2570.                     {
  2571.                         "firstName": "Shanaka L",
  2572.                         "lastName": "DeSilva",
  2573.                         "creatorType": "author"
  2574.                     },
  2575.                     {
  2576.                         "firstName": "Steven",
  2577.                         "lastName": "Self",
  2578.                         "creatorType": "author"
  2579.                     },
  2580.                     {
  2581.                         "firstName": "Guido",
  2582.                         "lastName": "Salas",
  2583.                         "creatorType": "author"
  2584.                     },
  2585.                     {
  2586.                         "firstName": "Steven",
  2587.                         "lastName": "Schubring",
  2588.                         "creatorType": "author"
  2589.                     },
  2590.                     {
  2591.                         "firstName": "Jason L",
  2592.                         "lastName": "Permenter",
  2593.                         "creatorType": "author"
  2594.                     },
  2595.                     {
  2596.                         "firstName": "Kendra",
  2597.                         "lastName": "Arbesman",
  2598.                         "creatorType": "author"
  2599.                     }
  2600.                 ],
  2601.                 "notes": [],
  2602.                 "tags": [
  2603.                     "Vulcanian eruptions",
  2604.                     "breadcrust",
  2605.                     "plinian"
  2606.                 ],
  2607.                 "seeAlso": [],
  2608.                 "attachments": [
  2609.                     {
  2610.                         "path": "Users/heatherwright/Documents/Scientific Papers/Adams_Huaynaputina.pdf",
  2611.                         "mimeType": "application/pdf",
  2612.                         "title": "Attachment"
  2613.                     }
  2614.                 ],
  2615.                 "itemID": "Adams2001",
  2616.                 "publicationTitle": "Bulletin of Volcanology",
  2617.                 "pages": "493–518",
  2618.                 "title": "The physical volcanology of the 1600 eruption of Huaynaputina, southern Peru",
  2619.                 "volume": "62",
  2620.                 "date": "2001"
  2621.             }
  2622.         ]
  2623.     },
  2624.     {
  2625.         "type": "import",
  2626.         "input": "@Book{abramowitz+stegun,\n author    = \"Milton {Abramowitz} and Irene A. {Stegun}\",\n title     = \"Handbook of Mathematical Functions with\n              Formulas, Graphs, and Mathematical Tables\",\n publisher = \"Dover\",\n year      =  1964,\n address   = \"New York\",\n edition   = \"ninth Dover printing, tenth GPO printing\"\n}\n\n@Book{Torre2008,\n author    = \"Joe Torre and Tom Verducci\",\n publisher = \"Doubleday\",\n title     = \"The Yankee Years\",\n year      =  2008,\n isbn      = \"0385527403\"\n}\n",
  2627.         "items": [
  2628.             {
  2629.                 "itemType": "book",
  2630.                 "creators": [
  2631.                     {
  2632.                         "firstName": "Milton",
  2633.                         "lastName": "Abramowitz",
  2634.                         "creatorType": "author"
  2635.                     },
  2636.                     {
  2637.                         "firstName": "Irene A.",
  2638.                         "lastName": "Stegun",
  2639.                         "creatorType": "author"
  2640.                     }
  2641.                 ],
  2642.                 "notes": [],
  2643.                 "tags": [],
  2644.                 "seeAlso": [],
  2645.                 "attachments": [],
  2646.                 "itemID": "abramowitz+stegun",
  2647.                 "place": "New York",
  2648.                 "edition": "ninth Dover printing, tenth GPO printing",
  2649.                 "title": "Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables",
  2650.                 "publisher": "Dover",
  2651.                 "date": "1964"
  2652.             },
  2653.             {
  2654.                 "itemType": "book",
  2655.                 "creators": [
  2656.                     {
  2657.                         "firstName": "Joe",
  2658.                         "lastName": "Torre",
  2659.                         "creatorType": "author"
  2660.                     },
  2661.                     {
  2662.                         "firstName": "Tom",
  2663.                         "lastName": "Verducci",
  2664.                         "creatorType": "author"
  2665.                     }
  2666.                 ],
  2667.                 "notes": [],
  2668.                 "tags": [],
  2669.                 "seeAlso": [],
  2670.                 "attachments": [],
  2671.                 "itemID": "Torre2008",
  2672.                 "ISBN": "0385527403",
  2673.                 "publisher": "Doubleday",
  2674.                 "title": "The Yankee Years",
  2675.                 "date": "2008"
  2676.             }
  2677.         ]
  2678.     },
  2679.     {
  2680.         "type": "import",
  2681.         "input": "@INPROCEEDINGS {author:06,\n title    = {Some publication title},\n author   = {First Author and Second Author},\n crossref = {conference:06},\n pages    = {330—331},\n}\n@PROCEEDINGS {conference:06,\n editor    = {First Editor and Second Editor},\n title     = {Proceedings of the Xth Conference on XYZ},\n booktitle = {Proceedings of the Xth Conference on XYZ},\n year      = {2006},\n month     = oct,\n}",
  2682.         "items": [
  2683.             {
  2684.                 "itemType": "conferencePaper",
  2685.                 "creators": [
  2686.                     {
  2687.                         "firstName": "First",
  2688.                         "lastName": "Author",
  2689.                         "creatorType": "author"
  2690.                     },
  2691.                     {
  2692.                         "firstName": "Second",
  2693.                         "lastName": "Author",
  2694.                         "creatorType": "author"
  2695.                     }
  2696.                 ],
  2697.                 "notes": [],
  2698.                 "tags": [],
  2699.                 "seeAlso": [],
  2700.                 "attachments": [],
  2701.                 "itemID": "author:06",
  2702.                 "title": "Some publication title",
  2703.                 "pages": "330—331"
  2704.             },
  2705.             {
  2706.                 "itemType": "book",
  2707.                 "creators": [
  2708.                     {
  2709.                         "firstName": "First",
  2710.                         "lastName": "Editor",
  2711.                         "creatorType": "editor"
  2712.                     },
  2713.                     {
  2714.                         "firstName": "Second",
  2715.                         "lastName": "Editor",
  2716.                         "creatorType": "editor"
  2717.                     }
  2718.                 ],
  2719.                 "notes": [],
  2720.                 "tags": [],
  2721.                 "seeAlso": [],
  2722.                 "attachments": [],
  2723.                 "itemID": "conference:06",
  2724.                 "title": "Proceedings of the Xth Conference on XYZ",
  2725.                 "date": "October 2006"
  2726.             }
  2727.         ]
  2728.     },
  2729.     {
  2730.         "type": "import",
  2731.         "input": "@Book{hicks2001,\n author    = \"von Hicks, III, Michael\",\n title     = \"Design of a Carbon Fiber Composite Grid Structure for the GLAST\n              Spacecraft Using a Novel Manufacturing Technique\",\n publisher = \"Stanford Press\",\n year      =  2001,\n address   = \"Palo Alto\",\n edition   = \"1st,\",\n isbn      = \"0-69-697269-4\"\n}",
  2732.         "items": [
  2733.             {
  2734.                 "itemType": "book",
  2735.                 "creators": [
  2736.                     {
  2737.                         "firstName": "Michael",
  2738.                         "lastName": "von Hicks, III",
  2739.                         "creatorType": "author"
  2740.                     }
  2741.                 ],
  2742.                 "notes": [],
  2743.                 "tags": [],
  2744.                 "seeAlso": [],
  2745.                 "attachments": [],
  2746.                 "itemID": "hicks2001",
  2747.                 "place": "Palo Alto",
  2748.                 "edition": "1st,",
  2749.                 "ISBN": "0-69-697269-4",
  2750.                 "title": "Design of a Carbon Fiber Composite Grid Structure for the GLAST Spacecraft Using a Novel Manufacturing Technique",
  2751.                 "publisher": "Stanford Press",
  2752.                 "date": "2001"
  2753.             }
  2754.         ]
  2755.     },
  2756.     {
  2757.         "type": "import",
  2758.         "input": "@article{Oliveira_2009, title={USGS monitoring ecological impacts}, volume={107}, number={29}, journal={Oil & Gas Journal}, author={Oliveira, A}, year={2009}, pages={29}}",
  2759.         "items": [
  2760.             {
  2761.                 "itemType": "journalArticle",
  2762.                 "creators": [
  2763.                     {
  2764.                         "firstName": "A",
  2765.                         "lastName": "Oliveira",
  2766.                         "creatorType": "author"
  2767.                     }
  2768.                 ],
  2769.                 "notes": [],
  2770.                 "tags": [],
  2771.                 "seeAlso": [],
  2772.                 "attachments": [],
  2773.                 "itemID": "Oliveira_2009",
  2774.                 "issue": "29",
  2775.                 "title": "USGS monitoring ecological impacts",
  2776.                 "volume": "107",
  2777.                 "publicationTitle": "Oil & Gas Journal",
  2778.                 "date": "2009",
  2779.                 "pages": "29"
  2780.             }
  2781.         ]
  2782.     },
  2783.     {
  2784.         "type": "import",
  2785.         "input": "@article{test-ticket1661,\ntitle={non-braking space: ~; accented characters: {\\~n} and \\~{n}; tilde operator: \\~},\n} ",
  2786.         "items": [
  2787.             {
  2788.                 "itemType": "journalArticle",
  2789.                 "creators": [],
  2790.                 "notes": [],
  2791.                 "tags": [],
  2792.                 "seeAlso": [],
  2793.                 "attachments": [],
  2794.                 "itemID": "test-ticket1661",
  2795.                 "title": "non-braking space: ; accented characters: ñ and ñ; tilde operator: ∼"
  2796.             }
  2797.         ]
  2798.     },
  2799.     {
  2800.         "type": "import",
  2801.         "input": "@ARTICLE{Frit2,\n  author = {Fritz, U. and Corti, C. and P\\\"{a}ckert, M.},\n  title = {Test of markupconversion: Italics, bold, superscript, subscript, and small caps: Mitochondrial DNA$_{\\textrm{2}}$ sequences suggest unexpected phylogenetic position\n        of Corso-Sardinian grass snakes (\\textit{Natrix cetti}) and \\textbf{do not}\n        support their \\textsc{species status}, with notes on phylogeography and subspecies\n        delineation of grass snakes.},\n  journal = {Actes du $4^{\\textrm{ème}}$ Congrès Français d'Acoustique},\n  year = {2012},\n  volume = {12},\n  pages = {71-80},\n  doi = {10.1007/s13127-011-0069-8}\n}\n",
  2802.         "items": [
  2803.             {
  2804.                 "itemType": "journalArticle",
  2805.                 "creators": [
  2806.                     {
  2807.                         "firstName": "U.",
  2808.                         "lastName": "Fritz",
  2809.                         "creatorType": "author"
  2810.                     },
  2811.                     {
  2812.                         "firstName": "C.",
  2813.                         "lastName": "Corti",
  2814.                         "creatorType": "author"
  2815.                     },
  2816.                     {
  2817.                         "firstName": "M.",
  2818.                         "lastName": "Päckert",
  2819.                         "creatorType": "author"
  2820.                     }
  2821.                 ],
  2822.                 "notes": [],
  2823.                 "tags": [],
  2824.                 "seeAlso": [],
  2825.                 "attachments": [],
  2826.                 "itemID": "Frit2",
  2827.                 "DOI": "10.1007/s13127-011-0069-8",
  2828.                 "title": "Test of markupconversion: Italics, bold, superscript, subscript, and small caps: Mitochondrial DNA<sub>2</sub>$ sequences suggest unexpected phylogenetic position of Corso-Sardinian grass snakes (<i>Natrix cetti</i>) and <b>do not</b> support their <span style=\"small-caps\">species status</span>, with notes on phylogeography and subspecies delineation of grass snakes.",
  2829.                 "publicationTitle": "Actes du <sup>ème</sup>$ Congrès Français d'Acoustique",
  2830.                 "date": "2012",
  2831.                 "volume": "12",
  2832.                 "pages": "71-80"
  2833.             }
  2834.         ]
  2835.     },
  2836.     {
  2837.         "type": "import",
  2838.         "input": "@misc{american_rights_at_work_public_2012,\n    title = {Public Service Research Foundation},\n\turl = {http://www.americanrightsatwork.org/blogcategory-275/},\n\turldate = {2012-07-27},\n\tauthor = {American Rights at Work},\n\tyear = {2012},\n\thowpublished = {http://www.americanrightsatwork.org/blogcategory-275/},\n}",
  2839.         "items": [
  2840.             {
  2841.                 "itemType": "book",
  2842.                 "creators": [
  2843.                     {
  2844.                         "firstName": "American Rights at",
  2845.                         "lastName": "Work",
  2846.                         "creatorType": "author"
  2847.                     }
  2848.                 ],
  2849.                 "notes": [],
  2850.                 "tags": [],
  2851.                 "seeAlso": [],
  2852.                 "attachments": [],
  2853.                 "itemID": "american_rights_at_work_public_2012",
  2854.                 "url": "http://www.americanrightsatwork.org/blogcategory-275/",
  2855.                 "title": "Public Service Research Foundation",
  2856.                 "date": "2012"
  2857.             }
  2858.         ]
  2859.     }
  2860. ]
  2861. /** END TEST CASES **/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement