From b2b183345c395d8bff2e710c23c85b382b822535 Mon Sep 17 00:00:00 2001 From: henrikjust Date: Mon, 6 Oct 2014 07:02:39 +0000 Subject: [PATCH] Last fixes before the release of 1.4 beta git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@181 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- source/distro/changelog.txt | 2 + source/distro/doc/user-manual.odt | Bin 60080 -> 60225 bytes source/distro/zotero/BibTeX-Writer2LaTeX.js | 4535 +++++++++++------ .../writer2latex/api/ConverterFactory.java | 4 +- 4 files changed, 2920 insertions(+), 1621 deletions(-) diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index 34a2c19..de4e73a 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -2,6 +2,8 @@ Changelog for Writer2LaTeX version 1.2 -> 1.4 ---------- version 1.4 beta ---------- +[w4l] Zotero BibTeX exporter is updated to the latest version + [all] Build file is now set up to cross compile for java 6 [w2x] If the export dialogs are loaded with a setting for scaling or column_scaling of 1% or less, the value diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index 67252a70f25b4174909fe12525dd6a8939ec1c0c..faf50af6694f912845f443eab7a5e88b1fdace6d 100644 GIT binary patch delta 44666 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�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ℜ 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

A)Vbsed>Q`&o$E1%i|n&iUY7v3QYp>tnt!L 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 delta 44518 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 diff --git a/source/distro/zotero/BibTeX-Writer2LaTeX.js b/source/distro/zotero/BibTeX-Writer2LaTeX.js index 98f8903..40ea0a6 100644 --- a/source/distro/zotero/BibTeX-Writer2LaTeX.js +++ b/source/distro/zotero/BibTeX-Writer2LaTeX.js @@ -1,33 +1,26 @@ -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . -// { - "translatorID":"47fef559-4549-4815-b68f-bdf3b3819ac5", - "label":"BibTeX (Writer2LaTeX)", - "creator":"Simon Kornblith and Richard Karnesky - modified by Henrik Just", - "target":"bib", - "minVersion":"1.0", - "maxVersion":"", - "priority":100, - "inRepository":"0", - "translatorType":2, - "lastUpdated":"2010-10-06 23:16:00" + "translatorID":"47fef559-4549-4815-b68f-bdf3b3819ac5", + "label": "BibTeX (Writer2LaTeX)", + "creator": "Simon Kornblith, Richard Karnesky and Emiliano heyns - modified by Henrik Just", + "target": "bib", + "minVersion": "2.1.9", + "maxVersion": "", + "priority": 200, + "configOptions": { + "getCollections": true + }, + "displayOptions": { + "exportCharset": "UTF-8", + "exportNotes": true, + "exportFileData": false, + "useJournalAbbreviation": false + }, + "inRepository": true, + "translatorType": 3, + "browserSupport": "gcsv", + "lastUpdated": "2014-10-01 20:00:00" } -Zotero.configure("dataMode", "block"); -Zotero.addOption("exportCharset", "UTF-8"); -Zotero.addOption("exportFileData", false); - function detectImport() { var maxChars = 1048576; // 1MB @@ -53,7 +46,10 @@ function detectImport() { // read until next newline block = ""; inComment = true; - } else if((chr == "\n" || chr == "\r") && block) { + } else if((chr == "\n" || chr == "\r" + // allow one-line entries + || i == (buffer.length - 1)) + && block) { // check if this is a BibTeX entry if(re.test(block)) { return true; @@ -67,9 +63,10 @@ function detectImport() { } } -//%a = first author surname +//%a = first listed creator surname //%y = year //%t = first word of title +// HJ: Modified to use original key //%k = original key var citeKeyFormat = "%k"; //"%a_%t_%y"; @@ -84,19 +81,88 @@ var fieldMap = { copyright:"rights", isbn:"ISBN", issn:"ISSN", - lccn:"callNumber", - location:"archiveLocation", shorttitle:"shortTitle", url:"url", doi:"DOI", - "abstract":"abstractNote" + abstract:"abstractNote", + nationality: "country", + language:"language", + assignee:"assignee" }; +// Import/export in BibTeX +var extraIdentifiers = { + lccn: 'LCCN', + mrnumber: 'MR', + zmnumber: 'Zbl', + pmid: 'PMID', + pmcid: 'PMCID' + + //Mostly from Wikipedia citation templates + //asin - Amazon ID + //bibcode/refcode - used in astronomy, but haven't seen any Bib(La)TeX examples + //jfm - Jahrbuch ID, but it seems to be part of Zentralblatt MATH, so Zbl + //oclc + //ol - openlibrary.org ID + //osti + //rfc + //ssrn? http://cyber.law.harvard.edu/cybersecurity/Guidelines_for_adding_Bibliography_entries +}; + +// Make a reverse map for convenience +var revExtraIds = {}; +for(var field in extraIdentifiers) { + revExtraIds[extraIdentifiers[field]] = field; +} + +// Import only. Exported by BibLaTeX +var eprintIds = { + // eprinttype: Zotero label + + // From BibLaTeX manual + 'arxiv': 'arXiv', // Sorry, but no support for eprintclass yet + 'jstor': 'JSTOR', + 'pubmed': 'PMID', + 'hdl': 'HDL', + 'googlebooks': 'GoogleBooksID' +}; + +function parseExtraFields(extra) { + var lines = extra.split(/[\r\n]+/); + var fields = []; + for(var i=0; i 1) { + rec.field = line.substr(0,splitAt).trim(); + rec.value = line.substr(splitAt + 1).trim(); + } + fields.push(rec); + } + return fields; +} + +function extraFieldsToString(extra) { + var str = ''; + for(var i=0; i", // TRIANGULAR BULLET - "\u2024":".", // ONE DOT LEADER - "\u2025":"..", // TWO DOT LEADER - "\u2026":"{\\textellipsis}", // HORIZONTAL ELLIPSIS - "\u2027":"-", // HYPHENATION POINT - "\u202F":" ", // NARROW NO-BREAK SPACE - "\u2030":"{\\textperthousand}", // PER MILLE SIGN - "\u2032":"'", // PRIME - "\u2033":"'", // DOUBLE PRIME - "\u2034":"'''", // TRIPLE PRIME - "\u2035":"`", // REVERSED PRIME - "\u2036":"``", // REVERSED DOUBLE PRIME - "\u2037":"```", // REVERSED TRIPLE PRIME - "\u2039":"{\\guilsinglleft}", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK - "\u203A":"{\\guilsinglright}", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - "\u203C":"!!", // DOUBLE EXCLAMATION MARK - "\u203E":"-", // OVERLINE - "\u2043":"-", // HYPHEN BULLET - "\u2044":"{\\textfractionsolidus}", // FRACTION SLASH - "\u2048":"?!", // QUESTION EXCLAMATION MARK - "\u2049":"!?", // EXCLAMATION QUESTION MARK - "\u204A":"7", // TIRONIAN SIGN ET - "\u2070":"$^{0}$", // SUPERSCRIPT ZERO - "\u2074":"$^{4}$", // SUPERSCRIPT FOUR - "\u2075":"$^{5}$", // SUPERSCRIPT FIVE - "\u2076":"$^{6}$", // SUPERSCRIPT SIX - "\u2077":"$^{7}$", // SUPERSCRIPT SEVEN - "\u2078":"$^{8}$", // SUPERSCRIPT EIGHT - "\u2079":"$^{9}$", // SUPERSCRIPT NINE - "\u207A":"$^{+}$", // SUPERSCRIPT PLUS SIGN - "\u207B":"$^{-}$", // SUPERSCRIPT MINUS - "\u207C":"$^{=}$", // SUPERSCRIPT EQUALS SIGN - "\u207D":"$^{(}$", // SUPERSCRIPT LEFT PARENTHESIS - "\u207E":"$^{)}$", // SUPERSCRIPT RIGHT PARENTHESIS - "\u207F":"$^{n}$", // SUPERSCRIPT LATIN SMALL LETTER N - "\u2080":"$_{0}$", // SUBSCRIPT ZERO - "\u2081":"$_{1}$", // SUBSCRIPT ONE - "\u2082":"$_{2}$", // SUBSCRIPT TWO - "\u2083":"$_{3}$", // SUBSCRIPT THREE - "\u2084":"$_{4}$", // SUBSCRIPT FOUR - "\u2085":"$_{5}$", // SUBSCRIPT FIVE - "\u2086":"$_{6}$", // SUBSCRIPT SIX - "\u2087":"$_{7}$", // SUBSCRIPT SEVEN - "\u2088":"$_{8}$", // SUBSCRIPT EIGHT - "\u2089":"$_{9}$", // SUBSCRIPT NINE - "\u208A":"$_{+}$", // SUBSCRIPT PLUS SIGN - "\u208B":"$_{-}$", // SUBSCRIPT MINUS - "\u208C":"$_{=}$", // SUBSCRIPT EQUALS SIGN - "\u208D":"$_{(}$", // SUBSCRIPT LEFT PARENTHESIS - "\u208E":"$_{)}$", // SUBSCRIPT RIGHT PARENTHESIS - "\u20AC":"{\\texteuro}", // EURO SIGN - "\u2100":"a/c", // ACCOUNT OF - "\u2101":"a/s", // ADDRESSED TO THE SUBJECT - "\u2103":"{\\textcelsius}", // DEGREE CELSIUS - "\u2105":"c/o", // CARE OF - "\u2106":"c/u", // CADA UNA - "\u2109":"F", // DEGREE FAHRENHEIT - "\u2113":"l", // SCRIPT SMALL L - "\u2116":"{\\textnumero}", // NUMERO SIGN - "\u2117":"{\\textcircledP}", // SOUND RECORDING COPYRIGHT - "\u2120":"{\\textservicemark}", // SERVICE MARK - "\u2121":"TEL", // TELEPHONE SIGN - "\u2122":"{\\texttrademark}", // TRADE MARK SIGN - "\u2126":"{\\textohm}", // OHM SIGN - "\u212A":"K", // KELVIN SIGN - "\u212B":"A", // ANGSTROM SIGN - "\u212E":"{\\textestimated}", // ESTIMATED SYMBOL - "\u2153":" 1/3", // VULGAR FRACTION ONE THIRD - "\u2154":" 2/3", // VULGAR FRACTION TWO THIRDS - "\u2155":" 1/5", // VULGAR FRACTION ONE FIFTH - "\u2156":" 2/5", // VULGAR FRACTION TWO FIFTHS - "\u2157":" 3/5", // VULGAR FRACTION THREE FIFTHS - "\u2158":" 4/5", // VULGAR FRACTION FOUR FIFTHS - "\u2159":" 1/6", // VULGAR FRACTION ONE SIXTH - "\u215A":" 5/6", // VULGAR FRACTION FIVE SIXTHS - "\u215B":" 1/8", // VULGAR FRACTION ONE EIGHTH - "\u215C":" 3/8", // VULGAR FRACTION THREE EIGHTHS - "\u215D":" 5/8", // VULGAR FRACTION FIVE EIGHTHS - "\u215E":" 7/8", // VULGAR FRACTION SEVEN EIGHTHS - "\u215F":" 1/", // FRACTION NUMERATOR ONE - "\u2160":"I", // ROMAN NUMERAL ONE - "\u2161":"II", // ROMAN NUMERAL TWO - "\u2162":"III", // ROMAN NUMERAL THREE - "\u2163":"IV", // ROMAN NUMERAL FOUR - "\u2164":"V", // ROMAN NUMERAL FIVE - "\u2165":"VI", // ROMAN NUMERAL SIX - "\u2166":"VII", // ROMAN NUMERAL SEVEN - "\u2167":"VIII", // ROMAN NUMERAL EIGHT - "\u2168":"IX", // ROMAN NUMERAL NINE - "\u2169":"X", // ROMAN NUMERAL TEN - "\u216A":"XI", // ROMAN NUMERAL ELEVEN - "\u216B":"XII", // ROMAN NUMERAL TWELVE - "\u216C":"L", // ROMAN NUMERAL FIFTY - "\u216D":"C", // ROMAN NUMERAL ONE HUNDRED - "\u216E":"D", // ROMAN NUMERAL FIVE HUNDRED - "\u216F":"M", // ROMAN NUMERAL ONE THOUSAND - "\u2170":"i", // SMALL ROMAN NUMERAL ONE - "\u2171":"ii", // SMALL ROMAN NUMERAL TWO - "\u2172":"iii", // SMALL ROMAN NUMERAL THREE - "\u2173":"iv", // SMALL ROMAN NUMERAL FOUR - "\u2174":"v", // SMALL ROMAN NUMERAL FIVE - "\u2175":"vi", // SMALL ROMAN NUMERAL SIX - "\u2176":"vii", // SMALL ROMAN NUMERAL SEVEN - "\u2177":"viii", // SMALL ROMAN NUMERAL EIGHT - "\u2178":"ix", // SMALL ROMAN NUMERAL NINE - "\u2179":"x", // SMALL ROMAN NUMERAL TEN - "\u217A":"xi", // SMALL ROMAN NUMERAL ELEVEN - "\u217B":"xii", // SMALL ROMAN NUMERAL TWELVE - "\u217C":"l", // SMALL ROMAN NUMERAL FIFTY - "\u217D":"c", // SMALL ROMAN NUMERAL ONE HUNDRED - "\u217E":"d", // SMALL ROMAN NUMERAL FIVE HUNDRED - "\u217F":"m", // SMALL ROMAN NUMERAL ONE THOUSAND - "\u2190":"{\\textleftarrow}", // LEFTWARDS ARROW - "\u2191":"{\\textuparrow}", // UPWARDS ARROW - "\u2192":"{\\textrightarrow}", // RIGHTWARDS ARROW - "\u2193":"{\\textdownarrow}", // DOWNWARDS ARROW - "\u2194":"<->", // LEFT RIGHT ARROW - "\u21D0":"<=", // LEFTWARDS DOUBLE ARROW - "\u21D2":"=>", // RIGHTWARDS DOUBLE ARROW - "\u21D4":"<=>", // LEFT RIGHT DOUBLE ARROW - "\u2212":"-", // MINUS SIGN - "\u2215":"/", // DIVISION SLASH - "\u2216":"\\", // SET MINUS - "\u2217":"*", // ASTERISK OPERATOR - "\u2218":"o", // RING OPERATOR - "\u2219":".", // BULLET OPERATOR - "\u221E":"$\\infty$", // INFINITY - "\u2223":"|", // DIVIDES - "\u2225":"||", // PARALLEL TO - "\u2236":":", // RATIO - "\u223C":"\\~{}", // TILDE OPERATOR - "\u2260":"/=", // NOT EQUAL TO - "\u2261":"=", // IDENTICAL TO - "\u2264":"<=", // LESS-THAN OR EQUAL TO - "\u2265":">=", // GREATER-THAN OR EQUAL TO - "\u226A":"<<", // MUCH LESS-THAN - "\u226B":">>", // MUCH GREATER-THAN - "\u2295":"(+)", // CIRCLED PLUS - "\u2296":"(-)", // CIRCLED MINUS - "\u2297":"(x)", // CIRCLED TIMES - "\u2298":"(/)", // CIRCLED DIVISION SLASH - "\u22A2":"|-", // RIGHT TACK - "\u22A3":"-|", // LEFT TACK - "\u22A6":"|-", // ASSERTION - "\u22A7":"|=", // MODELS - "\u22A8":"|=", // TRUE - "\u22A9":"||-", // FORCES - "\u22C5":".", // DOT OPERATOR - "\u22C6":"*", // STAR OPERATOR - "\u22D5":"$\\#$", // EQUAL AND PARALLEL TO - "\u22D8":"<<<", // VERY MUCH LESS-THAN - "\u22D9":">>>", // VERY MUCH GREATER-THAN - "\u2329":"{\\textlangle}", // LEFT-POINTING ANGLE BRACKET - "\u232A":"{\\textrangle}", // RIGHT-POINTING ANGLE BRACKET - "\u2400":"NUL", // SYMBOL FOR NULL - "\u2401":"SOH", // SYMBOL FOR START OF HEADING - "\u2402":"STX", // SYMBOL FOR START OF TEXT - "\u2403":"ETX", // SYMBOL FOR END OF TEXT - "\u2404":"EOT", // SYMBOL FOR END OF TRANSMISSION - "\u2405":"ENQ", // SYMBOL FOR ENQUIRY - "\u2406":"ACK", // SYMBOL FOR ACKNOWLEDGE - "\u2407":"BEL", // SYMBOL FOR BELL - "\u2408":"BS", // SYMBOL FOR BACKSPACE - "\u2409":"HT", // SYMBOL FOR HORIZONTAL TABULATION - "\u240A":"LF", // SYMBOL FOR LINE FEED - "\u240B":"VT", // SYMBOL FOR VERTICAL TABULATION - "\u240C":"FF", // SYMBOL FOR FORM FEED - "\u240D":"CR", // SYMBOL FOR CARRIAGE RETURN - "\u240E":"SO", // SYMBOL FOR SHIFT OUT - "\u240F":"SI", // SYMBOL FOR SHIFT IN - "\u2410":"DLE", // SYMBOL FOR DATA LINK ESCAPE - "\u2411":"DC1", // SYMBOL FOR DEVICE CONTROL ONE - "\u2412":"DC2", // SYMBOL FOR DEVICE CONTROL TWO - "\u2413":"DC3", // SYMBOL FOR DEVICE CONTROL THREE - "\u2414":"DC4", // SYMBOL FOR DEVICE CONTROL FOUR - "\u2415":"NAK", // SYMBOL FOR NEGATIVE ACKNOWLEDGE - "\u2416":"SYN", // SYMBOL FOR SYNCHRONOUS IDLE - "\u2417":"ETB", // SYMBOL FOR END OF TRANSMISSION BLOCK - "\u2418":"CAN", // SYMBOL FOR CANCEL - "\u2419":"EM", // SYMBOL FOR END OF MEDIUM - "\u241A":"SUB", // SYMBOL FOR SUBSTITUTE - "\u241B":"ESC", // SYMBOL FOR ESCAPE - "\u241C":"FS", // SYMBOL FOR FILE SEPARATOR - "\u241D":"GS", // SYMBOL FOR GROUP SEPARATOR - "\u241E":"RS", // SYMBOL FOR RECORD SEPARATOR - "\u241F":"US", // SYMBOL FOR UNIT SEPARATOR - "\u2420":"SP", // SYMBOL FOR SPACE - "\u2421":"DEL", // SYMBOL FOR DELETE - "\u2423":"{\\textvisiblespace}", // OPEN BOX - "\u2424":"NL", // SYMBOL FOR NEWLINE - "\u2425":"///", // SYMBOL FOR DELETE FORM TWO - "\u2426":"?", // SYMBOL FOR SUBSTITUTE FORM TWO - "\u2460":"(1)", // CIRCLED DIGIT ONE - "\u2461":"(2)", // CIRCLED DIGIT TWO - "\u2462":"(3)", // CIRCLED DIGIT THREE - "\u2463":"(4)", // CIRCLED DIGIT FOUR - "\u2464":"(5)", // CIRCLED DIGIT FIVE - "\u2465":"(6)", // CIRCLED DIGIT SIX - "\u2466":"(7)", // CIRCLED DIGIT SEVEN - "\u2467":"(8)", // CIRCLED DIGIT EIGHT - "\u2468":"(9)", // CIRCLED DIGIT NINE - "\u2469":"(10)", // CIRCLED NUMBER TEN - "\u246A":"(11)", // CIRCLED NUMBER ELEVEN - "\u246B":"(12)", // CIRCLED NUMBER TWELVE - "\u246C":"(13)", // CIRCLED NUMBER THIRTEEN - "\u246D":"(14)", // CIRCLED NUMBER FOURTEEN - "\u246E":"(15)", // CIRCLED NUMBER FIFTEEN - "\u246F":"(16)", // CIRCLED NUMBER SIXTEEN - "\u2470":"(17)", // CIRCLED NUMBER SEVENTEEN - "\u2471":"(18)", // CIRCLED NUMBER EIGHTEEN - "\u2472":"(19)", // CIRCLED NUMBER NINETEEN - "\u2473":"(20)", // CIRCLED NUMBER TWENTY - "\u2474":"(1)", // PARENTHESIZED DIGIT ONE - "\u2475":"(2)", // PARENTHESIZED DIGIT TWO - "\u2476":"(3)", // PARENTHESIZED DIGIT THREE - "\u2477":"(4)", // PARENTHESIZED DIGIT FOUR - "\u2478":"(5)", // PARENTHESIZED DIGIT FIVE - "\u2479":"(6)", // PARENTHESIZED DIGIT SIX - "\u247A":"(7)", // PARENTHESIZED DIGIT SEVEN - "\u247B":"(8)", // PARENTHESIZED DIGIT EIGHT - "\u247C":"(9)", // PARENTHESIZED DIGIT NINE - "\u247D":"(10)", // PARENTHESIZED NUMBER TEN - "\u247E":"(11)", // PARENTHESIZED NUMBER ELEVEN - "\u247F":"(12)", // PARENTHESIZED NUMBER TWELVE - "\u2480":"(13)", // PARENTHESIZED NUMBER THIRTEEN - "\u2481":"(14)", // PARENTHESIZED NUMBER FOURTEEN - "\u2482":"(15)", // PARENTHESIZED NUMBER FIFTEEN - "\u2483":"(16)", // PARENTHESIZED NUMBER SIXTEEN - "\u2484":"(17)", // PARENTHESIZED NUMBER SEVENTEEN - "\u2485":"(18)", // PARENTHESIZED NUMBER EIGHTEEN - "\u2486":"(19)", // PARENTHESIZED NUMBER NINETEEN - "\u2487":"(20)", // PARENTHESIZED NUMBER TWENTY - "\u2488":"1.", // DIGIT ONE FULL STOP - "\u2489":"2.", // DIGIT TWO FULL STOP - "\u248A":"3.", // DIGIT THREE FULL STOP - "\u248B":"4.", // DIGIT FOUR FULL STOP - "\u248C":"5.", // DIGIT FIVE FULL STOP - "\u248D":"6.", // DIGIT SIX FULL STOP - "\u248E":"7.", // DIGIT SEVEN FULL STOP - "\u248F":"8.", // DIGIT EIGHT FULL STOP - "\u2490":"9.", // DIGIT NINE FULL STOP - "\u2491":"10.", // NUMBER TEN FULL STOP - "\u2492":"11.", // NUMBER ELEVEN FULL STOP - "\u2493":"12.", // NUMBER TWELVE FULL STOP - "\u2494":"13.", // NUMBER THIRTEEN FULL STOP - "\u2495":"14.", // NUMBER FOURTEEN FULL STOP - "\u2496":"15.", // NUMBER FIFTEEN FULL STOP - "\u2497":"16.", // NUMBER SIXTEEN FULL STOP - "\u2498":"17.", // NUMBER SEVENTEEN FULL STOP - "\u2499":"18.", // NUMBER EIGHTEEN FULL STOP - "\u249A":"19.", // NUMBER NINETEEN FULL STOP - "\u249B":"20.", // NUMBER TWENTY FULL STOP - "\u249C":"(a)", // PARENTHESIZED LATIN SMALL LETTER A - "\u249D":"(b)", // PARENTHESIZED LATIN SMALL LETTER B - "\u249E":"(c)", // PARENTHESIZED LATIN SMALL LETTER C - "\u249F":"(d)", // PARENTHESIZED LATIN SMALL LETTER D - "\u24A0":"(e)", // PARENTHESIZED LATIN SMALL LETTER E - "\u24A1":"(f)", // PARENTHESIZED LATIN SMALL LETTER F - "\u24A2":"(g)", // PARENTHESIZED LATIN SMALL LETTER G - "\u24A3":"(h)", // PARENTHESIZED LATIN SMALL LETTER H - "\u24A4":"(i)", // PARENTHESIZED LATIN SMALL LETTER I - "\u24A5":"(j)", // PARENTHESIZED LATIN SMALL LETTER J - "\u24A6":"(k)", // PARENTHESIZED LATIN SMALL LETTER K - "\u24A7":"(l)", // PARENTHESIZED LATIN SMALL LETTER L - "\u24A8":"(m)", // PARENTHESIZED LATIN SMALL LETTER M - "\u24A9":"(n)", // PARENTHESIZED LATIN SMALL LETTER N - "\u24AA":"(o)", // PARENTHESIZED LATIN SMALL LETTER O - "\u24AB":"(p)", // PARENTHESIZED LATIN SMALL LETTER P - "\u24AC":"(q)", // PARENTHESIZED LATIN SMALL LETTER Q - "\u24AD":"(r)", // PARENTHESIZED LATIN SMALL LETTER R - "\u24AE":"(s)", // PARENTHESIZED LATIN SMALL LETTER S - "\u24AF":"(t)", // PARENTHESIZED LATIN SMALL LETTER T - "\u24B0":"(u)", // PARENTHESIZED LATIN SMALL LETTER U - "\u24B1":"(v)", // PARENTHESIZED LATIN SMALL LETTER V - "\u24B2":"(w)", // PARENTHESIZED LATIN SMALL LETTER W - "\u24B3":"(x)", // PARENTHESIZED LATIN SMALL LETTER X - "\u24B4":"(y)", // PARENTHESIZED LATIN SMALL LETTER Y - "\u24B5":"(z)", // PARENTHESIZED LATIN SMALL LETTER Z - "\u24B6":"(A)", // CIRCLED LATIN CAPITAL LETTER A - "\u24B7":"(B)", // CIRCLED LATIN CAPITAL LETTER B - "\u24B8":"(C)", // CIRCLED LATIN CAPITAL LETTER C - "\u24B9":"(D)", // CIRCLED LATIN CAPITAL LETTER D - "\u24BA":"(E)", // CIRCLED LATIN CAPITAL LETTER E - "\u24BB":"(F)", // CIRCLED LATIN CAPITAL LETTER F - "\u24BC":"(G)", // CIRCLED LATIN CAPITAL LETTER G - "\u24BD":"(H)", // CIRCLED LATIN CAPITAL LETTER H - "\u24BE":"(I)", // CIRCLED LATIN CAPITAL LETTER I - "\u24BF":"(J)", // CIRCLED LATIN CAPITAL LETTER J - "\u24C0":"(K)", // CIRCLED LATIN CAPITAL LETTER K - "\u24C1":"(L)", // CIRCLED LATIN CAPITAL LETTER L - "\u24C2":"(M)", // CIRCLED LATIN CAPITAL LETTER M - "\u24C3":"(N)", // CIRCLED LATIN CAPITAL LETTER N - "\u24C4":"(O)", // CIRCLED LATIN CAPITAL LETTER O - "\u24C5":"(P)", // CIRCLED LATIN CAPITAL LETTER P - "\u24C6":"(Q)", // CIRCLED LATIN CAPITAL LETTER Q - "\u24C7":"(R)", // CIRCLED LATIN CAPITAL LETTER R - "\u24C8":"(S)", // CIRCLED LATIN CAPITAL LETTER S - "\u24C9":"(T)", // CIRCLED LATIN CAPITAL LETTER T - "\u24CA":"(U)", // CIRCLED LATIN CAPITAL LETTER U - "\u24CB":"(V)", // CIRCLED LATIN CAPITAL LETTER V - "\u24CC":"(W)", // CIRCLED LATIN CAPITAL LETTER W - "\u24CD":"(X)", // CIRCLED LATIN CAPITAL LETTER X - "\u24CE":"(Y)", // CIRCLED LATIN CAPITAL LETTER Y - "\u24CF":"(Z)", // CIRCLED LATIN CAPITAL LETTER Z - "\u24D0":"(a)", // CIRCLED LATIN SMALL LETTER A - "\u24D1":"(b)", // CIRCLED LATIN SMALL LETTER B - "\u24D2":"(c)", // CIRCLED LATIN SMALL LETTER C - "\u24D3":"(d)", // CIRCLED LATIN SMALL LETTER D - "\u24D4":"(e)", // CIRCLED LATIN SMALL LETTER E - "\u24D5":"(f)", // CIRCLED LATIN SMALL LETTER F - "\u24D6":"(g)", // CIRCLED LATIN SMALL LETTER G - "\u24D7":"(h)", // CIRCLED LATIN SMALL LETTER H - "\u24D8":"(i)", // CIRCLED LATIN SMALL LETTER I - "\u24D9":"(j)", // CIRCLED LATIN SMALL LETTER J - "\u24DA":"(k)", // CIRCLED LATIN SMALL LETTER K - "\u24DB":"(l)", // CIRCLED LATIN SMALL LETTER L - "\u24DC":"(m)", // CIRCLED LATIN SMALL LETTER M - "\u24DD":"(n)", // CIRCLED LATIN SMALL LETTER N - "\u24DE":"(o)", // CIRCLED LATIN SMALL LETTER O - "\u24DF":"(p)", // CIRCLED LATIN SMALL LETTER P - "\u24E0":"(q)", // CIRCLED LATIN SMALL LETTER Q - "\u24E1":"(r)", // CIRCLED LATIN SMALL LETTER R - "\u24E2":"(s)", // CIRCLED LATIN SMALL LETTER S - "\u24E3":"(t)", // CIRCLED LATIN SMALL LETTER T - "\u24E4":"(u)", // CIRCLED LATIN SMALL LETTER U - "\u24E5":"(v)", // CIRCLED LATIN SMALL LETTER V - "\u24E6":"(w)", // CIRCLED LATIN SMALL LETTER W - "\u24E7":"(x)", // CIRCLED LATIN SMALL LETTER X - "\u24E8":"(y)", // CIRCLED LATIN SMALL LETTER Y - "\u24E9":"(z)", // CIRCLED LATIN SMALL LETTER Z - "\u24EA":"(0)", // CIRCLED DIGIT ZERO - "\u2500":"-", // BOX DRAWINGS LIGHT HORIZONTAL - "\u2501":"=", // BOX DRAWINGS HEAVY HORIZONTAL - "\u2502":"|", // BOX DRAWINGS LIGHT VERTICAL - "\u2503":"|", // BOX DRAWINGS HEAVY VERTICAL - "\u2504":"-", // BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL - "\u2505":"=", // BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL - "\u2506":"|", // BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL - "\u2507":"|", // BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL - "\u2508":"-", // BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL - "\u2509":"=", // BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL - "\u250A":"|", // BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL - "\u250B":"|", // BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL - "\u250C":"+", // BOX DRAWINGS LIGHT DOWN AND RIGHT - "\u250D":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY - "\u250E":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT - "\u250F":"+", // BOX DRAWINGS HEAVY DOWN AND RIGHT - "\u2510":"+", // BOX DRAWINGS LIGHT DOWN AND LEFT - "\u2511":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY - "\u2512":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT - "\u2513":"+", // BOX DRAWINGS HEAVY DOWN AND LEFT - "\u2514":"+", // BOX DRAWINGS LIGHT UP AND RIGHT - "\u2515":"+", // BOX DRAWINGS UP LIGHT AND RIGHT HEAVY - "\u2516":"+", // BOX DRAWINGS UP HEAVY AND RIGHT LIGHT - "\u2517":"+", // BOX DRAWINGS HEAVY UP AND RIGHT - "\u2518":"+", // BOX DRAWINGS LIGHT UP AND LEFT - "\u2519":"+", // BOX DRAWINGS UP LIGHT AND LEFT HEAVY - "\u251A":"+", // BOX DRAWINGS UP HEAVY AND LEFT LIGHT - "\u251B":"+", // BOX DRAWINGS HEAVY UP AND LEFT - "\u251C":"+", // BOX DRAWINGS LIGHT VERTICAL AND RIGHT - "\u251D":"+", // BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY - "\u251E":"+", // BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT - "\u251F":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT - "\u2520":"+", // BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT - "\u2521":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY - "\u2522":"+", // BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY - "\u2523":"+", // BOX DRAWINGS HEAVY VERTICAL AND RIGHT - "\u2524":"+", // BOX DRAWINGS LIGHT VERTICAL AND LEFT - "\u2525":"+", // BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY - "\u2526":"+", // BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT - "\u2527":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT - "\u2528":"+", // BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT - "\u2529":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY - "\u252A":"+", // BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY - "\u252B":"+", // BOX DRAWINGS HEAVY VERTICAL AND LEFT - "\u252C":"+", // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL - "\u252D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT - "\u252E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT - "\u252F":"+", // BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY - "\u2530":"+", // BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT - "\u2531":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY - "\u2532":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY - "\u2533":"+", // BOX DRAWINGS HEAVY DOWN AND HORIZONTAL - "\u2534":"+", // BOX DRAWINGS LIGHT UP AND HORIZONTAL - "\u2535":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT - "\u2536":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT - "\u2537":"+", // BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY - "\u2538":"+", // BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT - "\u2539":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY - "\u253A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY - "\u253B":"+", // BOX DRAWINGS HEAVY UP AND HORIZONTAL - "\u253C":"+", // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL - "\u253D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT - "\u253E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT - "\u253F":"+", // BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY - "\u2540":"+", // BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT - "\u2541":"+", // BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT - "\u2542":"+", // BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT - "\u2543":"+", // BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT - "\u2544":"+", // BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT - "\u2545":"+", // BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT - "\u2546":"+", // BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT - "\u2547":"+", // BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY - "\u2548":"+", // BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY - "\u2549":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY - "\u254A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY - "\u254B":"+", // BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL - "\u254C":"-", // BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL - "\u254D":"=", // BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL - "\u254E":"|", // BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL - "\u254F":"|", // BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL - "\u2550":"=", // BOX DRAWINGS DOUBLE HORIZONTAL - "\u2551":"|", // BOX DRAWINGS DOUBLE VERTICAL - "\u2552":"+", // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE - "\u2553":"+", // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE - "\u2554":"+", // BOX DRAWINGS DOUBLE DOWN AND RIGHT - "\u2555":"+", // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE - "\u2556":"+", // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE - "\u2557":"+", // BOX DRAWINGS DOUBLE DOWN AND LEFT - "\u2558":"+", // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE - "\u2559":"+", // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE - "\u255A":"+", // BOX DRAWINGS DOUBLE UP AND RIGHT - "\u255B":"+", // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE - "\u255C":"+", // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE - "\u255D":"+", // BOX DRAWINGS DOUBLE UP AND LEFT - "\u255E":"+", // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE - "\u255F":"+", // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE - "\u2560":"+", // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT - "\u2561":"+", // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE - "\u2562":"+", // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE - "\u2563":"+", // BOX DRAWINGS DOUBLE VERTICAL AND LEFT - "\u2564":"+", // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE - "\u2565":"+", // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE - "\u2566":"+", // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL - "\u2567":"+", // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE - "\u2568":"+", // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE - "\u2569":"+", // BOX DRAWINGS DOUBLE UP AND HORIZONTAL - "\u256A":"+", // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE - "\u256B":"+", // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE - "\u256C":"+", // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL - "\u256D":"+", // BOX DRAWINGS LIGHT ARC DOWN AND RIGHT - "\u256E":"+", // BOX DRAWINGS LIGHT ARC DOWN AND LEFT - "\u256F":"+", // BOX DRAWINGS LIGHT ARC UP AND LEFT - "\u2570":"+", // BOX DRAWINGS LIGHT ARC UP AND RIGHT - "\u2571":"/", // BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT - "\u2572":"\\", // BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT - "\u2573":"X", // BOX DRAWINGS LIGHT DIAGONAL CROSS - "\u257C":"-", // BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT - "\u257D":"|", // BOX DRAWINGS LIGHT UP AND HEAVY DOWN - "\u257E":"-", // BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT - "\u257F":"|", // BOX DRAWINGS HEAVY UP AND LIGHT DOWN - "\u25CB":"o", // WHITE CIRCLE - "\u25E6":"{\\textopenbullet}", // WHITE BULLET - "\u2605":"*", // BLACK STAR - "\u2606":"*", // WHITE STAR - "\u2612":"X", // BALLOT BOX WITH X - "\u2613":"X", // SALTIRE - "\u2639":":-(", // WHITE FROWNING FACE - "\u263A":":-)", // WHITE SMILING FACE - "\u263B":"(-:", // BLACK SMILING FACE - "\u266D":"b", // MUSIC FLAT SIGN - "\u266F":"$\\#$", // MUSIC SHARP SIGN - "\u2701":"$\\%<$", // UPPER BLADE SCISSORS - "\u2702":"$\\%<$", // BLACK SCISSORS - "\u2703":"$\\%<$", // LOWER BLADE SCISSORS - "\u2704":"$\\%<$", // WHITE SCISSORS - "\u270C":"V", // VICTORY HAND - "\u2713":"v", // CHECK MARK - "\u2714":"V", // HEAVY CHECK MARK - "\u2715":"x", // MULTIPLICATION X - "\u2716":"x", // HEAVY MULTIPLICATION X - "\u2717":"X", // BALLOT X - "\u2718":"X", // HEAVY BALLOT X - "\u2719":"+", // OUTLINED GREEK CROSS - "\u271A":"+", // HEAVY GREEK CROSS - "\u271B":"+", // OPEN CENTRE CROSS - "\u271C":"+", // HEAVY OPEN CENTRE CROSS - "\u271D":"+", // LATIN CROSS - "\u271E":"+", // SHADOWED WHITE LATIN CROSS - "\u271F":"+", // OUTLINED LATIN CROSS - "\u2720":"+", // MALTESE CROSS - "\u2721":"*", // STAR OF DAVID - "\u2722":"+", // FOUR TEARDROP-SPOKED ASTERISK - "\u2723":"+", // FOUR BALLOON-SPOKED ASTERISK - "\u2724":"+", // HEAVY FOUR BALLOON-SPOKED ASTERISK - "\u2725":"+", // FOUR CLUB-SPOKED ASTERISK - "\u2726":"+", // BLACK FOUR POINTED STAR - "\u2727":"+", // WHITE FOUR POINTED STAR - "\u2729":"*", // STRESS OUTLINED WHITE STAR - "\u272A":"*", // CIRCLED WHITE STAR - "\u272B":"*", // OPEN CENTRE BLACK STAR - "\u272C":"*", // BLACK CENTRE WHITE STAR - "\u272D":"*", // OUTLINED BLACK STAR - "\u272E":"*", // HEAVY OUTLINED BLACK STAR - "\u272F":"*", // PINWHEEL STAR - "\u2730":"*", // SHADOWED WHITE STAR - "\u2731":"*", // HEAVY ASTERISK - "\u2732":"*", // OPEN CENTRE ASTERISK - "\u2733":"*", // EIGHT SPOKED ASTERISK - "\u2734":"*", // EIGHT POINTED BLACK STAR - "\u2735":"*", // EIGHT POINTED PINWHEEL STAR - "\u2736":"*", // SIX POINTED BLACK STAR - "\u2737":"*", // EIGHT POINTED RECTILINEAR BLACK STAR - "\u2738":"*", // HEAVY EIGHT POINTED RECTILINEAR BLACK STAR - "\u2739":"*", // TWELVE POINTED BLACK STAR - "\u273A":"*", // SIXTEEN POINTED ASTERISK - "\u273B":"*", // TEARDROP-SPOKED ASTERISK - "\u273C":"*", // OPEN CENTRE TEARDROP-SPOKED ASTERISK - "\u273D":"*", // HEAVY TEARDROP-SPOKED ASTERISK - "\u273E":"*", // SIX PETALLED BLACK AND WHITE FLORETTE - "\u273F":"*", // BLACK FLORETTE - "\u2740":"*", // WHITE FLORETTE - "\u2741":"*", // EIGHT PETALLED OUTLINED BLACK FLORETTE - "\u2742":"*", // CIRCLED OPEN CENTRE EIGHT POINTED STAR - "\u2743":"*", // HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK - "\u2744":"*", // SNOWFLAKE - "\u2745":"*", // TIGHT TRIFOLIATE SNOWFLAKE - "\u2746":"*", // HEAVY CHEVRON SNOWFLAKE - "\u2747":"*", // SPARKLE - "\u2748":"*", // HEAVY SPARKLE - "\u2749":"*", // BALLOON-SPOKED ASTERISK - "\u274A":"*", // EIGHT TEARDROP-SPOKED PROPELLER ASTERISK - "\u274B":"*", // HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK - "\uFB00":"ff", // LATIN SMALL LIGATURE FF - "\uFB01":"fi", // LATIN SMALL LIGATURE FI - "\uFB02":"fl", // LATIN SMALL LIGATURE FL - "\uFB03":"ffi", // LATIN SMALL LIGATURE FFI - "\uFB04":"ffl", // LATIN SMALL LIGATURE FFL - "\uFB05":"st", // LATIN SMALL LIGATURE LONG S T - "\uFB06":"st", // LATIN SMALL LIGATURE ST -/* Derived accented characters */ - "\u00C0":"\\`{A}", // LATIN CAPITAL LETTER A WITH GRAVE - "\u00C1":"\\'{A}", // LATIN CAPITAL LETTER A WITH ACUTE - "\u00C2":"\\^{A}", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX - "\u00C3":"\\~{A}", // LATIN CAPITAL LETTER A WITH TILDE - "\u00C4":"\\\"{A}", // LATIN CAPITAL LETTER A WITH DIAERESIS - "\u00C5":"\\r{A}", // LATIN CAPITAL LETTER A WITH RING ABOVE - "\u00C7":"\\c{C}", // LATIN CAPITAL LETTER C WITH CEDILLA - "\u00C8":"\\`{E}", // LATIN CAPITAL LETTER E WITH GRAVE - "\u00C9":"\\'{E}", // LATIN CAPITAL LETTER E WITH ACUTE - "\u00CA":"\\^{E}", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX - "\u00CB":"\\\"{E}", // LATIN CAPITAL LETTER E WITH DIAERESIS - "\u00CC":"\\`{I}", // LATIN CAPITAL LETTER I WITH GRAVE - "\u00CD":"\\'{I}", // LATIN CAPITAL LETTER I WITH ACUTE - "\u00CE":"\\^{I}", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX - "\u00CF":"\\\"{I}", // LATIN CAPITAL LETTER I WITH DIAERESIS - "\u00D1":"\\~{N}", // LATIN CAPITAL LETTER N WITH TILDE - "\u00D2":"\\`{O}", // LATIN CAPITAL LETTER O WITH GRAVE - "\u00D3":"\\'{O}", // LATIN CAPITAL LETTER O WITH ACUTE - "\u00D4":"\\^{O}", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX - "\u00D5":"\\~{O}", // LATIN CAPITAL LETTER O WITH TILDE - "\u00D6":"\\\"{O}", // LATIN CAPITAL LETTER O WITH DIAERESIS - "\u00D9":"\\`{U}", // LATIN CAPITAL LETTER U WITH GRAVE - "\u00DA":"\\'{U}", // LATIN CAPITAL LETTER U WITH ACUTE - "\u00DB":"\\^{U}", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX - "\u00DC":"\\\"{U}", // LATIN CAPITAL LETTER U WITH DIAERESIS - "\u00DD":"\\'{Y}", // LATIN CAPITAL LETTER Y WITH ACUTE - "\u00E0":"\\`{a}", // LATIN SMALL LETTER A WITH GRAVE - "\u00E1":"\\'{a}", // LATIN SMALL LETTER A WITH ACUTE - "\u00E2":"\\^{a}", // LATIN SMALL LETTER A WITH CIRCUMFLEX - "\u00E3":"\\~{a}", // LATIN SMALL LETTER A WITH TILDE - "\u00E4":"\\\"{a}", // LATIN SMALL LETTER A WITH DIAERESIS - "\u00E5":"\\r{a}", // LATIN SMALL LETTER A WITH RING ABOVE - "\u00E7":"\\c{c}", // LATIN SMALL LETTER C WITH CEDILLA - "\u00E8":"\\`{e}", // LATIN SMALL LETTER E WITH GRAVE - "\u00E9":"\\'{e}", // LATIN SMALL LETTER E WITH ACUTE - "\u00EA":"\\^{e}", // LATIN SMALL LETTER E WITH CIRCUMFLEX - "\u00EB":"\\\"{e}", // LATIN SMALL LETTER E WITH DIAERESIS - "\u00EC":"\\`{i}", // LATIN SMALL LETTER I WITH GRAVE - "\u00ED":"\\'{i}", // LATIN SMALL LETTER I WITH ACUTE - "\u00EE":"\\^{i}", // LATIN SMALL LETTER I WITH CIRCUMFLEX - "\u00EF":"\\\"{i}", // LATIN SMALL LETTER I WITH DIAERESIS - "\u00F1":"\\~{n}", // LATIN SMALL LETTER N WITH TILDE - "\u00F2":"\\`{o}", // LATIN SMALL LETTER O WITH GRAVE - "\u00F3":"\\'{o}", // LATIN SMALL LETTER O WITH ACUTE - "\u00F4":"\\^{o}", // LATIN SMALL LETTER O WITH CIRCUMFLEX - "\u00F5":"\\~{o}", // LATIN SMALL LETTER O WITH TILDE - "\u00F6":"\\\"{o}", // LATIN SMALL LETTER O WITH DIAERESIS - "\u00F9":"\\`{u}", // LATIN SMALL LETTER U WITH GRAVE - "\u00FA":"\\'{u}", // LATIN SMALL LETTER U WITH ACUTE - "\u00FB":"\\^{u}", // LATIN SMALL LETTER U WITH CIRCUMFLEX - "\u00FC":"\\\"{u}", // LATIN SMALL LETTER U WITH DIAERESIS - "\u00FD":"\\'{y}", // LATIN SMALL LETTER Y WITH ACUTE - "\u00FF":"\\\"{y}", // LATIN SMALL LETTER Y WITH DIAERESIS - "\u0100":"\\={A}", // LATIN CAPITAL LETTER A WITH MACRON - "\u0101":"\\={a}", // LATIN SMALL LETTER A WITH MACRON - "\u0102":"\\u{A}", // LATIN CAPITAL LETTER A WITH BREVE - "\u0103":"\\u{a}", // LATIN SMALL LETTER A WITH BREVE - "\u0104":"\\k{A}", // LATIN CAPITAL LETTER A WITH OGONEK - "\u0105":"\\k{a}", // LATIN SMALL LETTER A WITH OGONEK - "\u0106":"\\'{C}", // LATIN CAPITAL LETTER C WITH ACUTE - "\u0107":"\\'{c}", // LATIN SMALL LETTER C WITH ACUTE - "\u0108":"\\^{C}", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX - "\u0109":"\\^{c}", // LATIN SMALL LETTER C WITH CIRCUMFLEX - "\u010A":"\\.{C}", // LATIN CAPITAL LETTER C WITH DOT ABOVE - "\u010B":"\\.{c}", // LATIN SMALL LETTER C WITH DOT ABOVE - "\u010C":"\\v{C}", // LATIN CAPITAL LETTER C WITH CARON - "\u010D":"\\v{c}", // LATIN SMALL LETTER C WITH CARON - "\u010E":"\\v{D}", // LATIN CAPITAL LETTER D WITH CARON - "\u010F":"\\v{d}", // LATIN SMALL LETTER D WITH CARON - "\u0112":"\\={E}", // LATIN CAPITAL LETTER E WITH MACRON - "\u0113":"\\={e}", // LATIN SMALL LETTER E WITH MACRON - "\u0114":"\\u{E}", // LATIN CAPITAL LETTER E WITH BREVE - "\u0115":"\\u{e}", // LATIN SMALL LETTER E WITH BREVE - "\u0116":"\\.{E}", // LATIN CAPITAL LETTER E WITH DOT ABOVE - "\u0117":"\\.{e}", // LATIN SMALL LETTER E WITH DOT ABOVE - "\u0118":"\\k{E}", // LATIN CAPITAL LETTER E WITH OGONEK - "\u0119":"\\k{e}", // LATIN SMALL LETTER E WITH OGONEK - "\u011A":"\\v{E}", // LATIN CAPITAL LETTER E WITH CARON - "\u011B":"\\v{e}", // LATIN SMALL LETTER E WITH CARON - "\u011C":"\\^{G}", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX - "\u011D":"\\^{g}", // LATIN SMALL LETTER G WITH CIRCUMFLEX - "\u011E":"\\u{G}", // LATIN CAPITAL LETTER G WITH BREVE - "\u011F":"\\u{g}", // LATIN SMALL LETTER G WITH BREVE - "\u0120":"\\.{G}", // LATIN CAPITAL LETTER G WITH DOT ABOVE - "\u0121":"\\.{g}", // LATIN SMALL LETTER G WITH DOT ABOVE - "\u0122":"\\c{G}", // LATIN CAPITAL LETTER G WITH CEDILLA - "\u0123":"\\c{g}", // LATIN SMALL LETTER G WITH CEDILLA - "\u0124":"\\^{H}", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX - "\u0125":"\\^{h}", // LATIN SMALL LETTER H WITH CIRCUMFLEX - "\u0128":"\\~{I}", // LATIN CAPITAL LETTER I WITH TILDE - "\u0129":"\\~{i}", // LATIN SMALL LETTER I WITH TILDE - "\u012A":"\\={I}", // LATIN CAPITAL LETTER I WITH MACRON - "\u012B":"\\={i}", // LATIN SMALL LETTER I WITH MACRON - "\u012C":"\\u{I}", // LATIN CAPITAL LETTER I WITH BREVE - "\u012D":"\\u{i}", // LATIN SMALL LETTER I WITH BREVE - "\u012E":"\\k{I}", // LATIN CAPITAL LETTER I WITH OGONEK - "\u012F":"\\k{i}", // LATIN SMALL LETTER I WITH OGONEK - "\u0130":"\\.{I}", // LATIN CAPITAL LETTER I WITH DOT ABOVE - "\u0134":"\\^{J}", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX - "\u0135":"\\^{j}", // LATIN SMALL LETTER J WITH CIRCUMFLEX - "\u0136":"\\c{K}", // LATIN CAPITAL LETTER K WITH CEDILLA - "\u0137":"\\c{k}", // LATIN SMALL LETTER K WITH CEDILLA - "\u0139":"\\'{L}", // LATIN CAPITAL LETTER L WITH ACUTE - "\u013A":"\\'{l}", // LATIN SMALL LETTER L WITH ACUTE - "\u013B":"\\c{L}", // LATIN CAPITAL LETTER L WITH CEDILLA - "\u013C":"\\c{l}", // LATIN SMALL LETTER L WITH CEDILLA - "\u013D":"\\v{L}", // LATIN CAPITAL LETTER L WITH CARON - "\u013E":"\\v{l}", // LATIN SMALL LETTER L WITH CARON - "\u0141":"\\L{}", //LATIN CAPITAL LETTER L WITH STROKE - "\u0142":"\\l{}", //LATIN SMALL LETTER L WITH STROKE - "\u0143":"\\'{N}", // LATIN CAPITAL LETTER N WITH ACUTE - "\u0144":"\\'{n}", // LATIN SMALL LETTER N WITH ACUTE - "\u0145":"\\c{N}", // LATIN CAPITAL LETTER N WITH CEDILLA - "\u0146":"\\c{n}", // LATIN SMALL LETTER N WITH CEDILLA - "\u0147":"\\v{N}", // LATIN CAPITAL LETTER N WITH CARON - "\u0148":"\\v{n}", // LATIN SMALL LETTER N WITH CARON - "\u014C":"\\={O}", // LATIN CAPITAL LETTER O WITH MACRON - "\u014D":"\\={o}", // LATIN SMALL LETTER O WITH MACRON - "\u014E":"\\u{O}", // LATIN CAPITAL LETTER O WITH BREVE - "\u014F":"\\u{o}", // LATIN SMALL LETTER O WITH BREVE - "\u0150":"\\H{O}", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE - "\u0151":"\\H{o}", // LATIN SMALL LETTER O WITH DOUBLE ACUTE - "\u0154":"\\'{R}", // LATIN CAPITAL LETTER R WITH ACUTE - "\u0155":"\\'{r}", // LATIN SMALL LETTER R WITH ACUTE - "\u0156":"\\c{R}", // LATIN CAPITAL LETTER R WITH CEDILLA - "\u0157":"\\c{r}", // LATIN SMALL LETTER R WITH CEDILLA - "\u0158":"\\v{R}", // LATIN CAPITAL LETTER R WITH CARON - "\u0159":"\\v{r}", // LATIN SMALL LETTER R WITH CARON - "\u015A":"\\'{S}", // LATIN CAPITAL LETTER S WITH ACUTE - "\u015B":"\\'{s}", // LATIN SMALL LETTER S WITH ACUTE - "\u015C":"\\^{S}", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX - "\u015D":"\\^{s}", // LATIN SMALL LETTER S WITH CIRCUMFLEX - "\u015E":"\\c{S}", // LATIN CAPITAL LETTER S WITH CEDILLA - "\u015F":"\\c{s}", // LATIN SMALL LETTER S WITH CEDILLA - "\u0160":"\\v{S}", // LATIN CAPITAL LETTER S WITH CARON - "\u0161":"\\v{s}", // LATIN SMALL LETTER S WITH CARON - "\u0162":"\\c{T}", // LATIN CAPITAL LETTER T WITH CEDILLA - "\u0163":"\\c{t}", // LATIN SMALL LETTER T WITH CEDILLA - "\u0164":"\\v{T}", // LATIN CAPITAL LETTER T WITH CARON - "\u0165":"\\v{t}", // LATIN SMALL LETTER T WITH CARON - "\u0168":"\\~{U}", // LATIN CAPITAL LETTER U WITH TILDE - "\u0169":"\\~{u}", // LATIN SMALL LETTER U WITH TILDE - "\u016A":"\\={U}", // LATIN CAPITAL LETTER U WITH MACRON - "\u016B":"\\={u}", // LATIN SMALL LETTER U WITH MACRON - "\u016C":"\\u{U}", // LATIN CAPITAL LETTER U WITH BREVE - "\u016D":"\\u{u}", // LATIN SMALL LETTER U WITH BREVE - "\u0170":"\\H{U}", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE - "\u0171":"\\H{u}", // LATIN SMALL LETTER U WITH DOUBLE ACUTE - "\u0172":"\\k{U}", // LATIN CAPITAL LETTER U WITH OGONEK - "\u0173":"\\k{u}", // LATIN SMALL LETTER U WITH OGONEK - "\u0174":"\\^{W}", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX - "\u0175":"\\^{w}", // LATIN SMALL LETTER W WITH CIRCUMFLEX - "\u0176":"\\^{Y}", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX - "\u0177":"\\^{y}", // LATIN SMALL LETTER Y WITH CIRCUMFLEX - "\u0178":"\\\"{Y}", // LATIN CAPITAL LETTER Y WITH DIAERESIS - "\u0179":"\\'{Z}", // LATIN CAPITAL LETTER Z WITH ACUTE - "\u017A":"\\'{z}", // LATIN SMALL LETTER Z WITH ACUTE - "\u017B":"\\.{Z}", // LATIN CAPITAL LETTER Z WITH DOT ABOVE - "\u017C":"\\.{z}", // LATIN SMALL LETTER Z WITH DOT ABOVE - "\u017D":"\\v{Z}", // LATIN CAPITAL LETTER Z WITH CARON - "\u017E":"\\v{z}", // LATIN SMALL LETTER Z WITH CARON - "\u01CD":"\\v{A}", // LATIN CAPITAL LETTER A WITH CARON - "\u01CE":"\\v{a}", // LATIN SMALL LETTER A WITH CARON - "\u01CF":"\\v{I}", // LATIN CAPITAL LETTER I WITH CARON - "\u01D0":"\\v{i}", // LATIN SMALL LETTER I WITH CARON - "\u01D1":"\\v{O}", // LATIN CAPITAL LETTER O WITH CARON - "\u01D2":"\\v{o}", // LATIN SMALL LETTER O WITH CARON - "\u01D3":"\\v{U}", // LATIN CAPITAL LETTER U WITH CARON - "\u01D4":"\\v{u}", // LATIN SMALL LETTER U WITH CARON - "\u01E6":"\\v{G}", // LATIN CAPITAL LETTER G WITH CARON - "\u01E7":"\\v{g}", // LATIN SMALL LETTER G WITH CARON - "\u01E8":"\\v{K}", // LATIN CAPITAL LETTER K WITH CARON - "\u01E9":"\\v{k}", // LATIN SMALL LETTER K WITH CARON - "\u01EA":"\\k{O}", // LATIN CAPITAL LETTER O WITH OGONEK - "\u01EB":"\\k{o}", // LATIN SMALL LETTER O WITH OGONEK - "\u01F0":"\\v{j}", // LATIN SMALL LETTER J WITH CARON - "\u01F4":"\\'{G}", // LATIN CAPITAL LETTER G WITH ACUTE - "\u01F5":"\\'{g}", // LATIN SMALL LETTER G WITH ACUTE - "\u1E02":"\\.{B}", // LATIN CAPITAL LETTER B WITH DOT ABOVE - "\u1E03":"\\.{b}", // LATIN SMALL LETTER B WITH DOT ABOVE - "\u1E04":"\\d{B}", // LATIN CAPITAL LETTER B WITH DOT BELOW - "\u1E05":"\\d{b}", // LATIN SMALL LETTER B WITH DOT BELOW - "\u1E06":"\\b{B}", // LATIN CAPITAL LETTER B WITH LINE BELOW - "\u1E07":"\\b{b}", // LATIN SMALL LETTER B WITH LINE BELOW - "\u1E0A":"\\.{D}", // LATIN CAPITAL LETTER D WITH DOT ABOVE - "\u1E0B":"\\.{d}", // LATIN SMALL LETTER D WITH DOT ABOVE - "\u1E0C":"\\d{D}", // LATIN CAPITAL LETTER D WITH DOT BELOW - "\u1E0D":"\\d{d}", // LATIN SMALL LETTER D WITH DOT BELOW - "\u1E0E":"\\b{D}", // LATIN CAPITAL LETTER D WITH LINE BELOW - "\u1E0F":"\\b{d}", // LATIN SMALL LETTER D WITH LINE BELOW - "\u1E10":"\\c{D}", // LATIN CAPITAL LETTER D WITH CEDILLA - "\u1E11":"\\c{d}", // LATIN SMALL LETTER D WITH CEDILLA - "\u1E1E":"\\.{F}", // LATIN CAPITAL LETTER F WITH DOT ABOVE - "\u1E1F":"\\.{f}", // LATIN SMALL LETTER F WITH DOT ABOVE - "\u1E20":"\\={G}", // LATIN CAPITAL LETTER G WITH MACRON - "\u1E21":"\\={g}", // LATIN SMALL LETTER G WITH MACRON - "\u1E22":"\\.{H}", // LATIN CAPITAL LETTER H WITH DOT ABOVE - "\u1E23":"\\.{h}", // LATIN SMALL LETTER H WITH DOT ABOVE - "\u1E24":"\\d{H}", // LATIN CAPITAL LETTER H WITH DOT BELOW - "\u1E25":"\\d{h}", // LATIN SMALL LETTER H WITH DOT BELOW - "\u1E26":"\\\"{H}", // LATIN CAPITAL LETTER H WITH DIAERESIS - "\u1E27":"\\\"{h}", // LATIN SMALL LETTER H WITH DIAERESIS - "\u1E28":"\\c{H}", // LATIN CAPITAL LETTER H WITH CEDILLA - "\u1E29":"\\c{h}", // LATIN SMALL LETTER H WITH CEDILLA - "\u1E30":"\\'{K}", // LATIN CAPITAL LETTER K WITH ACUTE - "\u1E31":"\\'{k}", // LATIN SMALL LETTER K WITH ACUTE - "\u1E32":"\\d{K}", // LATIN CAPITAL LETTER K WITH DOT BELOW - "\u1E33":"\\d{k}", // LATIN SMALL LETTER K WITH DOT BELOW - "\u1E34":"\\b{K}", // LATIN CAPITAL LETTER K WITH LINE BELOW - "\u1E35":"\\b{k}", // LATIN SMALL LETTER K WITH LINE BELOW - "\u1E36":"\\d{L}", // LATIN CAPITAL LETTER L WITH DOT BELOW - "\u1E37":"\\d{l}", // LATIN SMALL LETTER L WITH DOT BELOW - "\u1E3A":"\\b{L}", // LATIN CAPITAL LETTER L WITH LINE BELOW - "\u1E3B":"\\b{l}", // LATIN SMALL LETTER L WITH LINE BELOW - "\u1E3E":"\\'{M}", // LATIN CAPITAL LETTER M WITH ACUTE - "\u1E3F":"\\'{m}", // LATIN SMALL LETTER M WITH ACUTE - "\u1E40":"\\.{M}", // LATIN CAPITAL LETTER M WITH DOT ABOVE - "\u1E41":"\\.{m}", // LATIN SMALL LETTER M WITH DOT ABOVE - "\u1E42":"\\d{M}", // LATIN CAPITAL LETTER M WITH DOT BELOW - "\u1E43":"\\d{m}", // LATIN SMALL LETTER M WITH DOT BELOW - "\u1E44":"\\.{N}", // LATIN CAPITAL LETTER N WITH DOT ABOVE - "\u1E45":"\\.{n}", // LATIN SMALL LETTER N WITH DOT ABOVE - "\u1E46":"\\d{N}", // LATIN CAPITAL LETTER N WITH DOT BELOW - "\u1E47":"\\d{n}", // LATIN SMALL LETTER N WITH DOT BELOW - "\u1E48":"\\b{N}", // LATIN CAPITAL LETTER N WITH LINE BELOW - "\u1E49":"\\b{n}", // LATIN SMALL LETTER N WITH LINE BELOW - "\u1E54":"\\'{P}", // LATIN CAPITAL LETTER P WITH ACUTE - "\u1E55":"\\'{p}", // LATIN SMALL LETTER P WITH ACUTE - "\u1E56":"\\.{P}", // LATIN CAPITAL LETTER P WITH DOT ABOVE - "\u1E57":"\\.{p}", // LATIN SMALL LETTER P WITH DOT ABOVE - "\u1E58":"\\.{R}", // LATIN CAPITAL LETTER R WITH DOT ABOVE - "\u1E59":"\\.{r}", // LATIN SMALL LETTER R WITH DOT ABOVE - "\u1E5A":"\\d{R}", // LATIN CAPITAL LETTER R WITH DOT BELOW - "\u1E5B":"\\d{r}", // LATIN SMALL LETTER R WITH DOT BELOW - "\u1E5E":"\\b{R}", // LATIN CAPITAL LETTER R WITH LINE BELOW - "\u1E5F":"\\b{r}", // LATIN SMALL LETTER R WITH LINE BELOW - "\u1E60":"\\.{S}", // LATIN CAPITAL LETTER S WITH DOT ABOVE - "\u1E61":"\\.{s}", // LATIN SMALL LETTER S WITH DOT ABOVE - "\u1E62":"\\d{S}", // LATIN CAPITAL LETTER S WITH DOT BELOW - "\u1E63":"\\d{s}", // LATIN SMALL LETTER S WITH DOT BELOW - "\u1E6A":"\\.{T}", // LATIN CAPITAL LETTER T WITH DOT ABOVE - "\u1E6B":"\\.{t}", // LATIN SMALL LETTER T WITH DOT ABOVE - "\u1E6C":"\\d{T}", // LATIN CAPITAL LETTER T WITH DOT BELOW - "\u1E6D":"\\d{t}", // LATIN SMALL LETTER T WITH DOT BELOW - "\u1E6E":"\\b{T}", // LATIN CAPITAL LETTER T WITH LINE BELOW - "\u1E6F":"\\b{t}", // LATIN SMALL LETTER T WITH LINE BELOW - "\u1E7C":"\\~{V}", // LATIN CAPITAL LETTER V WITH TILDE - "\u1E7D":"\\~{v}", // LATIN SMALL LETTER V WITH TILDE - "\u1E7E":"\\d{V}", // LATIN CAPITAL LETTER V WITH DOT BELOW - "\u1E7F":"\\d{v}", // LATIN SMALL LETTER V WITH DOT BELOW - "\u1E80":"\\`{W}", // LATIN CAPITAL LETTER W WITH GRAVE - "\u1E81":"\\`{w}", // LATIN SMALL LETTER W WITH GRAVE - "\u1E82":"\\'{W}", // LATIN CAPITAL LETTER W WITH ACUTE - "\u1E83":"\\'{w}", // LATIN SMALL LETTER W WITH ACUTE - "\u1E84":"\\\"{W}", // LATIN CAPITAL LETTER W WITH DIAERESIS - "\u1E85":"\\\"{w}", // LATIN SMALL LETTER W WITH DIAERESIS - "\u1E86":"\\.{W}", // LATIN CAPITAL LETTER W WITH DOT ABOVE - "\u1E87":"\\.{w}", // LATIN SMALL LETTER W WITH DOT ABOVE - "\u1E88":"\\d{W}", // LATIN CAPITAL LETTER W WITH DOT BELOW - "\u1E89":"\\d{w}", // LATIN SMALL LETTER W WITH DOT BELOW - "\u1E8A":"\\.{X}", // LATIN CAPITAL LETTER X WITH DOT ABOVE - "\u1E8B":"\\.{x}", // LATIN SMALL LETTER X WITH DOT ABOVE - "\u1E8C":"\\\"{X}", // LATIN CAPITAL LETTER X WITH DIAERESIS - "\u1E8D":"\\\"{x}", // LATIN SMALL LETTER X WITH DIAERESIS - "\u1E8E":"\\.{Y}", // LATIN CAPITAL LETTER Y WITH DOT ABOVE - "\u1E8F":"\\.{y}", // LATIN SMALL LETTER Y WITH DOT ABOVE - "\u1E90":"\\^{Z}", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX - "\u1E91":"\\^{z}", // LATIN SMALL LETTER Z WITH CIRCUMFLEX - "\u1E92":"\\d{Z}", // LATIN CAPITAL LETTER Z WITH DOT BELOW - "\u1E93":"\\d{z}", // LATIN SMALL LETTER Z WITH DOT BELOW - "\u1E94":"\\b{Z}", // LATIN CAPITAL LETTER Z WITH LINE BELOW - "\u1E95":"\\b{z}", // LATIN SMALL LETTER Z WITH LINE BELOW - "\u1E96":"\\b{h}", // LATIN SMALL LETTER H WITH LINE BELOW - "\u1E97":"\\\"{t}", // LATIN SMALL LETTER T WITH DIAERESIS - "\u1EA0":"\\d{A}", // LATIN CAPITAL LETTER A WITH DOT BELOW - "\u1EA1":"\\d{a}", // LATIN SMALL LETTER A WITH DOT BELOW - "\u1EB8":"\\d{E}", // LATIN CAPITAL LETTER E WITH DOT BELOW - "\u1EB9":"\\d{e}", // LATIN SMALL LETTER E WITH DOT BELOW - "\u1EBC":"\\~{E}", // LATIN CAPITAL LETTER E WITH TILDE - "\u1EBD":"\\~{e}", // LATIN SMALL LETTER E WITH TILDE - "\u1ECA":"\\d{I}", // LATIN CAPITAL LETTER I WITH DOT BELOW - "\u1ECB":"\\d{i}", // LATIN SMALL LETTER I WITH DOT BELOW - "\u1ECC":"\\d{O}", // LATIN CAPITAL LETTER O WITH DOT BELOW - "\u1ECD":"\\d{o}", // LATIN SMALL LETTER O WITH DOT BELOW - "\u1EE4":"\\d{U}", // LATIN CAPITAL LETTER U WITH DOT BELOW - "\u1EE5":"\\d{u}", // LATIN SMALL LETTER U WITH DOT BELOW - "\u1EF2":"\\`{Y}", // LATIN CAPITAL LETTER Y WITH GRAVE - "\u1EF3":"\\`{y}", // LATIN SMALL LETTER Y WITH GRAVE - "\u1EF4":"\\d{Y}", // LATIN CAPITAL LETTER Y WITH DOT BELOW - "\u1EF5":"\\d{y}", // LATIN SMALL LETTER Y WITH DOT BELOW - "\u1EF8":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH TILDE - "\u1EF9":"\\~{y}" // LATIN SMALL LETTER Y WITH TILDE -}; - -/* unfortunately the mapping isn't reversible - hence this second table - sigh! */ -var reversemappingTable = { - "\\url" : "", // strip 'url' - "\\href" : "", // strip 'href' - "~" : "\u00A0", // NO-BREAK SPACE - "{\\textexclamdown}" : "\u00A1", // INVERTED EXCLAMATION MARK - "{\\textcent}" : "\u00A2", // CENT SIGN - "{\\textsterling}" : "\u00A3", // POUND SIGN - "{\\textyen}" : "\u00A5", // YEN SIGN - "{\\textbrokenbar}" : "\u00A6", // BROKEN BAR - "{\\textsection}" : "\u00A7", // SECTION SIGN - "{\\textasciidieresis}" : "\u00A8", // DIAERESIS - "{\\textcopyright}" : "\u00A9", // COPYRIGHT SIGN - "{\\textordfeminine}" : "\u00AA", // FEMININE ORDINAL INDICATOR - "{\\guillemotleft}" : "\u00AB", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - "{\\textlnot}" : "\u00AC", // NOT SIGN - "{\\textregistered}" : "\u00AE", // REGISTERED SIGN - "{\\textasciimacron}" : "\u00AF", // MACRON - "{\\textdegree}" : "\u00B0", // DEGREE SIGN - "{\\textpm}" : "\u00B1", // PLUS-MINUS SIGN - "{\\texttwosuperior}" : "\u00B2", // SUPERSCRIPT TWO - "{\\textthreesuperior}" : "\u00B3", // SUPERSCRIPT THREE - "{\\textasciiacute}" : "\u00B4", // ACUTE ACCENT - "{\\textmu}" : "\u00B5", // MICRO SIGN - "{\\textparagraph}" : "\u00B6", // PILCROW SIGN - "{\\textperiodcentered}" : "\u00B7", // MIDDLE DOT - "{\\c\\ }" : "\u00B8", // CEDILLA - "{\\textonesuperior}" : "\u00B9", // SUPERSCRIPT ONE - "{\\textordmasculine}" : "\u00BA", // MASCULINE ORDINAL INDICATOR - "{\\guillemotright}" : "\u00BB", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - "{\\textonequarter}" : "\u00BC", // VULGAR FRACTION ONE QUARTER - "{\\textonehalf}" : "\u00BD", // VULGAR FRACTION ONE HALF - "{\\textthreequarters}" : "\u00BE", // VULGAR FRACTION THREE QUARTERS - "{\\textquestiondown}" : "\u00BF", // INVERTED QUESTION MARK - "{\\AE}" : "\u00C6", // LATIN CAPITAL LETTER AE - "{\\DH}" : "\u00D0", // LATIN CAPITAL LETTER ETH - "{\\texttimes}" : "\u00D7", // MULTIPLICATION SIGN - "{\\TH}" : "\u00DE", // LATIN CAPITAL LETTER THORN - "{\\ss}" : "\u00DF", // LATIN SMALL LETTER SHARP S - "{\\ae}" : "\u00E6", // LATIN SMALL LETTER AE - "{\\dh}" : "\u00F0", // LATIN SMALL LETTER ETH - "{\\textdiv}" : "\u00F7", // DIVISION SIGN - "{\\th}" : "\u00FE", // LATIN SMALL LETTER THORN - "{\\i}" : "\u0131", // LATIN SMALL LETTER DOTLESS I - "'n" : "\u0149", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE - "{\\NG}" : "\u014A", // LATIN CAPITAL LETTER ENG - "{\\ng}" : "\u014B", // LATIN SMALL LETTER ENG - "{\\OE}" : "\u0152", // LATIN CAPITAL LIGATURE OE - "{\\oe}" : "\u0153", // LATIN SMALL LIGATURE OE - "{\\textasciicircum}" : "\u02C6", // MODIFIER LETTER CIRCUMFLEX ACCENT -// "\\~{}" : "\u02DC", // SMALL TILDE - "{\\textacutedbl}" : "\u02DD", // DOUBLE ACUTE ACCENT - "{\\textendash}" : "\u2013", // EN DASH - "{\\textemdash}" : "\u2014", // EM DASH - "---" : "\u2014", // EM DASH - "--" : "\u2013", // EN DASH - "{\\textbardbl}" : "\u2016", // DOUBLE VERTICAL LINE - "{\\textunderscore}" : "\u2017", // DOUBLE LOW LINE - "{\\textquoteleft}" : "\u2018", // LEFT SINGLE QUOTATION MARK - "{\\textquoteright}" : "\u2019", // RIGHT SINGLE QUOTATION MARK - "{\\quotesinglbase}" : "\u201A", // SINGLE LOW-9 QUOTATION MARK - "{\\textquotedblleft}" : "\u201C", // LEFT DOUBLE QUOTATION MARK - "{\\textquotedblright}" : "\u201D", // RIGHT DOUBLE QUOTATION MARK - "{\\quotedblbase}" : "\u201E", // DOUBLE LOW-9 QUOTATION MARK -// "{\\quotedblbase}" : "\u201F", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK - "{\\textdagger}" : "\u2020", // DAGGER - "{\\textdaggerdbl}" : "\u2021", // DOUBLE DAGGER - "{\\textbullet}" : "\u2022", // BULLET - "{\\textellipsis}" : "\u2026", // HORIZONTAL ELLIPSIS - "{\\textperthousand}" : "\u2030", // PER MILLE SIGN - "'''" : "\u2034", // TRIPLE PRIME - "''" : "\u201D", // RIGHT DOUBLE QUOTATION MARK (could be a double prime) - "``" : "\u201C", // LEFT DOUBLE QUOTATION MARK (could be a reversed double prime) - "```" : "\u2037", // REVERSED TRIPLE PRIME - "{\\guilsinglleft}" : "\u2039", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK - "{\\guilsinglright}" : "\u203A", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - "!!" : "\u203C", // DOUBLE EXCLAMATION MARK - "{\\textfractionsolidus}" : "\u2044", // FRACTION SLASH - "?!" : "\u2048", // QUESTION EXCLAMATION MARK - "!?" : "\u2049", // EXCLAMATION QUESTION MARK - "$^{0}$" : "\u2070", // SUPERSCRIPT ZERO - "$^{4}$" : "\u2074", // SUPERSCRIPT FOUR - "$^{5}$" : "\u2075", // SUPERSCRIPT FIVE - "$^{6}$" : "\u2076", // SUPERSCRIPT SIX - "$^{7}$" : "\u2077", // SUPERSCRIPT SEVEN - "$^{8}$" : "\u2078", // SUPERSCRIPT EIGHT - "$^{9}$" : "\u2079", // SUPERSCRIPT NINE - "$^{+}$" : "\u207A", // SUPERSCRIPT PLUS SIGN - "$^{-}$" : "\u207B", // SUPERSCRIPT MINUS - "$^{=}$" : "\u207C", // SUPERSCRIPT EQUALS SIGN - "$^{(}$" : "\u207D", // SUPERSCRIPT LEFT PARENTHESIS - "$^{)}$" : "\u207E", // SUPERSCRIPT RIGHT PARENTHESIS - "$^{n}$" : "\u207F", // SUPERSCRIPT LATIN SMALL LETTER N - "$_{0}$" : "\u2080", // SUBSCRIPT ZERO - "$_{1}$" : "\u2081", // SUBSCRIPT ONE - "$_{2}$" : "\u2082", // SUBSCRIPT TWO - "$_{3}$" : "\u2083", // SUBSCRIPT THREE - "$_{4}$" : "\u2084", // SUBSCRIPT FOUR - "$_{5}$" : "\u2085", // SUBSCRIPT FIVE - "$_{6}$" : "\u2086", // SUBSCRIPT SIX - "$_{7}$" : "\u2087", // SUBSCRIPT SEVEN - "$_{8}$" : "\u2088", // SUBSCRIPT EIGHT - "$_{9}$" : "\u2089", // SUBSCRIPT NINE - "$_{+}$" : "\u208A", // SUBSCRIPT PLUS SIGN - "$_{-}$" : "\u208B", // SUBSCRIPT MINUS - "$_{=}$" : "\u208C", // SUBSCRIPT EQUALS SIGN - "$_{(}$" : "\u208D", // SUBSCRIPT LEFT PARENTHESIS - "$_{)}$" : "\u208E", // SUBSCRIPT RIGHT PARENTHESIS - "{\\texteuro}" : "\u20AC", // EURO SIGN - "a/c" : "\u2100", // ACCOUNT OF - "a/s" : "\u2101", // ADDRESSED TO THE SUBJECT - "{\\textcelsius}" : "\u2103", // DEGREE CELSIUS - "c/o" : "\u2105", // CARE OF - "c/u" : "\u2106", // CADA UNA - "{\\textnumero}" : "\u2116", // NUMERO SIGN - "{\\textcircledP}" : "\u2117", // SOUND RECORDING COPYRIGHT - "{\\textservicemark}" : "\u2120", // SERVICE MARK - "{TEL}" : "\u2121", // TELEPHONE SIGN - "{\\texttrademark}" : "\u2122", // TRADE MARK SIGN - "{\\textohm}" : "\u2126", // OHM SIGN - "{\\textestimated}" : "\u212E", // ESTIMATED SYMBOL - " 1/3" : "\u2153", // VULGAR FRACTION ONE THIRD - " 2/3" : "\u2154", // VULGAR FRACTION TWO THIRDS - " 1/5" : "\u2155", // VULGAR FRACTION ONE FIFTH - " 2/5" : "\u2156", // VULGAR FRACTION TWO FIFTHS - " 3/5" : "\u2157", // VULGAR FRACTION THREE FIFTHS - " 4/5" : "\u2158", // VULGAR FRACTION FOUR FIFTHS - " 1/6" : "\u2159", // VULGAR FRACTION ONE SIXTH - " 5/6" : "\u215A", // VULGAR FRACTION FIVE SIXTHS - " 1/8" : "\u215B", // VULGAR FRACTION ONE EIGHTH - " 3/8" : "\u215C", // VULGAR FRACTION THREE EIGHTHS - " 5/8" : "\u215D", // VULGAR FRACTION FIVE EIGHTHS - " 7/8" : "\u215E", // VULGAR FRACTION SEVEN EIGHTHS - " 1/" : "\u215F", // FRACTION NUMERATOR ONE - "{\\textleftarrow}" : "\u2190", // LEFTWARDS ARROW - "{\\textuparrow}" : "\u2191", // UPWARDS ARROW - "{\\textrightarrow}" : "\u2192", // RIGHTWARDS ARROW - "{\\textdownarrow}" : "\u2193", // DOWNWARDS ARROW - "<->" : "\u2194", // LEFT RIGHT ARROW - "<=" : "\u21D0", // LEFTWARDS DOUBLE ARROW - "=>" : "\u21D2", // RIGHTWARDS DOUBLE ARROW - "<=>" : "\u21D4", // LEFT RIGHT DOUBLE ARROW - "$\\infty$" : "\u221E", // INFINITY - "||" : "\u2225", // PARALLEL TO - "\\~{}" : "\u223C", // TILDE OPERATOR - "/=" : "\u2260", // NOT EQUAL TO -// "<=" : "\u2264", // LESS-THAN OR EQUAL TO - ">=" : "\u2265", // GREATER-THAN OR EQUAL TO - "<<" : "\u226A", // MUCH LESS-THAN - ">>" : "\u226B", // MUCH GREATER-THAN - "(+)" : "\u2295", // CIRCLED PLUS - "(-)" : "\u2296", // CIRCLED MINUS - "(x)" : "\u2297", // CIRCLED TIMES - "(/)" : "\u2298", // CIRCLED DIVISION SLASH - "|-" : "\u22A2", // RIGHT TACK - "-|" : "\u22A3", // LEFT TACK -// "|-" : "\u22A6", // ASSERTION - "|=" : "\u22A7", // MODELS -// "|=" : "\u22A8", // TRUE - "||-" : "\u22A9", // FORCES - "$\\#$" : "\u22D5", // EQUAL AND PARALLEL TO - "<<<" : "\u22D8", // VERY MUCH LESS-THAN - ">>>" : "\u22D9", // VERY MUCH GREATER-THAN - "{\\textlangle}" : "\u2329", // LEFT-POINTING ANGLE BRACKET - "{\\textrangle}" : "\u232A", // RIGHT-POINTING ANGLE BRACKET - "{\\textvisiblespace}" : "\u2423", // OPEN BOX - "///" : "\u2425", // SYMBOL FOR DELETE FORM TWO - "{\\textopenbullet}" : "\u25E6", // WHITE BULLET - ":-(" : "\u2639", // WHITE FROWNING FACE - ":-)" : "\u263A", // WHITE SMILING FACE - "(-: " : "\u263B", // BLACK SMILING FACE -// "$\\#$" : "\u266F", // MUSIC SHARP SIGN - "$\\%<$" : "\u2701", // UPPER BLADE SCISSORS -/* "$\\%<$" : "\u2702", // BLACK SCISSORS - "$\\%<$" : "\u2703", // LOWER BLADE SCISSORS - "$\\%<$" : "\u2704", // WHITE SCISSORS */ -/* Derived accented characters */ - "\\`{A}" : "\u00C0", // LATIN CAPITAL LETTER A WITH GRAVE - "\\'{A}" : "\u00C1", // LATIN CAPITAL LETTER A WITH ACUTE - "\\^{A}" : "\u00C2", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX - "\\~{A}" : "\u00C3", // LATIN CAPITAL LETTER A WITH TILDE - "\\\"{A}" : "\u00C4", // LATIN CAPITAL LETTER A WITH DIAERESIS - "\\r{A}" : "\u00C5", // LATIN CAPITAL LETTER A WITH RING ABOVE - "\\c{C}" : "\u00C7", // LATIN CAPITAL LETTER C WITH CEDILLA - "\\`{E}" : "\u00C8", // LATIN CAPITAL LETTER E WITH GRAVE - "\\'{E}" : "\u00C9", // LATIN CAPITAL LETTER E WITH ACUTE - "\\^{E}" : "\u00CA", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX - "\\\"{E}" : "\u00CB", // LATIN CAPITAL LETTER E WITH DIAERESIS - "\\`{I}" : "\u00CC", // LATIN CAPITAL LETTER I WITH GRAVE - "\\'{I}" : "\u00CD", // LATIN CAPITAL LETTER I WITH ACUTE - "\\^{I}" : "\u00CE", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX - "\\\"{I}" : "\u00CF", // LATIN CAPITAL LETTER I WITH DIAERESIS - "\\~{N}" : "\u00D1", // LATIN CAPITAL LETTER N WITH TILDE - "\\`{O}" : "\u00D2", // LATIN CAPITAL LETTER O WITH GRAVE - "\\'{O}" : "\u00D3", // LATIN CAPITAL LETTER O WITH ACUTE - "\\^{O}" : "\u00D4", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX - "\\~{O}" : "\u00D5", // LATIN CAPITAL LETTER O WITH TILDE - "\\\"{O}" : "\u00D6", // LATIN CAPITAL LETTER O WITH DIAERESIS - "\\`{U}" : "\u00D9", // LATIN CAPITAL LETTER U WITH GRAVE - "\\'{U}" : "\u00DA", // LATIN CAPITAL LETTER U WITH ACUTE - "\\^{U}" : "\u00DB", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX - "\\\"{U}" : "\u00DC", // LATIN CAPITAL LETTER U WITH DIAERESIS - "\\'{Y}" : "\u00DD", // LATIN CAPITAL LETTER Y WITH ACUTE - "\\`{a}" : "\u00E0", // LATIN SMALL LETTER A WITH GRAVE - "\\'{a}" : "\u00E1", // LATIN SMALL LETTER A WITH ACUTE - "\\^{a}" : "\u00E2", // LATIN SMALL LETTER A WITH CIRCUMFLEX - "\\~{a}" : "\u00E3", // LATIN SMALL LETTER A WITH TILDE - "\\\"{a}" : "\u00E4", // LATIN SMALL LETTER A WITH DIAERESIS - "\\r{a}" : "\u00E5", // LATIN SMALL LETTER A WITH RING ABOVE - "\\c{c}" : "\u00E7", // LATIN SMALL LETTER C WITH CEDILLA - "\\`{e}" : "\u00E8", // LATIN SMALL LETTER E WITH GRAVE - "\\'{e}" : "\u00E9", // LATIN SMALL LETTER E WITH ACUTE - "\\^{e}" : "\u00EA", // LATIN SMALL LETTER E WITH CIRCUMFLEX - "\\\"{e}" : "\u00EB", // LATIN SMALL LETTER E WITH DIAERESIS - "\\`{i}" : "\u00EC", // LATIN SMALL LETTER I WITH GRAVE - "\\'{i}" : "\u00ED", // LATIN SMALL LETTER I WITH ACUTE - "\\^{i}" : "\u00EE", // LATIN SMALL LETTER I WITH CIRCUMFLEX - "\\\"{i}" : "\u00EF", // LATIN SMALL LETTER I WITH DIAERESIS - "\\~{n}" : "\u00F1", // LATIN SMALL LETTER N WITH TILDE - "\\`{o}" : "\u00F2", // LATIN SMALL LETTER O WITH GRAVE - "\\'{o}" : "\u00F3", // LATIN SMALL LETTER O WITH ACUTE - "\\^{o}" : "\u00F4", // LATIN SMALL LETTER O WITH CIRCUMFLEX - "\\~{o}" : "\u00F5", // LATIN SMALL LETTER O WITH TILDE - "\\\"{o}" : "\u00F6", // LATIN SMALL LETTER O WITH DIAERESIS - "\\`{u}" : "\u00F9", // LATIN SMALL LETTER U WITH GRAVE - "\\'{u}" : "\u00FA", // LATIN SMALL LETTER U WITH ACUTE - "\\^{u}" : "\u00FB", // LATIN SMALL LETTER U WITH CIRCUMFLEX - "\\\"{u}" : "\u00FC", // LATIN SMALL LETTER U WITH DIAERESIS - "\\'{y}" : "\u00FD", // LATIN SMALL LETTER Y WITH ACUTE - "\\\"{y}" : "\u00FF", // LATIN SMALL LETTER Y WITH DIAERESIS - "\\={A}" : "\u0100", // LATIN CAPITAL LETTER A WITH MACRON - "\\={a}" : "\u0101", // LATIN SMALL LETTER A WITH MACRON - "\\u{A}" : "\u0102", // LATIN CAPITAL LETTER A WITH BREVE - "\\u{a}" : "\u0103", // LATIN SMALL LETTER A WITH BREVE - "\\k{A}" : "\u0104", // LATIN CAPITAL LETTER A WITH OGONEK - "\\k{a}" : "\u0105", // LATIN SMALL LETTER A WITH OGONEK - "\\'{C}" : "\u0106", // LATIN CAPITAL LETTER C WITH ACUTE - "\\'{c}" : "\u0107", // LATIN SMALL LETTER C WITH ACUTE - "\\^{C}" : "\u0108", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX - "\\^{c}" : "\u0109", // LATIN SMALL LETTER C WITH CIRCUMFLEX - "\\.{C}" : "\u010A", // LATIN CAPITAL LETTER C WITH DOT ABOVE - "\\.{c}" : "\u010B", // LATIN SMALL LETTER C WITH DOT ABOVE - "\\v{C}" : "\u010C", // LATIN CAPITAL LETTER C WITH CARON - "\\v{c}" : "\u010D", // LATIN SMALL LETTER C WITH CARON - "\\v{D}" : "\u010E", // LATIN CAPITAL LETTER D WITH CARON - "\\v{d}" : "\u010F", // LATIN SMALL LETTER D WITH CARON - "\\={E}" : "\u0112", // LATIN CAPITAL LETTER E WITH MACRON - "\\={e}" : "\u0113", // LATIN SMALL LETTER E WITH MACRON - "\\u{E}" : "\u0114", // LATIN CAPITAL LETTER E WITH BREVE - "\\u{e}" : "\u0115", // LATIN SMALL LETTER E WITH BREVE - "\\.{E}" : "\u0116", // LATIN CAPITAL LETTER E WITH DOT ABOVE - "\\.{e}" : "\u0117", // LATIN SMALL LETTER E WITH DOT ABOVE - "\\k{E}" : "\u0118", // LATIN CAPITAL LETTER E WITH OGONEK - "\\k{e}" : "\u0119", // LATIN SMALL LETTER E WITH OGONEK - "\\v{E}" : "\u011A", // LATIN CAPITAL LETTER E WITH CARON - "\\v{e}" : "\u011B", // LATIN SMALL LETTER E WITH CARON - "\\^{G}" : "\u011C", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX - "\\^{g}" : "\u011D", // LATIN SMALL LETTER G WITH CIRCUMFLEX - "\\u{G}" : "\u011E", // LATIN CAPITAL LETTER G WITH BREVE - "\\u{g}" : "\u011F", // LATIN SMALL LETTER G WITH BREVE - "\\.{G}" : "\u0120", // LATIN CAPITAL LETTER G WITH DOT ABOVE - "\\.{g}" : "\u0121", // LATIN SMALL LETTER G WITH DOT ABOVE - "\\c{G}" : "\u0122", // LATIN CAPITAL LETTER G WITH CEDILLA - "\\c{g}" : "\u0123", // LATIN SMALL LETTER G WITH CEDILLA - "\\^{H}" : "\u0124", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX - "\\^{h}" : "\u0125", // LATIN SMALL LETTER H WITH CIRCUMFLEX - "\\~{I}" : "\u0128", // LATIN CAPITAL LETTER I WITH TILDE - "\\~{i}" : "\u0129", // LATIN SMALL LETTER I WITH TILDE - "\\={I}" : "\u012A", // LATIN CAPITAL LETTER I WITH MACRON - "\\={i}" : "\u012B", // LATIN SMALL LETTER I WITH MACRON - "\\u{I}" : "\u012C", // LATIN CAPITAL LETTER I WITH BREVE - "\\u{i}" : "\u012D", // LATIN SMALL LETTER I WITH BREVE - "\\k{I}" : "\u012E", // LATIN CAPITAL LETTER I WITH OGONEK - "\\k{i}" : "\u012F", // LATIN SMALL LETTER I WITH OGONEK - "\\.{I}" : "\u0130", // LATIN CAPITAL LETTER I WITH DOT ABOVE - "\\^{J}" : "\u0134", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX - "\\^{j}" : "\u0135", // LATIN SMALL LETTER J WITH CIRCUMFLEX - "\\c{K}" : "\u0136", // LATIN CAPITAL LETTER K WITH CEDILLA - "\\c{k}" : "\u0137", // LATIN SMALL LETTER K WITH CEDILLA - "\\'{L}" : "\u0139", // LATIN CAPITAL LETTER L WITH ACUTE - "\\'{l}" : "\u013A", // LATIN SMALL LETTER L WITH ACUTE - "\\c{L}" : "\u013B", // LATIN CAPITAL LETTER L WITH CEDILLA - "\\c{l}" : "\u013C", // LATIN SMALL LETTER L WITH CEDILLA - "\\v{L}" : "\u013D", // LATIN CAPITAL LETTER L WITH CARON - "\\v{l}" : "\u013E", // LATIN SMALL LETTER L WITH CARON - "\\L{}" : "\u0141", //LATIN CAPITAL LETTER L WITH STROKE - "\\l{}" : "\u0142", //LATIN SMALL LETTER L WITH STROKE - "\\'{N}" : "\u0143", // LATIN CAPITAL LETTER N WITH ACUTE - "\\'{n}" : "\u0144", // LATIN SMALL LETTER N WITH ACUTE - "\\c{N}" : "\u0145", // LATIN CAPITAL LETTER N WITH CEDILLA - "\\c{n}" : "\u0146", // LATIN SMALL LETTER N WITH CEDILLA - "\\v{N}" : "\u0147", // LATIN CAPITAL LETTER N WITH CARON - "\\v{n}" : "\u0148", // LATIN SMALL LETTER N WITH CARON - "\\={O}" : "\u014C", // LATIN CAPITAL LETTER O WITH MACRON - "\\={o}" : "\u014D", // LATIN SMALL LETTER O WITH MACRON - "\\u{O}" : "\u014E", // LATIN CAPITAL LETTER O WITH BREVE - "\\u{o}" : "\u014F", // LATIN SMALL LETTER O WITH BREVE - "\\H{O}" : "\u0150", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE - "\\H{o}" : "\u0151", // LATIN SMALL LETTER O WITH DOUBLE ACUTE - "\\'{R}" : "\u0154", // LATIN CAPITAL LETTER R WITH ACUTE - "\\'{r}" : "\u0155", // LATIN SMALL LETTER R WITH ACUTE - "\\c{R}" : "\u0156", // LATIN CAPITAL LETTER R WITH CEDILLA - "\\c{r}" : "\u0157", // LATIN SMALL LETTER R WITH CEDILLA - "\\v{R}" : "\u0158", // LATIN CAPITAL LETTER R WITH CARON - "\\v{r}" : "\u0159", // LATIN SMALL LETTER R WITH CARON - "\\'{S}" : "\u015A", // LATIN CAPITAL LETTER S WITH ACUTE - "\\'{s}" : "\u015B", // LATIN SMALL LETTER S WITH ACUTE - "\\^{S}" : "\u015C", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX - "\\^{s}" : "\u015D", // LATIN SMALL LETTER S WITH CIRCUMFLEX - "\\c{S}" : "\u015E", // LATIN CAPITAL LETTER S WITH CEDILLA - "\\c{s}" : "\u015F", // LATIN SMALL LETTER S WITH CEDILLA - "\\v{S}" : "\u0160", // LATIN CAPITAL LETTER S WITH CARON - "\\v{s}" : "\u0161", // LATIN SMALL LETTER S WITH CARON - "\\c{T}" : "\u0162", // LATIN CAPITAL LETTER T WITH CEDILLA - "\\c{t}" : "\u0163", // LATIN SMALL LETTER T WITH CEDILLA - "\\v{T}" : "\u0164", // LATIN CAPITAL LETTER T WITH CARON - "\\v{t}" : "\u0165", // LATIN SMALL LETTER T WITH CARON - "\\~{U}" : "\u0168", // LATIN CAPITAL LETTER U WITH TILDE - "\\~{u}" : "\u0169", // LATIN SMALL LETTER U WITH TILDE - "\\={U}" : "\u016A", // LATIN CAPITAL LETTER U WITH MACRON - "\\={u}" : "\u016B", // LATIN SMALL LETTER U WITH MACRON - "\\u{U}" : "\u016C", // LATIN CAPITAL LETTER U WITH BREVE - "\\u{u}" : "\u016D", // LATIN SMALL LETTER U WITH BREVE - "\\H{U}" : "\u0170", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE - "\\H{u}" : "\u0171", // LATIN SMALL LETTER U WITH DOUBLE ACUTE - "\\k{U}" : "\u0172", // LATIN CAPITAL LETTER U WITH OGONEK - "\\k{u}" : "\u0173", // LATIN SMALL LETTER U WITH OGONEK - "\\^{W}" : "\u0174", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX - "\\^{w}" : "\u0175", // LATIN SMALL LETTER W WITH CIRCUMFLEX - "\\^{Y}" : "\u0176", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX - "\\^{y}" : "\u0177", // LATIN SMALL LETTER Y WITH CIRCUMFLEX - "\\\"{Y}" : "\u0178", // LATIN CAPITAL LETTER Y WITH DIAERESIS - "\\'{Z}" : "\u0179", // LATIN CAPITAL LETTER Z WITH ACUTE - "\\'{z}" : "\u017A", // LATIN SMALL LETTER Z WITH ACUTE - "\\.{Z}" : "\u017B", // LATIN CAPITAL LETTER Z WITH DOT ABOVE - "\\.{z}" : "\u017C", // LATIN SMALL LETTER Z WITH DOT ABOVE - "\\v{Z}" : "\u017D", // LATIN CAPITAL LETTER Z WITH CARON - "\\v{z}" : "\u017E", // LATIN SMALL LETTER Z WITH CARON - "\\v{A}" : "\u01CD", // LATIN CAPITAL LETTER A WITH CARON - "\\v{a}" : "\u01CE", // LATIN SMALL LETTER A WITH CARON - "\\v{I}" : "\u01CF", // LATIN CAPITAL LETTER I WITH CARON - "\\v{i}" : "\u01D0", // LATIN SMALL LETTER I WITH CARON - "\\v{O}" : "\u01D1", // LATIN CAPITAL LETTER O WITH CARON - "\\v{o}" : "\u01D2", // LATIN SMALL LETTER O WITH CARON - "\\v{U}" : "\u01D3", // LATIN CAPITAL LETTER U WITH CARON - "\\v{u}" : "\u01D4", // LATIN SMALL LETTER U WITH CARON - "\\v{G}" : "\u01E6", // LATIN CAPITAL LETTER G WITH CARON - "\\v{g}" : "\u01E7", // LATIN SMALL LETTER G WITH CARON - "\\v{K}" : "\u01E8", // LATIN CAPITAL LETTER K WITH CARON - "\\v{k}" : "\u01E9", // LATIN SMALL LETTER K WITH CARON - "\\k{O}" : "\u01EA", // LATIN CAPITAL LETTER O WITH OGONEK - "\\k{o}" : "\u01EB", // LATIN SMALL LETTER O WITH OGONEK - "\\v{j}" : "\u01F0", // LATIN SMALL LETTER J WITH CARON - "\\'{G}" : "\u01F4", // LATIN CAPITAL LETTER G WITH ACUTE - "\\'{g}" : "\u01F5", // LATIN SMALL LETTER G WITH ACUTE - "\\.{B}" : "\u1E02", // LATIN CAPITAL LETTER B WITH DOT ABOVE - "\\.{b}" : "\u1E03", // LATIN SMALL LETTER B WITH DOT ABOVE - "\\d{B}" : "\u1E04", // LATIN CAPITAL LETTER B WITH DOT BELOW - "\\d{b}" : "\u1E05", // LATIN SMALL LETTER B WITH DOT BELOW - "\\b{B}" : "\u1E06", // LATIN CAPITAL LETTER B WITH LINE BELOW - "\\b{b}" : "\u1E07", // LATIN SMALL LETTER B WITH LINE BELOW - "\\.{D}" : "\u1E0A", // LATIN CAPITAL LETTER D WITH DOT ABOVE - "\\.{d}" : "\u1E0B", // LATIN SMALL LETTER D WITH DOT ABOVE - "\\d{D}" : "\u1E0C", // LATIN CAPITAL LETTER D WITH DOT BELOW - "\\d{d}" : "\u1E0D", // LATIN SMALL LETTER D WITH DOT BELOW - "\\b{D}" : "\u1E0E", // LATIN CAPITAL LETTER D WITH LINE BELOW - "\\b{d}" : "\u1E0F", // LATIN SMALL LETTER D WITH LINE BELOW - "\\c{D}" : "\u1E10", // LATIN CAPITAL LETTER D WITH CEDILLA - "\\c{d}" : "\u1E11", // LATIN SMALL LETTER D WITH CEDILLA - "\\.{F}" : "\u1E1E", // LATIN CAPITAL LETTER F WITH DOT ABOVE - "\\.{f}" : "\u1E1F", // LATIN SMALL LETTER F WITH DOT ABOVE - "\\={G}" : "\u1E20", // LATIN CAPITAL LETTER G WITH MACRON - "\\={g}" : "\u1E21", // LATIN SMALL LETTER G WITH MACRON - "\\.{H}" : "\u1E22", // LATIN CAPITAL LETTER H WITH DOT ABOVE - "\\.{h}" : "\u1E23", // LATIN SMALL LETTER H WITH DOT ABOVE - "\\d{H}" : "\u1E24", // LATIN CAPITAL LETTER H WITH DOT BELOW - "\\d{h}" : "\u1E25", // LATIN SMALL LETTER H WITH DOT BELOW - "\\\"{H}" : "\u1E26", // LATIN CAPITAL LETTER H WITH DIAERESIS - "\\\"{h}" : "\u1E27", // LATIN SMALL LETTER H WITH DIAERESIS - "\\c{H}" : "\u1E28", // LATIN CAPITAL LETTER H WITH CEDILLA - "\\c{h}" : "\u1E29", // LATIN SMALL LETTER H WITH CEDILLA - "\\'{K}" : "\u1E30", // LATIN CAPITAL LETTER K WITH ACUTE - "\\'{k}" : "\u1E31", // LATIN SMALL LETTER K WITH ACUTE - "\\d{K}" : "\u1E32", // LATIN CAPITAL LETTER K WITH DOT BELOW - "\\d{k}" : "\u1E33", // LATIN SMALL LETTER K WITH DOT BELOW - "\\b{K}" : "\u1E34", // LATIN CAPITAL LETTER K WITH LINE BELOW - "\\b{k}" : "\u1E35", // LATIN SMALL LETTER K WITH LINE BELOW - "\\d{L}" : "\u1E36", // LATIN CAPITAL LETTER L WITH DOT BELOW - "\\d{l}" : "\u1E37", // LATIN SMALL LETTER L WITH DOT BELOW - "\\b{L}" : "\u1E3A", // LATIN CAPITAL LETTER L WITH LINE BELOW - "\\b{l}" : "\u1E3B", // LATIN SMALL LETTER L WITH LINE BELOW - "\\'{M}" : "\u1E3E", // LATIN CAPITAL LETTER M WITH ACUTE - "\\'{m}" : "\u1E3F", // LATIN SMALL LETTER M WITH ACUTE - "\\.{M}" : "\u1E40", // LATIN CAPITAL LETTER M WITH DOT ABOVE - "\\.{m}" : "\u1E41", // LATIN SMALL LETTER M WITH DOT ABOVE - "\\d{M}" : "\u1E42", // LATIN CAPITAL LETTER M WITH DOT BELOW - "\\d{m}" : "\u1E43", // LATIN SMALL LETTER M WITH DOT BELOW - "\\.{N}" : "\u1E44", // LATIN CAPITAL LETTER N WITH DOT ABOVE - "\\.{n}" : "\u1E45", // LATIN SMALL LETTER N WITH DOT ABOVE - "\\d{N}" : "\u1E46", // LATIN CAPITAL LETTER N WITH DOT BELOW - "\\d{n}" : "\u1E47", // LATIN SMALL LETTER N WITH DOT BELOW - "\\b{N}" : "\u1E48", // LATIN CAPITAL LETTER N WITH LINE BELOW - "\\b{n}" : "\u1E49", // LATIN SMALL LETTER N WITH LINE BELOW - "\\'{P}" : "\u1E54", // LATIN CAPITAL LETTER P WITH ACUTE - "\\'{p}" : "\u1E55", // LATIN SMALL LETTER P WITH ACUTE - "\\.{P}" : "\u1E56", // LATIN CAPITAL LETTER P WITH DOT ABOVE - "\\.{p}" : "\u1E57", // LATIN SMALL LETTER P WITH DOT ABOVE - "\\.{R}" : "\u1E58", // LATIN CAPITAL LETTER R WITH DOT ABOVE - "\\.{r}" : "\u1E59", // LATIN SMALL LETTER R WITH DOT ABOVE - "\\d{R}" : "\u1E5A", // LATIN CAPITAL LETTER R WITH DOT BELOW - "\\d{r}" : "\u1E5B", // LATIN SMALL LETTER R WITH DOT BELOW - "\\b{R}" : "\u1E5E", // LATIN CAPITAL LETTER R WITH LINE BELOW - "\\b{r}" : "\u1E5F", // LATIN SMALL LETTER R WITH LINE BELOW - "\\.{S}" : "\u1E60", // LATIN CAPITAL LETTER S WITH DOT ABOVE - "\\.{s}" : "\u1E61", // LATIN SMALL LETTER S WITH DOT ABOVE - "\\d{S}" : "\u1E62", // LATIN CAPITAL LETTER S WITH DOT BELOW - "\\d{s}" : "\u1E63", // LATIN SMALL LETTER S WITH DOT BELOW - "\\.{T}" : "\u1E6A", // LATIN CAPITAL LETTER T WITH DOT ABOVE - "\\.{t}" : "\u1E6B", // LATIN SMALL LETTER T WITH DOT ABOVE - "\\d{T}" : "\u1E6C", // LATIN CAPITAL LETTER T WITH DOT BELOW - "\\d{t}" : "\u1E6D", // LATIN SMALL LETTER T WITH DOT BELOW - "\\b{T}" : "\u1E6E", // LATIN CAPITAL LETTER T WITH LINE BELOW - "\\b{t}" : "\u1E6F", // LATIN SMALL LETTER T WITH LINE BELOW - "\\~{V}" : "\u1E7C", // LATIN CAPITAL LETTER V WITH TILDE - "\\~{v}" : "\u1E7D", // LATIN SMALL LETTER V WITH TILDE - "\\d{V}" : "\u1E7E", // LATIN CAPITAL LETTER V WITH DOT BELOW - "\\d{v}" : "\u1E7F", // LATIN SMALL LETTER V WITH DOT BELOW - "\\`{W}" : "\u1E80", // LATIN CAPITAL LETTER W WITH GRAVE - "\\`{w}" : "\u1E81", // LATIN SMALL LETTER W WITH GRAVE - "\\'{W}" : "\u1E82", // LATIN CAPITAL LETTER W WITH ACUTE - "\\'{w}" : "\u1E83", // LATIN SMALL LETTER W WITH ACUTE - "\\\"{W}" : "\u1E84", // LATIN CAPITAL LETTER W WITH DIAERESIS - "\\\"{w}" : "\u1E85", // LATIN SMALL LETTER W WITH DIAERESIS - "\\.{W}" : "\u1E86", // LATIN CAPITAL LETTER W WITH DOT ABOVE - "\\.{w}" : "\u1E87", // LATIN SMALL LETTER W WITH DOT ABOVE - "\\d{W}" : "\u1E88", // LATIN CAPITAL LETTER W WITH DOT BELOW - "\\d{w}" : "\u1E89", // LATIN SMALL LETTER W WITH DOT BELOW - "\\.{X}" : "\u1E8A", // LATIN CAPITAL LETTER X WITH DOT ABOVE - "\\.{x}" : "\u1E8B", // LATIN SMALL LETTER X WITH DOT ABOVE - "\\\"{X}" : "\u1E8C", // LATIN CAPITAL LETTER X WITH DIAERESIS - "\\\"{x}" : "\u1E8D", // LATIN SMALL LETTER X WITH DIAERESIS - "\\.{Y}" : "\u1E8E", // LATIN CAPITAL LETTER Y WITH DOT ABOVE - "\\.{y}" : "\u1E8F", // LATIN SMALL LETTER Y WITH DOT ABOVE - "\\^{Z}" : "\u1E90", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX - "\\^{z}" : "\u1E91", // LATIN SMALL LETTER Z WITH CIRCUMFLEX - "\\d{Z}" : "\u1E92", // LATIN CAPITAL LETTER Z WITH DOT BELOW - "\\d{z}" : "\u1E93", // LATIN SMALL LETTER Z WITH DOT BELOW - "\\b{Z}" : "\u1E94", // LATIN CAPITAL LETTER Z WITH LINE BELOW - "\\b{z}" : "\u1E95", // LATIN SMALL LETTER Z WITH LINE BELOW - "\\b{h}" : "\u1E96", // LATIN SMALL LETTER H WITH LINE BELOW - "\\\"{t}" : "\u1E97", // LATIN SMALL LETTER T WITH DIAERESIS - "\\d{A}" : "\u1EA0", // LATIN CAPITAL LETTER A WITH DOT BELOW - "\\d{a}" : "\u1EA1", // LATIN SMALL LETTER A WITH DOT BELOW - "\\d{E}" : "\u1EB8", // LATIN CAPITAL LETTER E WITH DOT BELOW - "\\d{e}" : "\u1EB9", // LATIN SMALL LETTER E WITH DOT BELOW - "\\~{E}" : "\u1EBC", // LATIN CAPITAL LETTER E WITH TILDE - "\\~{e}" : "\u1EBD", // LATIN SMALL LETTER E WITH TILDE - "\\d{I}" : "\u1ECA", // LATIN CAPITAL LETTER I WITH DOT BELOW - "\\d{i}" : "\u1ECB", // LATIN SMALL LETTER I WITH DOT BELOW - "\\d{O}" : "\u1ECC", // LATIN CAPITAL LETTER O WITH DOT BELOW - "\\d{o}" : "\u1ECD", // LATIN SMALL LETTER O WITH DOT BELOW - "\\d{U}" : "\u1EE4", // LATIN CAPITAL LETTER U WITH DOT BELOW - "\\d{u}" : "\u1EE5", // LATIN SMALL LETTER U WITH DOT BELOW - "\\`{Y}" : "\u1EF2", // LATIN CAPITAL LETTER Y WITH GRAVE - "\\`{y}" : "\u1EF3", // LATIN SMALL LETTER Y WITH GRAVE - "\\d{Y}" : "\u1EF4", // LATIN CAPITAL LETTER Y WITH DOT BELOW - "\\d{y}" : "\u1EF5", // LATIN SMALL LETTER Y WITH DOT BELOW - "\\~{Y}" : "\u1EF8", // LATIN CAPITAL LETTER Y WITH TILDE - "\\~{y}" : "\u1EF9" // LATIN SMALL LETTER Y WITH TILDE +var jabref = { + format: null, + root: {} }; var alwaysMap = { @@ -1545,13 +221,35 @@ var alwaysMap = { ">":"{\\textgreater}", "~":"{\\textasciitilde}", "^":"{\\textasciicircum}", - "\\":"{\\textbackslash}" + "\\":"{\\textbackslash}", + "{" : "\\{", + "}" : "\\}" }; + var strings = {}; var keyRe = /[a-zA-Z0-9\-]/; +var keywordSplitOnSpace = true; +var keywordDelimRe = '\\s*[,;]\\s*'; +var keywordDelimReFlags = ''; -function processField(item, field, value) { +function setKeywordSplitOnSpace( val ) { + keywordSplitOnSpace = val; +} + +function setKeywordDelimRe( val, flags ) { + //expect string, but it could be RegExp + if(typeof(val) != 'string') { + keywordDelimRe = val.toString().slice(1, val.toString().lastIndexOf('/')); + keywordDelimReFlags = val.toString().slice(val.toString().lastIndexOf('/')+1); + } else { + keywordDelimRe = val; + keywordDelimReFlags = flags; + } +} + +function processField(item, field, value, rawValue) { + if(Zotero.Utilities.trim(value) == '') return null; if(fieldMap[field]) { item[fieldMap[field]] = value; } else if(inputFieldMap[field]) { @@ -1564,20 +262,40 @@ function processField(item, field, value) { } } else if(field == "fjournal") { if(item.publicationTitle) { - // move publicationTitle to abbreviation - item.journalAbbreviation = value; + // move publicationTitle to abbreviation, since itprobably came from 'journal' + item.journalAbbreviation = item.publicationTitle; } item.publicationTitle = value; } else if(field == "author" || field == "editor" || field == "translator") { // parse authors/editors/translators - var names = value.split(/ and /i); // now case insensitive - for each(var name in names) { + var names = splitUnprotected(rawValue.trim(), /\sand\s/gi); + for(var i in names) { + var name = names[i]; // skip empty names - if (Zotero.Utilities.trim(name) == '') { - continue; + if (!name) continue; + + // Names in BibTeX can have three commas + pieces = splitUnprotected(name, /\s*,\s*/g); + var creator = {}; + if (pieces.length > 1) { + creator.firstName = pieces.pop(); + creator.lastName = unescapeBibTeX(pieces.shift()); + if(pieces.length) { + // If anything is left, it should only be the 'Jr' part + creator.firstName += ', ' + pieces.join(', '); + } + creator.firstName = unescapeBibTeX(creator.firstName); + creator.creatorType = field; + } else if(splitUnprotected(name, / +/g).length > 1){ + creator = Zotero.Utilities.cleanAuthor(unescapeBibTeX(name), field, false); + } else { + creator = { + lastName: unescapeBibTeX(name), + creatorType: field, + fieldMode: 1 + } } - item.creators.push(Zotero.Utilities.cleanAuthor(name, field, - (name.indexOf(",") != -1))); + item.creators.push(creator); } } else if(field == "institution" || field == "organization") { item.backupPublisher = value; @@ -1586,6 +304,8 @@ function processField(item, field, value) { item.reportNumber = value; } else if (item.itemType == "book" || item.itemType == "bookSection") { item.seriesNumber = value; + } else if (item.itemType == "patent"){ + item.patentNumber = value; } else { item.issue = value; } @@ -1616,6 +336,9 @@ function processField(item, field, value) { } else { item.date = value; } + } else if(field == "date") { + //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. + item.date = value; } else if(field == "pages") { if (item.itemType == "book" || item.itemType == "thesis" || item.itemType == "manuscript") { item.numPages = value; @@ -1624,46 +347,175 @@ function processField(item, field, value) { item.pages = value.replace(/--/g, "-"); } } else if(field == "note") { - item.extra += "\n"+value; + item._extraFields.push({raw: value.trim()}); } else if(field == "howpublished") { if(value.length >= 7) { var str = value.substr(0, 7); if(str == "http://" || str == "https:/" || str == "mailto:") { item.url = value; } else { - item.extra += "\nPublished: "+value; + item._extraFields.push({field: 'Published', value: value}); } } - } else if(field == "keywords") { - if(value.indexOf(",") == -1) { + + } + //accept lastchecked or urldate for access date. These should never both occur. + //If they do we don't know which is better so we might as well just take the second one + else if (field == "lastchecked"|| field == "urldate"){ + item.accessDate = value; + } else if(field == "keywords" || field == "keyword") { + var re = new RegExp(keywordDelimRe, keywordDelimReFlags); + if(!value.match(re) && keywordSplitOnSpace) { // keywords/tags - item.tags = value.split(" "); + item.tags = value.split(/\s+/); } else { - item.tags = value.split(/, ?/g); + item.tags = value.split(re); } - } else if (field == "comment" || field == "annote" || field == "review") { - item.notes.push({note:value}); - } else if (field == "pdf") { - if (/:\/\//.test(value)) { // a full uri is given - item.attachments = [{url:value, mimeType:"application/pdf", downloadable:true}]; - } else { // if no uri is given, assume that it is an absolute path to the PDF - item.attachments = [{url:"file://"+value, mimeType:"application/pdf"}]; - } - } else if (field == "sentelink") { // the reference manager 'Sente' has a unique file scheme in exported BibTeX - item.attachments = [{url:value.split(",")[0], mimeType:"application/pdf", downloadable:true}]; + } else if (field == "comment" || field == "annote" || field == "review" || field == "notes") { + item.notes.push({note:Zotero.Utilities.text2html(value)}); + } else if (field == "pdf" || field == "path" /*Papers2 compatibility*/) { + item.attachments.push({path:value, mimeType:"application/pdf"}); + } else if (field == "sentelink") { // the reference manager 'Sente' has a unique file scheme in exported BibTeX; it can occur multiple times + item.attachments.push({path:value.split(",")[0], mimeType:"application/pdf"}); } else if (field == "file") { - for each(var attachment in value.split(";")){ - var [filetitle, filepath, filetype] = attachment.split(":"); - if (filetitle.length == 0) { - filetitle = "Attachment"; + var start = 0, attachment; + rawValue = rawValue.replace(/\$\\backslash\$/g, '\\') // Mendeley invention? + .replace(/([^\\](?:\\\\)*)\\(.){}/g, '$1$2'); // part of Mendeley's escaping (e.g. \~{} = ~) + for(var i=0; inextPossibleSplit.index) { + // Must have been inside braces + nextPossibleSplit = delim.exec(str); + if(!nextPossibleSplit) { + parts.push(str.substr(nextPartStart)); + return parts; + } + } + + if(str[i] == '\\') { + // Skip next character + i++; + continue; + } + + if(str[i] == '{') { + open++; + continue; + } + + if(str[i] == '}') { + open--; + if(open < 0) open = 0; // Shouldn't happen, but... + continue; + } + + if(open) continue; + + if(i == nextPossibleSplit.index) { + parts.push(str.substring(nextPartStart, i)); + i += nextPossibleSplit[0].length - 1; // We can jump past the split delim + nextPartStart = i + 1; + nextPossibleSplit = delim.exec(str); + if(!nextPossibleSplit) { + parts.push(str.substr(nextPartStart)); + return parts; } } } + + // I don't think we should ever get here*, but just to be safe + // *we should always be returning from the for loop + var last = str.substr(nextPartStart).trim(); + if(last) parts.push(last); + + return parts; +} + +function parseFilePathRecord(record) { + var start = 0, fields = []; + for(var i=0; i 1) { - // replace accented characters (yucky slow) - value = value.replace(/{?(\\[`"'^~=a-z]){?\\?([A-Za-z])}/g, "$1{$2}"); - for (var mapped in reversemappingTable) { // really really slow! - var unicode = reversemappingTable[mapped]; - if (value.indexOf(mapped) != -1) { - Zotero.debug("Replace " + mapped + " in " + value + " with " + unicode); - value = value.replace(mapped, unicode, "g"); - } - mapped = mapped.replace(/[{}]/g, ""); - if (value.indexOf(mapped) != -1) { - Zotero.debug("Replace(2) " + mapped + " in " + value + " with " + unicode); - value = value.replace(mapped, unicode, "g"); - } + // replace accented characters (yucky slow) + value = value.replace(/{?(\\[`"'^~=]){?\\?([A-Za-z])}/g, "{$1$2}"); + //for special characters rendered by \[a-z] we need a space + value = value.replace(/{?(\\[a-z]){?\\?([A-Za-z])}/g, "{$1 $2}"); + //convert tex markup into permitted HTML + value = mapTeXmarkup(value); + for (var mapped in reversemappingTable) { // really really slow! + var unicode = reversemappingTable[mapped]; + while(value.indexOf(mapped) !== -1) { + Zotero.debug("Replace " + mapped + " in " + value + " with " + unicode); + value = value.replace(mapped, unicode); } - - // kill braces - value = value.replace(/([^\\])[{}]+/g, "$1"); - if(value[0] == "{") { - value = value.substr(1); + mapped = mapped.replace(/[{}]/g, ""); + while(value.indexOf(mapped) !== -1) { + //Z.debug(value) + Zotero.debug("Replace(2) " + mapped + " in " + value + " with " + unicode); + value = value.replace(mapped, unicode); } - - // chop off backslashes - value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2"); - value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2"); - if(value[0] == "\\" && "#$%&~_^\\{}".indexOf(value[1]) != -1) { - value = value.substr(1); - } - if(value[value.length-1] == "\\" && "#$%&~_^\\{}".indexOf(value[value.length-2]) != -1) { - value = value.substr(0, value.length-1); - } - value = value.replace(/\\\\/g, "\\"); - value = value.replace(/\s+/g, " "); } + // kill braces + value = value.replace(/([^\\])[{}]+/g, "$1"); + if(value[0] == "{") { + value = value.substr(1); + } + + // chop off backslashes + value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2"); + value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2"); + if(value[0] == "\\" && "#$%&~_^\\{}".indexOf(value[1]) != -1) { + value = value.substr(1); + } + if(value[value.length-1] == "\\" && "#$%&~_^\\{}".indexOf(value[value.length-2]) != -1) { + value = value.substr(0, value.length-1); + } + value = value.replace(/\\\\/g, "\\"); + value = value.replace(/\s+/g, " "); + return value; } +function jabrefSplit(str, sep) { + var quoted = false; + var result = []; + + str = str.split(''); + while (str.length > 0) { + if (result.length == 0) { result = ['']; } + + if (str[0] == sep) { + str.shift(); + result.push(''); + } else { + if (str[0] == '\\') { str.shift(); } + result[result.length - 1] += str.shift(); + } + } + return result; +} + +function jabrefCollect(arr, func) { + if (arr == null) { return []; } + + var result = []; + + for (var i = 0; i < arr.length; i++) { + if (func(arr[i])) { + result.push(arr[i]); + } + } + return result; +} + +function processComment() { + var comment = ""; + var read; + var collectionPath = []; + var parentCollection, collection; + + while(read = Zotero.read(1)) { + if (read == "}") { break; } // JabRef ought to escape '}' but doesn't; embedded '}' chars will break the import just as it will on JabRef itself + comment += read; + } + + if (comment == 'jabref-meta: groupsversion:3;') { + jabref.format = 3; + return; + } + + if (comment.indexOf('jabref-meta: groupstree:') == 0) { + if (jabref.format != 3) { + Zotero.debug("jabref: fatal: unsupported group format: " + jabref.format); + return; + } + comment = comment.replace(/^jabref-meta: groupstree:/, '').replace(/[\r\n]/gm, '') + + var records = jabrefSplit(comment, ';'); + while (records.length > 0) { + var record = records.shift(); + var keys = jabrefSplit(record, ';'); + if (keys.length < 2) { continue; } + + var record = {id: keys.shift()}; + record.data = record.id.match(/^([0-9]) ([^:]*):(.*)/); + if (record.data == null) { + Zotero.debug("jabref: fatal: unexpected non-match for group " + record.id); + return; + } + record.level = parseInt(record.data[1]); + record.type = record.data[2] + record.name = record.data[3] + record.intersection = keys.shift(); // 0 = independent, 1 = intersection, 2 = union + + if (isNaN(record.level)) { + Zotero.debug("jabref: fatal: unexpected record level in " + record.id); + return; + } + + if (record.level == 0) { continue; } + if (record.type != 'ExplicitGroup') { + Zotero.debug("jabref: fatal: group type " + record.type + " is not supported"); + return; + } + + collectionPath = collectionPath.slice(0, record.level - 1).concat([record.name]); + Zotero.debug("jabref: locating level " + record.level + ": " + collectionPath.join('/')); + + if (jabref.root.hasOwnProperty(collectionPath[0])) { + collection = jabref.root[collectionPath[0]]; + Zotero.debug("jabref: root " + collection.name + " found"); + } else { + collection = new Zotero.Collection(); + collection.name = collectionPath[0]; + collection.type = 'collection'; + collection.children = []; + jabref.root[collectionPath[0]] = collection; + Zotero.debug("jabref: root " + collection.name + " created"); + } + parentCollection = null; + + for (var i = 1; i < collectionPath.length; i++) { + var path = collectionPath[i]; + Zotero.debug("jabref: looking for child " + path + " under " + collection.name); + + var child = jabrefCollect(collection.children, function(n) { return (n.name == path)}) + if (child.length != 0) { + child = child[0] + Zotero.debug("jabref: child " + child.name + " found under " + collection.name); + } else { + child = new Zotero.Collection(); + child.name = path; + child.type = 'collection'; + child.children = []; + + collection.children.push(child); + Zotero.debug("jabref: child " + child.name + " created under " + collection.name); + } + + parentCollection = collection; + collection = child; + } + + if (parentCollection) { + parentCollection = jabrefCollect(parentCollection.children, function(n) { return (n.type == 'item') }); + } + + if (record.intersection == '2' && parentCollection) { // union with parent + collection.children = parentCollection; + } + + while(keys.length > 0) { + key = keys.shift(); + if (key != '') { + Zotero.debug('jabref: adding ' + key + ' to ' + collection.name); + collection.children.push({type: 'item', id: key}); + } + } + + if (parentCollection && record.intersection == '1') { // intersection with parent + collection.children = jabrefMap(collection.children, function(n) { parentCollection.indexOf(n) !== -1; }); + } + } + } +} + function beginRecord(type, closeChar) { - type = Zotero.Utilities.cleanString(type.toLowerCase()); + type = Zotero.Utilities.trimInternal(type.toLowerCase()); if(type != "string") { var zoteroType = bibtex2zoteroTypeMap[type]; if (!zoteroType) { Zotero.debug("discarded item from BibTeX; type was "+type); + return; } var item = new Zotero.Item(zoteroType); - - item.extra = ""; + item._extraFields = []; } var field = ""; @@ -1760,6 +778,7 @@ function beginRecord(type, closeChar) { // of this loop. this is useful after we read past the end of a string. var dontRead = false; + var value, rawValue; while(dontRead || (read = Zotero.read(1))) { dontRead = false; @@ -1788,20 +807,30 @@ function beginRecord(type, closeChar) { // see if there's a defined string if(strings[value]) value = strings[value]; } else { - var value = getFieldValue(read); + rawValue = getFieldValue(read); + value = unescapeBibTeX(rawValue); } if(item) { - processField(item, field.toLowerCase(), value); + processField(item, field.toLowerCase(), value, rawValue); } else if(type == "string") { strings[field] = value; } field = ""; } else if(read == ",") { // commas reset + if (item.itemID == null) { + item.itemID = field; // itemID = citekey + } field = ""; } else if(read == closeChar) { if(item) { - if(item.extra) item.extra = item.extra.substr(1); // chop \n + item.extra = extraFieldsToString(item._extraFields); + delete item._extraFields; + + if (!item.publisher && item.backupPublisher){ + item.publisher=item.backupPublisher; + delete item.backupPublisher; + } item.complete(); } return; @@ -1820,6 +849,7 @@ function doImport() { type = ""; } else if(type !== false) { if(type == "comment") { + processComment(); type = false; } else if(read == "{") { // possible open character beginRecord(type, "}"); @@ -1827,35 +857,115 @@ function doImport() { } else if(read == "(") { // possible open character beginRecord(type, ")"); type = false; - } else { + } else if(/[a-zA-Z0-9-_]/.test(read)) { type += read; } } } + for (var key in jabref.root) { + if (jabref.root.hasOwnProperty(key)) { jabref.root[key].complete(); } + } } // some fields are, in fact, macros. If that is the case then we should not put the // data in the braces as it will cause the macros to not expand properly function writeField(field, value, isMacro) { - if(!value && typeof value != "number") return; + if (!value && typeof value != "number") return; value = value + ""; // convert integers to strings - Zotero.write(",\n\t"+field+" = "); - if(!isMacro) Zotero.write("{"); + Zotero.write(",\n\t" + field + " = "); + if (!isMacro) Zotero.write("{"); // url field is preserved, for use with \href and \url // Other fields (DOI?) may need similar treatment - if(!((field == "url") || (field == "doi") | (field == "file"))) { + if (!isMacro && !(field == "url" || field == "doi" || field == "file" || field == "lccn" )) { // I hope these are all the escape characters! - value = value.replace(/[|\<\>\~\^\\]/g, mapEscape).replace(/([\#\$\%\&\_])/g, "\\$1"); + value = value.replace(/[|\<\>\~\^\\\{\}]/g, mapEscape).replace(/([\#\$\%\&\_])/g, "\\$1"); + + //disable + /** if (field == "title" || field == "type" || field == "shorttitle" || field == "booktitle" || field == "series") { + if (!isTitleCase(value)) { + //protect caps for everything but the first letter + value = value.replace(/(.)([A-Z]+)/g, "$1{$2}"); + } else { //protect all-caps vords and initials + value = value.replace(/([\s.-])([A-Z]+)(?=\.)/g, "$1{$2}"); //protect initials + if(value.toUpperCase() != value) value = value.replace(/(\s)([A-Z]{2,})(?=[\.,\s]|$)/g, "$1{$2}"); + } + } + **/ + // Case of words with uppercase characters in non-initial positions is preserved with braces. - if(!isMacro&&field != "pages") value = value.replace(/([^\s]+[A-Z][^\s]*)/g, "{$1}"); + // we're looking at all unicode letters + var protectCaps = new ZU.XRegExp("\\b\\p{Letter}+\\p{Uppercase_Letter}\\p{Letter}*", 'g') + if (field != "pages") { + value = ZU.XRegExp.replace(value, protectCaps, "{$0}"); + } } if (Zotero.getOption("exportCharset") != "UTF-8") { value = value.replace(/[\u0080-\uFFFF]/g, mapAccent); } + //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; + if (!((field == "url") || (field == "doi") || (field == "file"))) value = mapHTMLmarkup(value); Zotero.write(value); - if(!isMacro) Zotero.write("}"); + if (!isMacro) Zotero.write("}"); } +function mapHTMLmarkup(characters){ + //converts the HTML markup allowed in Zotero for rich text to TeX + //since < and > have already been escaped, we need this rather hideous code - I couldn't see a way around it though. + //italics and bold + characters = characters.replace(/\{\\textless\}i\{\\textgreater\}(.+?)\{\\textless\}\/i{\\textgreater\}/g, "\\textit{$1}") + .replace(/\{\\textless\}b\{\\textgreater\}(.+?)\{\\textless\}\/b{\\textgreater\}/g, "\\textbf{$1}"); + //sub and superscript + characters = characters.replace(/\{\\textless\}sup\{\\textgreater\}(.+?)\{\\textless\}\/sup{\\textgreater\}/g, "\$^{\\textrm{$1}}\$") + .replace(/\{\\textless\}sub\{\\textgreater\}(.+?)\{\\textless\}\/sub\{\\textgreater\}/g, "\$_{\\textrm{$1}}\$"); + //two variants of small caps + characters = characters.replace(/\{\\textless\}span\sstyle=\"small\-caps\"\{\\textgreater\}(.+?)\{\\textless\}\/span{\\textgreater\}/g, "\\textsc{$1}") + .replace(/\{\\textless\}sc\{\\textgreater\}(.+?)\{\\textless\}\/sc\{\\textgreater\}/g, "\\textsc{$1}"); + return characters; +} + + +function mapTeXmarkup(tex){ + //reverse of the above - converts tex mark-up into html mark-up permitted by Zotero + //italics and bold + tex = tex.replace(/\\textit\{([^\}]+\})/g, "$1").replace(/\\textbf\{([^\}]+\})/g, "$1"); + //two versions of subscript the .* after $ is necessary because people m + tex = tex.replace(/\$[^\{\$]*_\{([^\}]+\})\$/g, "$1").replace(/\$[^\{]*_\{\\textrm\{([^\}]+\}\})/g, "$1"); + //two version of superscript + tex = tex.replace(/\$[^\{]*\^\{([^\}]+\}\$)/g, "$1").replace(/\$[^\{]*\^\{\\textrm\{([^\}]+\}\})/g, "$1"); + //small caps + tex = tex.replace(/\\textsc\{([^\}]+)/g, "$1"); + return tex; +} +//Disable the isTitleCase function until we decide what to do with it. +/* const skipWords = ["but", "or", "yet", "so", "for", "and", "nor", + "a", "an", "the", "at", "by", "from", "in", "into", "of", "on", + "to", "with", "up", "down", "as", "while", "aboard", "about", + "above", "across", "after", "against", "along", "amid", "among", + "anti", "around", "as", "before", "behind", "below", "beneath", + "beside", "besides", "between", "beyond", "but", "despite", + "down", "during", "except", "for", "inside", "like", "near", + "off", "onto", "over", "past", "per", "plus", "round", "save", + "since", "than", "through", "toward", "towards", "under", + "underneath", "unlike", "until", "upon", "versus", "via", + "within", "without"]; + +function isTitleCase(string) { + const wordRE = /[\s[(]([^\s,\.:?!\])]+)/g; + + var word; + while (word = wordRE.exec(string)) { + word = word[1]; + if(word.search(/\d/) != -1 //ignore words with numbers (including just numbers) + || skipWords.indexOf(word.toLowerCase()) != -1) { + continue; + } + + if(word.toLowerCase() == word) return false; + } + return true; +} +*/ + function mapEscape(character) { return alwaysMap[character]; } @@ -1864,26 +974,46 @@ function mapAccent(character) { return (mappingTable[character] ? mappingTable[character] : "?"); } +var filePathSpecialChars = '\\\\:;{}$'; // $ for Mendeley +var encodeFilePathRE = new RegExp('[' + filePathSpecialChars + ']', 'g'); + +function encodeFilePathComponent(value) { + return value.replace(encodeFilePathRE, "\\$&"); +} + +function decodeFilePathComponent(value) { + return value.replace(/\\([^A-Za-z0-9.])/g, "$1"); +} + // a little substitution function for BibTeX keys, where we don't want LaTeX // escaping, but we do want to preserve the base characters function tidyAccents(s) { - var r=s.toLowerCase(); - r = r.replace(new RegExp("[ä]", 'g'),"ae"); - r = r.replace(new RegExp("[ö]", 'g'),"ae"); - r = r.replace(new RegExp("[ü]", 'g'),"ue"); - r = r.replace(new RegExp("[àáâãå]", 'g'),"a"); - r = r.replace(new RegExp("æ", 'g'),"ae"); - r = r.replace(new RegExp("ç", 'g'),"c"); - r = r.replace(new RegExp("[èéêë]", 'g'),"e"); - r = r.replace(new RegExp("[ìíîï]", 'g'),"i"); - r = r.replace(new RegExp("ñ", 'g'),"n"); - r = r.replace(new RegExp("[òóôõ]", 'g'),"o"); - r = r.replace(new RegExp("œ", 'g'),"oe"); - r = r.replace(new RegExp("[ùúû]", 'g'),"u"); - r = r.replace(new RegExp("[ýÿ]", 'g'),"y"); - return r; - }; + var r=s.toLowerCase(); + + // XXX Remove conditional when we drop Zotero 2.1.x support + // This is supported in Zotero 3.0 and higher + if (ZU.removeDiacritics !== undefined) + r = ZU.removeDiacritics(r, true); + else { + // We fall back on the replacement list we used previously + r = r.replace(new RegExp("[ä]", 'g'),"ae"); + r = r.replace(new RegExp("[ö]", 'g'),"oe"); + r = r.replace(new RegExp("[ü]", 'g'),"ue"); + r = r.replace(new RegExp("[àáâãå]", 'g'),"a"); + r = r.replace(new RegExp("æ", 'g'),"ae"); + r = r.replace(new RegExp("ç", 'g'),"c"); + r = r.replace(new RegExp("[èéêë]", 'g'),"e"); + r = r.replace(new RegExp("[ìíîï]", 'g'),"i"); + r = r.replace(new RegExp("ñ", 'g'),"n"); + r = r.replace(new RegExp("[òóôõ]", 'g'),"o"); + r = r.replace(new RegExp("œ", 'g'),"oe"); + r = r.replace(new RegExp("[ùúû]", 'g'),"u"); + r = r.replace(new RegExp("[ýÿ]", 'g'),"y"); + } + + return r; +}; var numberRe = /^[0-9]+/; // Below is a list of words that should not appear as part of the citation key @@ -1895,27 +1025,28 @@ var citeKeyConversionsRe = /%([a-zA-Z])/; var citeKeyCleanRe = /[^a-z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+/g; var citeKeyConversions = { - "a":function (flags, item) { - if(item.creators && item.creators[0] && item.creators[0].lastName) { - return item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,""); - } - return ""; - }, - "t":function (flags, item) { - if (item["title"]) { - return item["title"].toLowerCase().replace(citeKeyTitleBannedRe, "").split(/\s+/g)[0]; - } - return ""; - }, - "y":function (flags, item) { - if(item.date) { - var date = Zotero.Utilities.strToDate(item.date); - if(date.year && numberRe.test(date.year)) { - return date.year; - } - } - return "????"; - }, + "a":function (flags, item) { + if(item.creators && item.creators[0] && item.creators[0].lastName) { + return item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,""); + } + return ""; + }, + "t":function (flags, item) { + if (item["title"]) { + return item["title"].toLowerCase().replace(citeKeyTitleBannedRe, "").split(/\s+/g)[0]; + } + return ""; + }, + "y":function (flags, item) { + if(item.date) { + var date = Zotero.Utilities.strToDate(item.date); + if(date.year && numberRe.test(date.year)) { + return date.year; + } + } + return "????"; + }, + // HJ: Add original key as an option "k":function (flags, item) { if (item.key) { return item.key; @@ -1926,52 +1057,52 @@ var citeKeyConversions = { function buildCiteKey (item,citekeys) { - var basekey = ""; - var counter = 0; - citeKeyFormatRemaining = citeKeyFormat; - while (citeKeyConversionsRe.test(citeKeyFormatRemaining)) { - if (counter > 100) { - Zotero.debug("Pathological BibTeX format: " + citeKeyFormat); - break; - } - var m = citeKeyFormatRemaining.match(citeKeyConversionsRe); - if (m.index > 0) { - //add data before the conversion match to basekey - basekey = basekey + citeKeyFormatRemaining.substr(0, m.index); - } - var flags = ""; // for now - var f = citeKeyConversions[m[1]]; - if (typeof(f) == "function") { - var value = f(flags, item); - Zotero.debug("Got value " + value + " for %" + m[1]); - //add conversion to basekey - basekey = basekey + value; - } - citeKeyFormatRemaining = citeKeyFormatRemaining.substr(m.index + m.length); - counter++; - } - if (citeKeyFormatRemaining.length > 0) { - basekey = basekey + citeKeyFormatRemaining; - } + var basekey = ""; + var counter = 0; + citeKeyFormatRemaining = citeKeyFormat; + while (citeKeyConversionsRe.test(citeKeyFormatRemaining)) { + if (counter > 100) { + Zotero.debug("Pathological BibTeX format: " + citeKeyFormat); + break; + } + var m = citeKeyFormatRemaining.match(citeKeyConversionsRe); + if (m.index > 0) { + //add data before the conversion match to basekey + basekey = basekey + citeKeyFormatRemaining.substr(0, m.index); + } + var flags = ""; // for now + var f = citeKeyConversions[m[1]]; + if (typeof(f) == "function") { + var value = f(flags, item); + Zotero.debug("Got value " + value + " for %" + m[1]); + //add conversion to basekey + basekey = basekey + value; + } + citeKeyFormatRemaining = citeKeyFormatRemaining.substr(m.index + m.length); + counter++; + } + if (citeKeyFormatRemaining.length > 0) { + basekey = basekey + citeKeyFormatRemaining; + } - // for now, remove any characters not explicitly known to be allowed; - // we might want to allow UTF-8 citation keys in the future, depending - // on implementation support. - // - // no matter what, we want to make sure we exclude - // " # % ' ( ) , = { } ~ and backslash - // however, we want to keep the base characters + // for now, remove any characters not explicitly known to be allowed; + // we might want to allow UTF-8 citation keys in the future, depending + // on implementation support. + // + // no matter what, we want to make sure we exclude + // " # % ' ( ) , = { } ~ and backslash + // however, we want to keep the base characters - basekey = tidyAccents(basekey); - basekey = basekey.replace(citeKeyCleanRe, ""); - var citekey = basekey; - var i = 0; - while(citekeys[citekey]) { - i++; - citekey = basekey + "-" + i; - } - citekeys[citekey] = true; - return citekey.toUpperCase(); + basekey = tidyAccents(basekey); + basekey = basekey.replace(citeKeyCleanRe, ""); + var citekey = basekey; + var i = 0; + while(citekeys[citekey]) { + i++; + citekey = basekey + "-" + i; + } + citekeys[citekey] = true; + return citekey; } function doExport() { @@ -1983,6 +1114,9 @@ function doExport() { var citekeys = new Object(); var item; while(item = Zotero.nextItem()) { + //don't export standalone notes and attachments + if(item.itemType == "note" || item.itemType == "attachment") continue; + // determine type var type = zotero2bibtexTypeMap[item.itemType]; if (typeof(type) == "function") { type = type(item); } @@ -1992,7 +1126,7 @@ function doExport() { var citekey = buildCiteKey(item, citekeys); // write citation key - Zotero.write((first ? "" : ",\n\n") + "@"+type+"{"+citekey); + Zotero.write((first ? "" : "\n\n") + "@"+type+"{"+citekey); first = false; for(var field in fieldMap) { @@ -2001,13 +1135,20 @@ function doExport() { } } - if(item.reportNumber || item.issue || item.seriesNumber) { - writeField("number", item.reportNumber || item.issue || item.seriesNumber); + if(item.reportNumber || item.issue || item.seriesNumber || item.patentNumber) { + writeField("number", item.reportNumber || item.issue || item.seriesNumber|| item.patentNumber); } - + + if (item.accessDate){ + var accessYMD = item.accessDate.replace(/\s*\d+:\d+:\d+/, ""); + writeField("urldate", accessYMD); + } + if(item.publicationTitle) { if(item.itemType == "bookSection" || item.itemType == "conferencePaper") { writeField("booktitle", item.publicationTitle); + } else if(Zotero.getOption("useJournalAbbreviation") && item.journalAbbreviation){ + writeField("journal", item.journalAbbreviation); } else { writeField("journal", item.publicationTitle); } @@ -2028,30 +1169,51 @@ function doExport() { var author = ""; var editor = ""; var translator = ""; - for each(var creator in item.creators) { - var creatorString = creator.lastName; + var collaborator = ""; + var primaryCreatorType = Zotero.Utilities.getCreatorsForType(item.itemType)[0]; + for(var i in item.creators) { + var creator = item.creators[i]; + var creatorString; if (creator.firstName) { - creatorString = creator.firstName + " " + creator.lastName; + var fname = creator.firstName.split(/\s*,!?\s*/); + fname.push(fname.shift()); // If we have a Jr. part(s), it should precede first name + creatorString = creator.lastName + ", " + fname.join(', '); + } else { + creatorString = creator.lastName; + } + + creatorString = creatorString.replace(/[|\<\>\~\^\\\{\}]/g, mapEscape) + .replace(/([\#\$\%\&\_])/g, "\\$1"); + + if (creator.fieldMode == true) { // fieldMode true, assume corporate author + creatorString = "{" + creatorString + "}"; + } else { + creatorString = creatorString.replace(/ (and) /gi, ' {$1} '); } - if (creator.creatorType == "editor") { + if (creator.creatorType == "editor" || creator.creatorType == "seriesEditor") { editor += " and "+creatorString; } else if (creator.creatorType == "translator") { translator += " and "+creatorString; - } else { + } else if (creator.creatorType == primaryCreatorType) { author += " and "+creatorString; + } else { + collaborator += " and "+creatorString; } } if(author) { - writeField("author", author.substr(5)); + writeField("author", "{" + author.substr(5) + "}", true); } if(editor) { - writeField("editor", editor.substr(5)); + writeField("editor", "{" + editor.substr(5) + "}", true); } if(translator) { - writeField("translator", translator.substr(5)); + writeField("translator", "{" + translator.substr(5) + "}", true); + } + if(collaborator) { + writeField("collaborator", "{" + collaborator.substr(5) + "}", true); } } @@ -2067,41 +1229,71 @@ function doExport() { } if(item.extra) { - writeField("note", item.extra); + // Export identifiers + var extraFields = parseExtraFields(item.extra); + for(var i=0; i", // TRIANGULAR BULLET + "\u2024":".", // ONE DOT LEADER + "\u2025":"..", // TWO DOT LEADER + "\u2026":"{\\textellipsis}", // HORIZONTAL ELLIPSIS + "\u2027":"-", // HYPHENATION POINT + "\u202F":" ", // NARROW NO-BREAK SPACE + "\u2030":"{\\textperthousand}", // PER MILLE SIGN + "\u2032":"'", // PRIME + "\u2033":"'", // DOUBLE PRIME + "\u2034":"'''", // TRIPLE PRIME + "\u2035":"`", // REVERSED PRIME + "\u2036":"``", // REVERSED DOUBLE PRIME + "\u2037":"```", // REVERSED TRIPLE PRIME + "\u2039":"{\\guilsinglleft}", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK + "\u203A":"{\\guilsinglright}", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + "\u203C":"!!", // DOUBLE EXCLAMATION MARK + "\u203E":"-", // OVERLINE + "\u2043":"-", // HYPHEN BULLET + "\u2044":"{\\textfractionsolidus}", // FRACTION SLASH + "\u2048":"?!", // QUESTION EXCLAMATION MARK + "\u2049":"!?", // EXCLAMATION QUESTION MARK + "\u204A":"7", // TIRONIAN SIGN ET + "\u2070":"$^{0}$", // SUPERSCRIPT ZERO + "\u2074":"$^{4}$", // SUPERSCRIPT FOUR + "\u2075":"$^{5}$", // SUPERSCRIPT FIVE + "\u2076":"$^{6}$", // SUPERSCRIPT SIX + "\u2077":"$^{7}$", // SUPERSCRIPT SEVEN + "\u2078":"$^{8}$", // SUPERSCRIPT EIGHT + "\u2079":"$^{9}$", // SUPERSCRIPT NINE + "\u207A":"$^{+}$", // SUPERSCRIPT PLUS SIGN + "\u207B":"$^{-}$", // SUPERSCRIPT MINUS + "\u207C":"$^{=}$", // SUPERSCRIPT EQUALS SIGN + "\u207D":"$^{(}$", // SUPERSCRIPT LEFT PARENTHESIS + "\u207E":"$^{)}$", // SUPERSCRIPT RIGHT PARENTHESIS + "\u207F":"$^{n}$", // SUPERSCRIPT LATIN SMALL LETTER N + "\u2080":"$_{0}$", // SUBSCRIPT ZERO + "\u2081":"$_{1}$", // SUBSCRIPT ONE + "\u2082":"$_{2}$", // SUBSCRIPT TWO + "\u2083":"$_{3}$", // SUBSCRIPT THREE + "\u2084":"$_{4}$", // SUBSCRIPT FOUR + "\u2085":"$_{5}$", // SUBSCRIPT FIVE + "\u2086":"$_{6}$", // SUBSCRIPT SIX + "\u2087":"$_{7}$", // SUBSCRIPT SEVEN + "\u2088":"$_{8}$", // SUBSCRIPT EIGHT + "\u2089":"$_{9}$", // SUBSCRIPT NINE + "\u208A":"$_{+}$", // SUBSCRIPT PLUS SIGN + "\u208B":"$_{-}$", // SUBSCRIPT MINUS + "\u208C":"$_{=}$", // SUBSCRIPT EQUALS SIGN + "\u208D":"$_{(}$", // SUBSCRIPT LEFT PARENTHESIS + "\u208E":"$_{)}$", // SUBSCRIPT RIGHT PARENTHESIS + "\u20AC":"{\\texteuro}", // EURO SIGN + "\u2100":"a/c", // ACCOUNT OF + "\u2101":"a/s", // ADDRESSED TO THE SUBJECT + "\u2103":"{\\textcelsius}", // DEGREE CELSIUS + "\u2105":"c/o", // CARE OF + "\u2106":"c/u", // CADA UNA + "\u2109":"F", // DEGREE FAHRENHEIT + "\u2113":"l", // SCRIPT SMALL L + "\u2116":"{\\textnumero}", // NUMERO SIGN + "\u2117":"{\\textcircledP}", // SOUND RECORDING COPYRIGHT + "\u2120":"{\\textservicemark}", // SERVICE MARK + "\u2121":"TEL", // TELEPHONE SIGN + "\u2122":"{\\texttrademark}", // TRADE MARK SIGN + "\u2126":"{\\textohm}", // OHM SIGN + "\u212A":"K", // KELVIN SIGN + "\u212B":"A", // ANGSTROM SIGN + "\u212E":"{\\textestimated}", // ESTIMATED SYMBOL + "\u2153":" 1/3", // VULGAR FRACTION ONE THIRD + "\u2154":" 2/3", // VULGAR FRACTION TWO THIRDS + "\u2155":" 1/5", // VULGAR FRACTION ONE FIFTH + "\u2156":" 2/5", // VULGAR FRACTION TWO FIFTHS + "\u2157":" 3/5", // VULGAR FRACTION THREE FIFTHS + "\u2158":" 4/5", // VULGAR FRACTION FOUR FIFTHS + "\u2159":" 1/6", // VULGAR FRACTION ONE SIXTH + "\u215A":" 5/6", // VULGAR FRACTION FIVE SIXTHS + "\u215B":" 1/8", // VULGAR FRACTION ONE EIGHTH + "\u215C":" 3/8", // VULGAR FRACTION THREE EIGHTHS + "\u215D":" 5/8", // VULGAR FRACTION FIVE EIGHTHS + "\u215E":" 7/8", // VULGAR FRACTION SEVEN EIGHTHS + "\u215F":" 1/", // FRACTION NUMERATOR ONE + "\u2160":"I", // ROMAN NUMERAL ONE + "\u2161":"II", // ROMAN NUMERAL TWO + "\u2162":"III", // ROMAN NUMERAL THREE + "\u2163":"IV", // ROMAN NUMERAL FOUR + "\u2164":"V", // ROMAN NUMERAL FIVE + "\u2165":"VI", // ROMAN NUMERAL SIX + "\u2166":"VII", // ROMAN NUMERAL SEVEN + "\u2167":"VIII", // ROMAN NUMERAL EIGHT + "\u2168":"IX", // ROMAN NUMERAL NINE + "\u2169":"X", // ROMAN NUMERAL TEN + "\u216A":"XI", // ROMAN NUMERAL ELEVEN + "\u216B":"XII", // ROMAN NUMERAL TWELVE + "\u216C":"L", // ROMAN NUMERAL FIFTY + "\u216D":"C", // ROMAN NUMERAL ONE HUNDRED + "\u216E":"D", // ROMAN NUMERAL FIVE HUNDRED + "\u216F":"M", // ROMAN NUMERAL ONE THOUSAND + "\u2170":"i", // SMALL ROMAN NUMERAL ONE + "\u2171":"ii", // SMALL ROMAN NUMERAL TWO + "\u2172":"iii", // SMALL ROMAN NUMERAL THREE + "\u2173":"iv", // SMALL ROMAN NUMERAL FOUR + "\u2174":"v", // SMALL ROMAN NUMERAL FIVE + "\u2175":"vi", // SMALL ROMAN NUMERAL SIX + "\u2176":"vii", // SMALL ROMAN NUMERAL SEVEN + "\u2177":"viii", // SMALL ROMAN NUMERAL EIGHT + "\u2178":"ix", // SMALL ROMAN NUMERAL NINE + "\u2179":"x", // SMALL ROMAN NUMERAL TEN + "\u217A":"xi", // SMALL ROMAN NUMERAL ELEVEN + "\u217B":"xii", // SMALL ROMAN NUMERAL TWELVE + "\u217C":"l", // SMALL ROMAN NUMERAL FIFTY + "\u217D":"c", // SMALL ROMAN NUMERAL ONE HUNDRED + "\u217E":"d", // SMALL ROMAN NUMERAL FIVE HUNDRED + "\u217F":"m", // SMALL ROMAN NUMERAL ONE THOUSAND + "\u2190":"{\\textleftarrow}", // LEFTWARDS ARROW + "\u2191":"{\\textuparrow}", // UPWARDS ARROW + "\u2192":"{\\textrightarrow}", // RIGHTWARDS ARROW + "\u2193":"{\\textdownarrow}", // DOWNWARDS ARROW + "\u2194":"<->", // LEFT RIGHT ARROW + "\u21D0":"<=", // LEFTWARDS DOUBLE ARROW + "\u21D2":"=>", // RIGHTWARDS DOUBLE ARROW + "\u21D4":"<=>", // LEFT RIGHT DOUBLE ARROW + "\u2212":"-", // MINUS SIGN + "\u2215":"/", // DIVISION SLASH + "\u2216":"\\", // SET MINUS + "\u2217":"*", // ASTERISK OPERATOR + "\u2218":"o", // RING OPERATOR + "\u2219":".", // BULLET OPERATOR + "\u221E":"$\\infty$", // INFINITY + "\u2223":"|", // DIVIDES + "\u2225":"||", // PARALLEL TO + "\u2236":":", // RATIO + "\u223C":"\\~{}", // TILDE OPERATOR + "\u2260":"/=", // NOT EQUAL TO + "\u2261":"=", // IDENTICAL TO + "\u2264":"<=", // LESS-THAN OR EQUAL TO + "\u2265":">=", // GREATER-THAN OR EQUAL TO + "\u226A":"<<", // MUCH LESS-THAN + "\u226B":">>", // MUCH GREATER-THAN + "\u2295":"(+)", // CIRCLED PLUS + "\u2296":"(-)", // CIRCLED MINUS + "\u2297":"(x)", // CIRCLED TIMES + "\u2298":"(/)", // CIRCLED DIVISION SLASH + "\u22A2":"|-", // RIGHT TACK + "\u22A3":"-|", // LEFT TACK + "\u22A6":"|-", // ASSERTION + "\u22A7":"|=", // MODELS + "\u22A8":"|=", // TRUE + "\u22A9":"||-", // FORCES + "\u22C5":".", // DOT OPERATOR + "\u22C6":"*", // STAR OPERATOR + "\u22D5":"$\\#$", // EQUAL AND PARALLEL TO + "\u22D8":"<<<", // VERY MUCH LESS-THAN + "\u22D9":">>>", // VERY MUCH GREATER-THAN + "\u2329":"{\\textlangle}", // LEFT-POINTING ANGLE BRACKET + "\u232A":"{\\textrangle}", // RIGHT-POINTING ANGLE BRACKET + "\u2400":"NUL", // SYMBOL FOR NULL + "\u2401":"SOH", // SYMBOL FOR START OF HEADING + "\u2402":"STX", // SYMBOL FOR START OF TEXT + "\u2403":"ETX", // SYMBOL FOR END OF TEXT + "\u2404":"EOT", // SYMBOL FOR END OF TRANSMISSION + "\u2405":"ENQ", // SYMBOL FOR ENQUIRY + "\u2406":"ACK", // SYMBOL FOR ACKNOWLEDGE + "\u2407":"BEL", // SYMBOL FOR BELL + "\u2408":"BS", // SYMBOL FOR BACKSPACE + "\u2409":"HT", // SYMBOL FOR HORIZONTAL TABULATION + "\u240A":"LF", // SYMBOL FOR LINE FEED + "\u240B":"VT", // SYMBOL FOR VERTICAL TABULATION + "\u240C":"FF", // SYMBOL FOR FORM FEED + "\u240D":"CR", // SYMBOL FOR CARRIAGE RETURN + "\u240E":"SO", // SYMBOL FOR SHIFT OUT + "\u240F":"SI", // SYMBOL FOR SHIFT IN + "\u2410":"DLE", // SYMBOL FOR DATA LINK ESCAPE + "\u2411":"DC1", // SYMBOL FOR DEVICE CONTROL ONE + "\u2412":"DC2", // SYMBOL FOR DEVICE CONTROL TWO + "\u2413":"DC3", // SYMBOL FOR DEVICE CONTROL THREE + "\u2414":"DC4", // SYMBOL FOR DEVICE CONTROL FOUR + "\u2415":"NAK", // SYMBOL FOR NEGATIVE ACKNOWLEDGE + "\u2416":"SYN", // SYMBOL FOR SYNCHRONOUS IDLE + "\u2417":"ETB", // SYMBOL FOR END OF TRANSMISSION BLOCK + "\u2418":"CAN", // SYMBOL FOR CANCEL + "\u2419":"EM", // SYMBOL FOR END OF MEDIUM + "\u241A":"SUB", // SYMBOL FOR SUBSTITUTE + "\u241B":"ESC", // SYMBOL FOR ESCAPE + "\u241C":"FS", // SYMBOL FOR FILE SEPARATOR + "\u241D":"GS", // SYMBOL FOR GROUP SEPARATOR + "\u241E":"RS", // SYMBOL FOR RECORD SEPARATOR + "\u241F":"US", // SYMBOL FOR UNIT SEPARATOR + "\u2420":"SP", // SYMBOL FOR SPACE + "\u2421":"DEL", // SYMBOL FOR DELETE + "\u2423":"{\\textvisiblespace}", // OPEN BOX + "\u2424":"NL", // SYMBOL FOR NEWLINE + "\u2425":"///", // SYMBOL FOR DELETE FORM TWO + "\u2426":"?", // SYMBOL FOR SUBSTITUTE FORM TWO + "\u2460":"(1)", // CIRCLED DIGIT ONE + "\u2461":"(2)", // CIRCLED DIGIT TWO + "\u2462":"(3)", // CIRCLED DIGIT THREE + "\u2463":"(4)", // CIRCLED DIGIT FOUR + "\u2464":"(5)", // CIRCLED DIGIT FIVE + "\u2465":"(6)", // CIRCLED DIGIT SIX + "\u2466":"(7)", // CIRCLED DIGIT SEVEN + "\u2467":"(8)", // CIRCLED DIGIT EIGHT + "\u2468":"(9)", // CIRCLED DIGIT NINE + "\u2469":"(10)", // CIRCLED NUMBER TEN + "\u246A":"(11)", // CIRCLED NUMBER ELEVEN + "\u246B":"(12)", // CIRCLED NUMBER TWELVE + "\u246C":"(13)", // CIRCLED NUMBER THIRTEEN + "\u246D":"(14)", // CIRCLED NUMBER FOURTEEN + "\u246E":"(15)", // CIRCLED NUMBER FIFTEEN + "\u246F":"(16)", // CIRCLED NUMBER SIXTEEN + "\u2470":"(17)", // CIRCLED NUMBER SEVENTEEN + "\u2471":"(18)", // CIRCLED NUMBER EIGHTEEN + "\u2472":"(19)", // CIRCLED NUMBER NINETEEN + "\u2473":"(20)", // CIRCLED NUMBER TWENTY + "\u2474":"(1)", // PARENTHESIZED DIGIT ONE + "\u2475":"(2)", // PARENTHESIZED DIGIT TWO + "\u2476":"(3)", // PARENTHESIZED DIGIT THREE + "\u2477":"(4)", // PARENTHESIZED DIGIT FOUR + "\u2478":"(5)", // PARENTHESIZED DIGIT FIVE + "\u2479":"(6)", // PARENTHESIZED DIGIT SIX + "\u247A":"(7)", // PARENTHESIZED DIGIT SEVEN + "\u247B":"(8)", // PARENTHESIZED DIGIT EIGHT + "\u247C":"(9)", // PARENTHESIZED DIGIT NINE + "\u247D":"(10)", // PARENTHESIZED NUMBER TEN + "\u247E":"(11)", // PARENTHESIZED NUMBER ELEVEN + "\u247F":"(12)", // PARENTHESIZED NUMBER TWELVE + "\u2480":"(13)", // PARENTHESIZED NUMBER THIRTEEN + "\u2481":"(14)", // PARENTHESIZED NUMBER FOURTEEN + "\u2482":"(15)", // PARENTHESIZED NUMBER FIFTEEN + "\u2483":"(16)", // PARENTHESIZED NUMBER SIXTEEN + "\u2484":"(17)", // PARENTHESIZED NUMBER SEVENTEEN + "\u2485":"(18)", // PARENTHESIZED NUMBER EIGHTEEN + "\u2486":"(19)", // PARENTHESIZED NUMBER NINETEEN + "\u2487":"(20)", // PARENTHESIZED NUMBER TWENTY + "\u2488":"1.", // DIGIT ONE FULL STOP + "\u2489":"2.", // DIGIT TWO FULL STOP + "\u248A":"3.", // DIGIT THREE FULL STOP + "\u248B":"4.", // DIGIT FOUR FULL STOP + "\u248C":"5.", // DIGIT FIVE FULL STOP + "\u248D":"6.", // DIGIT SIX FULL STOP + "\u248E":"7.", // DIGIT SEVEN FULL STOP + "\u248F":"8.", // DIGIT EIGHT FULL STOP + "\u2490":"9.", // DIGIT NINE FULL STOP + "\u2491":"10.", // NUMBER TEN FULL STOP + "\u2492":"11.", // NUMBER ELEVEN FULL STOP + "\u2493":"12.", // NUMBER TWELVE FULL STOP + "\u2494":"13.", // NUMBER THIRTEEN FULL STOP + "\u2495":"14.", // NUMBER FOURTEEN FULL STOP + "\u2496":"15.", // NUMBER FIFTEEN FULL STOP + "\u2497":"16.", // NUMBER SIXTEEN FULL STOP + "\u2498":"17.", // NUMBER SEVENTEEN FULL STOP + "\u2499":"18.", // NUMBER EIGHTEEN FULL STOP + "\u249A":"19.", // NUMBER NINETEEN FULL STOP + "\u249B":"20.", // NUMBER TWENTY FULL STOP + "\u249C":"(a)", // PARENTHESIZED LATIN SMALL LETTER A + "\u249D":"(b)", // PARENTHESIZED LATIN SMALL LETTER B + "\u249E":"(c)", // PARENTHESIZED LATIN SMALL LETTER C + "\u249F":"(d)", // PARENTHESIZED LATIN SMALL LETTER D + "\u24A0":"(e)", // PARENTHESIZED LATIN SMALL LETTER E + "\u24A1":"(f)", // PARENTHESIZED LATIN SMALL LETTER F + "\u24A2":"(g)", // PARENTHESIZED LATIN SMALL LETTER G + "\u24A3":"(h)", // PARENTHESIZED LATIN SMALL LETTER H + "\u24A4":"(i)", // PARENTHESIZED LATIN SMALL LETTER I + "\u24A5":"(j)", // PARENTHESIZED LATIN SMALL LETTER J + "\u24A6":"(k)", // PARENTHESIZED LATIN SMALL LETTER K + "\u24A7":"(l)", // PARENTHESIZED LATIN SMALL LETTER L + "\u24A8":"(m)", // PARENTHESIZED LATIN SMALL LETTER M + "\u24A9":"(n)", // PARENTHESIZED LATIN SMALL LETTER N + "\u24AA":"(o)", // PARENTHESIZED LATIN SMALL LETTER O + "\u24AB":"(p)", // PARENTHESIZED LATIN SMALL LETTER P + "\u24AC":"(q)", // PARENTHESIZED LATIN SMALL LETTER Q + "\u24AD":"(r)", // PARENTHESIZED LATIN SMALL LETTER R + "\u24AE":"(s)", // PARENTHESIZED LATIN SMALL LETTER S + "\u24AF":"(t)", // PARENTHESIZED LATIN SMALL LETTER T + "\u24B0":"(u)", // PARENTHESIZED LATIN SMALL LETTER U + "\u24B1":"(v)", // PARENTHESIZED LATIN SMALL LETTER V + "\u24B2":"(w)", // PARENTHESIZED LATIN SMALL LETTER W + "\u24B3":"(x)", // PARENTHESIZED LATIN SMALL LETTER X + "\u24B4":"(y)", // PARENTHESIZED LATIN SMALL LETTER Y + "\u24B5":"(z)", // PARENTHESIZED LATIN SMALL LETTER Z + "\u24B6":"(A)", // CIRCLED LATIN CAPITAL LETTER A + "\u24B7":"(B)", // CIRCLED LATIN CAPITAL LETTER B + "\u24B8":"(C)", // CIRCLED LATIN CAPITAL LETTER C + "\u24B9":"(D)", // CIRCLED LATIN CAPITAL LETTER D + "\u24BA":"(E)", // CIRCLED LATIN CAPITAL LETTER E + "\u24BB":"(F)", // CIRCLED LATIN CAPITAL LETTER F + "\u24BC":"(G)", // CIRCLED LATIN CAPITAL LETTER G + "\u24BD":"(H)", // CIRCLED LATIN CAPITAL LETTER H + "\u24BE":"(I)", // CIRCLED LATIN CAPITAL LETTER I + "\u24BF":"(J)", // CIRCLED LATIN CAPITAL LETTER J + "\u24C0":"(K)", // CIRCLED LATIN CAPITAL LETTER K + "\u24C1":"(L)", // CIRCLED LATIN CAPITAL LETTER L + "\u24C2":"(M)", // CIRCLED LATIN CAPITAL LETTER M + "\u24C3":"(N)", // CIRCLED LATIN CAPITAL LETTER N + "\u24C4":"(O)", // CIRCLED LATIN CAPITAL LETTER O + "\u24C5":"(P)", // CIRCLED LATIN CAPITAL LETTER P + "\u24C6":"(Q)", // CIRCLED LATIN CAPITAL LETTER Q + "\u24C7":"(R)", // CIRCLED LATIN CAPITAL LETTER R + "\u24C8":"(S)", // CIRCLED LATIN CAPITAL LETTER S + "\u24C9":"(T)", // CIRCLED LATIN CAPITAL LETTER T + "\u24CA":"(U)", // CIRCLED LATIN CAPITAL LETTER U + "\u24CB":"(V)", // CIRCLED LATIN CAPITAL LETTER V + "\u24CC":"(W)", // CIRCLED LATIN CAPITAL LETTER W + "\u24CD":"(X)", // CIRCLED LATIN CAPITAL LETTER X + "\u24CE":"(Y)", // CIRCLED LATIN CAPITAL LETTER Y + "\u24CF":"(Z)", // CIRCLED LATIN CAPITAL LETTER Z + "\u24D0":"(a)", // CIRCLED LATIN SMALL LETTER A + "\u24D1":"(b)", // CIRCLED LATIN SMALL LETTER B + "\u24D2":"(c)", // CIRCLED LATIN SMALL LETTER C + "\u24D3":"(d)", // CIRCLED LATIN SMALL LETTER D + "\u24D4":"(e)", // CIRCLED LATIN SMALL LETTER E + "\u24D5":"(f)", // CIRCLED LATIN SMALL LETTER F + "\u24D6":"(g)", // CIRCLED LATIN SMALL LETTER G + "\u24D7":"(h)", // CIRCLED LATIN SMALL LETTER H + "\u24D8":"(i)", // CIRCLED LATIN SMALL LETTER I + "\u24D9":"(j)", // CIRCLED LATIN SMALL LETTER J + "\u24DA":"(k)", // CIRCLED LATIN SMALL LETTER K + "\u24DB":"(l)", // CIRCLED LATIN SMALL LETTER L + "\u24DC":"(m)", // CIRCLED LATIN SMALL LETTER M + "\u24DD":"(n)", // CIRCLED LATIN SMALL LETTER N + "\u24DE":"(o)", // CIRCLED LATIN SMALL LETTER O + "\u24DF":"(p)", // CIRCLED LATIN SMALL LETTER P + "\u24E0":"(q)", // CIRCLED LATIN SMALL LETTER Q + "\u24E1":"(r)", // CIRCLED LATIN SMALL LETTER R + "\u24E2":"(s)", // CIRCLED LATIN SMALL LETTER S + "\u24E3":"(t)", // CIRCLED LATIN SMALL LETTER T + "\u24E4":"(u)", // CIRCLED LATIN SMALL LETTER U + "\u24E5":"(v)", // CIRCLED LATIN SMALL LETTER V + "\u24E6":"(w)", // CIRCLED LATIN SMALL LETTER W + "\u24E7":"(x)", // CIRCLED LATIN SMALL LETTER X + "\u24E8":"(y)", // CIRCLED LATIN SMALL LETTER Y + "\u24E9":"(z)", // CIRCLED LATIN SMALL LETTER Z + "\u24EA":"(0)", // CIRCLED DIGIT ZERO + "\u2500":"-", // BOX DRAWINGS LIGHT HORIZONTAL + "\u2501":"=", // BOX DRAWINGS HEAVY HORIZONTAL + "\u2502":"|", // BOX DRAWINGS LIGHT VERTICAL + "\u2503":"|", // BOX DRAWINGS HEAVY VERTICAL + "\u2504":"-", // BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL + "\u2505":"=", // BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL + "\u2506":"|", // BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL + "\u2507":"|", // BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL + "\u2508":"-", // BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL + "\u2509":"=", // BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL + "\u250A":"|", // BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL + "\u250B":"|", // BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL + "\u250C":"+", // BOX DRAWINGS LIGHT DOWN AND RIGHT + "\u250D":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY + "\u250E":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT + "\u250F":"+", // BOX DRAWINGS HEAVY DOWN AND RIGHT + "\u2510":"+", // BOX DRAWINGS LIGHT DOWN AND LEFT + "\u2511":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY + "\u2512":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT + "\u2513":"+", // BOX DRAWINGS HEAVY DOWN AND LEFT + "\u2514":"+", // BOX DRAWINGS LIGHT UP AND RIGHT + "\u2515":"+", // BOX DRAWINGS UP LIGHT AND RIGHT HEAVY + "\u2516":"+", // BOX DRAWINGS UP HEAVY AND RIGHT LIGHT + "\u2517":"+", // BOX DRAWINGS HEAVY UP AND RIGHT + "\u2518":"+", // BOX DRAWINGS LIGHT UP AND LEFT + "\u2519":"+", // BOX DRAWINGS UP LIGHT AND LEFT HEAVY + "\u251A":"+", // BOX DRAWINGS UP HEAVY AND LEFT LIGHT + "\u251B":"+", // BOX DRAWINGS HEAVY UP AND LEFT + "\u251C":"+", // BOX DRAWINGS LIGHT VERTICAL AND RIGHT + "\u251D":"+", // BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY + "\u251E":"+", // BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT + "\u251F":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT + "\u2520":"+", // BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT + "\u2521":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY + "\u2522":"+", // BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY + "\u2523":"+", // BOX DRAWINGS HEAVY VERTICAL AND RIGHT + "\u2524":"+", // BOX DRAWINGS LIGHT VERTICAL AND LEFT + "\u2525":"+", // BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY + "\u2526":"+", // BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT + "\u2527":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT + "\u2528":"+", // BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT + "\u2529":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY + "\u252A":"+", // BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY + "\u252B":"+", // BOX DRAWINGS HEAVY VERTICAL AND LEFT + "\u252C":"+", // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL + "\u252D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT + "\u252E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT + "\u252F":"+", // BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY + "\u2530":"+", // BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT + "\u2531":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY + "\u2532":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY + "\u2533":"+", // BOX DRAWINGS HEAVY DOWN AND HORIZONTAL + "\u2534":"+", // BOX DRAWINGS LIGHT UP AND HORIZONTAL + "\u2535":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT + "\u2536":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT + "\u2537":"+", // BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY + "\u2538":"+", // BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT + "\u2539":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY + "\u253A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY + "\u253B":"+", // BOX DRAWINGS HEAVY UP AND HORIZONTAL + "\u253C":"+", // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL + "\u253D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT + "\u253E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT + "\u253F":"+", // BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY + "\u2540":"+", // BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT + "\u2541":"+", // BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT + "\u2542":"+", // BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT + "\u2543":"+", // BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT + "\u2544":"+", // BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT + "\u2545":"+", // BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT + "\u2546":"+", // BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT + "\u2547":"+", // BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY + "\u2548":"+", // BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY + "\u2549":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY + "\u254A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY + "\u254B":"+", // BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL + "\u254C":"-", // BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL + "\u254D":"=", // BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL + "\u254E":"|", // BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL + "\u254F":"|", // BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL + "\u2550":"=", // BOX DRAWINGS DOUBLE HORIZONTAL + "\u2551":"|", // BOX DRAWINGS DOUBLE VERTICAL + "\u2552":"+", // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE + "\u2553":"+", // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE + "\u2554":"+", // BOX DRAWINGS DOUBLE DOWN AND RIGHT + "\u2555":"+", // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE + "\u2556":"+", // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE + "\u2557":"+", // BOX DRAWINGS DOUBLE DOWN AND LEFT + "\u2558":"+", // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE + "\u2559":"+", // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE + "\u255A":"+", // BOX DRAWINGS DOUBLE UP AND RIGHT + "\u255B":"+", // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE + "\u255C":"+", // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE + "\u255D":"+", // BOX DRAWINGS DOUBLE UP AND LEFT + "\u255E":"+", // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE + "\u255F":"+", // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE + "\u2560":"+", // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT + "\u2561":"+", // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE + "\u2562":"+", // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE + "\u2563":"+", // BOX DRAWINGS DOUBLE VERTICAL AND LEFT + "\u2564":"+", // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE + "\u2565":"+", // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE + "\u2566":"+", // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL + "\u2567":"+", // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE + "\u2568":"+", // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE + "\u2569":"+", // BOX DRAWINGS DOUBLE UP AND HORIZONTAL + "\u256A":"+", // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE + "\u256B":"+", // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE + "\u256C":"+", // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL + "\u256D":"+", // BOX DRAWINGS LIGHT ARC DOWN AND RIGHT + "\u256E":"+", // BOX DRAWINGS LIGHT ARC DOWN AND LEFT + "\u256F":"+", // BOX DRAWINGS LIGHT ARC UP AND LEFT + "\u2570":"+", // BOX DRAWINGS LIGHT ARC UP AND RIGHT + "\u2571":"/", // BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT + "\u2572":"\\", // BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT + "\u2573":"X", // BOX DRAWINGS LIGHT DIAGONAL CROSS + "\u257C":"-", // BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT + "\u257D":"|", // BOX DRAWINGS LIGHT UP AND HEAVY DOWN + "\u257E":"-", // BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT + "\u257F":"|", // BOX DRAWINGS HEAVY UP AND LIGHT DOWN + "\u25CB":"o", // WHITE CIRCLE + "\u25E6":"{\\textopenbullet}", // WHITE BULLET + "\u2605":"*", // BLACK STAR + "\u2606":"*", // WHITE STAR + "\u2612":"X", // BALLOT BOX WITH X + "\u2613":"X", // SALTIRE + "\u2639":":-(", // WHITE FROWNING FACE + "\u263A":":-)", // WHITE SMILING FACE + "\u263B":"(-:", // BLACK SMILING FACE + "\u266D":"b", // MUSIC FLAT SIGN + "\u266F":"$\\#$", // MUSIC SHARP SIGN + "\u2701":"$\\%<$", // UPPER BLADE SCISSORS + "\u2702":"$\\%<$", // BLACK SCISSORS + "\u2703":"$\\%<$", // LOWER BLADE SCISSORS + "\u2704":"$\\%<$", // WHITE SCISSORS + "\u270C":"V", // VICTORY HAND + "\u2713":"v", // CHECK MARK + "\u2714":"V", // HEAVY CHECK MARK + "\u2715":"x", // MULTIPLICATION X + "\u2716":"x", // HEAVY MULTIPLICATION X + "\u2717":"X", // BALLOT X + "\u2718":"X", // HEAVY BALLOT X + "\u2719":"+", // OUTLINED GREEK CROSS + "\u271A":"+", // HEAVY GREEK CROSS + "\u271B":"+", // OPEN CENTRE CROSS + "\u271C":"+", // HEAVY OPEN CENTRE CROSS + "\u271D":"+", // LATIN CROSS + "\u271E":"+", // SHADOWED WHITE LATIN CROSS + "\u271F":"+", // OUTLINED LATIN CROSS + "\u2720":"+", // MALTESE CROSS + "\u2721":"*", // STAR OF DAVID + "\u2722":"+", // FOUR TEARDROP-SPOKED ASTERISK + "\u2723":"+", // FOUR BALLOON-SPOKED ASTERISK + "\u2724":"+", // HEAVY FOUR BALLOON-SPOKED ASTERISK + "\u2725":"+", // FOUR CLUB-SPOKED ASTERISK + "\u2726":"+", // BLACK FOUR POINTED STAR + "\u2727":"+", // WHITE FOUR POINTED STAR + "\u2729":"*", // STRESS OUTLINED WHITE STAR + "\u272A":"*", // CIRCLED WHITE STAR + "\u272B":"*", // OPEN CENTRE BLACK STAR + "\u272C":"*", // BLACK CENTRE WHITE STAR + "\u272D":"*", // OUTLINED BLACK STAR + "\u272E":"*", // HEAVY OUTLINED BLACK STAR + "\u272F":"*", // PINWHEEL STAR + "\u2730":"*", // SHADOWED WHITE STAR + "\u2731":"*", // HEAVY ASTERISK + "\u2732":"*", // OPEN CENTRE ASTERISK + "\u2733":"*", // EIGHT SPOKED ASTERISK + "\u2734":"*", // EIGHT POINTED BLACK STAR + "\u2735":"*", // EIGHT POINTED PINWHEEL STAR + "\u2736":"*", // SIX POINTED BLACK STAR + "\u2737":"*", // EIGHT POINTED RECTILINEAR BLACK STAR + "\u2738":"*", // HEAVY EIGHT POINTED RECTILINEAR BLACK STAR + "\u2739":"*", // TWELVE POINTED BLACK STAR + "\u273A":"*", // SIXTEEN POINTED ASTERISK + "\u273B":"*", // TEARDROP-SPOKED ASTERISK + "\u273C":"*", // OPEN CENTRE TEARDROP-SPOKED ASTERISK + "\u273D":"*", // HEAVY TEARDROP-SPOKED ASTERISK + "\u273E":"*", // SIX PETALLED BLACK AND WHITE FLORETTE + "\u273F":"*", // BLACK FLORETTE + "\u2740":"*", // WHITE FLORETTE + "\u2741":"*", // EIGHT PETALLED OUTLINED BLACK FLORETTE + "\u2742":"*", // CIRCLED OPEN CENTRE EIGHT POINTED STAR + "\u2743":"*", // HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK + "\u2744":"*", // SNOWFLAKE + "\u2745":"*", // TIGHT TRIFOLIATE SNOWFLAKE + "\u2746":"*", // HEAVY CHEVRON SNOWFLAKE + "\u2747":"*", // SPARKLE + "\u2748":"*", // HEAVY SPARKLE + "\u2749":"*", // BALLOON-SPOKED ASTERISK + "\u274A":"*", // EIGHT TEARDROP-SPOKED PROPELLER ASTERISK + "\u274B":"*", // HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK + "\uFB00":"ff", // LATIN SMALL LIGATURE FF + "\uFB01":"fi", // LATIN SMALL LIGATURE FI + "\uFB02":"fl", // LATIN SMALL LIGATURE FL + "\uFB03":"ffi", // LATIN SMALL LIGATURE FFI + "\uFB04":"ffl", // LATIN SMALL LIGATURE FFL + "\uFB05":"st", // LATIN SMALL LIGATURE LONG S T + "\uFB06":"st", // LATIN SMALL LIGATURE ST +/* Derived accented characters */ + +/* These two require the "semtrans" package to work; uncomment to enable */ +/* "\u02BF":"\{\\Ayn}", // MGR Ayn + "\u02BE":"\{\\Alif}", // MGR Alif/Hamza +*/ + "\u00C0":"{\\`A}", // LATIN CAPITAL LETTER A WITH GRAVE + "\u00C1":"{\\'A}", // LATIN CAPITAL LETTER A WITH ACUTE + "\u00C2":"{\\^A}", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX + "\u00C3":"{\\~A}", // LATIN CAPITAL LETTER A WITH TILDE + "\u00C4":"{\\\"A}", // LATIN CAPITAL LETTER A WITH DIAERESIS + "\u00C5":"{\\r A}", // LATIN CAPITAL LETTER A WITH RING ABOVE + "\u00C7":"{\\c C}", // LATIN CAPITAL LETTER C WITH CEDILLA + "\u00C8":"{\\`E}", // LATIN CAPITAL LETTER E WITH GRAVE + "\u00C9":"{\\'E}", // LATIN CAPITAL LETTER E WITH ACUTE + "\u00CA":"{\\^E}", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX + "\u00CB":"{\\\"E}", // LATIN CAPITAL LETTER E WITH DIAERESIS + "\u00CC":"{\\`I}", // LATIN CAPITAL LETTER I WITH GRAVE + "\u00CD":"{\\'I}", // LATIN CAPITAL LETTER I WITH ACUTE + "\u00CE":"{\\^I}", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX + "\u00CF":"{\\\"I}", // LATIN CAPITAL LETTER I WITH DIAERESIS + "\u00D1":"{\\~N}", // LATIN CAPITAL LETTER N WITH TILDE + "\u00D2":"{\\`O}", // LATIN CAPITAL LETTER O WITH GRAVE + "\u00D3":"{\\'O}", // LATIN CAPITAL LETTER O WITH ACUTE + "\u00D4":"{\\^O}", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX + "\u00D5":"{\\~O}", // LATIN CAPITAL LETTER O WITH TILDE + "\u00D6":"{\\\"O}", // LATIN CAPITAL LETTER O WITH DIAERESIS + "\u00D9":"{\\`U}", // LATIN CAPITAL LETTER U WITH GRAVE + "\u00DA":"{\\'U}", // LATIN CAPITAL LETTER U WITH ACUTE + "\u00DB":"{\\^U}", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX + "\u00DC":"{\\\"U}", // LATIN CAPITAL LETTER U WITH DIAERESIS + "\u00DD":"{\\'Y}", // LATIN CAPITAL LETTER Y WITH ACUTE + "\u00E0":"{\\`a}", // LATIN SMALL LETTER A WITH GRAVE + "\u00E1":"{\\'a}", // LATIN SMALL LETTER A WITH ACUTE + "\u00E2":"{\\^a}", // LATIN SMALL LETTER A WITH CIRCUMFLEX + "\u00E3":"{\\~a}", // LATIN SMALL LETTER A WITH TILDE + "\u00E4":"{\\\"a}", // LATIN SMALL LETTER A WITH DIAERESIS + "\u00E5":"{\\r a}", // LATIN SMALL LETTER A WITH RING ABOVE + "\u00E7":"{\\c c}", // LATIN SMALL LETTER C WITH CEDILLA + "\u00E8":"{\\`e}", // LATIN SMALL LETTER E WITH GRAVE + "\u00E9":"{\\'e}", // LATIN SMALL LETTER E WITH ACUTE + "\u00EA":"{\\^e}", // LATIN SMALL LETTER E WITH CIRCUMFLEX + "\u00EB":"{\\\"e}", // LATIN SMALL LETTER E WITH DIAERESIS + "\u00EC":"{\\`i}", // LATIN SMALL LETTER I WITH GRAVE + "\u00ED":"{\\'i}", // LATIN SMALL LETTER I WITH ACUTE + "\u00EE":"{\\^i}", // LATIN SMALL LETTER I WITH CIRCUMFLEX + "\u00EF":"{\\\"i}", // LATIN SMALL LETTER I WITH DIAERESIS + "\u00F1":"{\\~n}", // LATIN SMALL LETTER N WITH TILDE + "\u00F2":"{\\`o}", // LATIN SMALL LETTER O WITH GRAVE + "\u00F3":"{\\'o}", // LATIN SMALL LETTER O WITH ACUTE + "\u00F4":"{\\^o}", // LATIN SMALL LETTER O WITH CIRCUMFLEX + "\u00F5":"{\\~o}", // LATIN SMALL LETTER O WITH TILDE + "\u00F6":"{\\\"o}", // LATIN SMALL LETTER O WITH DIAERESIS + "\u00F9":"{\\`u}", // LATIN SMALL LETTER U WITH GRAVE + "\u00FA":"{\\'u}", // LATIN SMALL LETTER U WITH ACUTE + "\u00FB":"{\\^u}", // LATIN SMALL LETTER U WITH CIRCUMFLEX + "\u00FC":"{\\\"u}", // LATIN SMALL LETTER U WITH DIAERESIS + "\u00FD":"{\\'y}", // LATIN SMALL LETTER Y WITH ACUTE + "\u00FF":"{\\\"y}", // LATIN SMALL LETTER Y WITH DIAERESIS + "\u0100":"{\\=A}", // LATIN CAPITAL LETTER A WITH MACRON + "\u0101":"{\\=a}", // LATIN SMALL LETTER A WITH MACRON + "\u0102":"{\\u A}", // LATIN CAPITAL LETTER A WITH BREVE + "\u0103":"{\\u a}", // LATIN SMALL LETTER A WITH BREVE + "\u0104":"{\\k A}", // LATIN CAPITAL LETTER A WITH OGONEK + "\u0105":"{\\k a}", // LATIN SMALL LETTER A WITH OGONEK + "\u0106":"{\\'C}", // LATIN CAPITAL LETTER C WITH ACUTE + "\u0107":"{\\'c}", // LATIN SMALL LETTER C WITH ACUTE + "\u0108":"{\\^C}", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX + "\u0109":"{\\^c}", // LATIN SMALL LETTER C WITH CIRCUMFLEX + "\u010A":"{\\.C}", // LATIN CAPITAL LETTER C WITH DOT ABOVE + "\u010B":"{\\.c}", // LATIN SMALL LETTER C WITH DOT ABOVE + "\u010C":"{\\v C}", // LATIN CAPITAL LETTER C WITH CARON + "\u010D":"{\\v c}", // LATIN SMALL LETTER C WITH CARON + "\u010E":"{\\v D}", // LATIN CAPITAL LETTER D WITH CARON + "\u010F":"{\\v d}", // LATIN SMALL LETTER D WITH CARON + "\u0112":"{\\=E}", // LATIN CAPITAL LETTER E WITH MACRON + "\u0113":"{\\=e}", // LATIN SMALL LETTER E WITH MACRON + "\u0114":"{\\u E}", // LATIN CAPITAL LETTER E WITH BREVE + "\u0115":"{\\u e}", // LATIN SMALL LETTER E WITH BREVE + "\u0116":"{\\.E}", // LATIN CAPITAL LETTER E WITH DOT ABOVE + "\u0117":"{\\.e}", // LATIN SMALL LETTER E WITH DOT ABOVE + "\u0118":"{\\k E}", // LATIN CAPITAL LETTER E WITH OGONEK + "\u0119":"{\\k e}", // LATIN SMALL LETTER E WITH OGONEK + "\u011A":"{\\v E}", // LATIN CAPITAL LETTER E WITH CARON + "\u011B":"{\\v e}", // LATIN SMALL LETTER E WITH CARON + "\u011C":"{\\^G}", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX + "\u011D":"{\\^g}", // LATIN SMALL LETTER G WITH CIRCUMFLEX + "\u011E":"{\\u G}", // LATIN CAPITAL LETTER G WITH BREVE + "\u011F":"{\\u g}", // LATIN SMALL LETTER G WITH BREVE + "\u0120":"{\\.G}", // LATIN CAPITAL LETTER G WITH DOT ABOVE + "\u0121":"{\\.g}", // LATIN SMALL LETTER G WITH DOT ABOVE + "\u0122":"{\\c G}", // LATIN CAPITAL LETTER G WITH CEDILLA + "\u0123":"{\\c g}", // LATIN SMALL LETTER G WITH CEDILLA + "\u0124":"{\\^H}", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX + "\u0125":"{\\^h}", // LATIN SMALL LETTER H WITH CIRCUMFLEX + "\u0128":"{\\~I}", // LATIN CAPITAL LETTER I WITH TILDE + "\u0129":"{\\~i}", // LATIN SMALL LETTER I WITH TILDE + "\u012A":"{\\=I}", // LATIN CAPITAL LETTER I WITH MACRON + "\u012B":"{\\=\\i}", // LATIN SMALL LETTER I WITH MACRON + "\u012C":"{\\u I}", // LATIN CAPITAL LETTER I WITH BREVE + "\u012D":"{\\u i}", // LATIN SMALL LETTER I WITH BREVE + "\u012E":"{\\k I}", // LATIN CAPITAL LETTER I WITH OGONEK + "\u012F":"{\\k i}", // LATIN SMALL LETTER I WITH OGONEK + "\u0130":"{\\.I}", // LATIN CAPITAL LETTER I WITH DOT ABOVE + "\u0134":"{\\^J}", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX + "\u0135":"{\\^j}", // LATIN SMALL LETTER J WITH CIRCUMFLEX + "\u0136":"{\\c K}", // LATIN CAPITAL LETTER K WITH CEDILLA + "\u0137":"{\\c k}", // LATIN SMALL LETTER K WITH CEDILLA + "\u0139":"{\\'L}", // LATIN CAPITAL LETTER L WITH ACUTE + "\u013A":"{\\'l}", // LATIN SMALL LETTER L WITH ACUTE + "\u013B":"{\\c L}", // LATIN CAPITAL LETTER L WITH CEDILLA + "\u013C":"{\\c l}", // LATIN SMALL LETTER L WITH CEDILLA + "\u013D":"{\\v L}", // LATIN CAPITAL LETTER L WITH CARON + "\u013E":"{\\v l}", // LATIN SMALL LETTER L WITH CARON + "\u0141":"{\\L }", //LATIN CAPITAL LETTER L WITH STROKE + "\u0142":"{\\l }", //LATIN SMALL LETTER L WITH STROKE + "\u0143":"{\\'N}", // LATIN CAPITAL LETTER N WITH ACUTE + "\u0144":"{\\'n}", // LATIN SMALL LETTER N WITH ACUTE + "\u0145":"{\\c N}", // LATIN CAPITAL LETTER N WITH CEDILLA + "\u0146":"{\\c n}", // LATIN SMALL LETTER N WITH CEDILLA + "\u0147":"{\\v N}", // LATIN CAPITAL LETTER N WITH CARON + "\u0148":"{\\v n}", // LATIN SMALL LETTER N WITH CARON + "\u014C":"{\\=O}", // LATIN CAPITAL LETTER O WITH MACRON + "\u014D":"{\\=o}", // LATIN SMALL LETTER O WITH MACRON + "\u014E":"{\\u O}", // LATIN CAPITAL LETTER O WITH BREVE + "\u014F":"{\\u o}", // LATIN SMALL LETTER O WITH BREVE + "\u0150":"{\\H O}", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + "\u0151":"{\\H o}", // LATIN SMALL LETTER O WITH DOUBLE ACUTE + "\u0154":"{\\'R}", // LATIN CAPITAL LETTER R WITH ACUTE + "\u0155":"{\\'r}", // LATIN SMALL LETTER R WITH ACUTE + "\u0156":"{\\c R}", // LATIN CAPITAL LETTER R WITH CEDILLA + "\u0157":"{\\c r}", // LATIN SMALL LETTER R WITH CEDILLA + "\u0158":"{\\v R}", // LATIN CAPITAL LETTER R WITH CARON + "\u0159":"{\\v r}", // LATIN SMALL LETTER R WITH CARON + "\u015A":"{\\'S}", // LATIN CAPITAL LETTER S WITH ACUTE + "\u015B":"{\\'s}", // LATIN SMALL LETTER S WITH ACUTE + "\u015C":"{\\^S}", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX + "\u015D":"{\\^s}", // LATIN SMALL LETTER S WITH CIRCUMFLEX + "\u015E":"{\\c S}", // LATIN CAPITAL LETTER S WITH CEDILLA + "\u015F":"{\\c s}", // LATIN SMALL LETTER S WITH CEDILLA + "\u0160":"{\\v S}", // LATIN CAPITAL LETTER S WITH CARON + "\u0161":"{\\v s}", // LATIN SMALL LETTER S WITH CARON + "\u0162":"{\\c T}", // LATIN CAPITAL LETTER T WITH CEDILLA + "\u0163":"{\\c t}", // LATIN SMALL LETTER T WITH CEDILLA + "\u0164":"{\\v T}", // LATIN CAPITAL LETTER T WITH CARON + "\u0165":"{\\v t}", // LATIN SMALL LETTER T WITH CARON + "\u0168":"{\\~U}", // LATIN CAPITAL LETTER U WITH TILDE + "\u0169":"{\\~u}", // LATIN SMALL LETTER U WITH TILDE + "\u016A":"{\\=U}", // LATIN CAPITAL LETTER U WITH MACRON + "\u016B":"{\\=u}", // LATIN SMALL LETTER U WITH MACRON + "\u016C":"{\\u U}", // LATIN CAPITAL LETTER U WITH BREVE + "\u016D":"{\\u u}", // LATIN SMALL LETTER U WITH BREVE + "\u0170":"{\\H U}", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + "\u0171":"{\\H u}", // LATIN SMALL LETTER U WITH DOUBLE ACUTE + "\u0172":"{\\k U}", // LATIN CAPITAL LETTER U WITH OGONEK + "\u0173":"{\\k u}", // LATIN SMALL LETTER U WITH OGONEK + "\u0174":"{\\^W}", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX + "\u0175":"{\\^w}", // LATIN SMALL LETTER W WITH CIRCUMFLEX + "\u0176":"{\\^Y}", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + "\u0177":"{\\^y}", // LATIN SMALL LETTER Y WITH CIRCUMFLEX + "\u0178":"{\\\"Y}", // LATIN CAPITAL LETTER Y WITH DIAERESIS + "\u0179":"{\\'Z}", // LATIN CAPITAL LETTER Z WITH ACUTE + "\u017A":"{\\'z}", // LATIN SMALL LETTER Z WITH ACUTE + "\u017B":"{\\.Z}", // LATIN CAPITAL LETTER Z WITH DOT ABOVE + "\u017C":"{\\.z}", // LATIN SMALL LETTER Z WITH DOT ABOVE + "\u017D":"{\\v Z}", // LATIN CAPITAL LETTER Z WITH CARON + "\u017E":"{\\v z}", // LATIN SMALL LETTER Z WITH CARON + "\u01CD":"{\\v A}", // LATIN CAPITAL LETTER A WITH CARON + "\u01CE":"{\\v a}", // LATIN SMALL LETTER A WITH CARON + "\u01CF":"{\\v I}", // LATIN CAPITAL LETTER I WITH CARON + "\u01D0":"{\\v i}", // LATIN SMALL LETTER I WITH CARON + "\u01D1":"{\\v O}", // LATIN CAPITAL LETTER O WITH CARON + "\u01D2":"{\\v o}", // LATIN SMALL LETTER O WITH CARON + "\u01D3":"{\\v U}", // LATIN CAPITAL LETTER U WITH CARON + "\u01D4":"{\\v u}", // LATIN SMALL LETTER U WITH CARON + "\u01E6":"{\\v G}", // LATIN CAPITAL LETTER G WITH CARON + "\u01E7":"{\\v g}", // LATIN SMALL LETTER G WITH CARON + "\u01E8":"{\\v K}", // LATIN CAPITAL LETTER K WITH CARON + "\u01E9":"{\\v k}", // LATIN SMALL LETTER K WITH CARON + "\u01EA":"{\\k O}", // LATIN CAPITAL LETTER O WITH OGONEK + "\u01EB":"{\\k o}", // LATIN SMALL LETTER O WITH OGONEK + "\u01F0":"{\\v j}", // LATIN SMALL LETTER J WITH CARON + "\u01F4":"{\\'G}", // LATIN CAPITAL LETTER G WITH ACUTE + "\u01F5":"{\\'g}", // LATIN SMALL LETTER G WITH ACUTE + "\u1E02":"{\\.B}", // LATIN CAPITAL LETTER B WITH DOT ABOVE + "\u1E03":"{\\.b}", // LATIN SMALL LETTER B WITH DOT ABOVE + "\u1E04":"{\\d B}", // LATIN CAPITAL LETTER B WITH DOT BELOW + "\u1E05":"{\\d b}", // LATIN SMALL LETTER B WITH DOT BELOW + "\u1E06":"{\\b B}", // LATIN CAPITAL LETTER B WITH LINE BELOW + "\u1E07":"{\\b b}", // LATIN SMALL LETTER B WITH LINE BELOW + "\u1E0A":"{\\.D}", // LATIN CAPITAL LETTER D WITH DOT ABOVE + "\u1E0B":"{\\.d}", // LATIN SMALL LETTER D WITH DOT ABOVE + "\u1E0C":"{\\d D}", // LATIN CAPITAL LETTER D WITH DOT BELOW + "\u1E0D":"{\\d d}", // LATIN SMALL LETTER D WITH DOT BELOW + "\u1E0E":"{\\b D}", // LATIN CAPITAL LETTER D WITH LINE BELOW + "\u1E0F":"{\\b d}", // LATIN SMALL LETTER D WITH LINE BELOW + "\u1E10":"{\\c D}", // LATIN CAPITAL LETTER D WITH CEDILLA + "\u1E11":"{\\c d}", // LATIN SMALL LETTER D WITH CEDILLA + "\u1E1E":"{\\.F}", // LATIN CAPITAL LETTER F WITH DOT ABOVE + "\u1E1F":"{\\.f}", // LATIN SMALL LETTER F WITH DOT ABOVE + "\u1E20":"{\\=G}", // LATIN CAPITAL LETTER G WITH MACRON + "\u1E21":"{\\=g}", // LATIN SMALL LETTER G WITH MACRON + "\u1E22":"{\\.H}", // LATIN CAPITAL LETTER H WITH DOT ABOVE + "\u1E23":"{\\.h}", // LATIN SMALL LETTER H WITH DOT ABOVE + "\u1E24":"{\\d H}", // LATIN CAPITAL LETTER H WITH DOT BELOW + "\u1E25":"{\\d h}", // LATIN SMALL LETTER H WITH DOT BELOW + "\u1E26":"{\\\"H}", // LATIN CAPITAL LETTER H WITH DIAERESIS + "\u1E27":"{\\\"h}", // LATIN SMALL LETTER H WITH DIAERESIS + "\u1E28":"{\\c H}", // LATIN CAPITAL LETTER H WITH CEDILLA + "\u1E29":"{\\c h}", // LATIN SMALL LETTER H WITH CEDILLA + "\u1E30":"{\\'K}", // LATIN CAPITAL LETTER K WITH ACUTE + "\u1E31":"{\\'k}", // LATIN SMALL LETTER K WITH ACUTE + "\u1E32":"{\\d K}", // LATIN CAPITAL LETTER K WITH DOT BELOW + "\u1E33":"{\\d k}", // LATIN SMALL LETTER K WITH DOT BELOW + "\u1E34":"{\\b K}", // LATIN CAPITAL LETTER K WITH LINE BELOW + "\u1E35":"{\\b k}", // LATIN SMALL LETTER K WITH LINE BELOW + "\u1E36":"{\\d L}", // LATIN CAPITAL LETTER L WITH DOT BELOW + "\u1E37":"{\\d l}", // LATIN SMALL LETTER L WITH DOT BELOW + "\u1E3A":"{\\b L}", // LATIN CAPITAL LETTER L WITH LINE BELOW + "\u1E3B":"{\\b l}", // LATIN SMALL LETTER L WITH LINE BELOW + "\u1E3E":"{\\'M}", // LATIN CAPITAL LETTER M WITH ACUTE + "\u1E3F":"{\\'m}", // LATIN SMALL LETTER M WITH ACUTE + "\u1E40":"{\\.M}", // LATIN CAPITAL LETTER M WITH DOT ABOVE + "\u1E41":"{\\.m}", // LATIN SMALL LETTER M WITH DOT ABOVE + "\u1E42":"{\\d M}", // LATIN CAPITAL LETTER M WITH DOT BELOW + "\u1E43":"{\\d m}", // LATIN SMALL LETTER M WITH DOT BELOW + "\u1E44":"{\\.N}", // LATIN CAPITAL LETTER N WITH DOT ABOVE + "\u1E45":"{\\.n}", // LATIN SMALL LETTER N WITH DOT ABOVE + "\u1E46":"{\\d N}", // LATIN CAPITAL LETTER N WITH DOT BELOW + "\u1E47":"{\\d n}", // LATIN SMALL LETTER N WITH DOT BELOW + "\u1E48":"{\\b N}", // LATIN CAPITAL LETTER N WITH LINE BELOW + "\u1E49":"{\\b n}", // LATIN SMALL LETTER N WITH LINE BELOW + "\u1E54":"{\\'P}", // LATIN CAPITAL LETTER P WITH ACUTE + "\u1E55":"{\\'p}", // LATIN SMALL LETTER P WITH ACUTE + "\u1E56":"{\\.P}", // LATIN CAPITAL LETTER P WITH DOT ABOVE + "\u1E57":"{\\.p}", // LATIN SMALL LETTER P WITH DOT ABOVE + "\u1E58":"{\\.R}", // LATIN CAPITAL LETTER R WITH DOT ABOVE + "\u1E59":"{\\.r}", // LATIN SMALL LETTER R WITH DOT ABOVE + "\u1E5A":"{\\d R}", // LATIN CAPITAL LETTER R WITH DOT BELOW + "\u1E5B":"{\\d r}", // LATIN SMALL LETTER R WITH DOT BELOW + "\u1E5E":"{\\b R}", // LATIN CAPITAL LETTER R WITH LINE BELOW + "\u1E5F":"{\\b r}", // LATIN SMALL LETTER R WITH LINE BELOW + "\u1E60":"{\\.S}", // LATIN CAPITAL LETTER S WITH DOT ABOVE + "\u1E61":"{\\.s}", // LATIN SMALL LETTER S WITH DOT ABOVE + "\u1E62":"{\\d S}", // LATIN CAPITAL LETTER S WITH DOT BELOW + "\u1E63":"{\\d s}", // LATIN SMALL LETTER S WITH DOT BELOW + "\u1E6A":"{\\.T}", // LATIN CAPITAL LETTER T WITH DOT ABOVE + "\u1E6B":"{\\.t}", // LATIN SMALL LETTER T WITH DOT ABOVE + "\u1E6C":"{\\d T}", // LATIN CAPITAL LETTER T WITH DOT BELOW + "\u1E6D":"{\\d t}", // LATIN SMALL LETTER T WITH DOT BELOW + "\u1E6E":"{\\b T}", // LATIN CAPITAL LETTER T WITH LINE BELOW + "\u1E6F":"{\\b t}", // LATIN SMALL LETTER T WITH LINE BELOW + "\u1E7C":"{\\~V}", // LATIN CAPITAL LETTER V WITH TILDE + "\u1E7D":"{\\~v}", // LATIN SMALL LETTER V WITH TILDE + "\u1E7E":"{\\d V}", // LATIN CAPITAL LETTER V WITH DOT BELOW + "\u1E7F":"{\\d v}", // LATIN SMALL LETTER V WITH DOT BELOW + "\u1E80":"{\\`W}", // LATIN CAPITAL LETTER W WITH GRAVE + "\u1E81":"{\\`w}", // LATIN SMALL LETTER W WITH GRAVE + "\u1E82":"{\\'W}", // LATIN CAPITAL LETTER W WITH ACUTE + "\u1E83":"{\\'w}", // LATIN SMALL LETTER W WITH ACUTE + "\u1E84":"{\\\"W}", // LATIN CAPITAL LETTER W WITH DIAERESIS + "\u1E85":"{\\\"w}", // LATIN SMALL LETTER W WITH DIAERESIS + "\u1E86":"{\\.W}", // LATIN CAPITAL LETTER W WITH DOT ABOVE + "\u1E87":"{\\.w}", // LATIN SMALL LETTER W WITH DOT ABOVE + "\u1E88":"{\\d W}", // LATIN CAPITAL LETTER W WITH DOT BELOW + "\u1E89":"{\\d w}", // LATIN SMALL LETTER W WITH DOT BELOW + "\u1E8A":"{\\.X}", // LATIN CAPITAL LETTER X WITH DOT ABOVE + "\u1E8B":"{\\.x}", // LATIN SMALL LETTER X WITH DOT ABOVE + "\u1E8C":"{\\\"X}", // LATIN CAPITAL LETTER X WITH DIAERESIS + "\u1E8D":"{\\\"x}", // LATIN SMALL LETTER X WITH DIAERESIS + "\u1E8E":"{\\.Y}", // LATIN CAPITAL LETTER Y WITH DOT ABOVE + "\u1E8F":"{\\.y}", // LATIN SMALL LETTER Y WITH DOT ABOVE + "\u1E90":"{\\^Z}", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + "\u1E91":"{\\^z}", // LATIN SMALL LETTER Z WITH CIRCUMFLEX + "\u1E92":"{\\d Z}", // LATIN CAPITAL LETTER Z WITH DOT BELOW + "\u1E93":"{\\d z}", // LATIN SMALL LETTER Z WITH DOT BELOW + "\u1E94":"{\\b Z}", // LATIN CAPITAL LETTER Z WITH LINE BELOW + "\u1E95":"{\\b z}", // LATIN SMALL LETTER Z WITH LINE BELOW + "\u1E96":"{\\b h}", // LATIN SMALL LETTER H WITH LINE BELOW + "\u1E97":"{\\\"t}", // LATIN SMALL LETTER T WITH DIAERESIS + "\u1EA0":"{\\d A}", // LATIN CAPITAL LETTER A WITH DOT BELOW + "\u1EA1":"{\\d a}", // LATIN SMALL LETTER A WITH DOT BELOW + "\u1EB8":"{\\d E}", // LATIN CAPITAL LETTER E WITH DOT BELOW + "\u1EB9":"{\\d e}", // LATIN SMALL LETTER E WITH DOT BELOW + "\u1EBC":"{\\~E}", // LATIN CAPITAL LETTER E WITH TILDE + "\u1EBD":"{\\~e}", // LATIN SMALL LETTER E WITH TILDE + "\u1ECA":"{\\d I}", // LATIN CAPITAL LETTER I WITH DOT BELOW + "\u1ECB":"{\\d i}", // LATIN SMALL LETTER I WITH DOT BELOW + "\u1ECC":"{\\d O}", // LATIN CAPITAL LETTER O WITH DOT BELOW + "\u1ECD":"{\\d o}", // LATIN SMALL LETTER O WITH DOT BELOW + "\u1EE4":"{\\d U}", // LATIN CAPITAL LETTER U WITH DOT BELOW + "\u1EE5":"{\\d u}", // LATIN SMALL LETTER U WITH DOT BELOW + "\u1EF2":"{\\`Y}", // LATIN CAPITAL LETTER Y WITH GRAVE + "\u1EF3":"{\\`y}", // LATIN SMALL LETTER Y WITH GRAVE + "\u1EF4":"{\\d Y}", // LATIN CAPITAL LETTER Y WITH DOT BELOW + "\u1EF5":"{\\d y}", // LATIN SMALL LETTER Y WITH DOT BELOW + "\u1EF8":"{\\~Y}", // LATIN CAPITAL LETTER Y WITH TILDE + "\u1EF9":"{\\~y}" // LATIN SMALL LETTER Y WITH TILDE +}; + +/* unfortunately the mapping isn't reversible - hence this second table - sigh! */ +var reversemappingTable = { + "\\url" : "", // strip 'url' + "\\href" : "", // strip 'href' + "{\\textexclamdown}" : "\u00A1", // INVERTED EXCLAMATION MARK + "{\\textcent}" : "\u00A2", // CENT SIGN + "{\\textsterling}" : "\u00A3", // POUND SIGN + "{\\textyen}" : "\u00A5", // YEN SIGN + "{\\textbrokenbar}" : "\u00A6", // BROKEN BAR + "{\\textsection}" : "\u00A7", // SECTION SIGN + "{\\textasciidieresis}" : "\u00A8", // DIAERESIS + "{\\textcopyright}" : "\u00A9", // COPYRIGHT SIGN + "{\\textordfeminine}" : "\u00AA", // FEMININE ORDINAL INDICATOR + "{\\guillemotleft}" : "\u00AB", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + "{\\textlnot}" : "\u00AC", // NOT SIGN + "{\\textregistered}" : "\u00AE", // REGISTERED SIGN + "{\\textasciimacron}" : "\u00AF", // MACRON + "{\\textdegree}" : "\u00B0", // DEGREE SIGN + "{\\textpm}" : "\u00B1", // PLUS-MINUS SIGN + "{\\texttwosuperior}" : "\u00B2", // SUPERSCRIPT TWO + "{\\textthreesuperior}" : "\u00B3", // SUPERSCRIPT THREE + "{\\textasciiacute}" : "\u00B4", // ACUTE ACCENT + "{\\textmu}" : "\u00B5", // MICRO SIGN + "{\\textparagraph}" : "\u00B6", // PILCROW SIGN + "{\\textperiodcentered}" : "\u00B7", // MIDDLE DOT + "{\\c\\ }" : "\u00B8", // CEDILLA + "{\\textonesuperior}" : "\u00B9", // SUPERSCRIPT ONE + "{\\textordmasculine}" : "\u00BA", // MASCULINE ORDINAL INDICATOR + "{\\guillemotright}" : "\u00BB", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + "{\\textonequarter}" : "\u00BC", // VULGAR FRACTION ONE QUARTER + "{\\textonehalf}" : "\u00BD", // VULGAR FRACTION ONE HALF + "{\\textthreequarters}" : "\u00BE", // VULGAR FRACTION THREE QUARTERS + "{\\textquestiondown}" : "\u00BF", // INVERTED QUESTION MARK + "{\\AE}" : "\u00C6", // LATIN CAPITAL LETTER AE + "{\\DH}" : "\u00D0", // LATIN CAPITAL LETTER ETH + "{\\texttimes}" : "\u00D7", // MULTIPLICATION SIGN + "{\\O}" : "\u00D8", // LATIN SMALL LETTER O WITH STROKE + "{\\TH}" : "\u00DE", // LATIN CAPITAL LETTER THORN + "{\\ss}" : "\u00DF", // LATIN SMALL LETTER SHARP S + "{\\ae}" : "\u00E6", // LATIN SMALL LETTER AE + "{\\dh}" : "\u00F0", // LATIN SMALL LETTER ETH + "{\\textdiv}" : "\u00F7", // DIVISION SIGN + "{\\o}" : "\u00F8", // LATIN SMALL LETTER O WITH STROKE + "{\\th}" : "\u00FE", // LATIN SMALL LETTER THORN + "{\\i}" : "\u0131", // LATIN SMALL LETTER DOTLESS I + //"'n" : "\u0149", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + "{\\NG}" : "\u014A", // LATIN CAPITAL LETTER ENG + "{\\ng}" : "\u014B", // LATIN SMALL LETTER ENG + "{\\OE}" : "\u0152", // LATIN CAPITAL LIGATURE OE + "{\\oe}" : "\u0153", // LATIN SMALL LIGATURE OE + "{\\textasciicircum}" : "\u02C6", // MODIFIER LETTER CIRCUMFLEX ACCENT +// "\\~{}" : "\u02DC", // SMALL TILDE + "{\\textacutedbl}" : "\u02DD", // DOUBLE ACUTE ACCENT + + //Greek Letters Courtesy of Spartanroc + "$\\Gamma$" : "\u0393", // GREEK Gamma + "$\\Delta$" : "\u0394", // GREEK Delta + "$\\Theta$" : "\u0398", // GREEK Theta + "$\\Lambda$" : "\u039B", // GREEK Lambda + "$\\Xi$" : "\u039E", // GREEK Xi + "$\\Pi$" : "\u03A0", // GREEK Pi + "$\\Sigma$" : "\u03A3", // GREEK Sigma + "$\\Phi$" : "\u03A6", // GREEK Phi + "$\\Psi$" : "\u03A8", // GREEK Psi + "$\\Omega$" : "\u03A9", // GREEK Omega + "$\\alpha$" : "\u03B1", // GREEK alpha + "$\\beta$" : "\u03B2", // GREEK beta + "$\\gamma$" : "\u03B3", // GREEK gamma + "$\\delta$" : "\u03B4", // GREEK delta + "$\\varepsilon$": "\u03B5", // GREEK var-epsilon + "$\\zeta$" : "\u03B6", // GREEK zeta + "$\\eta$" : "\u03B7", // GREEK eta + "$\\theta$" : "\u03B8", // GREEK theta + "$\\iota$" : "\u03B9", // GREEK iota + "$\\kappa$" : "\u03BA", // GREEK kappa + "$\\lambda$" : "\u03BB", // GREEK lambda + "$\\mu$" : "\u03BC", // GREEK mu + "$\\nu$" : "\u03BD", // GREEK nu + "$\\xi$" : "\u03BE", // GREEK xi + "$\\pi$" : "\u03C0", // GREEK pi + "$\\rho$" : "\u03C1", // GREEK rho + "$\\varsigma$" : "\u03C2", // GREEK var-sigma + "$\\sigma$" : "\u03C3", // GREEK sigma + "$\\tau$" : "\u03C4", // GREEK tau + "$\\upsilon$" : "\u03C5", // GREEK upsilon + "$\\varphi$" : "\u03C6", // GREEK var-phi + "$\\chi$" : "\u03C7", // GREEK chi + "$\\psi$" : "\u03C8", // GREEK psi + "$\\omega$" : "\u03C9", // GREEK omega + "$\\vartheta$" : "\u03D1", // GREEK var-theta + "$\\Upsilon$" : "\u03D2", // GREEK Upsilon + "$\\phi$" : "\u03D5", // GREEK phi + "$\\varpi$" : "\u03D6", // GREEK var-pi + "$\\varrho$" : "\u03F1", // GREEK var-rho + "$\\epsilon$" : "\u03F5", // GREEK epsilon + //Greek letters end + "{\\textendash}" : "\u2013", // EN DASH + "{\\textemdash}" : "\u2014", // EM DASH + "---" : "\u2014", // EM DASH + "--" : "\u2013", // EN DASH + "{\\textbardbl}" : "\u2016", // DOUBLE VERTICAL LINE + "{\\textunderscore}" : "\u2017", // DOUBLE LOW LINE + "{\\textquoteleft}" : "\u2018", // LEFT SINGLE QUOTATION MARK + "{\\textquoteright}" : "\u2019", // RIGHT SINGLE QUOTATION MARK + "{\\quotesinglbase}" : "\u201A", // SINGLE LOW-9 QUOTATION MARK + "{\\textquotedblleft}" : "\u201C", // LEFT DOUBLE QUOTATION MARK + "{\\textquotedblright}" : "\u201D", // RIGHT DOUBLE QUOTATION MARK + "{\\quotedblbase}" : "\u201E", // DOUBLE LOW-9 QUOTATION MARK +// "{\\quotedblbase}" : "\u201F", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK + "{\\textdagger}" : "\u2020", // DAGGER + "{\\textdaggerdbl}" : "\u2021", // DOUBLE DAGGER + "{\\textbullet}" : "\u2022", // BULLET + "{\\textellipsis}" : "\u2026", // HORIZONTAL ELLIPSIS + "{\\textperthousand}" : "\u2030", // PER MILLE SIGN + "'''" : "\u2034", // TRIPLE PRIME + "''" : "\u201D", // RIGHT DOUBLE QUOTATION MARK (could be a double prime) + "``" : "\u201C", // LEFT DOUBLE QUOTATION MARK (could be a reversed double prime) + "```" : "\u2037", // REVERSED TRIPLE PRIME + "{\\guilsinglleft}" : "\u2039", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK + "{\\guilsinglright}" : "\u203A", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + "!!" : "\u203C", // DOUBLE EXCLAMATION MARK + "{\\textfractionsolidus}" : "\u2044", // FRACTION SLASH + "?!" : "\u2048", // QUESTION EXCLAMATION MARK + "!?" : "\u2049", // EXCLAMATION QUESTION MARK + "$^{0}$" : "\u2070", // SUPERSCRIPT ZERO + "$^{4}$" : "\u2074", // SUPERSCRIPT FOUR + "$^{5}$" : "\u2075", // SUPERSCRIPT FIVE + "$^{6}$" : "\u2076", // SUPERSCRIPT SIX + "$^{7}$" : "\u2077", // SUPERSCRIPT SEVEN + "$^{8}$" : "\u2078", // SUPERSCRIPT EIGHT + "$^{9}$" : "\u2079", // SUPERSCRIPT NINE + "$^{+}$" : "\u207A", // SUPERSCRIPT PLUS SIGN + "$^{-}$" : "\u207B", // SUPERSCRIPT MINUS + "$^{=}$" : "\u207C", // SUPERSCRIPT EQUALS SIGN + "$^{(}$" : "\u207D", // SUPERSCRIPT LEFT PARENTHESIS + "$^{)}$" : "\u207E", // SUPERSCRIPT RIGHT PARENTHESIS + "$^{n}$" : "\u207F", // SUPERSCRIPT LATIN SMALL LETTER N + "$_{0}$" : "\u2080", // SUBSCRIPT ZERO + "$_{1}$" : "\u2081", // SUBSCRIPT ONE + "$_{2}$" : "\u2082", // SUBSCRIPT TWO + "$_{3}$" : "\u2083", // SUBSCRIPT THREE + "$_{4}$" : "\u2084", // SUBSCRIPT FOUR + "$_{5}$" : "\u2085", // SUBSCRIPT FIVE + "$_{6}$" : "\u2086", // SUBSCRIPT SIX + "$_{7}$" : "\u2087", // SUBSCRIPT SEVEN + "$_{8}$" : "\u2088", // SUBSCRIPT EIGHT + "$_{9}$" : "\u2089", // SUBSCRIPT NINE + "$_{+}$" : "\u208A", // SUBSCRIPT PLUS SIGN + "$_{-}$" : "\u208B", // SUBSCRIPT MINUS + "$_{=}$" : "\u208C", // SUBSCRIPT EQUALS SIGN + "$_{(}$" : "\u208D", // SUBSCRIPT LEFT PARENTHESIS + "$_{)}$" : "\u208E", // SUBSCRIPT RIGHT PARENTHESIS + "{\\texteuro}" : "\u20AC", // EURO SIGN + //"a/c" : "\u2100", // ACCOUNT OF + //"a/s" : "\u2101", // ADDRESSED TO THE SUBJECT + "{\\textcelsius}" : "\u2103", // DEGREE CELSIUS + //"c/o" : "\u2105", // CARE OF + //"c/u" : "\u2106", // CADA UNA + "{\\textnumero}" : "\u2116", // NUMERO SIGN + "{\\textcircledP}" : "\u2117", // SOUND RECORDING COPYRIGHT + "{\\textservicemark}" : "\u2120", // SERVICE MARK + "{TEL}" : "\u2121", // TELEPHONE SIGN + "{\\texttrademark}" : "\u2122", // TRADE MARK SIGN + "{\\textohm}" : "\u2126", // OHM SIGN + "{\\textestimated}" : "\u212E", // ESTIMATED SYMBOL + + /*" 1/3" : "\u2153", // VULGAR FRACTION ONE THIRD + " 2/3" : "\u2154", // VULGAR FRACTION TWO THIRDS + " 1/5" : "\u2155", // VULGAR FRACTION ONE FIFTH + " 2/5" : "\u2156", // VULGAR FRACTION TWO FIFTHS + " 3/5" : "\u2157", // VULGAR FRACTION THREE FIFTHS + " 4/5" : "\u2158", // VULGAR FRACTION FOUR FIFTHS + " 1/6" : "\u2159", // VULGAR FRACTION ONE SIXTH + " 5/6" : "\u215A", // VULGAR FRACTION FIVE SIXTHS + " 1/8" : "\u215B", // VULGAR FRACTION ONE EIGHTH + " 3/8" : "\u215C", // VULGAR FRACTION THREE EIGHTHS + " 5/8" : "\u215D", // VULGAR FRACTION FIVE EIGHTHS + " 7/8" : "\u215E", // VULGAR FRACTION SEVEN EIGHTHS + " 1/" : "\u215F", // FRACTION NUMERATOR ONE */ + + "{\\textleftarrow}" : "\u2190", // LEFTWARDS ARROW + "{\\textuparrow}" : "\u2191", // UPWARDS ARROW + "{\\textrightarrow}" : "\u2192", // RIGHTWARDS ARROW + "{\\textdownarrow}" : "\u2193", // DOWNWARDS ARROW + /*"<->" : "\u2194", // LEFT RIGHT ARROW + "<=" : "\u21D0", // LEFTWARDS DOUBLE ARROW + "=>" : "\u21D2", // RIGHTWARDS DOUBLE ARROW + "<=>" : "\u21D4", // LEFT RIGHT DOUBLE ARROW */ + "$\\infty$" : "\u221E", // INFINITY + + /*"||" : "\u2225", // PARALLEL TO + "/=" : "\u2260", // NOT EQUAL TO + "<=" : "\u2264", // LESS-THAN OR EQUAL TO + ">=" : "\u2265", // GREATER-THAN OR EQUAL TO + "<<" : "\u226A", // MUCH LESS-THAN + ">>" : "\u226B", // MUCH GREATER-THAN + "(+)" : "\u2295", // CIRCLED PLUS + "(-)" : "\u2296", // CIRCLED MINUS + "(x)" : "\u2297", // CIRCLED TIMES + "(/)" : "\u2298", // CIRCLED DIVISION SLASH + "|-" : "\u22A2", // RIGHT TACK + "-|" : "\u22A3", // LEFT TACK + "|-" : "\u22A6", // ASSERTION + "|=" : "\u22A7", // MODELS + "|=" : "\u22A8", // TRUE + "||-" : "\u22A9", // FORCES */ + + "$\\#$" : "\u22D5", // EQUAL AND PARALLEL TO + //"<<<" : "\u22D8", // VERY MUCH LESS-THAN + //">>>" : "\u22D9", // VERY MUCH GREATER-THAN + "{\\textlangle}" : "\u2329", // LEFT-POINTING ANGLE BRACKET + "{\\textrangle}" : "\u232A", // RIGHT-POINTING ANGLE BRACKET + "{\\textvisiblespace}" : "\u2423", // OPEN BOX + //"///" : "\u2425", // SYMBOL FOR DELETE FORM TWO + "{\\textopenbullet}" : "\u25E6", // WHITE BULLET + //":-(" : "\u2639", // WHITE FROWNING FACE + //":-)" : "\u263A", // WHITE SMILING FACE + //"(-: " : "\u263B", // BLACK SMILING FACE + // "$\\#$" : "\u266F", // MUSIC SHARP SIGN + "$\\%<$" : "\u2701", // UPPER BLADE SCISSORS + /* "$\\%<$" : "\u2702", // BLACK SCISSORS + "$\\%<$" : "\u2703", // LOWER BLADE SCISSORS + "$\\%<$" : "\u2704", // WHITE SCISSORS */ + /* Derived accented characters */ + "{\\`A}" : "\u00C0", // LATIN CAPITAL LETTER A WITH GRAVE + "{\\'A}" : "\u00C1", // LATIN CAPITAL LETTER A WITH ACUTE + "{\\^A}" : "\u00C2", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX + "{\\~A}" : "\u00C3", // LATIN CAPITAL LETTER A WITH TILDE + "{\\\"A}" : "\u00C4", // LATIN CAPITAL LETTER A WITH DIAERESIS + "{\\r A}" : "\u00C5", // LATIN CAPITAL LETTER A WITH RING ABOVE + "{\\c C}" : "\u00C7", // LATIN CAPITAL LETTER C WITH CEDILLA + "{\\`E}" : "\u00C8", // LATIN CAPITAL LETTER E WITH GRAVE + "{\\'E}" : "\u00C9", // LATIN CAPITAL LETTER E WITH ACUTE + "{\\^E}" : "\u00CA", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX + "{\\\"E}" : "\u00CB", // LATIN CAPITAL LETTER E WITH DIAERESIS + "{\\`I}" : "\u00CC", // LATIN CAPITAL LETTER I WITH GRAVE + "{\\'I}" : "\u00CD", // LATIN CAPITAL LETTER I WITH ACUTE + "{\\^I}" : "\u00CE", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX + "{\\\"I}" : "\u00CF", // LATIN CAPITAL LETTER I WITH DIAERESIS + "{\\~N}" : "\u00D1", // LATIN CAPITAL LETTER N WITH TILDE + "{\\`O}" : "\u00D2", // LATIN CAPITAL LETTER O WITH GRAVE + "{\\'O}" : "\u00D3", // LATIN CAPITAL LETTER O WITH ACUTE + "{\\^O}" : "\u00D4", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX + "{\\~O}" : "\u00D5", // LATIN CAPITAL LETTER O WITH TILDE + "{\\\"O}" : "\u00D6", // LATIN CAPITAL LETTER O WITH DIAERESIS + "{\\`U}" : "\u00D9", // LATIN CAPITAL LETTER U WITH GRAVE + "{\\'U}" : "\u00DA", // LATIN CAPITAL LETTER U WITH ACUTE + "{\\^U}" : "\u00DB", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX + "{\\\"U}" : "\u00DC", // LATIN CAPITAL LETTER U WITH DIAERESIS + "{\\'Y}" : "\u00DD", // LATIN CAPITAL LETTER Y WITH ACUTE + "{\\`a}" : "\u00E0", // LATIN SMALL LETTER A WITH GRAVE + "{\\'a}" : "\u00E1", // LATIN SMALL LETTER A WITH ACUTE + "{\\^a}" : "\u00E2", // LATIN SMALL LETTER A WITH CIRCUMFLEX + "{\\~a}" : "\u00E3", // LATIN SMALL LETTER A WITH TILDE + "{\\\"a}" : "\u00E4", // LATIN SMALL LETTER A WITH DIAERESIS + "{\\r a}" : "\u00E5", // LATIN SMALL LETTER A WITH RING ABOVE + "{\\c c}" : "\u00E7", // LATIN SMALL LETTER C WITH CEDILLA + "{\\`e}" : "\u00E8", // LATIN SMALL LETTER E WITH GRAVE + "{\\'e}" : "\u00E9", // LATIN SMALL LETTER E WITH ACUTE + "{\\^e}" : "\u00EA", // LATIN SMALL LETTER E WITH CIRCUMFLEX + "{\\\"e}" : "\u00EB", // LATIN SMALL LETTER E WITH DIAERESIS + "{\\`i}" : "\u00EC", // LATIN SMALL LETTER I WITH GRAVE + "{\\'i}" : "\u00ED", // LATIN SMALL LETTER I WITH ACUTE + "{\\^i}" : "\u00EE", // LATIN SMALL LETTER I WITH CIRCUMFLEX + "{\\\"i}" : "\u00EF", // LATIN SMALL LETTER I WITH DIAERESIS + "{\\~n}" : "\u00F1", // LATIN SMALL LETTER N WITH TILDE + "{\\`o}" : "\u00F2", // LATIN SMALL LETTER O WITH GRAVE + "{\\'o}" : "\u00F3", // LATIN SMALL LETTER O WITH ACUTE + "{\\^o}" : "\u00F4", // LATIN SMALL LETTER O WITH CIRCUMFLEX + "{\\~o}" : "\u00F5", // LATIN SMALL LETTER O WITH TILDE + "{\\\"o}" : "\u00F6", // LATIN SMALL LETTER O WITH DIAERESIS + "{\\`u}" : "\u00F9", // LATIN SMALL LETTER U WITH GRAVE + "{\\'u}" : "\u00FA", // LATIN SMALL LETTER U WITH ACUTE + "{\\^u}" : "\u00FB", // LATIN SMALL LETTER U WITH CIRCUMFLEX + "{\\\"u}" : "\u00FC", // LATIN SMALL LETTER U WITH DIAERESIS + "{\\'y}" : "\u00FD", // LATIN SMALL LETTER Y WITH ACUTE + "{\\\"y}" : "\u00FF", // LATIN SMALL LETTER Y WITH DIAERESIS + "{\\=A}" : "\u0100", // LATIN CAPITAL LETTER A WITH MACRON + "{\\=a}" : "\u0101", // LATIN SMALL LETTER A WITH MACRON + "{\\u A}" : "\u0102", // LATIN CAPITAL LETTER A WITH BREVE + "{\\u a}" : "\u0103", // LATIN SMALL LETTER A WITH BREVE + "{\\k A}" : "\u0104", // LATIN CAPITAL LETTER A WITH OGONEK + "{\\k a}" : "\u0105", // LATIN SMALL LETTER A WITH OGONEK + "{\\'C}" : "\u0106", // LATIN CAPITAL LETTER C WITH ACUTE + "{\\'c}" : "\u0107", // LATIN SMALL LETTER C WITH ACUTE + "{\\^C}" : "\u0108", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX + "{\\^c}" : "\u0109", // LATIN SMALL LETTER C WITH CIRCUMFLEX + "{\\.C}" : "\u010A", // LATIN CAPITAL LETTER C WITH DOT ABOVE + "{\\.c}" : "\u010B", // LATIN SMALL LETTER C WITH DOT ABOVE + "{\\v C}" : "\u010C", // LATIN CAPITAL LETTER C WITH CARON + "{\\v c}" : "\u010D", // LATIN SMALL LETTER C WITH CARON + "{\\v D}" : "\u010E", // LATIN CAPITAL LETTER D WITH CARON + "{\\v d}" : "\u010F", // LATIN SMALL LETTER D WITH CARON + "{\\=E}" : "\u0112", // LATIN CAPITAL LETTER E WITH MACRON + "{\\=e}" : "\u0113", // LATIN SMALL LETTER E WITH MACRON + "{\\u E}" : "\u0114", // LATIN CAPITAL LETTER E WITH BREVE + "{\\u e}" : "\u0115", // LATIN SMALL LETTER E WITH BREVE + "{\\.E}" : "\u0116", // LATIN CAPITAL LETTER E WITH DOT ABOVE + "{\\.e}" : "\u0117", // LATIN SMALL LETTER E WITH DOT ABOVE + "{\\k E}" : "\u0118", // LATIN CAPITAL LETTER E WITH OGONEK + "{\\k e}" : "\u0119", // LATIN SMALL LETTER E WITH OGONEK + "{\\v E}" : "\u011A", // LATIN CAPITAL LETTER E WITH CARON + "{\\v e}" : "\u011B", // LATIN SMALL LETTER E WITH CARON + "{\\^G}" : "\u011C", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX + "{\\^g}" : "\u011D", // LATIN SMALL LETTER G WITH CIRCUMFLEX + "{\\u G}" : "\u011E", // LATIN CAPITAL LETTER G WITH BREVE + "{\\u g}" : "\u011F", // LATIN SMALL LETTER G WITH BREVE + "{\\.G}" : "\u0120", // LATIN CAPITAL LETTER G WITH DOT ABOVE + "{\\.g}" : "\u0121", // LATIN SMALL LETTER G WITH DOT ABOVE + "{\\c G}" : "\u0122", // LATIN CAPITAL LETTER G WITH CEDILLA + "{\\c g}" : "\u0123", // LATIN SMALL LETTER G WITH CEDILLA + "{\\^H}" : "\u0124", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX + "{\\^h}" : "\u0125", // LATIN SMALL LETTER H WITH CIRCUMFLEX + "{\\~I}" : "\u0128", // LATIN CAPITAL LETTER I WITH TILDE + "{\\~i}" : "\u0129", // LATIN SMALL LETTER I WITH TILDE + "{\\=I}" : "\u012A", // LATIN CAPITAL LETTER I WITH MACRON + "{\\=i}" : "\u012B", // LATIN SMALL LETTER I WITH MACRON + "{\\=\\i}" : "\u012B", // LATIN SMALL LETTER I WITH MACRON + "{\\u I}" : "\u012C", // LATIN CAPITAL LETTER I WITH BREVE + "{\\u i}" : "\u012D", // LATIN SMALL LETTER I WITH BREVE + "{\\k I}" : "\u012E", // LATIN CAPITAL LETTER I WITH OGONEK + "{\\k i}" : "\u012F", // LATIN SMALL LETTER I WITH OGONEK + "{\\.I}" : "\u0130", // LATIN CAPITAL LETTER I WITH DOT ABOVE + "{\\^J}" : "\u0134", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX + "{\\^j}" : "\u0135", // LATIN SMALL LETTER J WITH CIRCUMFLEX + "{\\c K}" : "\u0136", // LATIN CAPITAL LETTER K WITH CEDILLA + "{\\c k}" : "\u0137", // LATIN SMALL LETTER K WITH CEDILLA + "{\\'L}" : "\u0139", // LATIN CAPITAL LETTER L WITH ACUTE + "{\\'l}" : "\u013A", // LATIN SMALL LETTER L WITH ACUTE + "{\\c L}" : "\u013B", // LATIN CAPITAL LETTER L WITH CEDILLA + "{\\c l}" : "\u013C", // LATIN SMALL LETTER L WITH CEDILLA + "{\\v L}" : "\u013D", // LATIN CAPITAL LETTER L WITH CARON + "{\\v l}" : "\u013E", // LATIN SMALL LETTER L WITH CARON + "{\\L }" : "\u0141", //LATIN CAPITAL LETTER L WITH STROKE + "{\\l }" : "\u0142", //LATIN SMALL LETTER L WITH STROKE + "{\\'N}" : "\u0143", // LATIN CAPITAL LETTER N WITH ACUTE + "{\\'n}" : "\u0144", // LATIN SMALL LETTER N WITH ACUTE + "{\\c N}" : "\u0145", // LATIN CAPITAL LETTER N WITH CEDILLA + "{\\c n}" : "\u0146", // LATIN SMALL LETTER N WITH CEDILLA + "{\\v N}" : "\u0147", // LATIN CAPITAL LETTER N WITH CARON + "{\\v n}" : "\u0148", // LATIN SMALL LETTER N WITH CARON + "{\\=O}" : "\u014C", // LATIN CAPITAL LETTER O WITH MACRON + "{\\=o}" : "\u014D", // LATIN SMALL LETTER O WITH MACRON + "{\\u O}" : "\u014E", // LATIN CAPITAL LETTER O WITH BREVE + "{\\u o}" : "\u014F", // LATIN SMALL LETTER O WITH BREVE + "{\\H O}" : "\u0150", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + "{\\H o}" : "\u0151", // LATIN SMALL LETTER O WITH DOUBLE ACUTE + "{\\'R}" : "\u0154", // LATIN CAPITAL LETTER R WITH ACUTE + "{\\'r}" : "\u0155", // LATIN SMALL LETTER R WITH ACUTE + "{\\c R}" : "\u0156", // LATIN CAPITAL LETTER R WITH CEDILLA + "{\\c r}" : "\u0157", // LATIN SMALL LETTER R WITH CEDILLA + "{\\v R}" : "\u0158", // LATIN CAPITAL LETTER R WITH CARON + "{\\v r}" : "\u0159", // LATIN SMALL LETTER R WITH CARON + "{\\'S}" : "\u015A", // LATIN CAPITAL LETTER S WITH ACUTE + "{\\'s}" : "\u015B", // LATIN SMALL LETTER S WITH ACUTE + "{\\^S}" : "\u015C", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX + "{\\^s}" : "\u015D", // LATIN SMALL LETTER S WITH CIRCUMFLEX + "{\\c S}" : "\u015E", // LATIN CAPITAL LETTER S WITH CEDILLA + "{\\c s}" : "\u015F", // LATIN SMALL LETTER S WITH CEDILLA + "{\\v S}" : "\u0160", // LATIN CAPITAL LETTER S WITH CARON + "{\\v s}" : "\u0161", // LATIN SMALL LETTER S WITH CARON + "{\\c T}" : "\u0162", // LATIN CAPITAL LETTER T WITH CEDILLA + "{\\c t}" : "\u0163", // LATIN SMALL LETTER T WITH CEDILLA + "{\\v T}" : "\u0164", // LATIN CAPITAL LETTER T WITH CARON + "{\\v t}" : "\u0165", // LATIN SMALL LETTER T WITH CARON + "{\\~U}" : "\u0168", // LATIN CAPITAL LETTER U WITH TILDE + "{\\~u}" : "\u0169", // LATIN SMALL LETTER U WITH TILDE + "{\\=U}" : "\u016A", // LATIN CAPITAL LETTER U WITH MACRON + "{\\=u}" : "\u016B", // LATIN SMALL LETTER U WITH MACRON + "{\\u U}" : "\u016C", // LATIN CAPITAL LETTER U WITH BREVE + "{\\u u}" : "\u016D", // LATIN SMALL LETTER U WITH BREVE + "{\\H U}" : "\u0170", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + "{\\H u}" : "\u0171", // LATIN SMALL LETTER U WITH DOUBLE ACUTE + "{\\k U}" : "\u0172", // LATIN CAPITAL LETTER U WITH OGONEK + "{\\k u}" : "\u0173", // LATIN SMALL LETTER U WITH OGONEK + "{\\^W}" : "\u0174", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX + "{\\^w}" : "\u0175", // LATIN SMALL LETTER W WITH CIRCUMFLEX + "{\\^Y}" : "\u0176", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + "{\\^y}" : "\u0177", // LATIN SMALL LETTER Y WITH CIRCUMFLEX + "{\\\"Y}" : "\u0178", // LATIN CAPITAL LETTER Y WITH DIAERESIS + "{\\'Z}" : "\u0179", // LATIN CAPITAL LETTER Z WITH ACUTE + "{\\'z}" : "\u017A", // LATIN SMALL LETTER Z WITH ACUTE + "{\\.Z}" : "\u017B", // LATIN CAPITAL LETTER Z WITH DOT ABOVE + "{\\.z}" : "\u017C", // LATIN SMALL LETTER Z WITH DOT ABOVE + "{\\v Z}" : "\u017D", // LATIN CAPITAL LETTER Z WITH CARON + "{\\v z}" : "\u017E", // LATIN SMALL LETTER Z WITH CARON + "{\\v A}" : "\u01CD", // LATIN CAPITAL LETTER A WITH CARON + "{\\v a}" : "\u01CE", // LATIN SMALL LETTER A WITH CARON + "{\\v I}" : "\u01CF", // LATIN CAPITAL LETTER I WITH CARON + "{\\v i}" : "\u01D0", // LATIN SMALL LETTER I WITH CARON + "{\\v O}" : "\u01D1", // LATIN CAPITAL LETTER O WITH CARON + "{\\v o}" : "\u01D2", // LATIN SMALL LETTER O WITH CARON + "{\\v U}" : "\u01D3", // LATIN CAPITAL LETTER U WITH CARON + "{\\v u}" : "\u01D4", // LATIN SMALL LETTER U WITH CARON + "{\\v G}" : "\u01E6", // LATIN CAPITAL LETTER G WITH CARON + "{\\v g}" : "\u01E7", // LATIN SMALL LETTER G WITH CARON + "{\\v K}" : "\u01E8", // LATIN CAPITAL LETTER K WITH CARON + "{\\v k}" : "\u01E9", // LATIN SMALL LETTER K WITH CARON + "{\\k O}" : "\u01EA", // LATIN CAPITAL LETTER O WITH OGONEK + "{\\k o}" : "\u01EB", // LATIN SMALL LETTER O WITH OGONEK + "{\\v j}" : "\u01F0", // LATIN SMALL LETTER J WITH CARON + "{\\'G}" : "\u01F4", // LATIN CAPITAL LETTER G WITH ACUTE + "{\\'g}" : "\u01F5", // LATIN SMALL LETTER G WITH ACUTE + "{\\.B}" : "\u1E02", // LATIN CAPITAL LETTER B WITH DOT ABOVE + "{\\.b}" : "\u1E03", // LATIN SMALL LETTER B WITH DOT ABOVE + "{\\d B}" : "\u1E04", // LATIN CAPITAL LETTER B WITH DOT BELOW + "{\\d b}" : "\u1E05", // LATIN SMALL LETTER B WITH DOT BELOW + "{\\b B}" : "\u1E06", // LATIN CAPITAL LETTER B WITH LINE BELOW + "{\\b b}" : "\u1E07", // LATIN SMALL LETTER B WITH LINE BELOW + "{\\.D}" : "\u1E0A", // LATIN CAPITAL LETTER D WITH DOT ABOVE + "{\\.d}" : "\u1E0B", // LATIN SMALL LETTER D WITH DOT ABOVE + "{\\d D}" : "\u1E0C", // LATIN CAPITAL LETTER D WITH DOT BELOW + "{\\d d}" : "\u1E0D", // LATIN SMALL LETTER D WITH DOT BELOW + "{\\b D}" : "\u1E0E", // LATIN CAPITAL LETTER D WITH LINE BELOW + "{\\b d}" : "\u1E0F", // LATIN SMALL LETTER D WITH LINE BELOW + "{\\c D}" : "\u1E10", // LATIN CAPITAL LETTER D WITH CEDILLA + "{\\c d}" : "\u1E11", // LATIN SMALL LETTER D WITH CEDILLA + "{\\.F}" : "\u1E1E", // LATIN CAPITAL LETTER F WITH DOT ABOVE + "{\\.f}" : "\u1E1F", // LATIN SMALL LETTER F WITH DOT ABOVE + "{\\=G}" : "\u1E20", // LATIN CAPITAL LETTER G WITH MACRON + "{\\=g}" : "\u1E21", // LATIN SMALL LETTER G WITH MACRON + "{\\.H}" : "\u1E22", // LATIN CAPITAL LETTER H WITH DOT ABOVE + "{\\.h}" : "\u1E23", // LATIN SMALL LETTER H WITH DOT ABOVE + "{\\d H}" : "\u1E24", // LATIN CAPITAL LETTER H WITH DOT BELOW + "{\\d h}" : "\u1E25", // LATIN SMALL LETTER H WITH DOT BELOW + "{\\\"H}" : "\u1E26", // LATIN CAPITAL LETTER H WITH DIAERESIS + "{\\\"h}" : "\u1E27", // LATIN SMALL LETTER H WITH DIAERESIS + "{\\c H}" : "\u1E28", // LATIN CAPITAL LETTER H WITH CEDILLA + "{\\c h}" : "\u1E29", // LATIN SMALL LETTER H WITH CEDILLA + "{\\'K}" : "\u1E30", // LATIN CAPITAL LETTER K WITH ACUTE + "{\\'k}" : "\u1E31", // LATIN SMALL LETTER K WITH ACUTE + "{\\d K}" : "\u1E32", // LATIN CAPITAL LETTER K WITH DOT BELOW + "{\\d k}" : "\u1E33", // LATIN SMALL LETTER K WITH DOT BELOW + "{\\b K}" : "\u1E34", // LATIN CAPITAL LETTER K WITH LINE BELOW + "{\\b k}" : "\u1E35", // LATIN SMALL LETTER K WITH LINE BELOW + "{\\d L}" : "\u1E36", // LATIN CAPITAL LETTER L WITH DOT BELOW + "{\\d l}" : "\u1E37", // LATIN SMALL LETTER L WITH DOT BELOW + "{\\b L}" : "\u1E3A", // LATIN CAPITAL LETTER L WITH LINE BELOW + "{\\b l}" : "\u1E3B", // LATIN SMALL LETTER L WITH LINE BELOW + "{\\'M}" : "\u1E3E", // LATIN CAPITAL LETTER M WITH ACUTE + "{\\'m}" : "\u1E3F", // LATIN SMALL LETTER M WITH ACUTE + "{\\.M}" : "\u1E40", // LATIN CAPITAL LETTER M WITH DOT ABOVE + "{\\.m}" : "\u1E41", // LATIN SMALL LETTER M WITH DOT ABOVE + "{\\d M}" : "\u1E42", // LATIN CAPITAL LETTER M WITH DOT BELOW + "{\\d m}" : "\u1E43", // LATIN SMALL LETTER M WITH DOT BELOW + "{\\.N}" : "\u1E44", // LATIN CAPITAL LETTER N WITH DOT ABOVE + "{\\.n}" : "\u1E45", // LATIN SMALL LETTER N WITH DOT ABOVE + "{\\d N}" : "\u1E46", // LATIN CAPITAL LETTER N WITH DOT BELOW + "{\\d n}" : "\u1E47", // LATIN SMALL LETTER N WITH DOT BELOW + "{\\b N}" : "\u1E48", // LATIN CAPITAL LETTER N WITH LINE BELOW + "{\\b n}" : "\u1E49", // LATIN SMALL LETTER N WITH LINE BELOW + "{\\'P}" : "\u1E54", // LATIN CAPITAL LETTER P WITH ACUTE + "{\\'p}" : "\u1E55", // LATIN SMALL LETTER P WITH ACUTE + "{\\.P}" : "\u1E56", // LATIN CAPITAL LETTER P WITH DOT ABOVE + "{\\.p}" : "\u1E57", // LATIN SMALL LETTER P WITH DOT ABOVE + "{\\.R}" : "\u1E58", // LATIN CAPITAL LETTER R WITH DOT ABOVE + "{\\.r}" : "\u1E59", // LATIN SMALL LETTER R WITH DOT ABOVE + "{\\d R}" : "\u1E5A", // LATIN CAPITAL LETTER R WITH DOT BELOW + "{\\d r}" : "\u1E5B", // LATIN SMALL LETTER R WITH DOT BELOW + "{\\b R}" : "\u1E5E", // LATIN CAPITAL LETTER R WITH LINE BELOW + "{\\b r}" : "\u1E5F", // LATIN SMALL LETTER R WITH LINE BELOW + "{\\.S}" : "\u1E60", // LATIN CAPITAL LETTER S WITH DOT ABOVE + "{\\.s}" : "\u1E61", // LATIN SMALL LETTER S WITH DOT ABOVE + "{\\d S}" : "\u1E62", // LATIN CAPITAL LETTER S WITH DOT BELOW + "{\\d s}" : "\u1E63", // LATIN SMALL LETTER S WITH DOT BELOW + "{\\.T}" : "\u1E6A", // LATIN CAPITAL LETTER T WITH DOT ABOVE + "{\\.t}" : "\u1E6B", // LATIN SMALL LETTER T WITH DOT ABOVE + "{\\d T}" : "\u1E6C", // LATIN CAPITAL LETTER T WITH DOT BELOW + "{\\d t}" : "\u1E6D", // LATIN SMALL LETTER T WITH DOT BELOW + "{\\b T}" : "\u1E6E", // LATIN CAPITAL LETTER T WITH LINE BELOW + "{\\b t}" : "\u1E6F", // LATIN SMALL LETTER T WITH LINE BELOW + "{\\~V}" : "\u1E7C", // LATIN CAPITAL LETTER V WITH TILDE + "{\\~v}" : "\u1E7D", // LATIN SMALL LETTER V WITH TILDE + "{\\d V}" : "\u1E7E", // LATIN CAPITAL LETTER V WITH DOT BELOW + "{\\d v}" : "\u1E7F", // LATIN SMALL LETTER V WITH DOT BELOW + "{\\`W}" : "\u1E80", // LATIN CAPITAL LETTER W WITH GRAVE + "{\\`w}" : "\u1E81", // LATIN SMALL LETTER W WITH GRAVE + "{\\'W}" : "\u1E82", // LATIN CAPITAL LETTER W WITH ACUTE + "{\\'w}" : "\u1E83", // LATIN SMALL LETTER W WITH ACUTE + "{\\\"W}" : "\u1E84", // LATIN CAPITAL LETTER W WITH DIAERESIS + "{\\\"w}" : "\u1E85", // LATIN SMALL LETTER W WITH DIAERESIS + "{\\.W}" : "\u1E86", // LATIN CAPITAL LETTER W WITH DOT ABOVE + "{\\.w}" : "\u1E87", // LATIN SMALL LETTER W WITH DOT ABOVE + "{\\d W}" : "\u1E88", // LATIN CAPITAL LETTER W WITH DOT BELOW + "{\\d w}" : "\u1E89", // LATIN SMALL LETTER W WITH DOT BELOW + "{\\.X}" : "\u1E8A", // LATIN CAPITAL LETTER X WITH DOT ABOVE + "{\\.x}" : "\u1E8B", // LATIN SMALL LETTER X WITH DOT ABOVE + "{\\\"X}" : "\u1E8C", // LATIN CAPITAL LETTER X WITH DIAERESIS + "{\\\"x}" : "\u1E8D", // LATIN SMALL LETTER X WITH DIAERESIS + "{\\.Y}" : "\u1E8E", // LATIN CAPITAL LETTER Y WITH DOT ABOVE + "{\\.y}" : "\u1E8F", // LATIN SMALL LETTER Y WITH DOT ABOVE + "{\\^Z}" : "\u1E90", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + "{\\^z}" : "\u1E91", // LATIN SMALL LETTER Z WITH CIRCUMFLEX + "{\\d Z}" : "\u1E92", // LATIN CAPITAL LETTER Z WITH DOT BELOW + "{\\d z}" : "\u1E93", // LATIN SMALL LETTER Z WITH DOT BELOW + "{\\b Z}" : "\u1E94", // LATIN CAPITAL LETTER Z WITH LINE BELOW + "{\\b z}" : "\u1E95", // LATIN SMALL LETTER Z WITH LINE BELOW + "{\\b h}" : "\u1E96", // LATIN SMALL LETTER H WITH LINE BELOW + "{\\\"t}" : "\u1E97", // LATIN SMALL LETTER T WITH DIAERESIS + "{\\d A}" : "\u1EA0", // LATIN CAPITAL LETTER A WITH DOT BELOW + "{\\d a}" : "\u1EA1", // LATIN SMALL LETTER A WITH DOT BELOW + "{\\d E}" : "\u1EB8", // LATIN CAPITAL LETTER E WITH DOT BELOW + "{\\d e}" : "\u1EB9", // LATIN SMALL LETTER E WITH DOT BELOW + "{\\~E}" : "\u1EBC", // LATIN CAPITAL LETTER E WITH TILDE + "{\\~e}" : "\u1EBD", // LATIN SMALL LETTER E WITH TILDE + "{\\d I}" : "\u1ECA", // LATIN CAPITAL LETTER I WITH DOT BELOW + "{\\d i}" : "\u1ECB", // LATIN SMALL LETTER I WITH DOT BELOW + "{\\d O}" : "\u1ECC", // LATIN CAPITAL LETTER O WITH DOT BELOW + "{\\d o}" : "\u1ECD", // LATIN SMALL LETTER O WITH DOT BELOW + "{\\d U}" : "\u1EE4", // LATIN CAPITAL LETTER U WITH DOT BELOW + "{\\d u}" : "\u1EE5", // LATIN SMALL LETTER U WITH DOT BELOW + "{\\`Y}" : "\u1EF2", // LATIN CAPITAL LETTER Y WITH GRAVE + "{\\`y}" : "\u1EF3", // LATIN SMALL LETTER Y WITH GRAVE + "{\\d Y}" : "\u1EF4", // LATIN CAPITAL LETTER Y WITH DOT BELOW + "{\\d y}" : "\u1EF5", // LATIN SMALL LETTER Y WITH DOT BELOW + "{\\~Y}" : "\u1EF8", // LATIN CAPITAL LETTER Y WITH TILDE + "{\\~y}" : "\u1EF9", // LATIN SMALL LETTER Y WITH TILDE + "{\\~}" : "\u223C", // TILDE OPERATOR + "~" : "\u00A0" // NO-BREAK SPACE +};/** BEGIN TEST CASES **/ +var testCases = [ + { + "type": "import", + "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}", + "items": [ + { + "itemType": "journalArticle", + "creators": [ + { + "firstName": "Nancy K", + "lastName": "Adams", + "creatorType": "author" + }, + { + "firstName": "Shanaka L", + "lastName": "DeSilva", + "creatorType": "author" + }, + { + "firstName": "Steven", + "lastName": "Self", + "creatorType": "author" + }, + { + "firstName": "Guido", + "lastName": "Salas", + "creatorType": "author" + }, + { + "firstName": "Steven", + "lastName": "Schubring", + "creatorType": "author" + }, + { + "firstName": "Jason L", + "lastName": "Permenter", + "creatorType": "author" + }, + { + "firstName": "Kendra", + "lastName": "Arbesman", + "creatorType": "author" + } + ], + "notes": [], + "tags": [ + "Vulcanian eruptions", + "breadcrust", + "plinian" + ], + "seeAlso": [], + "attachments": [ + { + "path": "Users/heatherwright/Documents/Scientific Papers/Adams_Huaynaputina.pdf", + "mimeType": "application/pdf", + "title": "Attachment" + } + ], + "itemID": "Adams2001", + "publicationTitle": "Bulletin of Volcanology", + "pages": "493–518", + "title": "The physical volcanology of the 1600 eruption of Huaynaputina, southern Peru", + "volume": "62", + "date": "2001" + } + ] + }, + { + "type": "import", + "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", + "items": [ + { + "itemType": "book", + "creators": [ + { + "firstName": "Milton", + "lastName": "Abramowitz", + "creatorType": "author" + }, + { + "firstName": "Irene A.", + "lastName": "Stegun", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "abramowitz+stegun", + "place": "New York", + "edition": "ninth Dover printing, tenth GPO printing", + "title": "Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables", + "publisher": "Dover", + "date": "1964" + }, + { + "itemType": "book", + "creators": [ + { + "firstName": "Joe", + "lastName": "Torre", + "creatorType": "author" + }, + { + "firstName": "Tom", + "lastName": "Verducci", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "Torre2008", + "ISBN": "0385527403", + "publisher": "Doubleday", + "title": "The Yankee Years", + "date": "2008" + } + ] + }, + { + "type": "import", + "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}", + "items": [ + { + "itemType": "conferencePaper", + "creators": [ + { + "firstName": "First", + "lastName": "Author", + "creatorType": "author" + }, + { + "firstName": "Second", + "lastName": "Author", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "author:06", + "title": "Some publication title", + "pages": "330—331" + }, + { + "itemType": "book", + "creators": [ + { + "firstName": "First", + "lastName": "Editor", + "creatorType": "editor" + }, + { + "firstName": "Second", + "lastName": "Editor", + "creatorType": "editor" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "conference:06", + "title": "Proceedings of the Xth Conference on XYZ", + "date": "October 2006" + } + ] + }, + { + "type": "import", + "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}", + "items": [ + { + "itemType": "book", + "creators": [ + { + "firstName": "Michael, III", + "lastName": "von Hicks", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "hicks2001", + "place": "Palo Alto", + "edition": "1st,", + "ISBN": "0-69-697269-4", + "title": "Design of a Carbon Fiber Composite Grid Structure for the GLAST Spacecraft Using a Novel Manufacturing Technique", + "publisher": "Stanford Press", + "date": "2001" + } + ] + }, + { + "type": "import", + "input": "@article{Oliveira_2009, title={USGS monitoring ecological impacts}, volume={107}, number={29}, journal={Oil & Gas Journal}, author={Oliveira, A}, year={2009}, pages={29}}", + "items": [ + { + "itemType": "journalArticle", + "creators": [ + { + "firstName": "A", + "lastName": "Oliveira", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "Oliveira_2009", + "issue": "29", + "title": "USGS monitoring ecological impacts", + "volume": "107", + "publicationTitle": "Oil & Gas Journal", + "date": "2009", + "pages": "29" + } + ] + }, + { + "type": "import", + "input": "@article{test-ticket1661,\ntitle={non-braking space: ~; accented characters: {\\~n} and \\~{n}; tilde operator: \\~},\n} ", + "items": [ + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "test-ticket1661", + "title": "non-braking space: ; accented characters: ñ and ñ; tilde operator: ∼" + } + ] + }, + { + "type": "import", + "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", + "items": [ + { + "itemType": "journalArticle", + "creators": [ + { + "firstName": "U.", + "lastName": "Fritz", + "creatorType": "author" + }, + { + "firstName": "C.", + "lastName": "Corti", + "creatorType": "author" + }, + { + "firstName": "M.", + "lastName": "Päckert", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "Frit2", + "DOI": "10.1007/s13127-011-0069-8", + "title": "Test of markupconversion: Italics, bold, superscript, subscript, and small caps: Mitochondrial DNA2$ sequences suggest unexpected phylogenetic position of Corso-Sardinian grass snakes (Natrix cetti) and do not support their species status, with notes on phylogeography and subspecies delineation of grass snakes.", + "publicationTitle": "Actes du ème$ Congrès Français d'Acoustique", + "date": "2012", + "volume": "12", + "pages": "71-80" + } + ] + }, + { + "type": "import", + "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}", + "items": [ + { + "itemType": "book", + "creators": [ + { + "firstName": "American Rights at", + "lastName": "Work", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "american_rights_at_work_public_2012", + "url": "http://www.americanrightsatwork.org/blogcategory-275/", + "title": "Public Service Research Foundation", + "date": "2012" + } + ] + }, + { + "type": "import", + "input": "@article{zoteroFilePath1,\n title = {Zotero: single attachment},\n file = {Test:files/47/test2.pdf:application/pdf}\n}\n\n@article{zoteroFilePaths2,\n title = {Zotero: multiple attachments},\n file = {Test1:files/47/test2.pdf:application/pdf;Test2:files/46/test2-min.pdf:application/pdf}\n}\n\n@article{zoteroFilePaths3,\n title = {Zotero: linked attachments (old)},\n file = {Test:E:\\some\\random\\folder\\test2.pdf:application/pdf}\n}\n\n@article{zoteroFilePaths4,\n title = {Zotero: linked attachments},\n file = {Test:E\\:\\\\some\\\\random\\\\folder\\\\test2.pdf:application/pdf}\n}\n\n@article{mendeleyFilePaths1,\n title = {Mendeley: single attachment},\n url = {https://forums.zotero.org/discussion/28347/unable-to-get-pdfs-stored-on-computer-into-zotero-standalone/},\n file = {:C$\\backslash$:/Users/somewhere/AppData/Local/Mendeley Ltd./Mendeley Desktop/Downloaded/test.pdf:pdf}\n}\n\n@article{mendeleyFilePaths2,\ntitle = {Mendeley: escaped characters}\nfile = {:C$\\backslash$:/some/path/,.$\\backslash$;'[]\\{\\}`-=\\~{}!@\\#\\$\\%\\^{}\\&()\\_+.pdf:pdf},\n}\n\n@article{citaviFilePaths1,\n title = {Citavi: single attachment},\n url = {https://forums.zotero.org/discussion/35909/bibtex-import-from-citavi-including-pdf-attachments/},\n file = {Test:Q\\:\\\\some\\\\random\\\\folder\\\\test.pdf:pdf}\n}", + "items": [ + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [ + { + "title": "Test", + "path": "files/47/test2.pdf", + "mimeType": "application/pdf" + } + ], + "itemID": "zoteroFilePath1", + "title": "Zotero: single attachment" + }, + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [ + { + "title": "Test1", + "path": "files/47/test2.pdf", + "mimeType": "application/pdf" + }, + { + "title": "Test2", + "path": "files/46/test2-min.pdf", + "mimeType": "application/pdf" + } + ], + "itemID": "zoteroFilePaths2", + "title": "Zotero: multiple attachments" + }, + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "zoteroFilePaths3", + "title": "Zotero: linked attachments (old)" + }, + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [ + { + "title": "Test", + "path": "E:\\some\\random\\folder\\test2.pdf", + "mimeType": "application/pdf" + } + ], + "itemID": "zoteroFilePaths4", + "title": "Zotero: linked attachments" + }, + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [ + { + "title": "Attachment", + "path": "C:/Users/somewhere/AppData/Local/Mendeley Ltd./Mendeley Desktop/Downloaded/test.pdf", + "mimeType": "application/pdf" + } + ], + "itemID": "mendeleyFilePaths1", + "url": "https://forums.zotero.org/discussion/28347/unable-to-get-pdfs-stored-on-computer-into-zotero-standalone/", + "title": "Mendeley: single attachment" + }, + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [ + { + "title": "Attachment", + "path": "C:/some/path/,.;'[]{}`-=~!@#$%^&()_+.pdf", + "mimeType": "application/pdf" + } + ], + "itemID": "mendeleyFilePaths2", + "title": "Mendeley: escaped characters" + }, + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [ + { + "title": "Test", + "path": "Q:\\some\\random\\folder\\test.pdf", + "mimeType": "application/pdf" + } + ], + "itemID": "citaviFilePaths1", + "url": "https://forums.zotero.org/discussion/35909/bibtex-import-from-citavi-including-pdf-attachments/", + "title": "Citavi: single attachment" + } + ] + }, + { + "type": "import", + "input": "@article{BibTeXEscapeTest1,\n title = {\textbackslash\textbackslash\\{\\}: \\\\{}}\n}", + "items": [ + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "BibTeXEscapeTest1", + "title": "extbackslash extbackslash{}: {" + } + ] + }, + { + "type": "import", + "input": "@article{sasson_increasing_2013,\n title = {Increasing cardiopulmonary resuscitation provision in communities with low bystander cardiopulmonary resuscitation rates: a science advisory from the American Heart Association for healthcare providers, policymakers, public health departments, and community leaders},\n\tvolume = {127},\n\tissn = {1524-4539},\n\tshorttitle = {Increasing cardiopulmonary resuscitation provision in communities with low bystander cardiopulmonary resuscitation rates},\n\tdoi = {10.1161/CIR.0b013e318288b4dd},\n\tlanguage = {eng},\n\tnumber = {12},\n\tjournal = {Circulation},\n\tauthor = {Sasson, Comilla and Meischke, Hendrika and Abella, Benjamin S and Berg, Robert A and Bobrow, Bentley J and Chan, Paul S and Root, Elisabeth Dowling and Heisler, Michele and Levy, Jerrold H and Link, Mark and Masoudi, Frederick and Ong, Marcus and Sayre, Michael R and Rumsfeld, John S and Rea, Thomas D and {American Heart Association Council on Quality of Care and Outcomes Research} and {Emergency Cardiovascular Care Committee} and {Council on Cardiopulmonary, Critical Care, Perioperative and Resuscitation} and {Council on Clinical Cardiology} and {Council on Cardiovascular Surgery and Anesthesia}},\n\tmonth = mar,\n\tyear = {2013},\n\tnote = {{PMID:} 23439512},\n\tkeywords = {Administrative Personnel, American Heart Association, Cardiopulmonary Resuscitation, Community Health Services, Health Personnel, Heart Arrest, Humans, Leadership, Public Health, United States},\n\tpages = {1342--1350}\n}", + "items": [ + { + "itemType": "journalArticle", + "creators": [ + { + "firstName": "Comilla", + "lastName": "Sasson", + "creatorType": "author" + }, + { + "firstName": "Hendrika", + "lastName": "Meischke", + "creatorType": "author" + }, + { + "firstName": "Benjamin S", + "lastName": "Abella", + "creatorType": "author" + }, + { + "firstName": "Robert A", + "lastName": "Berg", + "creatorType": "author" + }, + { + "firstName": "Bentley J", + "lastName": "Bobrow", + "creatorType": "author" + }, + { + "firstName": "Paul S", + "lastName": "Chan", + "creatorType": "author" + }, + { + "firstName": "Elisabeth Dowling", + "lastName": "Root", + "creatorType": "author" + }, + { + "firstName": "Michele", + "lastName": "Heisler", + "creatorType": "author" + }, + { + "firstName": "Jerrold H", + "lastName": "Levy", + "creatorType": "author" + }, + { + "firstName": "Mark", + "lastName": "Link", + "creatorType": "author" + }, + { + "firstName": "Frederick", + "lastName": "Masoudi", + "creatorType": "author" + }, + { + "firstName": "Marcus", + "lastName": "Ong", + "creatorType": "author" + }, + { + "firstName": "Michael R", + "lastName": "Sayre", + "creatorType": "author" + }, + { + "firstName": "John S", + "lastName": "Rumsfeld", + "creatorType": "author" + }, + { + "firstName": "Thomas D", + "lastName": "Rea", + "creatorType": "author" + }, + { + "lastName": "American Heart Association Council on Quality of Care and Outcomes Research", + "creatorType": "author", + "fieldMode": 1 + }, + { + "lastName": "Emergency Cardiovascular Care Committee", + "creatorType": "author", + "fieldMode": 1 + }, + { + "lastName": "Council on Cardiopulmonary, Critical Care, Perioperative and Resuscitation", + "creatorType": "author", + "fieldMode": 1 + }, + { + "lastName": "Council on Clinical Cardiology", + "creatorType": "author", + "fieldMode": 1 + }, + { + "lastName": "Council on Cardiovascular Surgery and Anesthesia", + "creatorType": "author", + "fieldMode": 1 + } + ], + "notes": [], + "tags": [ + "Administrative Personnel", + "American Heart Association", + "Cardiopulmonary Resuscitation", + "Community Health Services", + "Health Personnel", + "Heart Arrest", + "Humans", + "Leadership", + "Public Health", + "United States" + ], + "seeAlso": [], + "attachments": [], + "itemID": "sasson_increasing_2013", + "ISSN": "1524-4539", + "shortTitle": "Increasing cardiopulmonary resuscitation provision in communities with low bystander cardiopulmonary resuscitation rates", + "DOI": "10.1161/CIR.0b013e318288b4dd", + "language": "eng", + "issue": "12", + "extra": "PMID: 23439512", + "title": "Increasing cardiopulmonary resuscitation provision in communities with low bystander cardiopulmonary resuscitation rates: a science advisory from the American Heart Association for healthcare providers, policymakers, public health departments, and community leaders", + "volume": "127", + "publicationTitle": "Circulation", + "date": "March 2013", + "pages": "1342–1350" + } + ] + }, + { + "type": "import", + "input": "@article{smith_testing_????,\n title = {Testing identifier import},\n\tauthor = {Smith, John},\n\tlccn = {L123456},\n\tmrnumber = {MR123456},\n\tzmnumber = {ZM123456},\n\tpmid = {P123456},\n\tpmcid = {PMC123456},\n\teprinttype = {arxiv},\n\teprint = {AX123456}\n}", + "items": [ + { + "itemType": "journalArticle", + "creators": [ + { + "firstName": "John", + "lastName": "Smith", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "itemID": "smith_testing_????", + "extra": "LCCN: L123456\nMR: MR123456\nZbl: ZM123456\nPMID: P123456\nPMCID: PMC123456\narXiv: AX123456", + "title": "Testing identifier import" + } + ] + } +] +/** END TEST CASES **/ diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index 2da9ddb..2edd2db 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.4 (2014-09-30) + * Version 1.4 (2014-10-06) * */ @@ -33,7 +33,7 @@ public class ConverterFactory { // Version information private static final String VERSION = "1.4"; - private static final String DATE = "2014-09-30"; + private static final String DATE = "2014-10-06"; /** Return the Writer2LaTeX version in the form * (major version).(minor version).(patch level)