From 6cee2cd3089a789063e0290eec1b157518198a54 Mon Sep 17 00:00:00 2001 From: Lee Mason Date: Thu, 1 Apr 2021 19:29:29 -0400 Subject: [PATCH] do not format author names enclosed in curly brackets --- src/helpers/bibtex.js | 1 - src/helpers/citation.js | 11 ++++++++--- src/transforms/citation.js | 11 ++++++++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/helpers/bibtex.js b/src/helpers/bibtex.js index 82f8d32..046333e 100644 --- a/src/helpers/bibtex.js +++ b/src/helpers/bibtex.js @@ -19,7 +19,6 @@ function normalizeTag(string) { .replace(/[\t\n ]+/g, ' ') .replace(/{\\["^`.'acu~Hvs]( )?([a-zA-Z])}/g, (full, x, char) => char) .replace(/{\\([a-zA-Z])}/g, (full, char) => char) - .replace(/[{}]/gi,''); // Replace curly braces forcing plaintext in latex. } export function parseBibtex(bibtex) { diff --git a/src/helpers/citation.js b/src/helpers/citation.js index 3afff8c..6147dd1 100644 --- a/src/helpers/citation.js +++ b/src/helpers/citation.js @@ -61,6 +61,11 @@ function author_string(ent, template, sep, finalSep) { var names = ent.author.split(" and "); let name_strings = names.map(name => { name = name.trim(); + if (name.match(/\{.+\}/)) { + var regExp = /\{([^}]+)\}/; + var matches = regExp.exec(name); + return matches[1]; + } if (name.indexOf(",") != -1) { var last = name.split(",")[0].trim(); var firsts = name.split(",")[1]; @@ -114,7 +119,7 @@ function venue_string(ent) { cite += ent.publisher; if (cite[cite.length - 1] != ".") cite += "."; } - return cite; + return cite.replace(/[{}]/gi,''); } function link_string(ent) { @@ -148,7 +153,7 @@ function doi_string(ent, new_line) { } function title_string(ent) { - return '' + ent.title + " "; + return '' + ent.title.replace(/[{}]/gi,'') + " "; } export function bibliography_cite(ent, fancy) { @@ -188,7 +193,7 @@ export function bibliography_cite(ent, fancy) { export function hover_cite(ent) { if (ent) { var cite = ""; - cite += "" + ent.title + ""; + cite += "" + ent.title.replace(/[{}]/gi,'') + ""; cite += link_string(ent); cite += "
"; diff --git a/src/transforms/citation.js b/src/transforms/citation.js index ca5d23f..1ff8fda 100644 --- a/src/transforms/citation.js +++ b/src/transforms/citation.js @@ -113,6 +113,11 @@ export default function(dom, data) { var names = ent.author.split(' and '); let name_strings = names.map(name => { name = name.trim(); + if (name.match(/\{.+\}/)) { + var regExp = /\{([^}]+)\}/; + var matches = regExp.exec(name); + return matches[1]; + } if (name.indexOf(',') != -1){ var last = name.split(',')[0].trim(); var firsts = name.split(',')[1]; @@ -153,7 +158,7 @@ export default function(dom, data) { cite += ent.publisher; if (cite[cite.length-1] != '.') cite += '.'; } - return cite; + return cite.replace(/[{}]/gi,''); } function link_string(ent){ @@ -186,7 +191,7 @@ export default function(dom, data) { function bibliography_cite(ent, fancy){ if (ent){ - var cite = '' + ent.title + ' '; + var cite = '' + ent.title.replace(/[{}]/gi,'') + ' '; cite += link_string(ent) + '
'; cite += author_string(ent, '${L}, ${I}', ', ', ' and '); if (ent.year || ent.date){ @@ -216,7 +221,7 @@ export default function(dom, data) { function hover_cite(ent){ if (ent){ var cite = ''; - cite += '' + ent.title + ''; + cite += '' + ent.title.replace(/[{}]/gi,'') + ''; cite += link_string(ent); cite += '
';