From ab43605070546bac8657198a3d5cff42218af170 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Thu, 11 Aug 2011 07:01:19 +0000 Subject: [PATCH] Update SVN translators manually, for now --- repotime.txt | 2 +- translators/ACM.js | 3 + translators/APA PsycNET.js | 121 +- translators/Amazon.com.js | 273 +- translators/BibTeX.js | 3235 +++++++++-------- translators/Bibliontology RDF.js | 84 +- translators/Bookmarks.js | 73 +- translators/CTX.js | 2 +- translators/Cambridge Journals Online.js | 161 +- translators/EBSCOhost.js | 291 +- translators/Embedded RDF.js | 102 +- translators/Encyclopedia of Chicago.js | 164 + translators/Foreign Policy.js | 144 + translators/Google Blogs.js | 58 + translators/Google Patents.js | 98 +- translators/Google Scholar.js | 25 +- translators/Highwire 2.0.js | 452 +-- translators/IGN.js | 68 + translators/ISI Web of Knowledge.js | 898 ++++- translators/Institute of Physics.js | 182 +- .../Library Catalog (BiblioCommons).js | 220 ++ translators/Library Catalog (Dynix).js | 119 +- translators/Library Catalog (InnoPAC).js | 75 +- translators/Library Catalog (SIRSI).js | 43 +- translators/Library Catalog (Voyager).js | 147 +- translators/MARC.js | 118 +- translators/MIT Press Journals.js | 76 +- translators/MODS.js | 356 +- translators/NYTimes.com.js | 406 +-- translators/PLoS Journals.js | 234 +- translators/ProQuest.js | 203 +- translators/Project Gutenberg.js | 52 +- translators/RDF.js | 15 +- translators/RIS.js | 13 +- translators/ReferBibIX.js | 3 +- .../Rice University Library Catalog.js | 363 ++ translators/ScienceDirect.js | 121 +- translators/Scopus.js | 96 +- translators/Twitter.js | 94 + translators/Unqualified Dublin Core RDF.js | 3 +- translators/Wikileaks Cables.js | 2 +- translators/Wikipedia Citation Templates.js | 3 +- translators/Wiley Online Library.js | 165 +- translators/Zotero RDF.js | 17 +- translators/arXiv.org.js | 293 +- translators/deleted.txt | 5 +- translators/eLibrary.ru.js | 86 +- 47 files changed, 6513 insertions(+), 3251 deletions(-) create mode 100644 translators/Encyclopedia of Chicago.js create mode 100644 translators/Foreign Policy.js create mode 100644 translators/Google Blogs.js create mode 100644 translators/IGN.js create mode 100644 translators/Library Catalog (BiblioCommons).js create mode 100644 translators/Rice University Library Catalog.js create mode 100644 translators/Twitter.js diff --git a/repotime.txt b/repotime.txt index 1a6e53dd46..a34fb7d905 100644 --- a/repotime.txt +++ b/repotime.txt @@ -1 +1 @@ -2011-04-25 18:05:00 +2011-08-03 01:05:00 diff --git a/translators/ACM.js b/translators/ACM.js index 474ea814ad..e87bc875b0 100644 --- a/translators/ACM.js +++ b/translators/ACM.js @@ -275,6 +275,9 @@ function scrapeAttachments(doc, url) { Zotero.debug("Text Page: " + textURL); attachments.push({title:"ACM Full Text HTML", mimeType:"text/html", url:textURL}); } + + // Break at a reasonable limit + if (attachments.length > 20) return attachments; } return attachments; diff --git a/translators/APA PsycNET.js b/translators/APA PsycNET.js index 6a102a3543..449a8d554e 100644 --- a/translators/APA PsycNET.js +++ b/translators/APA PsycNET.js @@ -1,19 +1,20 @@ { - "translatorID":"1e1e35be-6264-45a0-ad2e-7212040eb984", - "translatorType":4, - "label":"APA PsycNET", - "creator":"Michael Berkowitz", - "target":"http://psycnet\\.apa\\.org/", - "minVersion":"1.0.0b4.r5", - "maxVersion":"", - "priority":100, - "inRepository":true, - "lastUpdated":"2009-01-08 08:19:07" + "translatorID": "1e1e35be-6264-45a0-ad2e-7212040eb984", + "label": "APA PsycNET", + "creator": "Michael Berkowitz", + "target": "^http://psycnet\\.apa\\.org/", + "minVersion": "2.1", + "maxVersion": "", + "priority": 100, + "inRepository": true, + "translatorType": 4, + "lastUpdated": "2011-07-29 01:03:06" } function detectWeb(doc, url) { if (url.match(/search\.searchResults/)) { - return "multiple"; + return false; + //return "multiple"; } else if (url.match(/search\.displayRecord/)) { return "journalArticle"; } @@ -24,12 +25,11 @@ function associateXPath(xpath, doc, ns) { } function doWeb(doc, url) { - var namespace = doc.documentElement.namespaceURI; - var nsResolver = namespace ? function(prefix) { - if (prefix == 'x') return namespace; else return null; - } : null; - - var arts = new Array(); + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == 'x') return namespace; else return null; + } : null; + var arts = new Array(); if (detectWeb(doc, url) == "multiple") { var items = new Object(); var titles = doc.evaluate('//div[@class="srhcTitle"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null); @@ -41,22 +41,32 @@ function doWeb(doc, url) { for (var i in items) { arts.push(i); } + Zotero.Utilities.processDocuments(arts, scrape, function() {Zotero.done();}); } else { - arts = [url]; + scrape(doc); } - Zotero.Utilities.processDocuments(arts, function(doc) { + Zotero.wait(); +} + +function scrape (doc) { + var namespace = null; var newurl = doc.location.href; - if (doc.evaluate('//input[@name="id"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { - var id = doc.evaluate('//input[@name="id"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().value; - var lstSelectedUIDs = doc.evaluate('//input[@name="lstUIDs"][@id="srhLstUIDs"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().value; - var get = 'http://psycnet.apa.org/index.cfm?fa=search.export&id=' + id + '&lstSelectedUIDs=' + lstSelectedUIDs + '&lstUIDs=&records=selected&displayFormat=&exportFormat=referenceSoftware&printDoc=0'; - Zotero.Utilities.HTTP.doGet(get, function(text) { + if (doc.evaluate('//input[@name="id"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + var id = doc.evaluate('//input[@name="id"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext().value; + var lstSelectedUIDs = doc.evaluate('//input[@name="lstUIDs"][@id="srhLstUIDs"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext().value; + var get = 'http://psycnet.apa.org/index.cfm?fa=search.export' + var post = 'id=' + id + '&lstUIDs=' + lstSelectedUIDs + '&lstSelectedUIDs=&records=records&displayFormat=&exportFormat=referenceSoftware&printDoc=0'; + // http://psycnet.apa.org/index.cfm?fa=search.exportFormat&singlerecord=1 + // id=&lstSelectedUIDs=&lstUIDs=2004-16644-010&records=records&displayFormat=&exportFormat=referenceSoftware&printDoc=0 + Zotero.Utilities.HTTP.doPost(get, post, function(text) { + // http://psycnet.apa.org/index.cfm?fa=search.export var translator = Zotero.loadTranslator("import"); translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); translator.setString(text); + //Z.debug(text); translator.setHandler("itemDone", function(obj, item) { - item.url = newurl; - item.attachments = [{url:newurl, title:"APA PsycNET Snapshot", mimeType:"text/html"}]; + //item.url = newurl; + //item.attachments = [{url:newurl, title:"APA PsycNET Snapshot", mimeType:"text/html"}]; item.complete(); }); translator.translate(); @@ -77,6 +87,59 @@ function doWeb(doc, url) { item.abstractNote = associateXPath('//div[@id="rdRecord"]/div[@class="rdRecordSection"][2]', doc, nsResolver); item.complete(); } - }, function() {Zotero.done();}); - Zotero.wait(); -} \ No newline at end of file + }/** BEGIN TEST CASES **/ +var testCases = [ + { + "type": "web", + "url": "http://psycnet.apa.org/index.cfm?fa=search.displayRecord&uid=2004-16644-010", + "items": [ + { + "itemType": "journalArticle", + "creators": [ + { + "lastName": "Hervey", + "firstName": "Aaron S.", + "creatorType": "author" + }, + { + "lastName": "Epstein", + "firstName": "Jeffery N.", + "creatorType": "author" + }, + { + "lastName": "Curry", + "firstName": "John F.", + "creatorType": "author" + } + ], + "notes": [], + "tags": [ + "attention-deficit/hyperactivity disorder", + "adults", + "behavioral inhibition", + "neuropsychological performance", + "developmental considerations", + "neuropsychological deficits", + "empirical methods" + ], + "seeAlso": [], + "attachments": [], + "itemID": "2004-16644-010", + "title": "Neuropsychology of Adults With Attention-Deficit/Hyperactivity Disorder: A Meta-Analytic Review.", + "publicationTitle": "Neuropsychology", + "volume": "18", + "issue": "3", + "pages": "485-503", + "date": "2004", + "publisher": "US: American Psychological Association", + "ISBN": "1931-1559 (Electronic); 0894-4105 (Print)", + "ISSN": "1931-1559 (Electronic); 0894-4105 (Print)", + "abstractNote": "A comprehensive, empirically based review of the published studies addressing neuropsychological performance in adults diagnosed with attention-deficit/hyperactivity disorder (ADHD) was conducted to identify patterns of performance deficits. Findings from 33 published studies were submitted to a meta-analytic procedure producing sample-size-weighted mean effect sizes across test measures. Results suggest that neuropsychological deficits are expressed in adults with ADHD across multiple domains of functioning, with notable impairments in attention, behavioral inhibition, and memory, whereas normal performance is noted in simple reaction time. Theoretical and developmental considerations are discussed, including the role of behavioral inhibition and working memory impairment. Future directions for research based on these findings are highlighted, including further exploration of specific impairments and an emphasis on particular tests and testing conditions. (PsycINFO Database Record (c) 2010 APA, all rights reserved)", + "DOI": "10.1037/0894-4105.18.3.485", + "libraryCatalog": "APA PsycNET", + "shortTitle": "Neuropsychology of Adults With Attention-Deficit/Hyperactivity Disorder" + } + ] + } +] +/** END TEST CASES **/ diff --git a/translators/Amazon.com.js b/translators/Amazon.com.js index 3e00d3346e..9c7b02acb1 100644 --- a/translators/Amazon.com.js +++ b/translators/Amazon.com.js @@ -9,14 +9,14 @@ "inRepository": true, "translatorType": 4, "browserSupport": "gcs", - "lastUpdated": "2011-07-03 04:56:24" + "lastUpdated": "2011-07-19 00:16:21" } function detectWeb(doc, url) { var suffixRe = new RegExp("https?://(?:www\.)?amazon\.([^/]+)/"); var suffixMatch = suffixRe.exec(url); var suffix = suffixMatch[1]; - var searchRe = new RegExp('^https?://(?:www\.)?amazon\.' + suffix + '/(gp/search/|exec/obidos/search-handle-url/|s/|[^/]+/lm/|gp/richpub/)'); + var searchRe = new RegExp('^https?://(?:www\.)?amazon\.' + suffix + '/(gp/search/|exec/obidos/search-handle-url/|s/|s\\?|[^/]+/lm/|gp/richpub/)'); Zotero.debug(searchRe.test(doc.location.href)); if(searchRe.test(doc.location.href)) { return "multiple"; @@ -53,7 +53,7 @@ function doWeb(doc, url) { var suffixMatch = suffixRe.exec(url); suffix = suffixMatch[1]; - var searchRe = new RegExp('^https?://(?:www\.)?amazon\.' + suffix + '/(gp/search/|exec/obidos/search-handle-url/|s/|[^/]+/lm/|gp/richpub/)'); + var searchRe = new RegExp('^https?://(?:www\.)?amazon\.' + suffix + '/(gp/search/|exec/obidos/search-handle-url/|s/|s\\?|[^/]+/lm/|gp/richpub/)'); var m = searchRe.exec(doc.location.href); var uris = new Array(); if (suffix == "co.jp"){ @@ -86,22 +86,22 @@ function doWeb(doc, url) { i++; } } while (elmt = elmts.iterateNext()); - + Zotero.selectItems(availableItems, function(items) { - if(!items) { - return true; - } - - for(var i in items) { - var timestamp = encodeURIComponent(generateISODate()); - var params = "AWSAccessKeyId=AKIAIPYIWJ24AGZJ64AA&ItemId=" + Zotero.Utilities.trim(asins[i]) + "&Operation=ItemLookup&ResponseGroup=ItemAttributes&Service=AWSECommerceService&Timestamp="+timestamp+"&Version=2006-06-28"; - var signString = "GET\necs.amazonaws."+suffix+"\n/onca/xml\n"+params; - var signature = b64_hmac_sha256("054vk/Lt3LJMxch1srIHUbvI+2T/fZ6E5c0qwlbj", signString); - signature = encodeURIComponent(signature); - uris.push("http://ecs.amazonaws." + suffix + "/onca/xml?"+params+"&Signature="+signature+"%3D"); //wants the %3D for some reason - } - - Zotero.Utilities.HTTP.doGet(uris, parseXML, function() {Zotero.done();}, null); + if(!items) { + return true; + } + + for(var i in items) { + var timestamp = encodeURIComponent(generateISODate()); + var params = "AWSAccessKeyId=AKIAIPYIWJ24AGZJ64AA&ItemId=" + Zotero.Utilities.trim(asins[i]) + "&Operation=ItemLookup&ResponseGroup=ItemAttributes&Service=AWSECommerceService&Timestamp="+timestamp+"&Version=2006-06-28"; + var signString = "GET\necs.amazonaws."+suffix+"\n/onca/xml\n"+params; + var signature = b64_hmac_sha256("054vk/Lt3LJMxch1srIHUbvI+2T/fZ6E5c0qwlbj", signString); + signature = encodeURIComponent(signature); + uris.push("http://ecs.amazonaws." + suffix + "/onca/xml?"+params+"&Signature="+signature+"%3D"); //wants the %3D for some reason + } + + Zotero.Utilities.HTTP.doGet(uris, parseXML, function() {Zotero.done();}, null); }); } else { @@ -116,7 +116,7 @@ function doWeb(doc, url) { var signature = b64_hmac_sha256("054vk/Lt3LJMxch1srIHUbvI+2T/fZ6E5c0qwlbj", signString); signature = encodeURIComponent(signature); uris.push("http://ecs.amazonaws." + suffix + "/onca/xml?"+params+"&Signature="+signature+"%3D"); //wants the %3D for some reason - Zotero.Utilities.HTTP.doGet(uris, parseXML, function() {Zotero.done();}, null); + Zotero.Utilities.HTTP.doGet(uris, parseXML, function() {Zotero.done();}, null); } Zotero.wait(); } @@ -130,9 +130,9 @@ function parseXML(text) { var publisher = ""; if (!ZU.xpath(xml, "//Errors").length) { - var publisher = getXPathNodeTrimmed(xml, "Publisher"); - var binding = getXPathNodeTrimmed(xml, "Binding"); - var productGroup = getXPathNodeTrimmed(xml, "ProductGroup"); + var publisher = getXPathNodeTrimmed(xml, "Publisher"); + var binding = getXPathNodeTrimmed(xml, "Binding"); + var productGroup = getXPathNodeTrimmed(xml, "ProductGroup"); if (productGroup=="Book") { var newItem = new Zotero.Item("book"); @@ -142,46 +142,46 @@ function parseXML(text) { var newItem = new Zotero.Item("audioRecording"); newItem.label = publisher; newItem.audioRecordingType = binding; - getCreatorNodes(xml, "Artist", newItem, "performer"); + getCreatorNodes(xml, "Artist", newItem, "performer"); } else if (productGroup == "DVD" | productGroup == "Video") { var newItem = new Zotero.Item("videoRecording"); newItem.studio = publisher; newItem.videoRecordingType = binding; - getCreatorNodes(xml, "Actor", newItem, "castMember"); - getCreatorNodes(xml, "Director", newItem, "director"); + getCreatorNodes(xml, "Actor", newItem, "castMember"); + getCreatorNodes(xml, "Director", newItem, "director"); } else{ var newItem = new Zotero.Item("book"); newItem.publisher = publisher; } - newItem.runningTime = getXPathNodeTrimmed(xml, "RunningTime"); + newItem.runningTime = getXPathNodeTrimmed(xml, "RunningTime"); // Retrieve authors and other creators - getCreatorNodes(xml, "Author", newItem, "author"); + getCreatorNodes(xml, "Author", newItem, "author"); if (newItem.creators.length == 0){ - getCreatorNodes(xml, "Creator", newItem, "author"); + getCreatorNodes(xml, "Creator", newItem, "author"); } - newItem.date = getXPathNodeTrimmed(xml, "PublicationDate"); + newItem.date = getXPathNodeTrimmed(xml, "PublicationDate"); if (!newItem.date){ newItem.date = getXPathNodeTrimmed(xml, "ReleaseDate"); } - newItem.edition = getXPathNodeTrimmed(xml, "Edition"); - newItem.ISBN = getXPathNodeTrimmed(xml, "ISBN"); - newItem.numPages = getXPathNodeTrimmed(xml, "NumberOfPages"); + newItem.edition = getXPathNodeTrimmed(xml, "Edition"); + newItem.ISBN = getXPathNodeTrimmed(xml, "ISBN"); + newItem.numPages = getXPathNodeTrimmed(xml, "NumberOfPages"); var title = getXPathNodeTrimmed(xml, "Title"); if(title.lastIndexOf("(") != -1 && title.lastIndexOf(")") == title.length-1) { title = title.substring(0, title.lastIndexOf("(")-1); } - var ASIN = getXPathNodeTrimmed(xml, "ASIN"); + var ASIN = getXPathNodeTrimmed(xml, "ASIN"); if (ASIN){ var url = "http://www.amazon." + suffix + "/dp/" + ASIN; newItem.attachments.push({title:"Amazon.com Link", snapshot:false, mimeType:"text/html", url:url}); } - newItem.extra = getXPathNodeTrimmed(xml, "OriginalReleaseDate"); + newItem.extra = getXPathNodeTrimmed(xml, "OriginalReleaseDate"); newItem.title = title; newItem.complete(); @@ -190,15 +190,15 @@ function parseXML(text) { function getXPathNodeTrimmed(xml, name) { var node = ZU.xpath(xml, "//"+name); - var val = ""; - if(node.length){ + var val = ""; + if(node.length){ val = Zotero.Utilities.trimInternal(node[0].textContent); } - return val; + return val; } function getCreatorNodes(xml, name, newItem, creatorType) { - var nodes = ZU.xpath(xml, "//"+name); + var nodes = ZU.xpath(xml, "//"+name); for(var i=0; i>> 4) & 0x0F) - + hex_tab.charAt( x & 0x0F); + x = input.charCodeAt(i); + output += hex_tab.charAt((x >>> 4) & 0x0F) + + hex_tab.charAt( x & 0x0F); } return output; } @@ -306,14 +306,14 @@ function rstr2b64(input) var len = input.length; for(var i = 0; i < len; i += 3) { - var triplet = (input.charCodeAt(i) << 16) - | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) - | (i + 2 < len ? input.charCodeAt(i+2) : 0); - for(var j = 0; j < 4; j++) - { - if(i * 8 + j * 6 > input.length * 8) output += b64pad; - else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); - } + var triplet = (input.charCodeAt(i) << 16) + | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) + | (i + 2 < len ? input.charCodeAt(i+2) : 0); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > input.length * 8) output += b64pad; + else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); + } } return output; } @@ -331,7 +331,7 @@ function rstr2any(input, encoding) var dividend = Array(Math.ceil(input.length / 2)); for(i = 0; i < dividend.length; i++) { - dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); + dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); } /* @@ -342,30 +342,30 @@ function rstr2any(input, encoding) */ while(dividend.length > 0) { - quotient = Array(); - x = 0; - for(i = 0; i < dividend.length; i++) - { - x = (x << 16) + dividend[i]; - q = Math.floor(x / divisor); - x -= q * divisor; - if(quotient.length > 0 || q > 0) - quotient[quotient.length] = q; - } - remainders[remainders.length] = x; - dividend = quotient; + quotient = Array(); + x = 0; + for(i = 0; i < dividend.length; i++) + { + x = (x << 16) + dividend[i]; + q = Math.floor(x / divisor); + x -= q * divisor; + if(quotient.length > 0 || q > 0) + quotient[quotient.length] = q; + } + remainders[remainders.length] = x; + dividend = quotient; } /* Convert the remainders to the output string */ var output = ""; for(i = remainders.length - 1; i >= 0; i--) - output += encoding.charAt(remainders[i]); + output += encoding.charAt(remainders[i]); /* Append leading zero equivalents */ var full_length = Math.ceil(input.length * 8 / - (Math.log(encoding.length) / Math.log(2))) + (Math.log(encoding.length) / Math.log(2))) for(i = output.length; i < full_length; i++) - output = encoding[0] + output; + output = encoding[0] + output; return output; } @@ -382,30 +382,30 @@ function str2rstr_utf8(input) while(++i < input.length) { - /* Decode utf-16 surrogate pairs */ - x = input.charCodeAt(i); - y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; - if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) - { - x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); - i++; - } + /* Decode utf-16 surrogate pairs */ + x = input.charCodeAt(i); + y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; + if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) + { + x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); + i++; + } - /* Encode output as utf-8 */ - if(x <= 0x7F) - output += String.fromCharCode(x); - else if(x <= 0x7FF) - output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), - 0x80 | ( x & 0x3F)); - else if(x <= 0xFFFF) - output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), - 0x80 | ((x >>> 6 ) & 0x3F), - 0x80 | ( x & 0x3F)); - else if(x <= 0x1FFFFF) - output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), - 0x80 | ((x >>> 12) & 0x3F), - 0x80 | ((x >>> 6 ) & 0x3F), - 0x80 | ( x & 0x3F)); + /* Encode output as utf-8 */ + if(x <= 0x7F) + output += String.fromCharCode(x); + else if(x <= 0x7FF) + output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), + 0x80 | ( x & 0x3F)); + else if(x <= 0xFFFF) + output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + else if(x <= 0x1FFFFF) + output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), + 0x80 | ((x >>> 12) & 0x3F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); } return output; } @@ -417,8 +417,8 @@ function str2rstr_utf16le(input) { var output = ""; for(var i = 0; i < input.length; i++) - output += String.fromCharCode( input.charCodeAt(i) & 0xFF, - (input.charCodeAt(i) >>> 8) & 0xFF); + output += String.fromCharCode( input.charCodeAt(i) & 0xFF, + (input.charCodeAt(i) >>> 8) & 0xFF); return output; } @@ -426,8 +426,8 @@ function str2rstr_utf16be(input) { var output = ""; for(var i = 0; i < input.length; i++) - output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, - input.charCodeAt(i) & 0xFF); + output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, + input.charCodeAt(i) & 0xFF); return output; } @@ -439,9 +439,9 @@ function rstr2binb(input) { var output = Array(input.length >> 2); for(var i = 0; i < output.length; i++) - output[i] = 0; + output[i] = 0; for(var i = 0; i < input.length * 8; i += 8) - output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32); + output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32); return output; } @@ -452,7 +452,7 @@ function binb2rstr(input) { var output = ""; for(var i = 0; i < input.length * 32; i += 8) - output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF); + output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF); return output; } @@ -490,7 +490,7 @@ var sha256_K = new Array function binb_sha256(m, l) { var HASH = new Array(1779033703, -1150833019, 1013904242, -1521486534, - 1359893119, -1694144372, 528734635, 1541459225); + 1359893119, -1694144372, 528734635, 1541459225); var W = new Array(64); var a, b, c, d, e, f, g, h; var i, j, T1, T2; @@ -501,42 +501,42 @@ function binb_sha256(m, l) for(i = 0; i < m.length; i += 16) { - a = HASH[0]; - b = HASH[1]; - c = HASH[2]; - d = HASH[3]; - e = HASH[4]; - f = HASH[5]; - g = HASH[6]; - h = HASH[7]; + a = HASH[0]; + b = HASH[1]; + c = HASH[2]; + d = HASH[3]; + e = HASH[4]; + f = HASH[5]; + g = HASH[6]; + h = HASH[7]; - for(j = 0; j < 64; j++) - { - if (j < 16) W[j] = m[j + i]; - else W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]), - sha256_Gamma0256(W[j - 15])), W[j - 16]); + for(j = 0; j < 64; j++) + { + if (j < 16) W[j] = m[j + i]; + else W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]), + sha256_Gamma0256(W[j - 15])), W[j - 16]); - T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)), - sha256_K[j]), W[j]); - T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c)); - h = g; - g = f; - f = e; - e = safe_add(d, T1); - d = c; - c = b; - b = a; - a = safe_add(T1, T2); - } + T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)), + sha256_K[j]), W[j]); + T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c)); + h = g; + g = f; + f = e; + e = safe_add(d, T1); + d = c; + c = b; + b = a; + a = safe_add(T1, T2); + } - HASH[0] = safe_add(a, HASH[0]); - HASH[1] = safe_add(b, HASH[1]); - HASH[2] = safe_add(c, HASH[2]); - HASH[3] = safe_add(d, HASH[3]); - HASH[4] = safe_add(e, HASH[4]); - HASH[5] = safe_add(f, HASH[5]); - HASH[6] = safe_add(g, HASH[6]); - HASH[7] = safe_add(h, HASH[7]); + HASH[0] = safe_add(a, HASH[0]); + HASH[1] = safe_add(b, HASH[1]); + HASH[2] = safe_add(c, HASH[2]); + HASH[3] = safe_add(d, HASH[3]); + HASH[4] = safe_add(e, HASH[4]); + HASH[5] = safe_add(f, HASH[5]); + HASH[6] = safe_add(g, HASH[6]); + HASH[7] = safe_add(h, HASH[7]); } return HASH; } @@ -617,7 +617,7 @@ var testCases = [ ], "label": "Sire / London/Rhino", "audioRecordingType": "Audio CD", - "date": "1991", + "date": "1991-11-05", "extra": "1991-11-05", "title": "Loveless", "libraryCatalog": "Amazon.com" @@ -663,6 +663,11 @@ var testCases = [ "libraryCatalog": "Amazon.com" } ] + }, + { + "type": "web", + "url": "http://www.amazon.com/s?ie=UTF8&keywords=The%20Harvard%20Concise%20Dictionary%20of%20Music%20and%20Musicians&index=blended&Go=o", + "items": "multiple" } ] -/** END TEST CASES **/ \ No newline at end of file +/** END TEST CASES **/ diff --git a/translators/BibTeX.js b/translators/BibTeX.js index 0e5fe7f9de..66f5432287 100644 --- a/translators/BibTeX.js +++ b/translators/BibTeX.js @@ -1,17 +1,20 @@ { - "translatorID":"9cb70025-a888-4a29-a210-93ec52da40d4", - "translatorType":3, - "label":"BibTeX", - "creator":"Simon Kornblith and Richard Karnesky", - "target":"bib", - "minVersion":"2.1.3", - "maxVersion":"", - "priority":200, - "browserSupport":"gcs", - "configOptions":{"dataMode":"block"}, - "displayOptions":{"exportCharset":"UTF-8", "exportNotes":true, "exportFileData":false}, - "inRepository":true, - "lastUpdated":"2011-07-02 00:39:53" + "translatorID": "9cb70025-a888-4a29-a210-93ec52da40d4", + "label": "BibTeX", + "creator": "Simon Kornblith and Richard Karnesky", + "target": "bib", + "minVersion": "2.1.9", + "maxVersion": "", + "priority": 200, + "displayOptions": { + "exportCharset": "UTF-8", + "exportNotes": true, + "exportFileData": false + }, + "inRepository": true, + "translatorType": 3, + "browserSupport": "gcs", + "lastUpdated": "2011-07-29 03:35:07" } function detectImport() { @@ -39,7 +42,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; @@ -125,7 +131,7 @@ var bibtex2zoteroTypeMap = { * LaTeX book.) */ var months = ["jan", "feb", "mar", "apr", "may", "jun", - "jul", "aug", "sep", "oct", "nov", "dec"]; + "jul", "aug", "sep", "oct", "nov", "dec"]; /* * new mapping table based on that from Matthias Steffens, @@ -133,1400 +139,1400 @@ var months = ["jan", "feb", "mar", "apr", "may", "jun", */ var mappingTable = { - "\u00A0":"~", // NO-BREAK SPACE - "\u00A1":"{\\textexclamdown}", // INVERTED EXCLAMATION MARK - "\u00A2":"{\\textcent}", // CENT SIGN - "\u00A3":"{\\textsterling}", // POUND SIGN - "\u00A5":"{\\textyen}", // YEN SIGN - "\u00A6":"{\\textbrokenbar}", // BROKEN BAR - "\u00A7":"{\\textsection}", // SECTION SIGN - "\u00A8":"{\\textasciidieresis}", // DIAERESIS - "\u00A9":"{\\textcopyright}", // COPYRIGHT SIGN - "\u00AA":"{\\textordfeminine}", // FEMININE ORDINAL INDICATOR - "\u00AB":"{\\guillemotleft}", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - "\u00AC":"{\\textlnot}", // NOT SIGN - "\u00AD":"-", // SOFT HYPHEN - "\u00AE":"{\\textregistered}", // REGISTERED SIGN - "\u00AF":"{\\textasciimacron}", // MACRON - "\u00B0":"{\\textdegree}", // DEGREE SIGN - "\u00B1":"{\\textpm}", // PLUS-MINUS SIGN - "\u00B2":"{\\texttwosuperior}", // SUPERSCRIPT TWO - "\u00B3":"{\\textthreesuperior}", // SUPERSCRIPT THREE - "\u00B4":"{\\textasciiacute}", // ACUTE ACCENT - "\u00B5":"{\\textmu}", // MICRO SIGN - "\u00B6":"{\\textparagraph}", // PILCROW SIGN - "\u00B7":"{\\textperiodcentered}", // MIDDLE DOT - "\u00B8":"{\\c\\ }", // CEDILLA - "\u00B9":"{\\textonesuperior}", // SUPERSCRIPT ONE - "\u00BA":"{\\textordmasculine}", // MASCULINE ORDINAL INDICATOR - "\u00BB":"{\\guillemotright}", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - "\u00BC":"{\\textonequarter}", // VULGAR FRACTION ONE QUARTER - "\u00BD":"{\\textonehalf}", // VULGAR FRACTION ONE HALF - "\u00BE":"{\\textthreequarters}", // VULGAR FRACTION THREE QUARTERS - "\u00BF":"{\\textquestiondown}", // INVERTED QUESTION MARK - "\u00C6":"{\\AE}", // LATIN CAPITAL LETTER AE - "\u00D0":"{\\DH}", // LATIN CAPITAL LETTER ETH - "\u00D7":"{\\texttimes}", // MULTIPLICATION SIGN - "\U00D8":"{\\O}", // LATIN CAPITAL LETTER O WITH STROKE - "\u00DE":"{\\TH}", // LATIN CAPITAL LETTER THORN - "\u00DF":"{\\ss}", // LATIN SMALL LETTER SHARP S - "\u00E6":"{\\ae}", // LATIN SMALL LETTER AE - "\u00F0":"{\\dh}", // LATIN SMALL LETTER ETH - "\u00F7":"{\\textdiv}", // DIVISION SIGN - "\U00F8":"{\\o}", // LATIN SMALL LETTER O WITH STROKE - "\u00FE":"{\\th}", // LATIN SMALL LETTER THORN - "\u0131":"{\\i}", // LATIN SMALL LETTER DOTLESS I - "\u0132":"IJ", // LATIN CAPITAL LIGATURE IJ - "\u0133":"ij", // LATIN SMALL LIGATURE IJ - "\u0138":"k", // LATIN SMALL LETTER KRA - "\u0149":"'n", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE - "\u014A":"{\\NG}", // LATIN CAPITAL LETTER ENG - "\u014B":"{\\ng}", // LATIN SMALL LETTER ENG - "\u0152":"{\\OE}", // LATIN CAPITAL LIGATURE OE - "\u0153":"{\\oe}", // LATIN SMALL LIGATURE OE - "\u017F":"s", // LATIN SMALL LETTER LONG S - "\u02B9":"'", // MODIFIER LETTER PRIME - "\u02BB":"'", // MODIFIER LETTER TURNED COMMA - "\u02BC":"'", // MODIFIER LETTER APOSTROPHE - "\u02BD":"'", // MODIFIER LETTER REVERSED COMMA - "\u02C6":"{\\textasciicircum}", // MODIFIER LETTER CIRCUMFLEX ACCENT - "\u02C8":"'", // MODIFIER LETTER VERTICAL LINE - "\u02C9":"-", // MODIFIER LETTER MACRON - "\u02CC":",", // MODIFIER LETTER LOW VERTICAL LINE - "\u02D0":":", // MODIFIER LETTER TRIANGULAR COLON - "\u02DA":"o", // RING ABOVE - "\u02DC":"\\~{}", // SMALL TILDE - "\u02DD":"{\\textacutedbl}", // DOUBLE ACUTE ACCENT - "\u0374":"'", // GREEK NUMERAL SIGN - "\u0375":",", // GREEK LOWER NUMERAL SIGN - "\u037E":";", // GREEK QUESTION MARK - "\u2000":" ", // EN QUAD - "\u2001":" ", // EM QUAD - "\u2002":" ", // EN SPACE - "\u2003":" ", // EM SPACE - "\u2004":" ", // THREE-PER-EM SPACE - "\u2005":" ", // FOUR-PER-EM SPACE - "\u2006":" ", // SIX-PER-EM SPACE - "\u2007":" ", // FIGURE SPACE - "\u2008":" ", // PUNCTUATION SPACE - "\u2009":" ", // THIN SPACE - "\u2010":"-", // HYPHEN - "\u2011":"-", // NON-BREAKING HYPHEN - "\u2012":"-", // FIGURE DASH - "\u2013":"{\\textendash}", // EN DASH - "\u2014":"{\\textemdash}", // EM DASH - "\u2015":"{\\textemdash}", // HORIZONTAL BAR or QUOTATION DASH (not in LaTeX -- use EM DASH) - "\u2016":"{\\textbardbl}", // DOUBLE VERTICAL LINE - "\u2017":"{\\textunderscore}", // DOUBLE LOW LINE - "\u2018":"{\\textquoteleft}", // LEFT SINGLE QUOTATION MARK - "\u2019":"{\\textquoteright}", // RIGHT SINGLE QUOTATION MARK - "`" : "\u2018", // LEFT SINGLE QUOTATION MARK - "'" : "\u2019", // RIGHT SINGLE QUOTATION MARK - "\u201A":"{\\quotesinglbase}", // SINGLE LOW-9 QUOTATION MARK - "\u201B":"'", // SINGLE HIGH-REVERSED-9 QUOTATION MARK - "\u201C":"{\\textquotedblleft}", // LEFT DOUBLE QUOTATION MARK - "\u201D":"{\\textquotedblright}", // RIGHT DOUBLE QUOTATION MARK - "\u201E":"{\\quotedblbase}", // DOUBLE LOW-9 QUOTATION MARK - "\u201F":"{\\quotedblbase}", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK - "\u2020":"{\\textdagger}", // DAGGER - "\u2021":"{\\textdaggerdbl}", // DOUBLE DAGGER - "\u2022":"{\\textbullet}", // BULLET - "\u2023":">", // 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 + "\u00A0":"~", // NO-BREAK SPACE + "\u00A1":"{\\textexclamdown}", // INVERTED EXCLAMATION MARK + "\u00A2":"{\\textcent}", // CENT SIGN + "\u00A3":"{\\textsterling}", // POUND SIGN + "\u00A5":"{\\textyen}", // YEN SIGN + "\u00A6":"{\\textbrokenbar}", // BROKEN BAR + "\u00A7":"{\\textsection}", // SECTION SIGN + "\u00A8":"{\\textasciidieresis}", // DIAERESIS + "\u00A9":"{\\textcopyright}", // COPYRIGHT SIGN + "\u00AA":"{\\textordfeminine}", // FEMININE ORDINAL INDICATOR + "\u00AB":"{\\guillemotleft}", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + "\u00AC":"{\\textlnot}", // NOT SIGN + "\u00AD":"-", // SOFT HYPHEN + "\u00AE":"{\\textregistered}", // REGISTERED SIGN + "\u00AF":"{\\textasciimacron}", // MACRON + "\u00B0":"{\\textdegree}", // DEGREE SIGN + "\u00B1":"{\\textpm}", // PLUS-MINUS SIGN + "\u00B2":"{\\texttwosuperior}", // SUPERSCRIPT TWO + "\u00B3":"{\\textthreesuperior}", // SUPERSCRIPT THREE + "\u00B4":"{\\textasciiacute}", // ACUTE ACCENT + "\u00B5":"{\\textmu}", // MICRO SIGN + "\u00B6":"{\\textparagraph}", // PILCROW SIGN + "\u00B7":"{\\textperiodcentered}", // MIDDLE DOT + "\u00B8":"{\\c\\ }", // CEDILLA + "\u00B9":"{\\textonesuperior}", // SUPERSCRIPT ONE + "\u00BA":"{\\textordmasculine}", // MASCULINE ORDINAL INDICATOR + "\u00BB":"{\\guillemotright}", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + "\u00BC":"{\\textonequarter}", // VULGAR FRACTION ONE QUARTER + "\u00BD":"{\\textonehalf}", // VULGAR FRACTION ONE HALF + "\u00BE":"{\\textthreequarters}", // VULGAR FRACTION THREE QUARTERS + "\u00BF":"{\\textquestiondown}", // INVERTED QUESTION MARK + "\u00C6":"{\\AE}", // LATIN CAPITAL LETTER AE + "\u00D0":"{\\DH}", // LATIN CAPITAL LETTER ETH + "\u00D7":"{\\texttimes}", // MULTIPLICATION SIGN + "\U00D8":"{\\O}", // LATIN CAPITAL LETTER O WITH STROKE + "\u00DE":"{\\TH}", // LATIN CAPITAL LETTER THORN + "\u00DF":"{\\ss}", // LATIN SMALL LETTER SHARP S + "\u00E6":"{\\ae}", // LATIN SMALL LETTER AE + "\u00F0":"{\\dh}", // LATIN SMALL LETTER ETH + "\u00F7":"{\\textdiv}", // DIVISION SIGN + "\U00F8":"{\\o}", // LATIN SMALL LETTER O WITH STROKE + "\u00FE":"{\\th}", // LATIN SMALL LETTER THORN + "\u0131":"{\\i}", // LATIN SMALL LETTER DOTLESS I + "\u0132":"IJ", // LATIN CAPITAL LIGATURE IJ + "\u0133":"ij", // LATIN SMALL LIGATURE IJ + "\u0138":"k", // LATIN SMALL LETTER KRA + "\u0149":"'n", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + "\u014A":"{\\NG}", // LATIN CAPITAL LETTER ENG + "\u014B":"{\\ng}", // LATIN SMALL LETTER ENG + "\u0152":"{\\OE}", // LATIN CAPITAL LIGATURE OE + "\u0153":"{\\oe}", // LATIN SMALL LIGATURE OE + "\u017F":"s", // LATIN SMALL LETTER LONG S + "\u02B9":"'", // MODIFIER LETTER PRIME + "\u02BB":"'", // MODIFIER LETTER TURNED COMMA + "\u02BC":"'", // MODIFIER LETTER APOSTROPHE + "\u02BD":"'", // MODIFIER LETTER REVERSED COMMA + "\u02C6":"{\\textasciicircum}", // MODIFIER LETTER CIRCUMFLEX ACCENT + "\u02C8":"'", // MODIFIER LETTER VERTICAL LINE + "\u02C9":"-", // MODIFIER LETTER MACRON + "\u02CC":",", // MODIFIER LETTER LOW VERTICAL LINE + "\u02D0":":", // MODIFIER LETTER TRIANGULAR COLON + "\u02DA":"o", // RING ABOVE + "\u02DC":"\\~{}", // SMALL TILDE + "\u02DD":"{\\textacutedbl}", // DOUBLE ACUTE ACCENT + "\u0374":"'", // GREEK NUMERAL SIGN + "\u0375":",", // GREEK LOWER NUMERAL SIGN + "\u037E":";", // GREEK QUESTION MARK + "\u2000":" ", // EN QUAD + "\u2001":" ", // EM QUAD + "\u2002":" ", // EN SPACE + "\u2003":" ", // EM SPACE + "\u2004":" ", // THREE-PER-EM SPACE + "\u2005":" ", // FOUR-PER-EM SPACE + "\u2006":" ", // SIX-PER-EM SPACE + "\u2007":" ", // FIGURE SPACE + "\u2008":" ", // PUNCTUATION SPACE + "\u2009":" ", // THIN SPACE + "\u2010":"-", // HYPHEN + "\u2011":"-", // NON-BREAKING HYPHEN + "\u2012":"-", // FIGURE DASH + "\u2013":"{\\textendash}", // EN DASH + "\u2014":"{\\textemdash}", // EM DASH + "\u2015":"{\\textemdash}", // HORIZONTAL BAR or QUOTATION DASH (not in LaTeX -- use EM DASH) + "\u2016":"{\\textbardbl}", // DOUBLE VERTICAL LINE + "\u2017":"{\\textunderscore}", // DOUBLE LOW LINE + "\u2018":"{\\textquoteleft}", // LEFT SINGLE QUOTATION MARK + "\u2019":"{\\textquoteright}", // RIGHT SINGLE QUOTATION MARK + "`" : "\u2018", // LEFT SINGLE QUOTATION MARK + "'" : "\u2019", // RIGHT SINGLE QUOTATION MARK + "\u201A":"{\\quotesinglbase}", // SINGLE LOW-9 QUOTATION MARK + "\u201B":"'", // SINGLE HIGH-REVERSED-9 QUOTATION MARK + "\u201C":"{\\textquotedblleft}", // LEFT DOUBLE QUOTATION MARK + "\u201D":"{\\textquotedblright}", // RIGHT DOUBLE QUOTATION MARK + "\u201E":"{\\quotedblbase}", // DOUBLE LOW-9 QUOTATION MARK + "\u201F":"{\\quotedblbase}", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK + "\u2020":"{\\textdagger}", // DAGGER + "\u2021":"{\\textdaggerdbl}", // DOUBLE DAGGER + "\u2022":"{\\textbullet}", // BULLET + "\u2023":">", // 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 + "\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 - "{\\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 + "\\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 - "{\\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 + "{\\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 + "{\\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 + ">=" : "\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 + "|=" : "\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 + "||-" : "\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 + "$\\%<$" : "\u2701", // UPPER BLADE SCISSORS /* "$\\%<$" : "\u2702", // BLACK SCISSORS - "$\\%<$" : "\u2703", // LOWER BLADE SCISSORS - "$\\%<$" : "\u2704", // WHITE 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 + "\\`{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 + "\\~{}" : "\u223C", // TILDE OPERATOR + "~" : "\u00A0" // NO-BREAK SPACE }; var alwaysMap = { @@ -1565,11 +1571,20 @@ function processField(item, field, value) { for(var i in names) { var name = names[i]; // skip empty names - if (Zotero.Utilities.trim(name) == '') { + if (name.trim() == '') { continue; } - item.creators.push(Zotero.Utilities.cleanAuthor(name, field, - (name.indexOf(",") != -1))); + // Names in BibTeX can have three commas + pieces = name.split(','); + var creator = {}; + if (pieces.length > 1) { + creator.firstName = pieces.pop().trim(); + creator.lastName = pieces.join(',').trim(); + creator.creatorType = field; + } else { + creator = Zotero.Utilities.cleanAuthor(name, field, false); + } + item.creators.push(creator); } } else if(field == "institution" || field == "organization") { item.backupPublisher = value; @@ -1650,6 +1665,7 @@ function processField(item, field, value) { var parts = attachment.split(":"); var filetitle = parts[0]; var filepath = parts[1]; + if (filepath.trim() === '') continue; // skip empty entries var filetype = parts[2]; if (filetitle.length == 0) { filetitle = "Attachment"; @@ -1865,22 +1881,22 @@ function mapAccent(character) { // 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'),"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 r=s.toLowerCase(); + 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 @@ -1892,77 +1908,77 @@ 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 "????"; + } } 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; + 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() { @@ -2075,7 +2091,7 @@ function doExport() { writeField("pages", item.pages.replace("-","--")); } - // Commented out, because we don't want a books number of pages in the BibTeX "pages" field for books. + // Commented out, because we don't want a books number of pages in the BibTeX "pages" field for books. //if(item.numPages) { // writeField("pages", item.numPages); //} @@ -2104,3 +2120,260 @@ function doExport() { Zotero.write("\n}"); } } + +/** BEGIN TEST CASES **/ +var testCases = [ + { + "type": "import", + "input": "@article{Adams2001,\u000aauthor = {Adams, Nancy K and DeSilva, Shanaka L and Self, Steven and Salas, Guido and Schubring, Steven and Permenter, Jason L and Arbesman, Kendra},\u000afile = {:Users/heatherwright/Documents/Scientific Papers/Adams\\_Huaynaputina.pdf:pdf;::},\u000ajournal = {Bulletin of Volcanology},\u000akeywords = {Vulcanian eruptions,breadcrust,plinian},\u000apages = {493--518},\u000atitle = {{The physical volcanology of the 1600 eruption of Huaynaputina, southern Peru}},\u000avolume = {62},\u000ayear = {2001}\u000a}", + "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": [ + { + "url": "file://Users/heatherwright/Documents/Scientific Papers/Adams_Huaynaputina.pdf", + "mimeType": "application/pdf", + "title": "Attachment", + "downloadable": true + }, + { + "url": "file://", + "title": "Attachment", + "downloadable": true + } + ], + "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,\u000a author = \"Milton {Abramowitz} and Irene A. {Stegun}\",\u000a title = \"Handbook of Mathematical Functions with\u000a Formulas, Graphs, and Mathematical Tables\",\u000a publisher = \"Dover\",\u000a year = 1964,\u000a address = \"New York\",\u000a edition = \"ninth Dover printing, tenth GPO printing\"\u000a}\u000a\u000a@Book{Torre2008,\u000a author = \"Joe Torre and Tom Verducci\",\u000a publisher = \"Doubleday\",\u000a title = \"The Yankee Years\",\u000a year = 2008,\u000a isbn = \"0385527403\"\u000a}\u000a", + "items": [ + { + "itemType": "book", + "creators": [ + { + "firstName": "Milton", + "lastName": "Abramowitz", + "creatorType": "author" + }, + { + "firstName": "Irene A.", + "lastName": "Stegun", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "title": "Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables", + "publisher": "Dover", + "date": "1964", + "place": "New York", + "edition": "ninth Dover printing, tenth GPO printing" + }, + { + "itemType": "book", + "creators": [ + { + "firstName": "Joe", + "lastName": "Torre", + "creatorType": "author" + }, + { + "firstName": "Tom", + "lastName": "Verducci", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "publisher": "Doubleday", + "title": "The Yankee Years", + "date": "2008", + "ISBN": "0385527403" + } + ] + }, + { + "type": "import", + "input": "@INPROCEEDINGS {author:06,\u000a title = {Some publication title},\u000a author = {First Author and Second Author},\u000a crossref = {conference:06},\u000a pages = {330—331},\u000a}\u000a@PROCEEDINGS {conference:06,\u000a editor = {First Editor and Second Editor},\u000a title = {Proceedings of the Xth Conference on XYZ},\u000a booktitle = {Proceedings of the Xth Conference on XYZ},\u000a year = {2006},\u000a month = oct,\u000a}", + "items": [ + { + "itemType": "conferencePaper", + "creators": [ + { + "firstName": "First", + "lastName": "Author", + "creatorType": "author" + }, + { + "firstName": "Second", + "lastName": "Author", + "creatorType": "author" + }, + { + "firstName": "First", + "lastName": "Editor", + "creatorType": "editor" + }, + { + "firstName": "Second", + "lastName": "Editor", + "creatorType": "editor" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "title": "Some publication title", + "date": "October 2006", + "proceedingsTitle": "Proceedings of the Xth Conference on XYZ", + "pages": "330—331" + }, + { + "itemType": "book", + "creators": [ + { + "firstName": "First", + "lastName": "Editor", + "creatorType": "editor" + }, + { + "firstName": "Second", + "lastName": "Editor", + "creatorType": "editor" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "title": "Proceedings of the Xth Conference on XYZ", + "publicationTitle": "Proceedings of the Xth Conference on XYZ", + "date": "October 2006" + } + ] + }, + { + "type": "import", + "input": "@Book{hicks2001,\u000a author = \"von Hicks, III, Michael\",\u000a title = \"Design of a Carbon Fiber Composite Grid Structure for the GLAST\u000a Spacecraft Using a Novel Manufacturing Technique\",\u000a publisher = \"Stanford Press\",\u000a year = 2001,\u000a address = \"Palo Alto\",\u000a edition = \"1st,\",\u000a isbn = \"0-69-697269-4\"\u000a}", + "items": [ + { + "itemType": "book", + "creators": [ + { + "firstName": "Michael", + "lastName": "von Hicks, III", + "creatorType": "author" + } + ], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "title": "Design of a Carbon Fiber Composite Grid Structure for the GLAST Spacecraft Using a Novel Manufacturing Technique", + "publisher": "Stanford Press", + "date": "2001", + "place": "Palo Alto", + "edition": "1st,", + "ISBN": "0-69-697269-4" + } + ] + }, + { + "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": [], + "title": "USGS monitoring ecological impacts", + "volume": "107", + "issue": "29", + "publicationTitle": "Oil & Gas Journal", + "date": "2009", + "pages": "29" + } + ] + }, + { + "type": "import", + "input": "@article{test-ticket1661,\u000atitle={non-braking space: ~; accented characters: {\\~n} and \\~{n}; tilde operator: \\~},\u000a} ", + "items": [ + { + "itemType": "journalArticle", + "creators": [], + "notes": [], + "tags": [], + "seeAlso": [], + "attachments": [], + "title": "non-braking space: ; accented characters: ñ and ñ; tilde operator: ∼" + } + ] + } +] +/** END TEST CASES **/ diff --git a/translators/Bibliontology RDF.js b/translators/Bibliontology RDF.js index 2f7e1ae44a..aff43f24ab 100644 --- a/translators/Bibliontology RDF.js +++ b/translators/Bibliontology RDF.js @@ -7,10 +7,11 @@ "minVersion":"2.0", "maxVersion":"", "priority":50, + "browserSupport":"gcs", "configOptions":{"getCollections":"true", "dataMode":"rdf/xml"}, "displayOptions":{"exportNotes":true, "exportFileData":false}, "inRepository":false, - "lastUpdated":"2011-02-22 00:39:57" + "lastUpdated":"2011-07-08 04:50:39" } var n = { @@ -233,11 +234,19 @@ var FIELDS = { "assignee": [ITEM, n.z+"assignee"], // TODO "priorityNumbers": [function(item) { // TODO var priorityNumbers = item.priorityNumbers.split(/, ?| /g); - return [[ITEM, n.z+"priorityNumber", number, true] for each(number in priorityNumbers)]; + var returnNumbers = []; + for each(var number in priorityNumbers) { + returnNumbers.push([ITEM, n.z+"priorityNumber", number, true]); + } + return returnNumbers; }, function(nodes) { var statements = Zotero.RDF.getStatementsMatching(nodes[ITEM], n.z+"priorityNumber", null); if(!statements) return false; - return [statement[2] for each(statement in statements)].join(", "); + var predicates = []; + for each(var statement in statements) { + predicates.push(statement[2]); + } + return predicates.join(", "); }], "references": [ITEM, n.z+"references"], "legalStatus": [ITEM, n.bibo+"status"], @@ -332,7 +341,9 @@ function getBlankNode(attachToNode, itemPredicate, blankNodePairs, create) { if(!blankNode && create) { blankNode = Zotero.RDF.newResource(); Zotero.RDF.addStatement(attachToNode, itemPredicate, blankNode, false); - [Zotero.RDF.addStatement(blankNode, pair[0], pair[1], false) for each(pair in blankNodePairs)]; + for each(var pair in blankNodePairs) { + Zotero.RDF.addStatement(blankNode, pair[0], pair[1], false); + } } return blankNode; @@ -362,7 +373,11 @@ Type.prototype.getMatchScore = function(node) { var nodes = {2:node}; // check item (+2 for each match, -1 for each nonmatch) - var score = 3*[true for each(pair in this[ITEM].pairs) if(Zotero.RDF.getStatementsMatching(node, pair[0], pair[1]))].length-this[ITEM].pairs.length; + var score = -this[ITEM].pairs.length; + for each(var pair in this[ITEM].pairs) { + if(Zotero.RDF.getStatementsMatching(node, pair[0], pair[1])) score += 3; + } + // check subcontainer [score, nodes[SUBCONTAINER]] = this._scoreNodeRelationship(node, this[SUBCONTAINER], score); // check container @@ -387,7 +402,11 @@ Type.prototype._scoreNodeRelationship = function(node, definition, score) { var bestScore = -9999; for each(var statement in statements) { // +2 for each match, -1 for each nonmatch - var testScore = 3*[true for each(pair in definition.pairs) if(Zotero.RDF.getStatementsMatching(statement[2], pair[0], pair[1]))].length-definition.pairs.length; + var testScore = -definition.pairs.length; + for each(var pair in definition.pairs) { + if(Zotero.RDF.getStatementsMatching(statement[2], pair[0], pair[1])) score += 3; + } + if(testScore > bestScore) { subNode = statement[2]; bestScore = testScore; @@ -414,17 +433,17 @@ Type.prototype.getItemSeriesNodes = function(nodes) { // get ITEM_SERIES node var score, subNode; [score, subNode] = this._scoreNodeRelationship(nodes[ITEM], seriesDefinition, 0); - Zotero.debug("got itemSeries with score "+score); + //Zotero.debug("got itemSeries with score "+score); if(score >= 1) nodes[ITEM_SERIES] = subNode; // get SUBCONTAINER_SERIES node [score, subNode] = this._scoreNodeRelationship(nodes[SUBCONTAINER], seriesDefinition, 0); - Zotero.debug("got subcontainerSeries with score "+score); + //Zotero.debug("got subcontainerSeries with score "+score); if(score >= 1) nodes[CONTAINER_SERIES] = subNode; // get CONTAINER_SERIES node [score, subNode] = this._scoreNodeRelationship(nodes[CONTAINER], seriesDefinition, 0); - Zotero.debug("got containerSeries with score "+score); + //Zotero.debug("got containerSeries with score "+score); if(score >= 1) nodes[CONTAINER_SERIES] = subNode; } @@ -462,8 +481,9 @@ Type.prototype.addNodeRelations = function(nodes) { } // add type - [Zotero.RDF.addStatement(nodes[i], pair[0], pair[1], false) - for each(pair in this[i].pairs)]; + for each(var pair in this[i].pairs) { + Zotero.RDF.addStatement(nodes[i], pair[0], pair[1], false) + } // add relation to parent for(var j = i-1; j>1; j--) { @@ -541,7 +561,7 @@ LiteralProperty = function(field) { this.field = field; this.mapping = FIELDS[field]; if(!this.mapping) { - Zotero.debug("WARNING: unrecognized field "+field+" in Bibliontology RDF; mapping to Zotero namespace"); + //Zotero.debug("WARNING: unrecognized field "+field+" in Bibliontology RDF; mapping to Zotero namespace"); this.mapping = [ITEM, n.z+field]; } } @@ -560,7 +580,12 @@ LiteralProperty.prototype.mapToItem = function(newItem, nodes) { if(!node) return false; var statements = getStatementsByDefinition(this.mapping[1], node); if(!statements) return false; - newItem[this.field] = [stmt[2].toString() for each(stmt in statements)].join(", "); + + var content = []; + for each(var stmt in statements) { + content.push(stmt[2].toString()); + } + newItem[this.field] = content.join(","); } return true; } @@ -571,8 +596,9 @@ LiteralProperty.prototype.mapToItem = function(newItem, nodes) { LiteralProperty.prototype.mapFromItem = function(item, nodes) { if(typeof this.mapping[0] == "function") { // function case: triples returned // check function case - [Zotero.RDF.addStatement(nodes[triple[0]], triple[1], triple[2], triple[3]) - for each(triple in this.mapping[0](item))]; + for each(var triple in this.mapping[0](item)) { + Zotero.RDF.addStatement(nodes[triple[0]], triple[1], triple[2], triple[3]) + } } else if(typeof this.mapping[1] == "string") { // string case: simple predicate Zotero.RDF.addStatement(nodes[this.mapping[0]], this.mapping[1], item.uniqueFields[this.field], true); @@ -595,7 +621,7 @@ CreatorProperty = function(field) { * Maps creator from an foaf:Agent */ CreatorProperty.prototype.mapToCreator = function(creatorNode, zoteroType) { - Zotero.debug("mapping "+Zotero.RDF.getResourceURI(creatorNode)+" to a creator"); + //Zotero.debug("mapping "+Zotero.RDF.getResourceURI(creatorNode)+" to a creator"); var lastNameStmt = Zotero.RDF.getStatementsMatching(creatorNode, n.foaf+"surname", null); if(lastNameStmt) { // look for a person with a last name creator = {lastName:lastNameStmt[0][2].toString()}; @@ -606,7 +632,7 @@ CreatorProperty.prototype.mapToCreator = function(creatorNode, zoteroType) { if(nameStmt) { // an organization creator = {lastName:nameStmt[0][2].toString(), fieldMode:1}; } else { // an unnamed entity; ignore it - Zotero.debug("Dropping unnamed creator "+creatorNode.toString()); + //Zotero.debug("Dropping unnamed creator "+creatorNode.toString()); return false; } } @@ -661,7 +687,7 @@ CreatorProperty.prototype.mapFromCreator = function(item, creator, nodes) { // treat other primary creators as dcterms:creators var mapping = CREATORS["author"]; } else { - Zotero.debug("WARNING: unrecognized creator type "+this.field+" in Bibliontology RDF; mapping to Zotero namespace"); + //Zotero.debug("WARNING: unrecognized creator type "+this.field+" in Bibliontology RDF; mapping to Zotero namespace"); var mapping = [ITEM, AUTHOR_LIST, n.z+this.field]; } } @@ -829,7 +855,7 @@ function doImport() { for each(var type in collapsedTypes[rdfType[2].uri]) { [score, nodes] = type.getMatchScore(itemNode); - Zotero.debug("Type "+type.zoteroType+" has score "+score); + //Zotero.debug("Type "+type.zoteroType+" has score "+score); // check if this is the best we can do if(score > bestTypeScore) { @@ -842,11 +868,11 @@ function doImport() { // skip if this doesn't fit any type very well if(bestTypeScore < 1) { - Zotero.debug("No good type mapping; best type was "+bestType.zoteroType+" with score "+bestTypeScore); + //Zotero.debug("No good type mapping; best type was "+bestType.zoteroType+" with score "+bestTypeScore); continue; } - Zotero.debug("Got item of type "+bestType.zoteroType+" with score "+bestTypeScore); + //Zotero.debug("Got item of type "+bestType.zoteroType+" with score "+bestTypeScore); nodes = bestNodes; bestType.getItemSeriesNodes(nodes); @@ -863,7 +889,7 @@ function doImport() { // only handle each property once if(propertiesHandled[property]) continue; propertiesHandled[property] = true; - Zotero.debug("handling "+property); + //Zotero.debug("handling "+property); var propertyMappings = collapsedProperties[i][property]; if(propertyMappings) { @@ -941,13 +967,13 @@ function doImport() { } else { // creator not already processed, use default for this list type if(j == AUTHOR_LIST) { - Zotero.debug("WARNING: creator in authorList lacks relationship to item in Bibliontology RDF; treating as primary creator"); + //Zotero.debug("WARNING: creator in authorList lacks relationship to item in Bibliontology RDF; treating as primary creator"); var prop = new CreatorProperty("author"); } else if(j == EDITOR_LIST) { - Zotero.debug("WARNING: creator in editorList lacks relationship to item in Bibliontology RDF; treating as editor"); + //Zotero.debug("WARNING: creator in editorList lacks relationship to item in Bibliontology RDF; treating as editor"); var prop = new CreatorProperty("editor"); } else { - Zotero.debug("WARNING: creator in contributorList lacks relationship to item in Bibliontology RDF; treating as contributor"); + //Zotero.debug("WARNING: creator in contributorList lacks relationship to item in Bibliontology RDF; treating as contributor"); var prop = new CreatorProperty("contributor"); } var creator = prop.mapToCreator(creatorNode, zoteroType); @@ -975,7 +1001,7 @@ var usedURIs = {}; function doExport() { // add namespaces - [Zotero.RDF.addNamespace(i, n[i]) for(i in n)]; + for(var i in n) Zotero.RDF.addNamespace(i, n[i]); // compile references and create URIs var item; @@ -999,7 +1025,7 @@ function doExport() { var property = new LiteralProperty(field); property.mapFromItem(item, nodes); } - Zotero.debug("fields added"); + //Zotero.debug("fields added"); // add creators var creatorLists = []; @@ -1008,7 +1034,7 @@ function doExport() { var property = new CreatorProperty(creator.creatorType); property.mapFromCreator(item, creator, nodes); } - Zotero.debug("creators added"); + //Zotero.debug("creators added"); // add tags for each(var tag in item.tags) { @@ -1028,6 +1054,6 @@ function doExport() { } type.addNodeRelations(nodes); - Zotero.debug("relations added"); + //Zotero.debug("relations added"); } } \ No newline at end of file diff --git a/translators/Bookmarks.js b/translators/Bookmarks.js index b19aee9212..2a4fa30d52 100644 --- a/translators/Bookmarks.js +++ b/translators/Bookmarks.js @@ -1,14 +1,15 @@ { - "translatorID":"4e7119e0-02be-4848-86ef-79a64185aad8", - "translatorType":3, - "label":"Bookmarks", - "creator":"Avram Lyon", - "target":"html", - "minVersion":"2.1b6", - "maxVersion":"", - "priority":100, - "inRepository":true, - "lastUpdated":"2011-03-16 23:24:54" + "translatorID": "4e7119e0-02be-4848-86ef-79a64185aad8", + "label": "Bookmarks", + "creator": "Avram Lyon", + "target": "html", + "minVersion": "2.1b6", + "maxVersion": "", + "priority": 100, + "inRepository": true, + "translatorType": 3, + "browserSupport": "gscn", + "lastUpdated": "2011-07-09 18:52:34" } /* @@ -72,34 +73,71 @@ function doImport() { var hits; var item = false; var itemIncomplete = false; + var collection = false; var re = /([A-Za-z_]+)="([^"]+)"/g; while((line = Zotero.read()) !== false) { - if (line.indexOf("
") !== -1) { + if (line.indexOf("
") !== -1 && line.indexOf("([^<]*)<\/A>/)[1]; - Zotero.debug(item.title); + //Zotero.debug(item.title); while(hits = re.exec(line)) { - if (!hits) { Zotero.debug("RE no match in "+line); + if (!hits) { + Zotero.debug("RE no match in "+line); + continue; } switch (hits[1]) { - case "HREF": item.url = hits[2]; break; + case "HREF": item.url = hits[2]; + break; case "TAGS": item.tags = hits[2].split(','); break; + case "ICON": break; + case "ICON_URI": break; + case "ADD_DATE": + item.accessDate = convertDate(hits[2]); + break; default: item.extra = item.extra ? item.extra + "; "+ [hits[1], hits[2]].join("=") : [hits[1], hits[2]].join("="); } } + if (item.url.match(/^place:/)) { + item = false; + itemIncomplete = false; + } + } else if (line.indexOf("
") !== -1 && line.indexOf("]*>([^<]*)<\/H3>/i)[1]); + Zotero.debug("Starting collection: "+ collection.name); + collection.type = "collection"; + collection.children = new Array(); } else if (line.substr(0,4) == "
") { if (itemIncomplete) item.abstractNote = item.abstractNote ? item.abstractNote + " " + line.substr(4) : line.substr(4); else Zotero.debug("Discarding description line without item: " + line); } else { - Zotero.debug("Discarding line: " + line); + //Zotero.debug("Discarding line: " + line); } } if (item && itemIncomplete) item.complete(); + if (collection) collection.complete(); } +function convertDate(timestamp){ + var d = new Date(timestamp*1000); + function pad(n){return n<10 ? '0'+n : n}; + return d.getUTCFullYear()+'-' + + pad(d.getUTCMonth()+1)+'-' + + pad(d.getUTCDate())+' ' + + pad(d.getUTCHours())+':' + + pad(d.getUTCMinutes())+':' + + pad(d.getUTCSeconds())+' UTC'; + } + + function doExport() { var item; @@ -124,3 +162,8 @@ function doExport() { } Zotero.write(footer); } + + +/** BEGIN TEST CASES **/ +var testCases = [] +/** END TEST CASES **/ diff --git a/translators/CTX.js b/translators/CTX.js index a66f21dcc5..e616ac1d14 100644 --- a/translators/CTX.js +++ b/translators/CTX.js @@ -7,7 +7,7 @@ "minVersion":"2.0", "maxVersion":"", "priority":100, - "configOptions":{"getCollections":"true", "dataMode":"line"}, + "configOptions":{"dataMode":"line"}, "inRepository":false, "lastUpdated":"2011-01-11 04:31:00" } diff --git a/translators/Cambridge Journals Online.js b/translators/Cambridge Journals Online.js index 0fa222e1fd..8ee29dca6f 100644 --- a/translators/Cambridge Journals Online.js +++ b/translators/Cambridge Journals Online.js @@ -1,14 +1,14 @@ { - "translatorID":"850f4c5f-71fb-4669-b7da-7fb7a95500ef", - "translatorType":4, - "label":"Cambridge Journals Online", - "creator":"Sean Takats and Michael Berkowitz", - "target":"https?://[^/]*journals.cambridge.org[^/]*//?action/(quickSearch|search|displayAbstract|displayFulltext|displayIssue)", - "minVersion":"1.0.0b3r1", - "maxVersion":"", - "priority":100, - "inRepository":true, - "lastUpdated":"2009-01-08 08:19:07" + "translatorID": "850f4c5f-71fb-4669-b7da-7fb7a95500ef", + "label": "Cambridge Journals Online", + "creator": "Sean Takats, Michael Berkowitz and Avram Lyon", + "target": "^https?://[^/]*journals.cambridge.org[^/]*//?action/(quickSearch|search|displayAbstract|displayFulltext|displayIssue)", + "minVersion": "2.1", + "maxVersion": "", + "priority": 100, + "inRepository": true, + "translatorType": 4, + "lastUpdated": "2011-07-26 01:43:28" } function detectWeb(doc, url) { @@ -16,7 +16,7 @@ function detectWeb(doc, url) { var nsResolver=namespace?function(prefix) { return (prefix=="x")?namespace:null; }:null; - var xpath = '//tr[td/input[@type="checkbox"][@name="toView"]]'; + var xpath = '//div[@class="tableofcontents-row"][div/input[@type="checkbox"][@name="toView"]]'; if ((url.indexOf("/action/displayAbstract") != -1) || (url.indexOf("action/displayFulltext") != -1)){ return "journalArticle"; } else if (doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){ @@ -34,57 +34,150 @@ function doWeb(doc, url){ var datastring="format=RIS&emailId=&Download=Download&componentIds="; var links = new Array(); if(detectWeb(doc, url) == "multiple"){ - var xpath = '//tr[td/input[@type="checkbox"][@name="toView"]]'; + var xpath = '//div[@class="tableofcontents-row"][div/input[@type="checkbox"][@name="toView"]]'; var tableRows = doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); var tableRow; var items=new Array(); while (tableRow = tableRows.iterateNext()){ - var id = doc.evaluate('./td/input[@type="checkbox"][@name="toView"]/@value', tableRow, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); - var title = doc.evaluate('./td/h3', tableRow, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); + var id = doc.evaluate('./div/input[@type="checkbox"][@name="toView"]/@value', tableRow, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); + var title = doc.evaluate('.//h3', tableRow, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); items['http://' + host + '/action/displayAbstract?aid=' + id.nodeValue] = Zotero.Utilities.capitalizeTitle(title.textContent); } - items=Zotero.selectItems(items); - for (var i in items) { - links.push(i); - } + Zotero.selectItems(items, function(items) { + for (var i in items) { + links.push(i); + } + Zotero.Utilities.processDocuments(links, scrape, + function() {Zotero.done();}); + }); } else { - links = [url]; + scrape(doc); } - Zotero.Utilities.processDocuments(links, function(doc) { - if (doc.evaluate('//p[@class="AbsType"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { - var abs = doc.evaluate('//p[@class="AbsType"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent; + Zotero.wait(); +} + +function scrape (doc) { + var namespace=doc.documentElement.namespaceURI; + var nsResolver=namespace?function(prefix) { + return (prefix=="x")?namespace:null; + }:null; + + var host = doc.location.host; + var urlstring="http://" + host + "/action/exportCitation"; + var datastring="format=RIS&emailId=&Download=Download&componentIds="; + + var locURL = doc.location.href; + var abs; + if (abs = doc.evaluate('//p[@class="section-title" and contains(text(),"Abstract")]/following-sibling::p[not(@class) and text() != ""]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + abs = abs.textContent; } if (doc.evaluate('//p[@class="KeyWords"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { var kws = doc.evaluate('//p[@class="KeyWords"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent.substr(11).split('; '); } var pdfpath='//div/ul/li/a[contains(text(), "PDF")]'; if (doc.evaluate(pdfpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { - var pdflink =doc.evaluate(pdfpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().href; + var pdflink = doc.evaluate(pdfpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().href; } idRe = /aid=([0-9]+)/ - var m = idRe.exec(doc.location.href); + var m = idRe.exec(locURL); var id = m[1]; - Zotero.Utilities.HTTP.doGet(urlstring + "?" + datastring+id, function(text) { + Zotero.Utilities.doGet(urlstring + "?" + datastring+id, function(text) { text = text.replace(/(^|\n)?([A-Z\d]{2})\s+\-\s+(\n)?/g, "\n$2 - $3"); var translator = Zotero.loadTranslator("import"); + // Use RIS importer translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); translator.setString(text); translator.setHandler("itemDone", function(obj, item) { - item.attachments = [{url:url, title:"Cambridge Journals Snapshot", mimeType:"text/html"}] - if (pdflink) item.attachments.push({url:pdflink, title:"Cambridge Journals PDF", mimeType:"application/pdf"}); - item.url = url; + item.attachments = [{url:locURL, + title:"Cambridge Journals Snapshot", + mimeType:"text/html"}]; item.title = Zotero.Utilities.capitalizeTitle(item.title); var authors = item.creators; item.creators = new Array(); for each (var aut in authors) { - item.creators.push({firstName:aut.firstName, lastName:aut.lastName, creatorType:"author"}); + // correct all-caps, if present + if (aut.firstName && aut.firstName.toUpperCase() == aut.firstName) + aut.firstName=Zotero.Utilities.capitalizeTitle(aut.firstName.toLowerCase(),true); + if (aut.lastName && aut.lastName.toUpperCase() == aut.lastName) + aut.lastName=Zotero.Utilities.capitalizeTitle(aut.lastName.toLowerCase(),true); + item.creators.push({firstName:aut.firstName, + lastName:aut.lastName, + creatorType:"author"}); } - if (kws) item.tags = kws; + if (item.tags.length === 1) item.tags = item.tags[0].split(","); if (abs) item.abstractNote = Zotero.Utilities.trimInternal(abs); - item.complete(); + if (pdflink) { + // Some PDFs aren't paywalled, so they don't need the 2nd request + item.attachments.push({ + url: pdflink, + title: "Cambridge Journals PDF", + mimeType:"application/pdf" + }); + Zotero.Utilities.doGet(pdflink, function(text) { + var domain = pdflink.match(/^https?:\/\/[^\/]+\//); + var realpdf = text.match(/