PageRenderTime 70ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/BibTeX.js

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