{ "translatorID": "eb7059a4-35ec-4961-a915-3cf58eb9784b", "label": "Endnote XML", "creator": "Sebastian Karcher", "target": "xml", "minVersion": "4.0", "maxVersion": "", "priority": 100, "configOptions": { "async": true, "getCollections": true }, "displayOptions": { "exportNotes": true, "exportFileData": false }, "inRepository": true, "translatorType": 3, "browserSupport": "gcv", "lastUpdated": "2018-06-12 09:00:41" } function detectImport() { var doc = Zotero.getXML().documentElement; if (!doc) { return false; } else if (ZU.xpathText(doc, '//record/ref-type')) { return true; } } //list of Endnote XML fields used for export (same for title, date, periodical, and author fields below) var fields = ["database", "source-app", "rec-number", "ref-type", "contributors", "auth-address", "auth-affiliaton", "titles", "periodical", "pages", "volume", "number", "issue", "secondary-volume", "secondary-issue", "num-vols", "edition", "section", "reprint-edition", "reprint-status", "keywords", "dates", "pub-location", "publisher", "orig-pub", "isbn", "accession-num", "call-num", "report-id", "coden", "electronic-resource-num", "abstract", "label", "image", "caption", "notes", "research-notes", "work-type", "reviewed-item", "availability", "remote-source", "meeting-place", "work-location", "work-extent", "pack-method", "size", "repro-ratio", "remote-database-name", "remote-database-provider", "language", "urls", "access-date", "modified-date", "custom1", "custom2", "custom3", "custom4", "custom5", "custom6", "custom7", "misc1", "misc2", "misc3" ]; var titleFields = ["title", "secondary-title", "tertiary-title", "alt-title", "short-title", "translated-title" ]; var dateFields = ["year", "pub-dates"]; var periodicalFields = ["full-title", "abbr-1", "abbr-2", "abbr-3"]; var authorFields = ["authors", "secondary-authors", "tertiary-authors", "subsidiary-authors", "translated-authors" ]; var attachmentFields = ["pdf-urls", "text-urls", "related-urls", "image-urls"]; var processItemType = { Artwork: "artwork", "Audiovisual Material": "videoRecording", Bill: "bill", "Book Section": "bookSection", Book: "book", "Case": "case", Catalog: "book", "Computer Program": "computerProgram", "Conference Proceedings": "conferencePaper", //still not clear on paper vs. proceedings "Web Page": "webpage", "Generic": "document", "Hearing": "hearing", "Journal Article": "journalArticle", "Magazine Article": "magazineArticle", Map: "map", "Film or Broadcast": "film", "Newspaper Article": "newspaperArticle", Pamphlet: "manuscript", Patent: "patent", "Personal Communication": "letter", Report: "report", "Edited Book": "book", Statute: "statute", Thesis: "thesis", "Unpublished Work": "manuscript", Manuscript: "manuscript", Figure: "artwork", //mapping "Chart or Table": "artwork", //mapping? "Equation": "artwork", //mapping? "Electronic Article": "journalArticle", "Electronic Book": "book", "Online Database": "webpage", "Government Document": "bill", "Conference Paper": "presentation", "Online Multimedia": "webpage", "Classical Work": "book", //mapping once we have something comparable in Zotero "Legal Rule or Regulation": "report", //or bill? statute? "Ancient Text": "book", //mapping Dictionary: "dictionaryEntry", Encyclopedia: "encyclopediaArticle", Grant: "report", "Aggregated Database": "webpage", //mapping? "Blog": "blogPost", "Serial": "book", //should map to periodical once we have that Standard: "report", //map to standard once we have that Dataset: "report", //map to dataset once we have that "Electronic Book Section": "bookSection", Music: "audioRecording" }; var processNumberType = { 2: "artwork", 3: "videoRecording", 4: "bill", 5: "bookSection", 6: "book", 7: "case", 8: "book", 9: "computerProgram", 10: "conferencePaper", 12: "webpage", 13: "document", 14: "hearing", 17: "journalArticle", 19: "magazineArticle", 20: "map", 21: "film", 23: "newspaperArticle", 24: "manuscript", 25: "patent", 26: "letter", 27: "report", 28: "book", 31: "statute", 32: "thesis", 34: "manuscript", 36: "manuscript", 37: "artwork", 38: "artwork", 39: "artwork", 43: "journalArticle", 44: "book", 45: "wepage", 46: "bill", 47: "conferencePaper", 48: "webpage", 49: "book", 50: "report", 51: "book", 52: "dictionaryEntry", 53: "encyclopediaArticle", 54: "report", 55: "webpage", 56: "blogPost", 57: "book", 58: "report", 59: "report", 60: "bookSection", 61: "audioRecording" }; var exportItemType = { artwork: "Artwork", audioRecording: "Music", bill: "Bill", blogPost: "Blog", book: "Book", bookSection: "Book Section", "case" :"Case", computerProgram: "Computer Program", conferencePaper: "Conference Proceedings", dictionaryEntry: "Dictionary", document: "Generic", mail: "Personal Communication", encyclopediaArticle: "Encyclopedia", film: "Film or Broadcast", forumPost: "Web Page", hearing: "Hearing", instantMessage: "Personal Communication", interview: "Personal Communication", journalArticle: "Journal Article", letter: "Personal Communication", magazineArticle: "Magazine Article", manuscript: "Manuscript", map: "Map", newspaperArticle: "Newspaper Article", patent: "Patent", podcast: "Film or Broadcast", presentation: "Conference Paper", radioBroadcast: "Film or Broadcast", report: "Report", statute: "Statute", thesis: "Thesis", tvBroadcast: "Film or Broadcast", videoRecording: "Audiovisual Material", webpage: "Web Page" }; var exportRefNumber = { artwork: "2", videoRecording: "3", bill: "4", blogPost: "56", book: "6", bookSection: "5", "case": "6", computerProgram: "9", presentation: "47", conferencePaper: "10", dictionaryEntry: "52", encyclopediaArticle: "53", film: "21", podcast: "21", radioBroadcast: "21", tvBroadcast: "21", document: "13", hearing: "14", journalArticle: "17", magazineArticle: "19", manuscript: "36", map: "20", audioRecording: "61", newspaperArticle: "23", patent: "25", email: "26", instantMessage: "26", interview: "26", letter: "26", report: "27", statute: "31", thesis: "32", forumPost: "12", webpage: "12" }; var fieldMap = { //same for all itemTypes abstract: "abstractNote", "call-num": "callNumber", "electronic-resource-num": "DOI", "remote-database-name": "libraryCatalog", "abbr-1": "journalAbbreviation", "short-title": "shortTitle", "full-title": "publicationTitle", language: "language", "access-date": "accessDate", //These two are in the RIS - not sure what they'd be in Endnote XML //DB:"archive", //AN:"archiveLocation", //type specific //tag => field:itemTypes //if itemType not explicitly given, __default field is used // unless itemType is excluded in __exclude "title": { "__default": "title", subject: ["email"], caseName: ["case"], nameOfAct: ["statute"] }, "secondary-title": { code: ["bill", "statute"], bookTitle: ["bookSection"], blogTitle: ["blogPost"], conferenceName: ["conferencePaper"], dictionaryTitle: ["dictionaryEntry"], encyclopediaTitle: ["encyclopediaArticle"], committee: ["hearing"], forumTitle: ["forumPost"], websiteTitle: ["webpage"], programTitle: ["radioBroadcast", "tvBroadcast"], meetingName: ["presentation"], seriesTitle: ["computerProgram", "map", "report"], series: ["book"], reporter: ["case"], publicationTitle: ["journalArticle", "magazineArticle", "newspaperArticle"] }, "tertiary-title": { legislativeBody: ["hearing", "bill"], series: ["bookSection", "conferencePaper"], seriesTitle: ["audioRecording"] }, //NOT HANDLED: reviewedAuthor, scriptwriter, contributor, guest "authors": { "__default": "author", "artist": ["artwork"], "cartographer": ["map"], "composer": ["audioRecording"], "director": ["film", "radioBroadcast", "tvBroadcast", "videoRecording"], "interviewee": ["interview"], "inventor": ["patent"], "podcaster": ["podcast"], "programmer": ["computerProgram"] }, "secondary-authors": { "sponsor": ["bill"], "performer": ["audioRecording"], "presenter": ["presentation"], "interviewer": ["interview"], "editor": ["journalArticle", "bookSection", "conferencePaper", "dictionaryEntry", "document", "encyclopediaArticle" ], "seriesEditor": ["book", "report"], "recipient": ["email", "instantMessage", "letter"], issuingAuthority: ["patent"] }, "tertiary-authors": { "cosponsor": ["bill"], "producer": ["film", "tvBroadcast", "videoRecording", "radioBroadcast"], "editor": ["book"], "seriesEditor": ["bookSection", "conferencePaper", "dictionaryEntry", "encyclopediaArticle", "map"] }, "subsidiary-authors": { "__default": "translator", "counsel": ["case"], "castMember": ["radioBroadcast", "tvBroadcast", "videoRecording"], "contributor": ["conferencePaper", "film"] //translator does not fit these }, "work-type": { "manuscriptType": ["manuscript"], "websiteType": ["webpage"], "genre": ["film"], "postType": ["forumPost"], "letterType": ["letter"], "mapType": ["map"], "presentationType": ["presentation"], "reportType": ["report"], "thesisType": ["thesis"] }, custom1: { filingDate: ["patent"], //not in spec scale: ["map"], place: ["conferencePaper"] }, custom2: { issueDate: ["patent"] //PMCID:["journalArticle"] //handled below since we don't actually have that variable (yet) }, custom3: { artworkSize: ["artwork"], proceedingsTitle: ["conferencePaper"], runningTime: ["videoRecording"], country: ["patent"] }, custom4: { //RIS has this, but I can't find any reason for that: "creators/wordsBy":["audioRecording"], "creators/attorneyAgent":["patent"], //we're not using this for export genre: ["film"] }, custom5: { references: ["patent"], audioRecordingFormat: ["audioRecording", "radioBroadcast"], videoRecordingFormat: ["film", "tvBroadcast", "videoRecording"] }, custom6: { legalStatus: ["patent"], }, "pub-location": { "__default": "place", "__exclude": ["conferencePaper"] //exported/imported as "custom1" }, "pub-dates": { //also see year when editing "__default": "date", dateEnacted: ["statute"], dateDecided: ["case"], issueDate: ["patent"] }, edition: { "__default": "edition", // "__ignore":["journalArticle"], //EPubDate. session: ["bill", "hearing", "statute"], version: ["computerProgram"] }, issue: { "__default": "issue", numberOfVolumes: ["bookSection"] }, misc1: { seriesNumber: ["book"], billNumber: ["bill"], system: ["computerProgram"], documentNumber: ["hearing"], applicationNumber: ["patent"], publicLawNumber: ["statute"], episodeNumber: ["podcast", "radioBroadcast", "tvBroadcast"] }, misc2: { manuscriptType: ["manuscript"], mapType: ["map"], reportType: ["report"], thesisType: ["thesis"], websiteType: ["blogPost", "webpage"], postType: ["forumPost"], letterType: ["letter"], interviewMedium: ["interview"], presentationType: ["presentation"], artworkMedium: ["artwork"], audioFileType: ["podcast"] }, "num-vols": { "__default": "numberOfVolumes", "__exclude": ["bookSection"] //uses "issue" instead }, "orig-pub": { history: ["hearing", "statute", "bill", "case"], priorityNumbers: ["patent"] }, publisher: { "__default": "publisher", label: ["audioRecording"], court: ["case"], distributor: ["film"], assignee: ["patent"], institution: ["report"], university: ["thesis"], company: ["computerProgram"], studio: ["videoRecording"], network: ["radioBroadcast", "tvBroadcast"] }, year: { //duplicate of pud-dates, but this will only output year "__default": "date", dateEnacted: ["statute"], dateDecided: ["case"], issueDate: ["patent"] }, section: { "__default": "section", //though this can refer to pages, start page, etc. for some types. Zotero does not support any of those combinations, however. "__exclude": ["case"] }, isbn: { "__default": "ISBN", ISSN: ["journalArticle", "magazineArticle", "newspaperArticle"], patentNumber: ["patent"], reportNumber: ["report"], }, pages: { "__default": "pages", codePages: ["bill"], //bill numPages: ["book", "thesis", "manuscript"], firstPage: ["case"], runningTime: ["film"] }, number: { seriesNumber: ["bookSection", "book"], issue: ["journalArticle", "magazineArticle"], docketNumber: ["case"], artworkSize: ["artwork"] }, volume: { "__default": "volume", codeNumber: ["statute"], codeVolume: ["bill"], reporterVolume: ["case"], "__exclude": ["patent", "webpage"] } }; var cache = {}; function getField(field, type) { if (!cache[type]) cache[type] = {}; //retrieve from cache if available //it can be false if previous search did not find a mapping if (cache[type][field] !== undefined) { return cache[type][field]; } var zfield = false; if (typeof (fieldMap[field]) == 'object') { var def, exclude = false; for (var f in fieldMap[field]) { //__ignore is not handled here. It's returned as a Zotero field so it //can be explicitly excluded from the note attachment if (f == "__default") { //store default mapping in case we can't find anything explicit def = fieldMap[field][f]; continue; } if (f == "__exclude") { if (fieldMap[field][f].indexOf(type) != -1) { exclude = true; //don't break. Let explicit mapping override this } continue; } if (fieldMap[field][f].indexOf(type) != -1) { zfield = f; break; } } //assign default value if not excluded if (!zfield && def && !exclude) zfield = def; } else if (typeof (fieldMap[field]) == 'string') { zfield = fieldMap[field]; } cache[type][field] = zfield; return zfield; } function doImport() { if (typeof Promise == 'undefined') { startImport( function () {}, function (e) { throw e; } ); } else { return new Promise(function (resolve, reject) { startImport(resolve, reject); }); } } function startImport(resolve, reject) { try { var xml = Zotero.getXML(); var records = ZU.xpath(xml, "//record"); importNext(records, 0, resolve, reject); } catch (e) { reject(e); } } function importNext(records, index, resolve, reject) { try { //Z.debug(records.length) for (var i = index, n = records.length; i < n; i++) { Z.setProgress(i/n*100); var record = records[i]; newItem = new Zotero.Item(); //we prefer the name of the ref-type as it e.g. works with Mendeley and probably other Endnote 7 exports newItem.itemType = processItemType[ZU.xpathText(record, './/ref-type/@name')]; //fall back to ref-type number if (!newItem.itemType) newItem.itemType = processNumberType[ZU.xpathText(record, './/ref-type')]; //fall back to journal Article if all else fails if (!newItem.itemType) newItem.itemType = "journalArticle"; var notecache = []; //Z.debug(newItem.itemType) for (var j = 0; j < record.children.length; j++) { var node = record.children[j]; var field = node.nodeName; var zfield; if (zfield = getField(field, newItem.itemType)) { if (zfield.indexOf("creators") != -1) { var authortype = zfield.replace(/creators\//, ""); newItem.creators.push(ZU.cleanAuthor(node.textContent, authortype)) } else if (ZU.fieldIsValidForType(zfield, newItem.itemType)) { if (zfield == 'abstractNote') { // Preserve newlines newItem[zfield] = processField(node, true) .replace(/\r\n?/g, '\n'); } else { newItem[zfield] = processField(node); } } else { notecache.push(field + ": " + processField(node)); } } else if (field == "titles" || field == "periodical" || field == "alt-periodical") { for (var k = 0; k < node.children.length; k++) { var subnode = node.children[k]; var subfield = subnode.nodeName; if (zfield = getField(subfield, newItem.itemType)) { //Z.debug(zfield) if (ZU.fieldIsValidForType(zfield, newItem.itemType)) { newItem[zfield] = processField(subnode); } else { notecache.push(field + ": " + processField(subnode)); } } else { notecache.push(subfield + ": " + processField(subnode)); } } } else if (field == "contributors") { for (var k = 0; k < node.children.length; k++) { var subnode = node.children[k]; var subfield = subnode.nodeName; var authortype; if (authortype = getField(subfield, newItem.itemType)) { var creators = subnode.getElementsByTagName("author"); for (var l = 0; l < creators.length; l++) { if (authortype) { newItem.creators.push(ZU.cleanAuthor(creators[l].textContent, authortype, true)); } else { notecache.push(subfield + ": " + processField(subnode)); } } } else { notecache.push(subfield + ": " + processField(subnode)); } } } else if (field == "dates") { var date = node.getElementsByTagName("pub-dates"); var year = node.getElementsByTagName("year"); if (date.length > 0 && year.length > 0) { date = date[0].getElementsByTagName("date")[0].textContent.trim(); year = year[0].textContent.trim(); if (date.search(/\d{4}/) != -1) newItem.date = date; else newItem.date = date + " " + year; } else if (date.length > 0) { newItem.date = date[0].firstChild.textContent; } else if (year.length > 0) { newItem.date = year[0].textContent; } else if (node.textContent.trim().length > 0) { //there is only copyright note left; notecache.push("copyright-dates: " + node.textContent) } } else if (field == "notes" || field == "research-notes") { newItem.notes.push( '
' + processField(node, true, 'note') .split(/(?:\r\n|\r(?!\n)|\n){2,}/) // Double newlines (or more) are paragraphs .join('
')
.replace(/[\r\n]+/g, '
') // Single newlines are just new lines
+ '
' + n.note + '
'; // EndNote only supports a single note field, so concatenate all notes into one }, '') ); } break; case 'urls': var urls = doc.createElement("urls"); if (item.url) { var weburls = doc.createElement("web-urls"); urls.appendChild(weburls); mapProperty(weburls, "url", item.url); } if (item.attachments.length) { var pdfurls = doc.createElement("pdf-urls"); var texturls = doc.createElement("text-urls"); var exportFileData = Zotero.getOption("exportFileData"); for (var i=0; i< item.attachments.length; i++) { var attachment = item.attachments[i]; var path; if ( exportFileData && attachment.saveFile) { path = attachment.defaultPath.replace(/^files\//, ''); attachment.saveFile('PDF/' + path, true); path = 'internal-pdf://' + path; } else { path = attachment.localPath || attachment.url; } if (!path) continue; if (attachment.mimeType == "application/pdf") { mapProperty(pdfurls, "url", path); } else { mapProperty(texturls, "url", path); } } if (pdfurls.children.length) urls.appendChild(pdfurls); if (texturls.children.length) urls.appendChild(texturls); } if (urls.children.length) record.appendChild(urls); break; default: var zfield = getField(fields[f], item.itemType); //Z.debug(fields[f] + ": " + zfield); if (item[zfield]) mapProperty(record, fields[f], item[zfield]); } } records.appendChild(record); } doc.documentElement.appendChild(records); Zotero.write('\n'); var serializer = new XMLSerializer(); Zotero.write(serializer.serializeToString(doc) .replace(/\r\n?|\n/g, ' ') // Follow EndNote convention for newlines (carriage return entity) ); } //******IMPORT Functions /** * Convert XML style elements to Zotero HTML mark-up * Works with nested style nodes or with multiple styling descriptors in a single face attribute * * @param {node} a DOM element * * @return {String} String with HTML mark-up */ var en2zMap = { italic: 'i', bold: 'b', superscript: 'sup', subscript: 'sub' }; var en2zNoteMap = Object.create(en2zMap); en2zNoteMap.underline = 'u'; function htmlify(nodes, field) { var htmlstr = "", formatting = [], map = field == 'note' ? en2zNoteMap : en2zMap; if (nodes.childNodes.length == 1 && nodes.childNodes[0].nodeType == 3) { //single text node return nodes.textContent; } for (var i=0; i\s*/gi, '\n\n')
.trim();
var tags = [],
formatting = [],
currentStr = '',
nextStrStart = 0,
nodes = [],
m;
while (m = tagRe.exec(str)) {
var tagName = m[2].toUpperCase(),
format = map[tagName] || [],
oldFormatting;
if (!m[1]) {
//opening tag
// If "span", need to inspect contents of style attribute
if (tagName == 'SPAN' && m[3] && /\bstyle\s*=/i.test(m[3])) {
// Currently we're only aware of "text-decoration: underline" that is used in tinyMCE
if (/text-decoration\s*:[^'";]*\bunderline\b/.test(m[3])) {
format = ['underline'];
} else {
format = []; // Just drop it
}
}
var formatDiff = ZU.arrayDiff(format, formatting); //only consider new formatting
//push tag so that we know what we're closing later
tags.push({
tagName: tagName,
format: formatDiff
});
oldFormatting = formatting;
formatting = formatting.concat(formatDiff);
} else {
//closing tag
//see if we opened this kind of tag
var j;
for (j=tags.length-1; j>=0; j--) {
if (tags[j].tagName == tagName) break;
}
if (j<0) continue; //never opened. Skip closing tag
//close up tags
var tag, formatDiff = [];
do {
tag = tags.pop();
formatDiff = formatDiff.concat(tag.format);
} while (tag.tagName != tagName);
oldFormatting = formatting;
formatting = ZU.arrayDiff(formatting, formatDiff);
}
//attach substring up to tag
if (nextStrStart < m.index) currentStr += str.substring(nextStrStart, m.index);
nextStrStart = tagRe.lastIndex; //just past the current tag
if (formatDiff.length && currentStr) {
//formatting is changing, create a node for current formatting
nodes.push(createFormattedNode(currentStr, oldFormatting));
currentStr = '';
}
}
if (nextStrStart < str.length) currentStr += str.substring(nextStrStart);
if (currentStr) nodes.push(createFormattedNode(currentStr, formatting));
return nodes;
};
})();
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "\n
pub-location: New York",
"tags": [
"_EndnoteXML import"
]
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Beyond varieties of capitalism : Conflict, contradiction, and complementarities in the European economy",
"creators": [
{
"firstName": "Bob",
"lastName": "Hancké",
"creatorType": "seriesEditor"
},
{
"firstName": "Martin",
"lastName": "Rhodes",
"creatorType": "seriesEditor"
},
{
"firstName": "Mark",
"lastName": "Thatcher",
"creatorType": "seriesEditor"
}
],
"date": "2007",
"ISBN": "9780199206483",
"place": "Oxford and New York",
"publisher": "Oxford University Press",
"shortTitle": "Beyond varieties of capitalism",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "book",
"title": "Steve Jobs",
"creators": [
{
"firstName": "Walter",
"lastName": "Isaacson",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "9781451648539",
"place": "New York, {NY}",
"publisher": "Simon & Schuster",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Firms and the welfare state: When, why, and how does social policy matter to employers?",
"creators": [
{
"firstName": "Isabela",
"lastName": "Mares",
"creatorType": "author"
},
{
"firstName": "Peter A.",
"lastName": "Hall",
"creatorType": "editor"
},
{
"firstName": "David",
"lastName": "Soskice",
"creatorType": "editor"
}
],
"date": "2001",
"bookTitle": "Varieties of capitalism. The institutional foundations of comparative advantage",
"pages": "184-213",
"place": "New York",
"publisher": "Oxford University Press",
"attachments": [],
"tags": [],
"notes": [
{
"note": "The following values have no corresponding Zotero field:
periodical: Varieties of capitalism. The institutional foundations of comparative advantage",
"tags": [
"_EndnoteXML import"
]
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Shaping the body politic: Art and political formation in early america",
"creators": [
{
"firstName": "Maurie Dee",
"lastName": "McInnis",
"creatorType": "author"
},
{
"firstName": "Louis P.",
"lastName": "Nelson",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "0813931029",
"abstractNote": "Traditional narratives imply that art in early America was severely limited in scope. By contrast, these essays collectively argue that visual arts played a critical role in shaping an early American understanding of the body politic. American artists in the late colonial and early national periods enlisted the arts to explore and exploit their visions of the relationship of the American colonies to the mother country and, later, to give material shape to the ideals of modern republican nationhood. Taking a uniquely broad view of both politics and art, Shaping the Body Politic ranges in topic from national politics to the politics of national identity, and from presidential portraits to the architectures of the ordinary. The book covers subject matter from the 1760s to the 1820s, ranging from Patience Wright's embodiment of late colonial political tension to Thomas Jefferson's designs for the entry hall at Monticello as a museum. Paul Staiti, Maurie {McInnis}, and Roger Stein offer new readings of canonical presidential images and spaces: Jean-Antoine Houdon's George Washington, Gilbert Stuart's the Lansdowne portrait of Washington, and Thomas Jefferson's Monticello. In essays that engage print and painting, portraiture and landscape, Wendy Bellion, David Steinberg, and John Crowley explore the formation of national identity. The volume's concluding essays, by Susan Rather and Bernard Herman, examine the politics of the everyday. The accompanying eighty-five illustrations and color plates demonstrate the broad range of politically resonant visual material in early America. {ContributorsWendy} Bellion, University of Delaware * John E. Crowley, Dalhousie University * Bernard L. Herman, University of North Carolina, Chapel Hill * Maurie D. {McInnis}, University of Virginia * Louis P. Nelson, University of Virginia * Susan Rather, University of Texas, Austin * Paul Staiti, Mount Holyoke College * Roger B. Stein, emeritus, University of Virginia * David Steinberg, Independent Scholar Thomas Jefferson Foundation Distinguished Lecture Series",
"place": "Charlottesville, VA",
"publisher": "University of Virginia Press",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "patent",
"title": "Yo-yo having a modifiable string gap",
"creators": [
{
"firstName": "Hans",
"lastName": "Van Dan Elzen",
"creatorType": "inventor"
}
],
"issueDate": "2011",
"abstractNote": "The invention is a yo-yo that includes unique features that enable a user to adjust the yo-yo's string gap. In the preferred embodiment, at least one of the yo-yo's side assemblies includes a screw engaged to a nut that has two thru-bores located in a side-by-side relation. The screw is located to one side of the yo-yo's axis of rotation and can be rotated by a user to adjust the position of the associated side assembly on the yo-yo's axle structure. By appropriate positioning of the side assembly, a user can adjust the yo-yo's performance characteristics.",
"patentNumber": "WO2011US30214",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "webpage",
"title": "CSL search by example",
"creators": [],
"url": "http://editor.citationstyles.org/searchByExample/",
"websiteTitle": "Citation Style Editor",
"attachments": [],
"tags": [],
"notes": [
{
"note": "The following values have no corresponding Zotero field:
periodical: Citation Style Editor",
"tags": [
"_EndnoteXML import"
]
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "