www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 200cca74a64061f0ba5364877d3a5d585eba54e6
parent 85a74dc6ecfab9ffeb814cd05700530046184532
Author: Dan Stillman <dstillman@zotero.org>
Date:   Wed, 30 Jan 2008 09:53:19 +0000

Merged revisions 1986,1988-1990,1996,1998,2000-2004,2006,2008-2010,2013,2020-2028,2032-2034,2037,2039,2044-2049,2052-2056,2059,2065-2066,2068-2072,2075,2077-2079,2081,2083-2084,2086,2088-2094,2096,2099,2101,2103-2104,2107-2110,2115,2118,2120-2122,2126-2128,2131,2140,2142-2145,2149-2153,2155-2159,2165,2167-2168,2170-2171,2173-2176,2179-2183,2185-2186 via svnmerge from 
https://www.zotero.org/svn/extension/branches/1.0


Diffstat:
Mchrome.manifest | 3+--
Mchrome/content/zotero/addCitationDialog.js | 5+++++
Mchrome/content/zotero/bibliography.js | 35++++++++++++++++++++++++++---------
Mchrome/content/zotero/bindings/zoterosearch.xml | 11++++++-----
Mchrome/content/zotero/exportOptions.js | 9+++++++--
Mchrome/content/zotero/fileInterface.js | 14++++++++------
Mchrome/content/zotero/integrationDocPrefs.xul | 2+-
Mchrome/content/zotero/note.js | 20++++++++++++++++++--
Mchrome/content/zotero/overlay.js | 15+++++++++++++--
Mchrome/content/zotero/preferences/preferences.js | 55+++++++++++++++++++++++++++++++++++++++++++++++--------
Mchrome/content/zotero/preferences/preferences.xul | 46+++++++++++++++++++++++++---------------------
Mchrome/content/zotero/preferences/quickCopySiteEditor.xul | 21+++++++++++----------
Mchrome/content/zotero/selectItemsDialog.js | 23+++++++++++++++++++----
Mchrome/content/zotero/tools/csledit.xul | 2+-
Mchrome/content/zotero/tools/cslpreview.xul | 2+-
Mchrome/content/zotero/xpcom/annotate.js | 4++--
Mchrome/content/zotero/xpcom/attachments.js | 24+++++++++++++++++++-----
Mchrome/content/zotero/xpcom/cite.js | 635+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Mchrome/content/zotero/xpcom/data_access.js | 50+++++++++++++++++++++++++++++++++++++++++++++-----
Mchrome/content/zotero/xpcom/db.js | 9+++++++++
Mchrome/content/zotero/xpcom/ingester.js | 4++--
Mchrome/content/zotero/xpcom/integration.js | 129++++++++++++++++++++++++++++++++-----------------------------------------------
Mchrome/content/zotero/xpcom/itemTreeView.js | 13+++----------
Mchrome/content/zotero/xpcom/quickCopy.js | 28++++++++++++++++++++++++----
Mchrome/content/zotero/xpcom/schema.js | 16++++++++++++++++
Mchrome/content/zotero/xpcom/search.js | 54++++++++++++++++++++++++++++++++++++++++++++----------
Mchrome/content/zotero/xpcom/translate.js | 113++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------
Mchrome/content/zotero/xpcom/utilities.js | 24++++++++++++++----------
Mchrome/content/zotero/xpcom/zotero.js | 13++++++++++---
Mchrome/locale/af-ZA/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/af-ZA/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/ar/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/ar/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/bg-BG/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/bg-BG/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/ca-AD/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/ca-AD/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/cs-CZ/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/cs-CZ/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/da-DK/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/da-DK/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/de-AT/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/de-AT/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/de-CH/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/de-CH/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/de/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/de/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/el-GR/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/el-GR/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/en-US/zotero/preferences.dtd | 7+++++--
Mchrome/locale/en-US/zotero/zotero.properties | 3++-
Mchrome/locale/es-ES/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/es-ES/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/et-EE/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/et-EE/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/fr-FR/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/fr-FR/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/he-IL/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/he-IL/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/hu-HU/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/hu-HU/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/is-IS/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/is-IS/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/it-IT/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/it-IT/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/ja-JP/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/ja-JP/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/ko-KR/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/ko-KR/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/mn-MN/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/mn-MN/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/nb-NO/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/nb-NO/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/nl-NL/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/nl-NL/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/pl-PL/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/pl-PL/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/pt-BR/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/pt-BR/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/pt-PT/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/pt-PT/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/ro-RO/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/ro-RO/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/ru-RU/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/ru-RU/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/sr-YU/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/sr-YU/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/sv-SE/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/sv-SE/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/tr-TR/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/tr-TR/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/vi-VN/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/vi-VN/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/zh-CN/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/zh-CN/zotero/zotero.properties | 12++++++++++++
Mchrome/locale/zh-TW/zotero/preferences.dtd | 9+++++++++
Mchrome/locale/zh-TW/zotero/zotero.properties | 12++++++++++++
Mchrome/skin/default/zotero/preferences.css | 8++++++++
Mcomponents/zotero-protocol-handler.js | 51+++++++++++++++++++++++++++++++++++++++++++++------
Mdefaults/preferences/zotero.js | 9+++++----
Mscrapers.sql | 6968++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
101 files changed, 7067 insertions(+), 2051 deletions(-)

diff --git a/chrome.manifest b/chrome.manifest @@ -1,4 +1,5 @@ content zotero chrome/content/zotero/ +content zotero-platform chrome/content/zotero-platform/ platform locale zotero en-US chrome/locale/en-US/zotero/ locale zotero af-ZA chrome/locale/af-ZA/zotero/ @@ -42,5 +43,3 @@ overlay chrome://browser/content/browser.xul chrome://zotero/content/itemPane.xu style chrome://browser/content/browser.xul chrome://zotero/skin/zotero.css style chrome://global/content/customizeToolbar.xul chrome://zotero/skin/zotero.css - -content zotero-platform chrome/content/zotero-platform/ platform diff --git a/chrome/content/zotero/addCitationDialog.js b/chrome/content/zotero/addCitationDialog.js @@ -459,6 +459,11 @@ var Zotero_Citation_Dialog = new function () { citationItem[property] = document.getElementById(property)[_preserveData[property]]; } } + + if(citationItem["locator"] == "") { + citationItem["locator"] = citationItem["locatorType"] = undefined; + } + io.citation.citationItems = [citationItem]; } } diff --git a/chrome/content/zotero/bibliography.js b/chrome/content/zotero/bibliography.js @@ -60,22 +60,29 @@ var Zotero_File_Interface_Bibliography = new function() { } // add styles to list - for(var i in styles) { + var index = 0; + for (var i in styles) { var itemNode = document.createElement("listitem"); itemNode.setAttribute("value", i); itemNode.setAttribute("label", styles[i]); listbox.appendChild(itemNode); if(i == _io.style) { - listbox.selectedItem = itemNode; + var selectIndex = index; } + index++; } - // select first item by default - if(listbox.selectedIndex == -1) { - listbox.selectedIndex = 0; + if (selectIndex < 1) { + selectIndex = 0; } + // Can't select below-the-fold listitems inline in Firefox 2, because that would be too easy + setTimeout(function () { + listbox.ensureIndexIsVisible(selectIndex); + listbox.selectedIndex = selectIndex; + }, 1); + // ONLY FOR bibliography.xul: export options if(document.getElementById("save-as-rtf")) { // restore saved bibliographic settings @@ -92,7 +99,7 @@ var Zotero_File_Interface_Bibliography = new function() { // bookmarks text if(document.getElementById("displayAs")) { if(_io.useEndnotes && _io.useEndnotes == 1) document.getElementById("displayAs").selectedIndex = 1; - styleChanged(); + styleChanged(selectIndex); if(_io.useBookmarks && _io.useBookmarks == 1) document.getElementById("formatUsing").selectedIndex = 1; if(_io.openOffice) { @@ -105,7 +112,7 @@ var Zotero_File_Interface_Bibliography = new function() { // add border on Windows if(Zotero.isWin) { - document.getElementById("zotero-bibliography-container").style.border = "1px solid black"; + document.getElementById("doc-prefs-dialog").style.border = "1px solid black"; } } window.sizeToContent(); @@ -115,9 +122,19 @@ var Zotero_File_Interface_Bibliography = new function() { /* * ONLY FOR integrationDocPrefs.xul: called when style is changed */ - function styleChanged() { + function styleChanged(index) { + // When called from init(), selectedItem isn't yet set + if (index != undefined) { + var selectedItem = document.getElementById("style-listbox").getItemAtIndex(index); + } + else { + var selectedItem = document.getElementById("style-listbox").selectedItem; + } + + var selectedStyle = selectedItem.getAttribute('value'); + // update status of displayAs box based - var selectedStyle = document.getElementById("style-listbox").selectedItem.getAttribute('value'); + var styleClass = Zotero.Cite.getStyleClass(selectedStyle); document.getElementById("displayAs").disabled = styleClass != "note"; } diff --git a/chrome/content/zotero/bindings/zoterosearch.xml b/chrome/content/zotero/bindings/zoterosearch.xml @@ -101,6 +101,7 @@ <body> <![CDATA[ var conditionsBox = this.id('conditions'); + this.search.removeCondition(id); for (var i = 0, len=conditionsBox.childNodes.length; i < len; i++){ @@ -164,7 +165,7 @@ <body> <![CDATA[ this.updateSearch(); - return this.search.save(); + return this.search.save(true); ]]> </body> </method> @@ -200,11 +201,11 @@ </implementation> <content> - <xul:vbox id="search-box" flex="1" onkeypress="this.parentNode.handleKeyPress(event)"> + <xul:vbox id="search-box" flex="1" onkeypress="document.getBindingParent(this).handleKeyPress(event)"> <xul:groupbox xbl:inherits="flex"> <xul:caption align="center"> <xul:label value="&zotero.search.joinMode.prefix;"/> - <xul:menulist id="joinModeMenu" oncommand="this.parentNode.parentNode.parentNode.parentNode.updateJoinMode(); event.stopPropagation()"> + <xul:menulist id="joinModeMenu" oncommand="document.getBindingParent(this).updateJoinMode(); event.stopPropagation()"> <xul:menupopup> <xul:menuitem label="&zotero.search.joinMode.any;" value="any"/> <xul:menuitem label="&zotero.search.joinMode.all;" value="all" selected="true"/> @@ -215,8 +216,8 @@ <xul:vbox id="conditions"/> </xul:groupbox> <xul:hbox> - <xul:checkbox id="recursiveCheckbox" label="&zotero.search.recursive.label;" oncommand="this.parentNode.parentNode.parentNode.updateCheckbox('recursive'); event.stopPropagation()"/> - <xul:checkbox id="noChildrenCheckbox" label="&zotero.search.noChildren;" oncommand="this.parentNode.parentNode.parentNode.updateCheckbox('noChildren'); event.stopPropagation()"/> + <xul:checkbox id="recursiveCheckbox" label="&zotero.search.recursive.label;" oncommand="document.getBindingParent(this).updateCheckbox('recursive'); event.stopPropagation()"/> + <xul:checkbox id="noChildrenCheckbox" label="&zotero.search.noChildren;" oncommand="document.getBindingParent(this).updateCheckbox('noChildren'); event.stopPropagation()"/> </xul:hbox> <xul:checkbox id="includeParentsAndChildrenCheckbox" label="&zotero.search.includeParentsAndChildren;" oncommand="document.getBindingParent(this).updateCheckbox('includeParentsAndChildren'); event.stopPropagation()"/> </xul:vbox> diff --git a/chrome/content/zotero/exportOptions.js b/chrome/content/zotero/exportOptions.js @@ -109,6 +109,8 @@ var Zotero_File_Interface_Export = new function() { } var optionsBox = document.getElementById("translator-options"); + optionsBox.hidden = true; + var haveOption = false; for(var i=0; i<optionsBox.childNodes.length; i++) { // loop through options to see which should be enabled var node = optionsBox.childNodes[i]; @@ -116,7 +118,8 @@ var Zotero_File_Interface_Export = new function() { if(translatorOptions[optionName] != undefined) { // option should be enabled - node.disabled = undefined; + optionsBox.hidden = undefined; + node.hidden = undefined; var defValue = translatorOptions[optionName]; if(typeof(defValue) == "boolean") { @@ -131,10 +134,12 @@ var Zotero_File_Interface_Export = new function() { } } else { // option should be disabled and unchecked to prevent confusion - node.disabled = true; + node.hidden = true; node.setAttribute("checked", "false"); } } + + window.sizeToContent(); } /* diff --git a/chrome/content/zotero/fileInterface.js b/chrome/content/zotero/fileInterface.js @@ -312,7 +312,7 @@ var Zotero_File_Interface = new function() { * * Does not check that items are actual references (and not notes or attachments) */ - function copyItemsToClipboard(items, style) { + function copyItemsToClipboard(items, style, asHTML) { // copy to clipboard var transferable = Components.classes["@mozilla.org/widget/transferable;1"]. createInstance(Components.interfaces.nsITransferable); @@ -329,8 +329,8 @@ var Zotero_File_Interface = new function() { transferable.addDataFlavor("text/html"); transferable.setTransferData("text/html", str, bibliography.length*2); - // add text - var bibliography = csl.formatBibliography(itemSet, "Text"); + // add text (or HTML source) + var bibliography = csl.formatBibliography(itemSet, asHTML ? 'HTML' : 'Text'); var str = Components.classes["@mozilla.org/supports-string;1"]. createInstance(Components.interfaces.nsISupportsString); str.data = bibliography; @@ -345,8 +345,10 @@ var Zotero_File_Interface = new function() { * Copies HTML and text citations for passed items in given style * * Does not check that items are actual references (and not notes or attachments) + * + * if |asHTML| is true, copy HTML source as text */ - function copyCitationToClipboard(items, style) { + function copyCitationToClipboard(items, style, asHTML) { // copy to clipboard var transferable = Components.classes["@mozilla.org/widget/transferable;1"]. createInstance(Components.interfaces.nsITransferable); @@ -369,8 +371,8 @@ var Zotero_File_Interface = new function() { transferable.addDataFlavor("text/html"); transferable.setTransferData("text/html", str, bibliography.length*2); - // add text - var bibliography = csl.formatCitation(citation, "Text"); + // add text (or HTML source) + var bibliography = csl.formatCitation(citation, asHTML ? 'HTML' : 'Text'); var str = Components.classes["@mozilla.org/supports-string;1"]. createInstance(Components.interfaces.nsISupportsString); str.data = bibliography; diff --git a/chrome/content/zotero/integrationDocPrefs.xul b/chrome/content/zotero/integrationDocPrefs.xul @@ -5,7 +5,7 @@ <!DOCTYPE window SYSTEM "chrome://zotero/locale/zotero.dtd"> <dialog - id="add-citation-dialog" + id="doc-prefs-dialog" orient="vertical" buttons="accept" title="&zotero.integration.docPrefs.title;" diff --git a/chrome/content/zotero/note.js b/chrome/content/zotero/note.js @@ -45,7 +45,14 @@ function onLoad() if (itemID) { var ref = Zotero.Items.get(itemID); + + // Make sure Undo doesn't wipe out the note + if (!noteEditor.note || noteEditor.note.getID() != ref.getID()) { + noteEditor.id('noteField').editor.enableUndo(false); + } noteEditor.note = ref; + noteEditor.id('noteField').editor.enableUndo(true); + document.title = ref.getNoteTitle(); } else if (parentItemID) { @@ -72,9 +79,18 @@ function onUnload() var NotifyCallback = { notify: function(action, type, ids){ // DEBUG: why does this reset without checking the modified ids? - if (noteEditor.note){ + if (noteEditor.note) { noteEditor.note = noteEditor.note; - document.title = noteEditor.note.getNoteTitle(); + + // If the document title hasn't yet been set, reset undo so + // undoing to empty isn't possible + var noteTitle = noteEditor.note.getNoteTitle(); + if (!document.title && noteTitle != '') { + noteEditor.id('noteField').editor.enableUndo(false); + noteEditor.id('noteField').editor.enableUndo(true); + document.title = noteTitle; + } + // Update the window name (used for focusing) in case this is a new note window.name = 'zotero-note-' + noteEditor.note.getID(); } diff --git a/chrome/content/zotero/overlay.js b/chrome/content/zotero/overlay.js @@ -763,8 +763,18 @@ var ZoteroPane = new function() if(item.isNote()) { var noteEditor = document.getElementById('zotero-note-editor'); + + // If loading new or different note, disable undo while we repopulate the text field + // so Undo doesn't end up clearing the field. This also ensures that Undo doesn't + // undo content from another note into the current one. + if (!noteEditor.note || noteEditor.note.getID() != item.ref.getID()) { + noteEditor.id('noteField').editor.enableUndo(false); + } noteEditor.item = null; noteEditor.note = item.ref; + + noteEditor.id('noteField').editor.enableUndo(true); + document.getElementById('zotero-view-note-button').setAttribute('noteID',item.ref.getID()); if(item.ref.getSource()) { @@ -1129,13 +1139,14 @@ var ZoteroPane = new function() var url = window.content.location.href; var [mode, format] = Zotero.QuickCopy.getFormatFromURL(url).split('='); + var [mode, contentType] = mode.split('/'); if (mode == 'bibliography') { if (asCitations) { - Zotero_File_Interface.copyCitationToClipboard(items, format); + Zotero_File_Interface.copyCitationToClipboard(items, format, contentType == 'html'); } else { - Zotero_File_Interface.copyItemsToClipboard(items, format); + Zotero_File_Interface.copyItemsToClipboard(items, format, contentType == 'html'); } } else if (mode == 'export') { diff --git a/chrome/content/zotero/preferences/preferences.js b/chrome/content/zotero/preferences/preferences.js @@ -134,18 +134,32 @@ function populateOpenURLResolvers() { } +/* + * Builds the main Quick Copy drop-down from the current global pref + */ function populateQuickCopyList() { // Initialize default format drop-down - var formatMenu = document.getElementById("quickCopy-menu"); var format = Zotero.Prefs.get("export.quickCopy.setting"); - buildQuickCopyFormatDropDown(formatMenu, format); - formatMenu.setAttribute('preference', "pref-quickCopy-setting"); + var menulist = document.getElementById("zotero-quickCopy-menu"); + buildQuickCopyFormatDropDown(menulist, Zotero.QuickCopy.getContentType(format), format); + menulist.setAttribute('preference', "pref-quickCopy-setting"); + updateQuickCopyHTMLCheckbox(); refreshQuickCopySiteList(); } -function buildQuickCopyFormatDropDown(menulist, currentFormat) { +/* + * Builds a Quick Copy drop-down + */ +function buildQuickCopyFormatDropDown(menulist, contentType, currentFormat) { + if (!currentFormat) { + currentFormat = menulist.value; + } + // Strip contentType from mode + currentFormat = Zotero.QuickCopy.stripContentType(currentFormat); + + menulist.selectedItem = null; menulist.removeAllItems(); @@ -167,13 +181,15 @@ function buildQuickCopyFormatDropDown(menulist, currentFormat) { // add styles to list var styles = Zotero.Cite.getStyles(); for (var i in styles) { - var val = 'bibliography=' + i; + var baseVal = 'bibliography=' + i; + var val = 'bibliography' + (contentType == 'html' ? '/html' : '') + '=' + i; var itemNode = document.createElement("menuitem"); itemNode.setAttribute("value", val); itemNode.setAttribute("label", styles[i]); + itemNode.setAttribute("oncommand", 'updateQuickCopyHTMLCheckbox()'); popup.appendChild(itemNode); - if (val == currentFormat) { + if (baseVal == currentFormat) { menulist.selectedItem = itemNode; } } @@ -198,6 +214,7 @@ function buildQuickCopyFormatDropDown(menulist, currentFormat) { var itemNode = document.createElement("menuitem"); itemNode.setAttribute("value", val); itemNode.setAttribute("label", translators[i].label); + itemNode.setAttribute("oncommand", 'updateQuickCopyHTMLCheckbox()'); popup.appendChild(itemNode); if (val == currentFormat) { @@ -205,19 +222,37 @@ function buildQuickCopyFormatDropDown(menulist, currentFormat) { } } + menulist.click(); + return popup; } +function updateQuickCopyHTMLCheckbox() { + var format = document.getElementById('zotero-quickCopy-menu').value; + var mode, contentType; + + var checkbox = document.getElementById('zotero-quickCopy-copyAsHTML'); + [mode, format] = format.split('='); + [mode, contentType] = mode.split('/'); + + checkbox.checked = contentType == 'html'; + checkbox.disabled = mode != 'bibliography'; +} + function showQuickCopySiteEditor(index) { var treechildren = document.getElementById('quickCopy-siteSettings-rows'); if (index != undefined && index > -1 && index < treechildren.childNodes.length) { var treerow = treechildren.childNodes[index].firstChild; - var domain = treerow.childNodes[0].getAttribute('label') - var format = treerow.childNodes[1].getAttribute('label') + var domain = treerow.childNodes[0].getAttribute('label'); + var format = treerow.childNodes[1].getAttribute('label'); + var asHTML = treerow.childNodes[2].getAttribute('label') != ''; } var format = Zotero.QuickCopy.getSettingFromFormattedName(format); + if (asHTML) { + format = format.replace('bibliography=', 'bibliography/html='); + } var io = {domain: domain, format: format, ok: false}; window.openDialog('chrome://zotero/content/preferences/quickCopySiteEditor.xul', "zotero-preferences-quickCopySiteEditor", "chrome, modal", io); @@ -254,14 +289,18 @@ function refreshQuickCopySiteList() { var treerow = document.createElement('treerow'); var domainCell = document.createElement('treecell'); var formatCell = document.createElement('treecell'); + var HTMLCell = document.createElement('treecell'); domainCell.setAttribute('label', siteData[i].domainPath); var formatted = Zotero.QuickCopy.getFormattedNameFromSetting(siteData[i].format); formatCell.setAttribute('label', formatted); + var copyAsHTML = Zotero.QuickCopy.getContentType(siteData[i].format) == 'html'; + HTMLCell.setAttribute('label', copyAsHTML ? ' ✓ ' : ''); treerow.appendChild(domainCell); treerow.appendChild(formatCell); + treerow.appendChild(HTMLCell); treeitem.appendChild(treerow); treechildren.appendChild(treeitem); } diff --git a/chrome/content/zotero/preferences/preferences.xul b/chrome/content/zotero/preferences/preferences.xul @@ -262,34 +262,38 @@ To add a new preference: <separator/> - <vbox> - <label value="&zotero.preferences.quickCopy.defaultOutputFormat;" control="quickCopy-menu"/> - <menulist id="quickCopy-menu"/> - </vbox> + <label value="&zotero.preferences.quickCopy.defaultOutputFormat;" control="quickCopy-menu"/> + <menulist id="zotero-quickCopy-menu"/> <separator/> - <vbox> - <label value="&zotero.preferences.quickCopy.siteEditor.setings;" control="quickCopy-siteSettings"/> - <tree flex="1" id="quickCopy-siteSettings" hidecolumnpicker="true" rows="6" seltype="single" - ondblclick="showQuickCopySiteEditor(this.currentIndex)" - onkeypress="if (event.keyCode == event.DOM_VK_DELETE) { deleteSelectedQuickCopySite(); }"> - <treecols> - <treecol id="quickCopy-urlColumn" label="&zotero.preferences.quickCopy.siteEditor.domainPath;" flex="1"/> - <treecol id="quickCopy-formatColumn" label="&zotero.preferences.quickCopy.siteEditor.outputFormat;" flex="2"/> - </treecols> - <treechildren id="quickCopy-siteSettings-rows"/> - </tree> - <separator class="thin"/> - <hbox pack="end"> - <button label="-" onclick="deleteSelectedQuickCopySite()"/> - <button label="+" onclick="showQuickCopySiteEditor()"/> - </hbox> - </vbox> + <checkbox id="zotero-quickCopy-copyAsHTML" label="&zotero.preferences.quickCopy.copyAsHTML;" + oncommand="buildQuickCopyFormatDropDown(document.getElementById('zotero-quickCopy-menu'), this.checked ? 'html' : '');"/> + + <separator/> + + <label value="&zotero.preferences.quickCopy.siteEditor.setings;" control="quickCopy-siteSettings"/> + <tree flex="1" id="quickCopy-siteSettings" hidecolumnpicker="true" rows="6" seltype="single" + ondblclick="showQuickCopySiteEditor(this.currentIndex)" + onkeypress="if (event.keyCode == event.DOM_VK_DELETE) { deleteSelectedQuickCopySite(); }"> + <treecols> + <treecol id="quickCopy-urlColumn" label="&zotero.preferences.quickCopy.siteEditor.domainPath;" flex="1"/> + <treecol id="quickCopy-formatColumn" label="&zotero.preferences.quickCopy.siteEditor.outputFormat;" flex="2"/> + <treecol id="quickCopy-copyAsHTML" label="HTML"/> + </treecols> + <treechildren id="quickCopy-siteSettings-rows"/> + </tree> + <separator class="thin"/> + <hbox pack="end"> + <button label="-" onclick="deleteSelectedQuickCopySite()"/> + <button label="+" onclick="showQuickCopySiteEditor()"/> + </hbox> <separator/> <label id="quickCopy-macWarning" hidden="true" value="&zotero.preferences.quickCopy.macWarning;"/> + <separator/> + <label class="text-link" href="http://www.zotero.org/styles/" value="&zotero.preferences.export.getAdditionalStyles;"/> </groupbox> </prefpane> diff --git a/chrome/content/zotero/preferences/quickCopySiteEditor.xul b/chrome/content/zotero/preferences/quickCopySiteEditor.xul @@ -20,7 +20,7 @@ function onAccept() { var io = window.arguments[0]; io.domain = document.getElementById('zotero-quickCopy-domain').value; - io.format = document.getElementById('zotero-quickCopy-format').value; + io.format = document.getElementById('zotero-quickCopy-menu').value; io.ok = true; } } @@ -28,21 +28,22 @@ </script> <vbox id="zotero-preferences-quickCopySiteEditor"> - <vbox> - <label value="&zotero.preferences.quickCopy.siteEditor.domainPath; &zotero.preferences.quickCopy.siteEditor.domainPath.example;" control="zotero-quickCopy-domain"/> - <textbox id="zotero-quickCopy-domain"/> - </vbox> - <vbox> - <label value="&zotero.preferences.quickCopy.siteEditor.outputFormat;" control="zotero-quickCopy-format"/> - <menulist id="zotero-quickCopy-format"/> - </vbox> + <label value="&zotero.preferences.quickCopy.siteEditor.domainPath; &zotero.preferences.quickCopy.siteEditor.domainPath.example;" control="zotero-quickCopy-domain"/> + <textbox id="zotero-quickCopy-domain"/> + <separator class="thin"/> + <label value="&zotero.preferences.quickCopy.siteEditor.outputFormat;" control="zotero-quickCopy-menu"/> + <menulist id="zotero-quickCopy-menu"/> + <separator class="thin"/> + <checkbox id="zotero-quickCopy-copyAsHTML" label="&zotero.preferences.quickCopy.copyAsHTML;" + oncommand="buildQuickCopyFormatDropDown(document.getElementById('zotero-quickCopy-menu'), this.checked ? 'html' : '')"/> </vbox> <script> <![CDATA[ var io = window.arguments[0]; document.getElementById('zotero-quickCopy-domain').value = io.domain ? io.domain : ''; - buildQuickCopyFormatDropDown(document.getElementById('zotero-quickCopy-format'), io.format); + buildQuickCopyFormatDropDown(document.getElementById('zotero-quickCopy-menu'), Zotero.QuickCopy.getContentType(io.format), io.format); + updateQuickCopyHTMLCheckbox(); ]]> </script> </dialog> diff --git a/chrome/content/zotero/selectItemsDialog.js b/chrome/content/zotero/selectItemsDialog.js @@ -61,11 +61,26 @@ function onCollectionSelected() { var collection = collectionsView._getItemAtRow(collectionsView.selection.currentIndex); collection.setSearch(''); - - itemsView = new Zotero.ItemTreeView(collection, (window.arguments[1] ? true : false)); - document.getElementById('zotero-items-tree').view = itemsView; + + try { + Zotero.UnresponsiveScriptIndicator.disable(); + itemsView = new Zotero.ItemTreeView(collection, (window.arguments[1] ? true : false)); + document.getElementById('zotero-items-tree').view = itemsView; + } + finally { + Zotero.UnresponsiveScriptIndicator.enable(); + } + + if (collection.isLibrary()) { + Zotero.Prefs.set('lastViewedFolder', 'L'); + } + if (collection.isCollection()) { + Zotero.Prefs.set('lastViewedFolder', 'C' + collection.ref.getID()); + } + else if (collection.isSearch()) { + Zotero.Prefs.set('lastViewedFolder', 'S' + collection.ref.id); + } } - } function onSearch() diff --git a/chrome/content/zotero/tools/csledit.xul b/chrome/content/zotero/tools/csledit.xul @@ -99,7 +99,7 @@ iframe.contentDocument.documentElement.innerHTML = '<html><head><title></title></head><body><p style="color: red">No references selected in Zotero.</p></body></html>'; return; } - + var csl; if (str.indexOf("<defaults") != -1) { csl = new Zotero.CSL.Compat(str); } diff --git a/chrome/content/zotero/tools/cslpreview.xul b/chrome/content/zotero/tools/cslpreview.xul @@ -93,7 +93,7 @@ iframe.contentDocument.documentElement.innerHTML = '<html><head><title></title></head><body><p style="color: red">No references selected in Zotero.</p></body></html>'; return ''; } - + var csl; if (str.indexOf("<defaults") != -1) { csl = new Zotero.CSL.Compat(str); } diff --git a/chrome/content/zotero/xpcom/annotate.js b/chrome/content/zotero/xpcom/annotate.js @@ -867,8 +867,8 @@ Zotero.Annotation.prototype._confirmDelete = function(event) { var dontShowAgain = { value: false }; var del = promptService.confirmCheck( this.window, - Zotero.getString('annotations.regenerate.title'), - Zotero.getString('annotations.regenerate.body'), + Zotero.getString('annotations.confirmClose.title'), + Zotero.getString('annotations.confirmClose.body'), Zotero.getString('general.dontShowWarningAgain'), dontShowAgain ); diff --git a/chrome/content/zotero/xpcom/attachments.js b/chrome/content/zotero/xpcom/attachments.js @@ -174,6 +174,13 @@ Zotero.Attachments = new function(){ function importFromURL(url, sourceItemID, forceTitle, forceFileBaseName, parentCollectionIDs){ Zotero.debug('Importing attachment from URL'); + // Throw error on invalid URLs + urlRe = /^https?:\/\/[^\s]*$/; + var matches = urlRe.exec(url); + if (!matches) { + throw ("Invalid URL '" + url + "' in Zotero.Attachments.importFromURL()"); + } + Zotero.Utilities.HTTP.doHead(url, function(obj){ var mimeType = obj.channel.contentType; @@ -343,6 +350,13 @@ Zotero.Attachments = new function(){ function linkFromURL(url, sourceItemID, mimeType, title){ Zotero.debug('Linking attachment from URL'); + // Throw error on invalid URLs + urlRe = /^https?:\/\/[^\s]*$/; + var matches = urlRe.exec(url); + if (!matches) { + throw ("Invalid URL '" + url + "' in Zotero.Attachments.linkFromURL()"); + } + // If no title provided, figure it out from the URL if (!title){ title = url.substring(url.lastIndexOf('/')+1); @@ -814,21 +828,21 @@ Zotero.Attachments = new function(){ var value = item.getField(field, false, true); } + var re = new RegExp("\{?([^%\{\}]*)" + rpl + "(\{[0-9]+\})?" + "([^%\{\}]*)\}?"); + // If no value for this field, strip entire conditional block // (within curly braces) if (!value) { - var re = new RegExp("\{[^%]*" + rpl + "(\{[0-9]+\})?" + "[^%]*\}"); if (str.match(re)) { return str.replace(re, '') } } - var f = function(match) { - var chars = match.match(/{([0-9]+)}/); - return (chars) ? value.substr(0, chars[1]) : value; + var f = function(match, p1, p2, p3) { + var maxChars = p2 ? p2.replace(/[^0-9]+/g, '') : false; + return p1 + (maxChars ? value.substr(0, maxChars) : value) + p3; } - var re = new RegExp("(\{[^%]*)?" + rpl + "(\{[0-9]+\})?" + "([^%]*\})?"); return str.replace(re, f); } diff --git a/chrome/content/zotero/xpcom/cite.js b/chrome/content/zotero/xpcom/cite.js @@ -340,6 +340,7 @@ Zotero.CSL.prototype.createCitation = function(citationItems) { */ Zotero.CSL._firstNameRegexp = /^[a-zA-Z0-9]*/; Zotero.CSL._textCharRegexp = /[a-zA-Z0-9]/; +Zotero.CSL._numberRegexp = /\d+/; Zotero.CSL.prototype.formatCitation = function(citation, format) { var context = this._csl.citation; if(!context) { @@ -515,7 +516,7 @@ Zotero.CSL.prototype.formatCitation = function(citation, format) { } var returnString = string.clone(); - returnString.append(string.get(), context.layout, false, true); + returnString.concat(string, context.layout); var returnString = returnString.get(); // loop through to remove _csl property @@ -543,35 +544,63 @@ Zotero.CSL.prototype.formatBibliography = function(itemSet, format) { var hangingIndent = !!(context.option.(@name == "hanging-indent").@value == "true"); var secondFieldAlign = context.option.(@name == "second-field-align").@value.toString(); + var lineSpacing = context.option.(@name == "line-spacing").@value.toString(); + lineSpacing = (lineSpacing === "" ? 1 : parseInt(lineSpacing, 10)); + if(lineSpacing == NaN) throw "Invalid line spacing"; + var entrySpacing = context.option.(@name == "entry-spacing").@value.toString(); + entrySpacing = (entrySpacing === "" ? 1 : parseInt(entrySpacing, 10)); + if(entrySpacing == NaN) throw "Invalid entry spacing"; var index = 0; var output = ""; var preamble = ""; if(format == "HTML") { if(this.class == "note" && isCitation) { + // note citations are formatted as an ordered list preamble = '<ol>\r\n'; secondFieldAlign = false; } else { + // needed bc HTML doesn't force lines to be at least as big as the + // tallest character + if(lineSpacing <= 1.1) lineSpacing = 1.1; + + // add style + var style = 'line-height:'+lineSpacing+'em;' if(hangingIndent) { - preamble = '<div style="margin-left:0.5in;text-indent:-0.5in;">\r\n'; + style += 'margin-left:0.5in;text-indent:-0.5in;'; } if(secondFieldAlign) { - preamble += '<table style="border-collapse:collapse;">\r\n'; + preamble += '<table style="border-collapse:collapse;'+style+'">\r\n'; + } else { + preamble += '<div style="'+style+'">\r\n'; } } - } else if(format == "RTF" || format == "Integration") { - if(format == "RTF") { - preamble = "{\\rtf\\ansi{\\fonttbl\\f0\\froman Times New Roman;}{\\colortbl;\\red255\\green255\\blue255;}\\pard\\f0"; + } else { + if(format == "RTF" || format == "Integration") { + if(format == "RTF") { + preamble = "{\\rtf\\ansi{\\fonttbl\\f0\\froman Times New Roman;}{\\colortbl;\\red255\\green255\\blue255;}\\pard\\f0"; + } + + var tabStop = null; + if(hangingIndent) { + var indent = 720; // 720 twips = 0.5 in + var firstLineIndent = -720; // -720 twips = -0.5 in + } else { + var indent = 0; + var firstLineIndent = 0; + } } - var tabStop = null; - if(hangingIndent) { - var indent = 720; // 720 twips = 0.5 in - var firstLineIndent = -720; // -720 twips = -0.5 in - } else { - var indent = 0; - var firstLineIndent = 0; + var returnChars = ""; + for(j=0; j<=entrySpacing; j++) { + if(format == "RTF") { + returnChars += "\\\r\n"; + } else if(Zotero.isWin) { + returnChars += "\r\n"; + } else { + returnChars += "\n"; + } } } @@ -597,7 +626,7 @@ Zotero.CSL.prototype.formatBibliography = function(itemSet, format) { string = string.get(); } - + if(secondFieldAlign && (format == "RTF" || format == "Integration")) { if(format == "RTF") { var tab = string.indexOf("\\tab "); @@ -618,38 +647,40 @@ Zotero.CSL.prototype.formatBibliography = function(itemSet, format) { if(this.class == "note" && isCitation) { output += "<li>"+string+span+"</li>\r\n"; } else if(secondFieldAlign) { - output += '<tr style="vertical-align:top;"><td>'+string+span+"<td></tr>\r\n" - +'<tr><td colspan="2">&nbsp;</td></tr>\r\n'; + output += '<tr style="vertical-align:top;"><td>'+string+span+"</td></tr>\r\n"; + for(var j=0; j<entrySpacing; j++) { + output += '<tr><td colspan="2">&nbsp;</td></tr>\r\n'; + } } else { - output += "<p>"+string+span+"</p>\r\n"; + if(i == 0) { + // first p has no margins + var margin = "0"; + } else { + var margin = (entrySpacing*lineSpacing).toString()+"em 0 0 0"; + } + output += '<p style="margin:'+margin+'">'+string+span+"</p>\r\n"; } - } else if(format == "RTF") { + } else { if(this.class == "note" && isCitation) { - index++; - output += index+". "; - } - output += string+"\\\r\n\\\r\n"; - } else { - if(format == "Text" && this.class == "note" && isCitation) { - index++; - output += index+". "; + if(format == "RTF") { + index++; + output += index+". "; + } else if(format == "Text") { + index++; + output += index+". "; + } } - // attach \n on mac (since both \r and \n count as newlines for - // clipboard purposes) - output += string+(Zotero.isWin ? "\r\n\r\n" : "\n\n"); + output += string+returnChars; } } if(format == "HTML") { if(this.class == "note" && isCitation) { output += '</ol>'; + } else if(secondFieldAlign) { + output += '</table>'; } else { - if(secondFieldAlign) { - output += '</table>'; - } - if(hangingIndent) { - output += '</div>'; - } + output += '</div>'; } } else if(format == "RTF" || format == "Integration") { if(secondFieldAlign) { @@ -669,18 +700,22 @@ Zotero.CSL.prototype.formatBibliography = function(itemSet, format) { } preamble += "\\li"+indent+" \\fi"+firstLineIndent+" "; - if(tabStop !== null) { - preamble += "\\tx"+tabStop+" "; + if(format == "Integration") { + preamble += "\\sl"+lineSpacing+" "; + } else if(format == "RTF" && lineSpacing != 1) { + preamble += "\\sl"+(240*lineSpacing)+" \\slmult1 "; } - if(format == "RTF") { - // drop last 6 characters of output (last two returns) - output = output.substr(0, output.length-6)+"}"; - } else { - // drop last 4 characters (last two returns) - output = output.substr(0, (Zotero.isWin ? output.length-4 : output.length-2)); + if(tabStop !== null) { + preamble += "\\tx"+tabStop+" "; } preamble += "\r\n"; + + // drop last returns + output = output.substr(0, output.length-returnChars.length); + + // add bracket for RTF + if(format == "RTF") output += "}"; } return preamble+output; @@ -802,6 +837,21 @@ Zotero.CSL.prototype._processNames = function(item, element, formattedString, co if(formattedString.format == "Sort") { // for sort, we use the plain names var name = creators[i].getNameVariable("lastName"); + + // cut off lowercase parts of otherwise capitalized names (e.g., "de") + var lastNameParts = name.split(" "); + if(lastNameParts.length > 1 && lastNameParts[0] !== "" && lastNameParts[0].length <= 4 + && lastNameParts[0][0].toLowerCase() == lastNameParts[0][0] + && lastNameParts[lastNameParts.length-1][0].toUpperCase() == lastNameParts[lastNameParts.length-1][0]) { + name = ""; + for(var k=1; k<lastNameParts.length; k++) { + if(lastNameParts[k][0].toUpperCase() == lastNameParts[k][0]) { + name += " "+lastNameParts[k]; + } + } + name = name.substr(1); + } + var firstName = creators[i].getNameVariable("firstName"); if(name && firstName) name += ", "; name += firstName; @@ -962,20 +1012,41 @@ Zotero.CSL.prototype._processElements = function(item, element, formattedString, } } else if(child.@macro.length()) { var macro = this._csl.macro.(@name == child.@macro); - if(!macro.length()) throw "CSL: style references undefined macro"; + if(!macro.length()) throw "CSL: style references undefined macro " + child.@macro; // If not ignored (bc already used as a substitution) if(!ignore[1][child.@macro.toString()]) { var newString = formattedString.clone(child.@delimiter.toString()); var success = this._processElements(item, macro, newString, context, citationItem, ignore); - + if(success) dataAppended = true; formattedString.concat(newString, child); - dataAppended = true; } } else if(child.@value.length()) { formattedString.append(child.@value.toString(), child); } + } else if(name == "number") { + if(child.@variable.length()) { + var form = child.@form.toString(); + var variables = child["@variable"].toString().split(" "); + var newString = formattedString.clone(child.@delimiter.toString()); + var success = false; + + for(var j=0; j<variables.length; j++) { + if(ignore[0][variables[j]]) continue; + + var text = item.getNumericVariable(variables[j], form); + if(text) { + newString.append(text); + success = true; + } + } + + if(success) { + formattedString.concat(newString, child); + dataAppended = true; + } + } } else if(name == "label") { var form = child.@form.toString(); var variables = child["@variable"].toString().split(" "); @@ -993,11 +1064,11 @@ Zotero.CSL.prototype._processElements = function(item, element, formattedString, var value = citationItem && citationItem.locator ? citationItem.locator : false; } else { var term = variables[j]; - var value = item.getVariable(variables[j]); + var value = item.getVariable(variables[j]).toString(); } if(term !== false && value) { - var isPlural = value.indexOf("-") != -1 || value.indexOf(",") != -1; + var isPlural = value.indexOf("-") != -1 || value.indexOf(",") != -1 || value.indexOf("\u2013") != -1; var text = this._getTerm(term, isPlural, child.@form.toString(), child["@include-period"] == "true"); if(text) { @@ -1189,48 +1260,68 @@ Zotero.CSL.prototype._processElements = function(item, element, formattedString, // inspect variables var done = false; - var attributes = ["variable", "type", "disambiguate", "locator", "position"]; + var attributes = ["variable", "is-date", "is-numeric", "is-plural", "type", "disambiguate", "locator", "position"]; for(var k=0; !done && k<attributes.length; k++) { var attribute = attributes[k]; if(newChild["@"+attribute].length()) { var variables = newChild["@"+attribute].toString().split(" "); for(var j=0; !done && j<variables.length; j++) { + var exists = false; if(attribute == "variable") { if(variables[j] == "locator") { // special case for locator - var exists = citationItem && citationItem.locator && citationItem.locator.length > 0 + exists = citationItem && citationItem.locator && citationItem.locator.length > 0 } else if(Zotero.CSL._dateVariables[variables[j]]) { // getDate not false/undefined - var exists = !!item.getDate(variables[j]); + exists = !!item.getDate(variables[j]); } else if(Zotero.CSL._namesVariables[variables[j]]) { // getNames not false/undefined, not empty - var exists = item.getNames(variables[j]); + exists = item.getNames(variables[j]); if(exists) exists = !!exists.length; } else { - var exists = item.getVariable(variables[j]) !== ""; + exists = item.getVariable(variables[j]); + if (exists) exists = !!exists.length; + } + } else if (attribute == "is-numeric") { + exists = item.getNumericVariable(variables[j]); + } else if (attribute == "is-date") { // XXX - this needs improving + if (Zotero.CSL._dateVariables[variables[j]]) { + exists = !!item.getDate(variables[j]); + } + } else if(attribute == "is-plural") { + if(Zotero.CSL._namesVariables[variables[j]]) { + exists = item.getNames(variables[j]); + if(exists) exists = exists.length > 1; + } else if(variables[j] == "page" || variables[j] == "locator") { + if(variables[j] == "page") { + var value = item.getVariable("page"); + } else { + var value = citationItem && citationItem.locator ? citationItem.locator : ""; + } + exists = value.indexOf("-") != -1 || value.indexOf(",") != -1 || value.indexOf("\u2013") != -1; } } else if(attribute == "type") { - var exists = item.isType(variables[j]); + exists = item.isType(variables[j]); } else if(attribute == "disambiguate") { - var exists = (variables[j] == "true" && item.getProperty("disambiguate-condition")) + exists = (variables[j] == "true" && item.getProperty("disambiguate-condition")) || (variables[j] == "false" && !item.getProperty("disambiguate-condition")); } else if(attribute == "locator") { - var exists = citationItem && citationItem.locator && + exists = citationItem && citationItem.locator && (citationItem.locatorType == variables[j] || (!citation.locatorType && variables[j] == "page")); } else { // attribute == "position" if(variables[j] == "first") { - var exists = !citationItem + exists = !citationItem || !citationItem.position || citationItem.position == Zotero.CSL.POSITION_FIRST; } else if(variables[j] == "subsequent") { - var exists = citationItem && citationItem.position >= Zotero.CSL.POSITION_SUBSEQUENT; + exists = citationItem && citationItem.position >= Zotero.CSL.POSITION_SUBSEQUENT; } else if(variables[j] == "ibid") { - var exists = citationItem && citationItem.position >= Zotero.CSL.POSITION_IBID; + exists = citationItem && citationItem.position >= Zotero.CSL.POSITION_IBID; } else if(variables[j] == "ibid-with-locator") { - var exists = citationItem && citationItem.position == Zotero.CSL.POSITION_IBID_WITH_LOCATOR; + exists = citationItem && citationItem.position == Zotero.CSL.POSITION_IBID_WITH_LOCATOR; } } @@ -1258,9 +1349,8 @@ Zotero.CSL.prototype._processElements = function(item, element, formattedString, var newString = formattedString.clone(newChild.@delimiter.toString()); var success = this._processElements(item, newChild, newString, context, citationItem, ignore); - + if(success) dataAppended = true; formattedString.concat(newString, child); - dataAppended = true; // then break break; @@ -1282,13 +1372,16 @@ Zotero.CSL.prototype._compareItem = function(a, b, context) { var sortA = []; var sortB = []; + Zotero.debug("CompareItem"); // author if(context.sort.key.length()) { + Zotero.debug("Context Sort by " + context.sort.key.length + " keys"); for each(var key in context.sort.key) { var keyA = new Zotero.CSL.SortString(); var keyB = new Zotero.CSL.SortString(); if(key.@macro.length()) { + Zotero.debug("Context macro "); this._processElements(a, this._csl.macro.(@name == key.@macro), keyA); this._processElements(b, this._csl.macro.(@name == key.@macro), keyB); } else if(key.@variable.length()) { @@ -1306,6 +1399,8 @@ Zotero.CSL.prototype._compareItem = function(a, b, context) { this._processNames(a, element, keyA, context, null, [variable]); this._processNames(b, element, keyB, context, null, [variable]); } else { // text + Zotero.debug("Context key " + variable); + if(variable == "citation-number") { keyA.append(a.getProperty(variable)); keyB.append(b.getProperty(variable)); @@ -1326,6 +1421,16 @@ Zotero.CSL.prototype._compareItem = function(a, b, context) { } } } + + // sort by index + var aIndex = a.getProperty("index"); + var bIndex = b.getProperty("index"); + if(aIndex !== "" && (bIndex === "" || aIndex < bIndex)) { + return -1; + } else if(aIndex != bIndex) { + return 1; + } + return 0; } @@ -1604,6 +1709,8 @@ Zotero.CSL.Global = new function() { * locatorType * locator * suppressAuthor + * item + * itemID */ Zotero.CSL.CitationItem = function(item) { if(item) { @@ -1715,8 +1822,9 @@ Zotero.CSL.Item = function(item) { // don't return URL or accessed information for journal articles if a // pages field exists + var itemType = Zotero.ItemTypes.getName(this.zoteroItem.getType()); if(!Zotero.Prefs.get("export.citePaperJournalArticleURL") - && Zotero.ItemTypes.getName(this.zoteroItem.getType()) == "journalArticle" + && ["journalArticle", "newspaperArticle", "magazineArticle"].indexOf(itemType) !== -1 && this.zoteroItem.getField("pages")) { this._ignoreURL = true; } @@ -1790,31 +1898,35 @@ Zotero.CSL.Item.prototype.getDate = function(variable) { Zotero.CSL.Item._zoteroFieldMap = { "long":{ "title":"title", - "container-title":"publicationTitle", + "container-title":["publicationTitle", "reporter", "code"], /* reporter and code should move to SQL mapping tables */ "collection-title":["seriesTitle", "series"], - "publisher":["publisher", "distributor"], + "collection-number":"seriesNumber", + "publisher":["publisher", "distributor"], /* distributor should move to SQL mapping tables */ "publisher-place":"place", "page":"pages", "volume":"volume", "issue":"issue", "number-of-volumes":"numberOfVolumes", "edition":"edition", - "genre":"type", + "section":"section", + "genre":["type", "artworkSize"], /* artworkSize should move to SQL mapping tables, or added as a CSL variable */ "medium":"medium", "archive":"repository", "archive_location":"archiveLocation", - "event":["meetingName", "conferenceName"], + "event":["meetingName", "conferenceName"], /* these should be mapped to the same base field in SQL mapping tables */ "event-place":"place", "abstract":"abstractNote", "URL":"url", "DOI":"DOI", + "ISBN" : "ISBN", "note":"extra", - "number":["number", "documentNumber", "patentNumber", "billNumber", - "codeNumber", "episodeNumber"] + "number":"number", + "references":"history" }, "short":{ "title":["shortTitle", "title"], - "container-title":"journalAbbreviation" + "container-title":"journalAbbreviation", + "genre":["shortTitle", "type"] /* needed for subsequent citations of items with no title */ } } @@ -1855,6 +1967,96 @@ Zotero.CSL.Item.prototype.getVariable = function(variable, form) { } /* + * convert a number into a ordinal number 1st, 2nd, 3rd etc. + */ +Zotero.CSL.Item.prototype.makeOrdinal = function(value) { + var ind = parseInt(value); + var daySuffixes = Zotero.getString("date.daySuffixes").replace(/, ?/g, "|").split("|"); + value += (parseInt(ind/10)%10) == 1 ? daySuffixes[3] : (ind % 10 == 1) ? daySuffixes[0] : (ind % 10 == 2) ? daySuffixes[1] : (ind % 10 == 3) ? daySuffixes[2] : daySuffixes[3]; + return value; +} + + +Zotero.CSL.Item._zoteroRomanNumerals = { + "0" : [ "", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix" ], + "1" : [ "", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc" ], + "2" : [ "", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm" ], + "3" : [ "", "m", "mm", "mmm", "mmmm", "mmmmm"], + } + +/* + * Convert a number into a roman numeral. + */ +Zotero.CSL.Item.prototype.makeRoman = function(value) { + + var number = parseInt(value); + var result = ""; + if (number > 5000) return ""; + var thousands = parseInt(number/1000); + if (thousands > 0) { + result += Zotero.CSL.Item._zoteroRomanNumerals[3][thousands]; + } + number = number % 1000; + var hundreds = parseInt(number/100); + if (hundreds > 0) { + result += Zotero.CSL.Item._zoteroRomanNumerals[2][hundreds]; + } + number = number % 100; + var tens = parseInt(number/10); + if (tens > 0) { + result += Zotero.CSL.Item._zoteroRomanNumerals[1][tens]; + } + number = number % 10; + if (number > 0) { + result += Zotero.CSL.Item._zoteroRomanNumerals[0][number]; + } + return result; +} + +Zotero.CSL.Item._zoteroNumberFieldMap = { + "volume":"volume", + "issue":"issue", + "number-of-volumes":"numberOfVolumes", + "edition":"edition", + "number":"number" +} +/* + * Gets a numeric object for a specific type. <number variable="edition" form="roman"/> + */ +Zotero.CSL.Item.prototype.getNumericVariable = function(variable, form) { + + if(!Zotero.CSL.Item._zoteroNumberFieldMap[variable]) return ""; + + var zoteroFields = []; + var field; + + field = Zotero.CSL.Item._zoteroNumberFieldMap[variable]; + if(typeof field == "string") { + zoteroFields.push(field); + } else { + zoteroFields = zoteroFields.concat(field); + } + + var matches; + for each(var zoteroField in zoteroFields) { + var value = this.zoteroItem.getField(zoteroField, false, true); + var matches; + if(value != "" && (matches = value.toString().match(Zotero.CSL._numberRegexp)) ) { + value = matches[0]; + if (form == "ordinal") { + return this.makeOrdinal(value); + } + else if (form == "roman") { + return this.makeRoman(value); + } + else + return value; + } + } + return ""; +} + +/* * Sets an item-specific property to a given value. */ Zotero.CSL.Item.prototype.setProperty = function(property, value) { @@ -1865,7 +2067,7 @@ Zotero.CSL.Item.prototype.setProperty = function(property, value) { * Sets an item-specific property to a given value. */ Zotero.CSL.Item.prototype.getProperty = function(property, value) { - return (this._properties[property] ? this._properties[property] : ""); + return (this._properties[property] !== undefined ? this._properties[property] : ""); } Zotero.CSL.Item._optionalTypeMap = { @@ -1907,6 +2109,7 @@ Zotero.CSL.Item._fallbackTypeMap = { magazineArticle:"article", newspaperArticle:"article", thesis:"article", + conferencePaper:"chapter", letter:"article", manuscript:"article", interview:"article", @@ -1917,7 +2120,7 @@ Zotero.CSL.Item._fallbackTypeMap = { bill:"book", case:"book", hearing:"book", - patent:"book", + patent:"article", statute:"book", email:"article", map:"article", @@ -2137,6 +2340,8 @@ Zotero.CSL.ItemSet.prototype.add = function(items) { var newItem = new Zotero.CSL.Item(items[i]); } + newItem.setProperty("index", this.items.length); + this.itemsById[newItem.getID()] = newItem; this.items.push(newItem); newItems.push(newItem); @@ -2167,26 +2372,21 @@ Zotero.CSL.ItemSet.prototype.remove = function(items) { * citations have changed */ Zotero.CSL.ItemSet.prototype.resort = function() { - // sort, if necessary - if(this.sortable) { - var me = this; - - this.items = this.items.sort(function(a, b) { - return me.csl._compareItem(a, b, me.bibliography); - }); - } + // sort + var me = this; + this.items = this.items.sort(function(a, b) { + return me.csl._compareItem(a, b, me.bibliography); + }); // first loop through to collect disambiguation data by item, so we can // see if any items have changed; also collect last names - if(this._citationChangingOptions.length) { - var oldOptions = new Array(); - for(var i in this._citationChangingOptions) { - oldOptions[i] = new Array(); - for(var j in this.items) { - if(this.items[j] == undefined) continue; - oldOptions[i][j] = this.items[j].getProperty(this._citationChangingOptions[i]); - this.items[j].setProperty(this._citationChangingOptions[i], ""); - } + var oldOptions = new Array(); + for(var i in this._citationChangingOptions) { + oldOptions[i] = new Array(); + for(var j in this.items) { + if(this.items[j] == undefined) continue; + oldOptions[i][j] = this.items[j].getProperty(this._citationChangingOptions[i]); + this.items[j].setProperty(this._citationChangingOptions[i], ""); } } @@ -2398,7 +2598,7 @@ Zotero.CSL.ItemSet.prototype.resort = function() { } item.setProperty("citation-number", citationNumber++); - + lastItem = item; lastNames = names; lastYear = year; @@ -2406,13 +2606,11 @@ Zotero.CSL.ItemSet.prototype.resort = function() { // find changed citations var changedCitations = new Array(); - if(this._citationChangingOptions.length) { - for(var j in this.items) { - if(this.items[j] == undefined) continue; - for(var i in this._citationChangingOptions) { - if(this.items[j].getProperty(this._citationChangingOptions[i]) != oldOptions[i][j]) { - changedCitations.push(this.items[j]); - } + for(var j in this.items) { + if(this.items[j] == undefined) continue; + for(var i in this._citationChangingOptions) { + if(this.items[j].getProperty(this._citationChangingOptions[i]) != oldOptions[i][j]) { + changedCitations.push(this.items[j]); } } } @@ -2441,6 +2639,7 @@ Zotero.CSL.FormattedString = function(context, format, delimiter, subsequent) { this.delimiter = delimiter; this.string = ""; this.closePunctuation = false; + this.closeFormatting = ""; this.useBritishStyleQuotes = false; // insert tab iff second-field-align is on @@ -2459,7 +2658,7 @@ Zotero.CSL.FormattedString = function(context, format, delimiter, subsequent) { } } -Zotero.CSL.FormattedString._punctuation = "!.,?"; +Zotero.CSL.FormattedString._punctuation = "!.,?:"; /* * attaches another formatted string to the end of the current one @@ -2473,25 +2672,32 @@ Zotero.CSL.FormattedString.prototype.concat = function(formattedString, element) throw "CSL: cannot concatenate formatted strings: formats do not match"; } - if(formattedString.string) { - // first, append the actual string - var haveAppended = this.append(formattedString.string, element, false, true); - - // if there's close punctuation to append, that also counts - if(formattedString.closePunctuation) { - haveAppended = true; - if(this.closePunctuation) { - // if there's existing close punctuation and punctuation to - // append, we need to append that - this.string += this.closePunctuation; - } - // add the new close punctuation - this.closePunctuation = formattedString.closePunctuation; + var haveAppended = false; + var suffix = false; + if(formattedString.string !== "") { + // first, append the actual string without its suffix + if(element && element.@suffix.length()) { + // don't edit original element + element = element.copy(); + // let us decide to add the suffix + suffix = element.@suffix.toString(); + element.@suffix = []; } - - return haveAppended; + haveAppended = this.append(formattedString.string, element, false, true); } - return false; + + // if there's close punctuation to append, that also counts + if(formattedString.closePunctuation || formattedString.closeFormatting) { + haveAppended = true; + // add the new close punctuation + this.closeFormatting = formattedString.closeFormatting; + this.closePunctuation = formattedString.closePunctuation; + } + + // append suffix, if we didn't before + if(haveAppended && suffix !== false) this.append(suffix, null, true); + + return haveAppended; } Zotero.CSL.FormattedString._rtfEscapeFunction = function(aChar) { @@ -2502,7 +2708,8 @@ Zotero.CSL.FormattedString._rtfEscapeFunction = function(aChar) { * appends a string (with format parameters) to the current one */ Zotero.CSL.FormattedString.prototype.append = function(string, element, dontDelimit, dontEscape) { - if(!string) return false; + if(!string && string !== 0) return false; + if(typeof(string) != "string") { string = string.toString(); } @@ -2524,44 +2731,39 @@ Zotero.CSL.FormattedString.prototype.append = function(string, element, dontDeli } } + if(prefix) { + this.append(prefix, null, true); + } + + var addBefore = ""; + var addAfter = ""; + // append line before if display="block" - var closeDiv = false; if(element && (element["@display"] == "block" || this.appendLine)) { if(this.format == "HTML") { if(this.option.(@name == "hanging-indent").@value == "true") { - this.string += '<div style="text-indent:0.5in;">' + addBefore += '<div style="text-indent:0.5in;">' } else { - this.string += '<div>'; + addBefore += '<div>'; } - var closeDiv; + addAfter = '</div>'; } else { if(this.format == "RTF") { - this.string += "\r\n\\line "; + addBefore += "\r\n\\line "; } else if(this.format == "Integration") { - this.string += "\x0B"; + addBefore += "\x0B"; } else { - this.string += (Zotero.isWin ? "\r\n" : "\n"); + addBefore += (Zotero.isWin ? "\r\n" : "\n"); } this.appendLine = element["@display"] == "block"; } } - if(prefix) { - this.append(prefix, null, true); - } - if(this.suppressLeadingWhitespace) { string = string.replace(/^\s+/, ""); this.suppressLeadingWhitespace = false; } - if(string.length && string[0] == "." && - Zotero.CSL.FormattedString._punctuation.indexOf(this.string[this.string.length-1]) != -1) { - // if string already ends in punctuation, preserve the existing stuff - // and don't add a period - string = string.substr(1); - } - // close quotes, etc. using punctuation if(this.closePunctuation) { if(Zotero.CSL.FormattedString._punctuation.indexOf(string[0]) != -1) { @@ -2572,59 +2774,56 @@ Zotero.CSL.FormattedString.prototype.append = function(string, element, dontDeli this.closePunctuation = false; } + // clean up + if(string.length && string[0] == "." && + Zotero.CSL.FormattedString._punctuation.indexOf(this.string[this.string.length-1]) != -1) { + // if string already ends in punctuation, preserve the existing stuff + // and don't add a period + string = string.substr(1); + } else if(this.string[this.string.length-1] == "(" && string[0] == " ") { + string = string.substr(1); + } else if(this.string[this.string.length-1] == " " && string[0] == ")") { + this.string = this.string.substr(0, this.string.length-1); + } + + // close previous formatting + this.string += this.closeFormatting; + this.closeFormatting = ""; + // handling of "text-transform" attribute (now obsolete) if(element && element["@text-transform"].length() && !element["@text-case"].length()) { var mapping = {"lowercase":"lowercase", "uppercase":"uppercase", "capitalize":"capitalize-first"}; element["@text-case"] = mapping[element["@text-transform"].toString()]; } + // handle text case - if(element && element["@text-case"].length()) { - if(element["@text-case"] == "lowercase") { - // all lowercase - string = string.toLowerCase(); - } else if(element["@text-case"] == "uppercase") { - // all uppercase - string = string.toUpperCase(); - } else if(element["@text-case"] == "capitalize-first") { - // capitalize first - string = string[0].toUpperCase()+string.substr(1).toLowerCase(); - } else if(element["@text-case"] == "capitalize-all") { - // capitalize first - var strings = string.split(" "); - for(var i=0; i<strings.length; i++) { - if(strings[i].length > 1) { - strings[i] = strings[i][0].toUpperCase()+strings[i].substr(1).toLowerCase(); - } else if(strings[i].length == 1) { - strings[i] = strings[i].toUpperCase(); + if(element) { + if(element["@text-case"].length()) { + if(element["@text-case"] == "lowercase") { + // all lowercase + string = string.toLowerCase(); + } else if(element["@text-case"] == "uppercase") { + // all uppercase + string = string.toUpperCase(); + } else if(element["@text-case"] == "capitalize-first") { + // capitalize first + string = string[0].toUpperCase()+string.substr(1).toLowerCase(); + } else if(element["@text-case"] == "capitalize-all") { + // capitalize first + var strings = string.split(" "); + for(var i=0; i<strings.length; i++) { + if(strings[i].length > 1) { + strings[i] = strings[i][0].toUpperCase()+strings[i].substr(1).toLowerCase(); + } else if(strings[i].length == 1) { + strings[i] = strings[i].toUpperCase(); + } } + string = strings.join(" "); + } else if(element["@text-case"] == "title") { + string = Zotero.Text.titleCase(string); } - string = strings.join(" "); - } else if(element["@text-case"] == "title") { - string = Zotero.Text.titleCase(string); - } - } - - if(!dontEscape) { - if(this.format == "HTML") { - string = string.replace("&", "&amp;", "g") - .replace("<", "&lt;", "g") - .replace(">", "&gt;", "g") - .replace(/(\r\n|\r|\n)/g, "<br />") - .replace(/[\x00-\x1F]/g, ""); - } else if(this.format == "RTF") { - string = string.replace("\\", "\\\\", "g") - .replace(/[\x7F-\uFFFF]/g, Zotero.CSL.FormattedString._rtfEscapeFunction) - .replace("\t", "\\tab ", "g") - .replace(/(\r\n|\r|\n)/g, "\\line "); - } else if(this.format == "Integration") { - string = string.replace(/\\/g, "\\\\") - .replace(/(\r\n|\r|\n)/g, "\\line "); - } else { - string = string.replace(/(\r\n|\r|\n)/g, (Zotero.isWin ? "\r\n" : "\n")); } - } - - if(element) { + // style attributes if(this.format == "HTML") { var style = ""; @@ -2640,30 +2839,26 @@ Zotero.CSL.FormattedString.prototype.append = function(string, element, dontDeli } if(style) { - string = '<span style="'+style+'">'+string+'</span>'; + addBefore += '<span style="'+style+'">'; + addAfter = '</span>'+addAfter; } } else { if(this.format == "RTF" || this.format == "Integration") { - if(element["@font-style"] == "oblique" || element["@font-style"] == "italic") { - string = "\\i "+string+"\\i0 "; - } - - if(element["@font-variant"] == "small-caps") { - string = "\\scaps "+string+"\\scaps0 "; - } - - if(element["@font-weight"] == "bold") { - string = "\\b "+string+"\\b0 "; + var rtfAttributes = { + "font-style":{"oblique":"i", "italic":"i"}, + "font-variant":{"small-caps":"scaps"}, + "font-weight":{"bold":"b"}, + "text-decoration":{"underline":"ul"}, + "vertical-align":{"sup":"super", "sub":"sub"} } - if(element["@text-decoration"] == "underline") { - string = "\\ul "+string+"\\ul0 "; - } - - if(element["@vertical-align"] == "sup") { - string = "\\super "+string+"\\super0 "; - } else if(element["@vertical-align"] == "sub") { - string = "\\sub "+string+"\\sub0 "; + for(var j in rtfAttributes) { + for(var k in rtfAttributes[j]) { + if(element["@"+j] == k) { + addBefore += "\\"+rtfAttributes[j][k]+" "; + addAfter = "\\"+rtfAttributes[j][k]+"0 "+addAfter; + } + } } } } @@ -2680,7 +2875,36 @@ Zotero.CSL.FormattedString.prototype.append = function(string, element, dontDeli } } - this.string += string; + if(!dontEscape) { + if(this.format == "HTML") { + string = string.replace("&", "&amp;", "g") + .replace("<", "&lt;", "g") + .replace(">", "&gt;", "g") + .replace(/(\r\n|\r|\n)/g, "<br />") + .replace(/[\x00-\x1F]/g, ""); + } else if(this.format == "RTF" || this.format == "Integration") { + string = string.replace("\\", "\\\\", "g") + .replace(/(\r\n|\r|\n)/g, "\\line "); + if(string.substr(string.length-6) == "\\line ") { + string = string.substr(0, string.length-6); + addAfter = "\\line "+addAfter; + } + + if(this.format == "RTF") { + string = string.replace(/[\x7F-\uFFFF]/g, Zotero.CSL.FormattedString._rtfEscapeFunction) + .replace("\t", "\\tab ", "g"); + + if(string.substr(string.length-5) == "\\tab ") { + string = string.substr(0, string.length-5); + addAfter = "\\tab "+addAfter; + } + } + } else { + string = string.replace(/(\r\n|\r|\n)/g, (Zotero.isWin ? "\r\n" : "\n")); + } + } + + this.string += addBefore+string; var suffix; if(element && element.@suffix.length()) { @@ -2688,9 +2912,6 @@ Zotero.CSL.FormattedString.prototype.append = function(string, element, dontDeli } // close div for display=block in HTML - if(closeDiv) { - this.string += "</div>"; - } // save for second-field-align if(!dontDelimit && this.insertTabAfterField) { @@ -2698,19 +2919,21 @@ Zotero.CSL.FormattedString.prototype.append = function(string, element, dontDeli this.string = this.string.replace(/\s+$/, ""); if(this.format == "HTML") { - this.string += '</td><td style="padding-left:4pt;">'; + addAfter += '</td><td style="padding-left:4pt;">'; } else if(this.format == "RTF") { - this.string += "\\tab "; + addAfter += "\\tab "; } else if(this.format == "Integration") { - this.string += "\t"; + addAfter += "\t"; } else { - this.string += " "; + addAfter += " "; } this.insertTabAfterField = false; this.suppressLeadingWhitespace = true; } + this.closeFormatting = addAfter; + return true; } @@ -2718,7 +2941,7 @@ Zotero.CSL.FormattedString.prototype.append = function(string, element, dontDeli * gets the formatted string */ Zotero.CSL.FormattedString.prototype.get = function() { - return this.string+(this.closePunctuation ? this.closePunctuation : ""); + return this.string+(this.closeFormatting ? this.closeFormatting : "")+(this.closePunctuation ? this.closePunctuation : ""); } /* diff --git a/chrome/content/zotero/xpcom/data_access.js b/chrome/content/zotero/xpcom/data_access.js @@ -110,7 +110,7 @@ Zotero.Item.prototype.loadFromID = function(id) { break; case 'firstCreator': - colSQL = Zotero.Items.getfirstCreatorSQL(); + colSQL = Zotero.Items.getFirstCreatorSQL(); break; case 'numNotes': @@ -1789,9 +1789,34 @@ Zotero.Item.prototype.getAttachments = function(){ return []; } - var sql = "SELECT itemID FROM itemAttachments NATURAL JOIN items " - + "WHERE sourceItemID=" + this.getID() + " ORDER BY dateAdded"; - return Zotero.DB.columnQuery(sql); + var sql = "SELECT A.itemID, value AS title FROM itemAttachments A " + + "NATURAL JOIN items I LEFT JOIN itemData ID USING (itemID) " + + "LEFT JOIN itemDataValues IDV " + + "ON (fieldID=110 AND ID.valueID=IDV.valueID) " + + "WHERE sourceItemID=?"; + + if (Zotero.Prefs.get('sortAttachmentsChronologically')) { + sql += " ORDER BY dateAdded"; + return Zotero.DB.columnQuery(sql, this.getID()); + } + + var attachments = Zotero.DB.query(sql, this.getID()); + if (!attachments) { + return false; + } + + // Sort by title + var collation = Zotero.getLocaleCollation(); + var f = function (a, b) { + return collation.compareString(1, a.title, b.title); + } + + var attachmentIDs = []; + attachments.sort(f); + for each(var attachment in attachments) { + attachmentIDs.push(attachment.itemID); + } + return attachmentIDs; } @@ -1876,6 +1901,21 @@ Zotero.Item.prototype.addTag = function(tag, type){ } +Zotero.Item.prototype.addTags = function (tags, type) { + Zotero.DB.beginTransaction(); + try { + for each(var tag in tags) { + this.addTag(tag, type); + } + Zotero.DB.commitTransaction(); + } + catch (e) { + Zotero.DB.rollbackTransaction(); + throw (e); + } +} + + Zotero.Item.prototype.addTagByID = function(tagID) { if (!this.getID()) { throw ('Cannot add tag to unsaved item in Item.addTagByID()'); @@ -3153,7 +3193,7 @@ Zotero.Notes = new function(){ /* * Constructor for Collection object * - * Generally should be called from Zotero.Collection rather than directly + * Generally should be called from Zotero.Collections rather than directly */ Zotero.Collection = function(){ this._init(); diff --git a/chrome/content/zotero/xpcom/db.js b/chrome/content/zotero/xpcom/db.js @@ -44,6 +44,15 @@ Zotero.DBConnection = function(dbName) { // ///////////////////////////////////////////////////////////////// +/** + * Test a connection to the database, throwing any errors that occur + * + * @return void + */ +Zotero.DBConnection.prototype.test = function () { + this._getDBConnection(); +} + /* * Run an SQL query * diff --git a/chrome/content/zotero/xpcom/ingester.js b/chrome/content/zotero/xpcom/ingester.js @@ -288,11 +288,11 @@ Zotero.OpenURL = new function() { if(item.journalAbbreviation) co += _mapTag(item.journalAbbreviation, "stitle", version); if(item.volume) co += _mapTag(item.volume, "volume", version); if(item.issue) co += _mapTag(item.issue, "issue", version); - } else if(item.itemType == "book" || item.itemType == "bookitem") { + } else if(item.itemType == "book" || item.itemType == "bookSection") { if(version == "0.1") { co += "&genre=book"; } else { - co += "&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book"; + co += "&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"; } if(item.itemType == "book") { diff --git a/chrome/content/zotero/xpcom/integration.js b/chrome/content/zotero/xpcom/integration.js @@ -20,7 +20,7 @@ ***** END LICENSE BLOCK ***** */ -const API_VERSION = 3; +const API_VERSION = 4; Zotero.Integration = new function() { var _contentLengthRe = /[\r\n]Content-Length: *([0-9]+)/i; @@ -393,7 +393,7 @@ Zotero.Integration.SOAP = new function() { } } else if(editCitationIndex !== false && vars[i] == editCitationIndex) { // save citation data - editCitation = session.unserializeCitation(vars[i+1]); + editCitation = session.unserializeCitation(vars[i+1], vars[i]); } else { session.addCitation(vars[i], vars[i+1]); } @@ -422,7 +422,7 @@ Zotero.Integration.SOAP = new function() { // update var output = new Array(); if((bibliographyMode == "updated" // if we want updated bib - && session.itemSetHasChanged) // and bibliography changed + && session.bibliographyHasChanged) // and bibliography changed || bibliographyMode == "true") { // or if we should generate regardless of changes var bibliography = session.getBibliography(); if(!bibliography) bibliography = "!"; @@ -454,11 +454,16 @@ Zotero.Integration.SOAP = new function() { */ function restoreSession(vars) { if(!vars || !_checkVersion(vars[0])) { - return "ERROR:"+Zotero.getString("integration.incompatibleVersion"); + return "ERROR:"+Zotero.getString("integration.incompatibleVersion", Zotero.version); + } + + try { + Zotero.Cite.getStyle(vars[2]); + } catch(e) { + return "ERROR:prefsNeedReset"; } var sessionID = Zotero.randomString(); - var session = _sessions[sessionID] = new Zotero.Integration.Session(); session.setStyle(vars[2], vars[3], vars[4]); @@ -472,6 +477,7 @@ Zotero.Integration.SOAP = new function() { session.updateItemSet(session.citationsByItemID); if(vars[1] != "!") session.loadDocumentData(vars[1]); + session.sortItemSet(); session.resetRequest(); return [sessionID]; @@ -484,7 +490,7 @@ Zotero.Integration.SOAP = new function() { */ function setDocPrefs(vars) { if(!vars || !vars.length || !_checkVersion(vars[1])) { - return "ERROR:"+Zotero.getString("integration.incompatibleVersion"); + return "ERROR:"+Zotero.getString("integration.incompatibleVersion", Zotero.version); } var io = new function() { @@ -496,6 +502,7 @@ Zotero.Integration.SOAP = new function() { io.openOffice = true; } + var oldStyle = false; if(vars[0] == "!") { // no session ID; generate a new one var sessionID = Zotero.randomString(); @@ -506,7 +513,7 @@ Zotero.Integration.SOAP = new function() { var session = _sessions[sessionID]; if(!session) return "ERROR:sessionExpired"; - io.style = session.styleID; + oldStyle = io.style = session.styleID; io.useEndnotes = session.useEndnotes; io.useBookmarks = session.useBookmarks; } @@ -514,6 +521,9 @@ Zotero.Integration.SOAP = new function() { watcher.openWindow(null, 'chrome://zotero/content/integrationDocPrefs.xul', '', 'chrome,modal'+(Zotero.isWin ? ',popup' : ''), io, true); session.setStyle(io.style, io.useEndnotes, io.useBookmarks); + if(!oldStyle || oldStyle == io.style) { + session.regenerateAll = session.bibliographyHasChanged = true; + } return [sessionID, io.style, session.style.class, session.style.hasBibliography ? "1" : "0", io.useEndnotes, io.useBookmarks]; } @@ -548,10 +558,8 @@ Zotero.Integration.Session.prototype.setStyle = function(styleID, useEndnotes, u this.style = Zotero.Cite.getStyle(styleID); this.useEndnotes = useEndnotes; this.useBookmarks = useBookmarks; - this.itemSet = this.style.createItemSet(); this.dateModified = new Object(); - this.itemSetIsSorted = true; this.loadUncitedItems(); } @@ -563,7 +571,8 @@ Zotero.Integration.Session.prototype.resetRequest = function() { this.citationsByItemID = new Object(); this.citationsByIndex = new Array(); - this.itemSetHasChanged = false; + this.regenerateAll = false; + this.bibliographyHasChanged = false; this.documentDataHasChanged = false; this.updateItemIDs = new Object(); this.updateIndices = new Object() @@ -613,15 +622,12 @@ Zotero.Integration._oldCitationLocatorMap = { * gets a Zotero.CSL.Citation object given a field name */ Zotero.Integration.Session.prototype.addCitation = function(index, arg) { + var index = parseInt(index, 10); + if(typeof(arg) == "string") { // text field if(arg == "!" || arg == "X") return; - var citation = this.unserializeCitation(arg); - if(arg[0] == "{") { // JSON - citation.properties.field = arg; - } else { - this.updateIndices[citation.properties.index]; - } + var citation = this.unserializeCitation(arg, index); } else { // a citation already var citation = arg; } @@ -673,7 +679,7 @@ Zotero.Integration.Session.prototype.completeCitation = function(object) { this.dateModified[citationItem.itemID] = item.zoteroItem.getField("dateModified", true, true); this.updateItemIDs[citationItem.itemID] = true; - this.itemSetChanged(); + this.bibliographyHasChanged = true; } citationItem.item = item; @@ -684,11 +690,20 @@ Zotero.Integration.Session.prototype.completeCitation = function(object) { /* * unserializes a JSON citation into a citation object (sans items) */ -Zotero.Integration.Session.prototype.unserializeCitation = function(arg) { +Zotero.Integration.Session.prototype.unserializeCitation = function(arg, index) { if(arg[0] == "{") { // JSON field // create citation var citation = this.style.createCitation(); + // fix for corrupted fields + var lastBracket = arg.lastIndexOf("}"); + if(lastBracket+1 != arg.length) { + arg = arg.substr(0, lastBracket+1); + this.updateIndices[index] = true; + } else { + citation.properties.field = arg; + } + // get JSON var object = Zotero.JSON.unserialize(arg); @@ -721,6 +736,7 @@ Zotero.Integration.Session.prototype.unserializeCitation = function(arg) { } var citation = this.style.createCitation(citationItems); + this.updateIndices[index] = true; } return citation; @@ -758,7 +774,6 @@ Zotero.Integration.Session.prototype.previewCitation = function(citation) { // delete from item set if(deleteItems.length) { this.itemSet.remove(deleteItems); - this.itemSetIsSorted = false; } return text; @@ -774,7 +789,7 @@ Zotero.Integration.Session.prototype.editCitation = function(index, citation) { // create object to hold citation io.citation = (citation ? citation.clone() : this.style.createCitation()); - io.citation.properties.index = index; + io.citation.properties.index = parseInt(index, 10); // assign preview function io.previewFunction = function() { return me.previewCitation(io.citation); @@ -881,7 +896,6 @@ Zotero.Integration.Session.prototype.updateItemSet = function() { citation.properties.delete = true; } } - this.itemSetChanged(); } } @@ -892,7 +906,6 @@ Zotero.Integration.Session.prototype.updateItemSet = function() { // see if items were removed if(!this.citationsByItemID[itemID] && !this.uncitedItems[itemID]) { deleteItems.push(itemID); - this.itemSetChanged(); continue; } @@ -901,13 +914,12 @@ Zotero.Integration.Session.prototype.updateItemSet = function() { this.dateModified[itemID] = item.zoteroItem.getField("dateModified", true, true); // add to list of updated item IDs this.updateItemIDs[itemID] = true; - // need to resort now - this.itemSetChanged(); } } if(deleteItems.length) { this.itemSet.remove(deleteItems); + this.bibliographyHasChanged = true; } this.sortItemSet(); @@ -917,55 +929,21 @@ Zotero.Integration.Session.prototype.updateItemSet = function() { * sorts the ItemSet (what did you think it did?) */ Zotero.Integration.Session.prototype.sortItemSet = function() { - if(!this.itemSetIsSorted) { - if(!this.itemSet.sortable) { - // sort by order in document. we need a stable sort, so first we - // collect old indices. - var oldItemIndices = new Object(); - for(var i=0; i<this.itemSet.items.length; i++) { - oldItemIndices[this.itemSet.items[i].getID()] = i; - } - - var me = this; - this.itemSet.items.sort(function(a, b) { return me.sortByOrderAdded(a, b, oldItemIndices) }); - } - - var citationChanged = this.itemSet.resort(); - - // add to list of updated item IDs - for each(var item in citationChanged) { - this.updateItemIDs[item.getID()] = true; + // save first index + for(var itemID in this.citationsByItemID) { + if(this.citationsByItemID[itemID]) { + var item = this.itemSet.getItemsByIds([itemID])[0]; + if(item) item.setProperty("index", this.citationsByItemID[itemID][0].properties.index); } - - this.itemSetIsSorted = true; } -} - -/* - * sorts items by order added - */ -Zotero.Integration.Session.prototype.sortByOrderAdded = function(a, b, oldItemIndices) { - var aID = a.getID(); - var bID = b.getID(); - if(this.citationsByItemID[aID] && this.citationsByItemID[aID].length) { - if(!this.citationsByItemID[bID] || !this.citationsByItemID[bID].length) return -1; - - var diff = this.citationsByItemID[aID][0].properties.index-this.citationsByItemID[bID][0].properties.index; - if(diff != 0) return diff; - } else if(this.citationsByItemID[bID] && this.citationsByItemID[bID].length) { - return 1; - } + var citationChanged = this.itemSet.resort(); - return oldItemIndices[aID]-oldItemIndices[bID]; -} - -/* - * marks an itemSet as changed - */ -Zotero.Integration.Session.prototype.itemSetChanged = function() { - this.itemSetIsSorted = false; - this.itemSetHasChanged = true; + // add to list of updated item IDs + for each(var item in citationChanged) { + this.updateItemIDs[item.getID()] = true; + this.bibliographyHasChanged = true; + } } /* @@ -975,8 +953,7 @@ Zotero.Integration.Session.prototype.editBibliography = function() { var bibliographyEditor = new Zotero.Integration.Session.BibliographyEditInterface(this); var io = new function() { this.wrappedJSObject = bibliographyEditor; } - this.documentDataHasChanged = true; - this.itemSetHasChanged = true; + this.documentDataHasChanged = this.bibliographyHasChanged = true; Components.classes["@mozilla.org/embedcomp/window-watcher;1"] .getService(Components.interfaces.nsIWindowWatcher) @@ -996,7 +973,7 @@ Zotero.Integration.Session.prototype.getBibliography = function() { * gets citations in need of update */ Zotero.Integration.Session.prototype.getCitations = function(regenerateAll) { - if(regenerateAll) { + if(regenerateAll || this.regenerateAll) { // update all indices for(var i=0; i<this.citationsByIndex.length; i++) { this.updateIndices[i] = true; @@ -1031,7 +1008,9 @@ Zotero.Integration.Session.prototype.getCitations = function(regenerateAll) { if(citation.properties.custom) { output.push(citation.properties.custom); } else { - output.push(this.style.formatCitation(citation, "Integration")); + var citation = this.style.formatCitation(citation, "Integration"); + if(citation == "") citation = " "; + output.push(citation); } } } @@ -1056,9 +1035,7 @@ Zotero.Integration.Session.prototype.loadDocumentData = function(json) { // set custom bibliography entries if(documentData.custom) { for(var itemID in documentData.custom) { - Zotero.debug("getting item "+itemID); var item = this.itemSet.getItemsByIds([itemID])[0]; - Zotero.debug(item.toSource()); item.setProperty("bibliography-Integration", documentData.custom[itemID]); } } @@ -1130,14 +1107,12 @@ Zotero.Integration.Session.BibliographyEditInterface.prototype.add = function(it // create new item this.session.itemSet.add([item]); this.session.uncitedItems[item.getID()] = true; - this.session.itemSetChanged(); this.session.sortItemSet(); } Zotero.Integration.Session.BibliographyEditInterface.prototype.remove = function(item) { // create new item this.session.itemSet.remove([item]); - this.session.itemSetChanged(); this.session.sortItemSet(); // delete citations if necessary diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js @@ -1432,9 +1432,6 @@ Zotero.ItemTreeCommandController.prototype.onEvent = function(evt) */ Zotero.ItemTreeView.prototype.onDragStart = function (evt,transferData,action) { - try { - - transferData.data = new TransferData(); transferData.data.addDataForFlavour("zotero/item", this.saveSelection()); @@ -1472,17 +1469,13 @@ Zotero.ItemTreeView.prototype.onDragStart = function (evt,transferData,action) if (mode == 'export') { Zotero.QuickCopy.getContentFromItems(items, format, exportCallback); } - else if (mode == 'bibliography') { + else if (mode.indexOf('bibliography') == 0) { var content = Zotero.QuickCopy.getContentFromItems(items, format); transferData.data.addDataForFlavour("text/unicode", content.text); transferData.data.addDataForFlavour("text/html", content.html); } - - - - } - catch (e) { - Zotero.debug(e); + else { + Components.utils.reportError("Invalid Quick Copy mode '" + mode + "'"); } } diff --git a/chrome/content/zotero/xpcom/quickCopy.js b/chrome/content/zotero/xpcom/quickCopy.js @@ -1,6 +1,8 @@ Zotero.QuickCopy = new function() { this.getFormattedNameFromSetting = getFormattedNameFromSetting; this.getSettingFromFormattedName = getSettingFromFormattedName; + this.getContentType = getContentType; + this.stripContentType = stripContentType; this.getFormatFromURL = getFormatFromURL; this.getContentFromItems = getContentFromItems; @@ -13,7 +15,7 @@ Zotero.QuickCopy = new function() { _init(); } - return _formattedNames[setting]; + return _formattedNames[this.stripContentType(setting)]; } function getSettingFromFormattedName(name) { @@ -31,6 +33,23 @@ Zotero.QuickCopy = new function() { } + /* + * Returns the setting with any contentType stripped from the mode part + */ + function getContentType(setting) { + var matches = setting.match(/(?:bibliography|export)\/([^=]+)=.+$/, '$1'); + return matches ? matches[1] : ''; + } + + + /* + * Returns the setting with any contentType stripped from the mode part + */ + function stripContentType(setting) { + return setting.replace(/(bibliography|export)(?:\/[^=]+)?=(.+)$/, '$1=$2'); + } + + function getFormatFromURL(url) { if (!url) { return Zotero.Prefs.get("export.quickCopy.setting"); @@ -51,9 +70,9 @@ Zotero.QuickCopy = new function() { var matches = []; var sql = "SELECT key AS domainPath, value AS format FROM settings " - + "WHERE setting='quickCopySite' AND key LIKE ?"; + + "WHERE setting='quickCopySite' AND (key LIKE ? OR key LIKE ?)"; var urlDomain = urlHostPort.match(/[^\.]+\.[^\.]+$/); - var rows = Zotero.DB.query(sql, ['%' + urlDomain + '%']); + var rows = Zotero.DB.query(sql, ['%' + urlDomain + '%', '/%']); for each(var row in rows) { var [domain, path] = row.domainPath.split(/\//); path = '/' + (path ? path : ''); @@ -113,6 +132,7 @@ Zotero.QuickCopy = new function() { */ function getContentFromItems(items, format, callback) { var [mode, format] = format.split('='); + var [mode, contentType] = mode.split('/'); if (mode == 'export') { var translation = new Zotero.Translate("export"); @@ -127,7 +147,7 @@ Zotero.QuickCopy = new function() { var csl = Zotero.Cite.getStyle(format); var itemSet = csl.createItemSet(items); var bibliography = { - text: csl.formatBibliography(itemSet, "Text"), + text: csl.formatBibliography(itemSet, contentType == "html" ? "HTML" : "Text"), html: csl.formatBibliography(itemSet, "HTML") }; return bibliography; diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js @@ -203,6 +203,17 @@ Zotero.Schema = new function(){ * since the last check **/ function updateScrapersRemote(force, callback) { + // Little hack to manually update from repo on upgrade to 1.0.3 + if (!force) { + var syncTargetVersion = 2; // increment this when releasing new version that requires it + var syncVersion = _getDBVersion('sync'); + if (syncVersion < syncTargetVersion) { + _updateDBVersion('sync', syncTargetVersion); + force = true; + var uriChangeFix = true; + } + } + if (!force){ if (_remoteUpdateInProgress) { Zotero.debug("A remote update is already in progress -- not checking repository"); @@ -255,6 +266,11 @@ Zotero.Schema = new function(){ else { url += '&m=1'; } + + // Fix for styles with new URIs in 1.0.3 + if (uriChangeFix) { + url += '&urifix=1'; + } } var get = Zotero.Utilities.HTTP.doGet(url, function (xmlhttp) { diff --git a/chrome/content/zotero/xpcom/search.js b/chrome/content/zotero/xpcom/search.js @@ -111,9 +111,13 @@ Zotero.Search.prototype.getName = function(){ /* * Save the search to the DB and return a savedSearchID * + * If there are gaps in the searchConditionIDs, |fixGaps| must be true + * and the caller must dispose of the search or reload the condition ids, + * which may change after the save. + * * For new searches, setName() must be called before saving */ -Zotero.Search.prototype.save = function(){ +Zotero.Search.prototype.save = function(fixGaps) { if (!this._savedSearchName){ throw('Name not provided for saved search'); } @@ -139,6 +143,20 @@ Zotero.Search.prototype.save = function(){ [this._savedSearchID, {string: this._savedSearchName}]); } + // Close gaps in savedSearchIDs + var saveConditions = {}; + var i = 1; + for (var id in this._conditions) { + if (!fixGaps && id != i) { + Zotero.DB.rollbackTransaction(); + throw ('searchConditionIDs not contiguous and |fixGaps| not set in save() of saved search ' + this._savedSearchID); + } + saveConditions[i] = this._conditions[id]; + i++; + } + + this._conditions = saveConditions; + // TODO: use proper bound parameters once DB class is updated for (var i in this._conditions){ var sql = "INSERT INTO savedSearchConditions (savedSearchID, " @@ -331,7 +349,10 @@ Zotero.Search.prototype.search = function(asTempTable){ this._buildQuery(); } + // Default to 'all' mode var joinMode = 'all'; + + // Set some variables for conditions to avoid further lookups for each(var condition in this._conditions) { switch (condition.condition) { case 'joinMode': @@ -368,6 +389,7 @@ Zotero.Search.prototype.search = function(asTempTable){ } } + // Run a subsearch to define the superset of possible results if (this._scope) { Zotero.DB.beginTransaction(); @@ -405,23 +427,33 @@ Zotero.Search.prototype.search = function(asTempTable){ sql += ")"; var ids = Zotero.DB.columnQuery(sql, this._sqlParams); + /* + // DEBUG: Should this be here? + // + if (!ids) { + Zotero.DB.query("DROP TABLE " + tmpTable); + Zotero.DB.commitTransaction(); + return false; + } + */ } + // Or just run main search else { var ids = Zotero.DB.columnQuery(this._sql, this._sqlParams); } - //Zotero.debug('IDs from main search: '); + //Zotero.debug('IDs from main search or subsearch: '); //Zotero.debug(ids); //Zotero.debug('Join mode: ' + joinMode); // Filter results with fulltext search // - // If join mode ALL, return the (union of main and fulltext word search) + // If join mode ALL, return the (intersection of main and fulltext word search) // filtered by fulltext content // // If join mode ANY or there's a quicksearch (which we assume - // fulltextContent is part of), return the superset of the main search and + // fulltextContent is part of), return the union of the main search and // (a separate fulltext word search filtered by fulltext content) for each(var condition in this._conditions){ if (condition['condition']=='fulltextContent'){ @@ -485,8 +517,10 @@ Zotero.Search.prototype.search = function(asTempTable){ } var fulltextWordIDs = s.search(); + //Zotero.debug("Fulltext word IDs"); + //Zotero.debug(fulltextWordIDs); - // If ALL mode, set union of main search and fulltext word index + // If ALL mode, set intersection of main search and fulltext word index // as the scope for the fulltext content search if (joinMode == 'all' && !hasQuicksearch) { var hash = {}; @@ -508,16 +542,16 @@ Zotero.Search.prototype.search = function(asTempTable){ } } - var fulltextIDs = Zotero.Fulltext.findTextInItems(scopeIDs, - condition['value'], condition['mode']); - - if (scopeIDs) { + if (scopeIDs && scopeIDs.length) { + var fulltextIDs = Zotero.Fulltext.findTextInItems(scopeIDs, + condition['value'], condition['mode']); + var hash = {}; for each(var val in fulltextIDs){ hash[val.id] = true; } - var filteredIDs = scopeIDs.filter(filter); + filteredIDs = scopeIDs.filter(filter); } else { var filteredIDs = []; diff --git a/chrome/content/zotero/xpcom/translate.js b/chrome/content/zotero/xpcom/translate.js @@ -661,7 +661,6 @@ Zotero.Translate.prototype._generateSandbox = function() { this._sandbox.Zotero.Utilities = new Zotero.Utilities(); } - if(this.type == "export") { // add routines to retrieve items and collections this._sandbox.Zotero.nextItem = function() { return me._exportGetItem() }; @@ -690,7 +689,7 @@ Zotero.Translate.prototype._generateSandbox = function() { this._sandbox.Zotero.addOption = function(option, value) {me._addOption(option, value) }; // for getting the value of displayed options this._sandbox.Zotero.getOption = function(option) { return me._getOption(option) }; - + // for loading other translators and accessing their methods this._sandbox.Zotero.loadTranslator = function(type) { var translation = new Zotero.Translate(type, false); @@ -1023,24 +1022,43 @@ Zotero.Translate.prototype._itemTagsAndSeeAlso = function(item, newItem) { } } if(item.tags) { + var tagsToAdd = {}; + tagsToAdd[0] = []; // user tags + tagsToAdd[1] = []; // automatic tags + for each(var tag in item.tags) { if(typeof(tag) == "string") { // accept strings in tag array as automatic tags, or, if // importing, as non-automatic tags - newItem.addTag(tag, (this.type == "import" ? 0 : 1)); + if (this.type == 'import') { + tagsToAdd[0].push(tag); + } + else { + tagsToAdd[1].push(tag); + } } else if(typeof(tag) == "object") { // also accept objects if(tag.tag) { - newItem.addTag(tag.tag, tag.type ? tag.type : 0); + if (!tagsToAdd[tag.type]) { + tagsToAdd[tag.type] = []; + } + tagsToAdd[tag.type].push(tag.tag); } } } + + for (var type in tagsToAdd) { + if (tagsToAdd[type].length) { + newItem.addTags(tagsToAdd[type], type); + } + } } } /* * executed when an item is done and ready to be loaded into the database */ +Zotero.Translate._urlRe = /(([A-Za-z]+):\/\/[^\s]*)/i; Zotero.Translate.prototype._itemDone = function(item, attachedTo) { if(this.type == "web") { // store repository if this item was captured from a website, and @@ -1092,18 +1110,36 @@ Zotero.Translate.prototype._itemDone = function(item, attachedTo) { Zotero.debug("Translate: adding attachment"); + if(!item.url && !item.path) { + Zotero.debug("Translate: ignoring attachment: no path or URL specified"); + return; + } + + if(!item.path) { + // see if this is actually a file URL + var m = Zotero.Translate._urlRe.exec(item.url); + var protocol = m ? m[2].toLowerCase() : ""; + if(protocol == "file") { + item.path = item.url; + item.url = false; + } else if(protocol != "http" && protocol != "https") { + Zotero.debug("Translate: unrecognized protocol "+protocol); + return; + } + } + if(!item.path) { // create from URL - if(item.url) { + try { var myID = Zotero.Attachments.linkFromURL(item.url, attachedTo, (item.mimeType ? item.mimeType : undefined), (item.title ? item.title : undefined)); - Zotero.debug("Translate: created attachment; id is "+myID); - var newItem = Zotero.Items.get(myID); - } else { - Zotero.debug("Translate: not adding attachment: no path or url specified"); + } catch(e) { + Zotero.debug("Translate: error adding attachment "+item.url); return; } + Zotero.debug("Translate: created attachment; id is "+myID); + var newItem = Zotero.Items.get(myID); } else { // generate nsIFile var IOService = Components.classes["@mozilla.org/network/io-service;1"]. @@ -1112,10 +1148,14 @@ Zotero.Translate.prototype._itemDone = function(item, attachedTo) { var file = uri.QueryInterface(Components.interfaces.nsIFileURL).file; if (!file.exists()) { + // use item title if possible, or else file leaf name + var title = item.title; + if(!title) title = file.leafName; + var myID = Zotero.Attachments.createMissingAttachment( item.url ? Zotero.Attachments.LINK_MODE_IMPORTED_URL : Zotero.Attachments.LINK_MODE_IMPORTED_FILE, - file, item.url ? item.url : null, item.title, + file, item.url ? item.url : null, title, item.mimeType, item.charset, attachedTo); } else if (item.url) { @@ -1263,16 +1303,24 @@ Zotero.Translate.prototype._itemDone = function(item, attachedTo) { Zotero.debug("Translate: NOTICE: either mimeType or title is missing; attaching file will be slower"); } - Zotero.Attachments.linkFromURL(attachment.url, myID, - (attachment.mimeType ? attachment.mimeType : undefined), - (attachment.title ? attachment.title : undefined)); + try { + Zotero.Attachments.linkFromURL(attachment.url, myID, + (attachment.mimeType ? attachment.mimeType : undefined), + (attachment.title ? attachment.title : undefined)); + } catch(e) { + Zotero.debug("Translate: error adding attachment "+attachment.url); + } } } else if(attachment.document || (attachment.mimeType && attachment.mimeType == "text/html") || Zotero.Prefs.get("downloadAssociatedFiles")) { // if snapshot is not explicitly set to false, retrieve snapshot if(attachment.document) { - Zotero.Attachments.importFromDocument(attachment.document, myID, attachment.title); + try { + Zotero.Attachments.importFromDocument(attachment.document, myID, attachment.title); + } catch(e) { + Zotero.debug("Translate: error attaching document"); + } } else { var mimeType = null; var title = null; @@ -1297,7 +1345,11 @@ Zotero.Translate.prototype._itemDone = function(item, attachedTo) { } var fileBaseName = Zotero.Attachments.getFileBaseNameFromItem(myID); - Zotero.Attachments.importFromURL(attachment.url, myID, title, fileBaseName); + try { + Zotero.Attachments.importFromURL(attachment.url, myID, title, fileBaseName); + } catch(e) { + Zotero.debug("Zotero.Translate: error adding attachment "+attachment.url); + } } } } @@ -1330,23 +1382,42 @@ Zotero.Translate.prototype._itemDone = function(item, attachedTo) { // enabled in the preferences (as it is by default) if(item.tags && (this.type == "import" || Zotero.Prefs.get("automaticTags"))) { + var tagsToAdd = {}; + tagsToAdd[0] = []; // user tags + tagsToAdd[1] = []; // automatic tags + for each(var tag in item.tags) { if(typeof(tag) == "string") { // accept strings in tag array as automatic tags, or, if // importing, as non-automatic tags - newItem.addTag(tag, (this.type == "import" ? 0 : 1)); + if (this.type == 'import') { + tagsToAdd[0].push(tag); + } + else { + tagsToAdd[1].push(tag); + } } else if(typeof(tag) == "object") { // also accept objects if(tag.tag) { - if(this.type == "import") { - newItem.addTag(tag.tag, tag.type ? tag.type : 0); - } else { - // force web imports to automatic - newItem.addTag(tag.tag, 1); + if (this.type == "import") { + if (!tagsToAdd[tag.type]) { + tagsToAdd[tag.type] = []; + } + tagsToAdd[tag.type].push(tag.tag); + } + // force web imports to automatic + else { + tagsToAdd[1].push(tag.tag); } } } } + + for (var type in tagsToAdd) { + if (tagsToAdd[type].length) { + newItem.addTags(tagsToAdd[type], type); + } + } } if(!attachedTo) this.runHandler("itemDone", newItem); diff --git a/chrome/content/zotero/xpcom/utilities.js b/chrome/content/zotero/xpcom/utilities.js @@ -488,7 +488,7 @@ Zotero.Utilities.Ingester.HTTP = function(translate) { this.translate = translate; } -Zotero.Utilities.Ingester.HTTP.prototype.doGet = function(urls, processor, done) { +Zotero.Utilities.Ingester.HTTP.prototype.doGet = function(urls, processor, done, responseCharset) { var callAgain = false; if(typeof(urls) == "string") { @@ -523,10 +523,10 @@ Zotero.Utilities.Ingester.HTTP.prototype.doGet = function(urls, processor, done) } catch(e) { me.translate.error(false, e); } - }); + }, responseCharset); } -Zotero.Utilities.Ingester.HTTP.prototype.doPost = function(url, body, onDone, contentType) { +Zotero.Utilities.Ingester.HTTP.prototype.doPost = function(url, body, onDone, requestContentType, responseCharset) { if(this.translate.locationIsProxied) { url = Zotero.Ingester.ProxyMonitor.properToProxy(url); } @@ -541,7 +541,7 @@ Zotero.Utilities.Ingester.HTTP.prototype.doPost = function(url, body, onDone, co } catch(e) { translate.error(false, e); } - }, contentType); + }, requestContentType, responseCharset); } // These are front ends for XMLHttpRequest. XMLHttpRequest can't actually be @@ -563,7 +563,7 @@ Zotero.Utilities.HTTP = new function() { * doGet can be called as: * Zotero.Utilities.HTTP.doGet(url, onDone) **/ - function doGet(url, onDone, onError) { + function doGet(url, onDone, onError, responseCharset) { Zotero.debug("HTTP GET "+url); if (this.browserIsOffline()){ return false; @@ -575,7 +575,7 @@ Zotero.Utilities.HTTP = new function() { var test = xmlhttp.open('GET', url, true); xmlhttp.onreadystatechange = function(){ - _stateChange(xmlhttp, onDone); + _stateChange(xmlhttp, onDone, responseCharset); }; xmlhttp.send(null); @@ -592,7 +592,7 @@ Zotero.Utilities.HTTP = new function() { * doPost can be called as: * Zotero.Utilities.HTTP.doPost(url, body, onDone) **/ - function doPost(url, body, onDone, contentType) { + function doPost(url, body, onDone, requestContentType, responseCharset) { Zotero.debug("HTTP POST "+body+" to "+url); if (this.browserIsOffline()){ return false; @@ -602,10 +602,10 @@ Zotero.Utilities.HTTP = new function() { .createInstance(); xmlhttp.open('POST', url, true); - xmlhttp.setRequestHeader("Content-Type", (contentType ? contentType : "application/x-www-form-urlencoded" )); + xmlhttp.setRequestHeader("Content-Type", (requestContentType ? requestContentType : "application/x-www-form-urlencoded" )); xmlhttp.onreadystatechange = function(){ - _stateChange(xmlhttp, onDone); + _stateChange(xmlhttp, onDone, responseCharset); }; xmlhttp.send(body); @@ -671,7 +671,7 @@ Zotero.Utilities.HTTP = new function() { } - function _stateChange(xmlhttp, onDone){ + function _stateChange(xmlhttp, onDone, responseCharset){ switch (xmlhttp.readyState){ // Request not yet made case 1: @@ -684,6 +684,10 @@ Zotero.Utilities.HTTP = new function() { // Download complete case 4: if(onDone){ + // Override the content charset + if (responseCharset) { + xmlhttp.channel.contentCharset = responseCharset; + } onDone(xmlhttp); } break; diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js @@ -206,6 +206,15 @@ var Zotero = new function(){ // Initialize keyboard shortcuts Zotero.Keys.init(); + try { + Zotero.DB.test(); + } + catch (e) { + this.skipLoading = true; + Zotero.DB.skipBackup = true; + return; + } + // Add notifier queue callbacks to the DB layer Zotero.DB.addCallback('begin', Zotero.Notifier.begin); Zotero.DB.addCallback('commit', Zotero.Notifier.commit); @@ -1387,7 +1396,7 @@ Zotero.Date = new function(){ if(!date.month) { // compile month regular expression var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', - + 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // If using a non-English bibliography locale, try those too if (Zotero.CSL.Global.locale != 'en-US') { months = months.concat(Zotero.CSL.Global.getMonthStrings("short")); @@ -1597,8 +1606,6 @@ Zotero.Date = new function(){ /** * Figure out the date order from the output of toLocaleDateString() * - * Note: Currently unused - * * Returns a string with y, m, and d (e.g. 'ymd', 'mdy') */ function getLocaleDateOrder(){ diff --git a/chrome/locale/af-ZA/zotero/preferences.dtd b/chrome/locale/af-ZA/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Uitvoer"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Kitskopieer"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Verstek-afvoerformaat:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Let wel: rykteksformatering sal op Mac OS X verlore gaan."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(bv wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Afvoerformaat"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Snelsleutels"> <!ENTITY zotero.preferences.keys.openZotero "Open/sluit Zotero-paneel"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/af-ZA/zotero/zotero.properties b/chrome/locale/af-ZA/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Export Notes exportOptions.exportFileData=Export Files +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/ar/zotero/preferences.dtd b/chrome/locale/ar/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "تصدير"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "نسخ سريع"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "شكل المخرجات الإفتراضي:"> <!ENTITY zotero.preferences.quickCopy.macWarning "ملاحظة: التنسيق الغني للنصوص سيفقد عند استخدام نظام ماكنتوش."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(مثال: wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "شكل المخرجات"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "اختصارات"> <!ENTITY zotero.preferences.keys.openZotero "فتح/إغلاق نافذة زوتيرو"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/ar/zotero/zotero.properties b/chrome/locale/ar/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=اسلوب توثيق المراج zotero.preferences.export.quickCopy.exportFormats=صيغ التصدير zotero.preferences.export.quickCopy.instructions=َتسمح لك خاصية النسخ السريع بنسخ المرجع الذي اخترته إلى الحافظة بالضغط على زر (%S) أو سحب الموضوع إلى أي مربع نص في صفحة الويب. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=الملفات التالية موجودة مسبقاً في الوجهة التي تريدها ، لذا لم يتم نسخها: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=جزئي exportOptions.exportNotes=تصدير الملاحظات exportOptions.exportFileData=تصدير الملفات +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=,,, date.abbreviation.year=سنة @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/bg-BG/zotero/preferences.dtd b/chrome/locale/bg-BG/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Експорт"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Бързо копиране"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Изходящ формат по подразбиране:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Внимание: Rich-text formatting ще бъде загубен при Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(напр. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Изходящ формат"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Клавишни Комбинации"> <!ENTITY zotero.preferences.keys.openZotero "Отваряне/Затваряне на Панела на Зотеро"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Подръжка на базата дани"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Проберка на цялостта на базата дани"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/bg-BG/zotero/zotero.properties b/chrome/locale/bg-BG/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Стил на библиограф zotero.preferences.export.quickCopy.exportFormats=Формати за експорт zotero.preferences.export.quickCopy.instructions=Бързо копиране ви позволява да копирате избраните отпратки в клипборда с клавишната комбинация (%S) или да ги издърпате в текстова кутия от интернет страница. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Папката вече съдържа следните файлове и те не бяха копирани. dragAndDrop.filesNotFound=Следните файлове не бяха намерени и не могат да бъдат копирани: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Частичен exportOptions.exportNotes=Експорт на бележки exportOptions.exportFileData=Експорт на Файлове +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=ви, ри, ти, ти date.abbreviation.year=г @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Винаги следвай този изб integration.deleteCitedItem.title=Сигурни ли сте, че искате да премахните тази отпратка? integration.deleteCitedItem.body=Тази отпратка е цитирана в текста на вашият документ. Изтриването и ще премахне всички цитати. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/ca-AD/zotero/preferences.dtd b/chrome/locale/ca-AD/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Exporta"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Còpia ràpida"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Format de sortida per defecte:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Nota: el format de text enriquit es perdrà en Mac OS X"> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(p.ex. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Format de sortida"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Dreceres de teclat"> <!ENTITY zotero.preferences.keys.openZotero "Obre/Tanca Zotero"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Manteniment de la base de dades"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Comprova la integritat de la base de dades"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/ca-AD/zotero/zotero.properties b/chrome/locale/ca-AD/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Estils bibliogràfics zotero.preferences.export.quickCopy.exportFormats=Formats d'exportació zotero.preferences.export.quickCopy.instructions=Copia ràpida permet copiar les referències seleccionades al portaretalls prement una drecera de teclat o arrossegant els elements a un quadre de text en una pàgina web. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Els següents arxiu ja existeixen al directori de destí i no poden ser copiats: dragAndDrop.filesNotFound=Els següents arxius no s'han trobat i no s'han pogut copiar: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Parcial exportOptions.exportNotes=Exportar les notes exportOptions.exportFileData=Exportar els arxius adjunts +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=r, n, r, rt, é date.abbreviation.year=a @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Segueix sempre aquesta selecció. integration.deleteCitedItem.title=Estàs segur que vols eliminar aquesta referència? integration.deleteCitedItem.body=Aquesta referència està citada en el text del teu document. Eliminant-la s'eliminaran també totes les cites. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/cs-CZ/zotero/preferences.dtd b/chrome/locale/cs-CZ/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/cs-CZ/zotero/zotero.properties b/chrome/locale/cs-CZ/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Export Notes exportOptions.exportFileData=Export Files +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/da-DK/zotero/preferences.dtd b/chrome/locale/da-DK/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/da-DK/zotero/zotero.properties b/chrome/locale/da-DK/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Eksporter Notater exportOptions.exportFileData=Eksporter filer +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/de-AT/zotero/preferences.dtd b/chrome/locale/de-AT/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/de-AT/zotero/zotero.properties b/chrome/locale/de-AT/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Notizen exportieren exportOptions.exportFileData=Dateien exportieren +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=. date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/de-CH/zotero/preferences.dtd b/chrome/locale/de-CH/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/de-CH/zotero/zotero.properties b/chrome/locale/de-CH/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Notizen exportieren exportOptions.exportFileData=Dateien exportieren +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=. date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/de/zotero/preferences.dtd b/chrome/locale/de/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick-Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Standardausgabeformat"> <!ENTITY zotero.preferences.quickCopy.macWarning "Achtung: Rich-Text-Formatierungen gehen unter Mac OS X verloren."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(z.B. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Ausgabeformat"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Tastenkombinationen"> <!ENTITY zotero.preferences.keys.openZotero "Zotero-Panel öffnen/schließen"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Datenbankwartung"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Integrität der Datenbank überprüfen"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/de/zotero/zotero.properties b/chrome/locale/de/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Zitierstile zotero.preferences.export.quickCopy.exportFormats=Export-Formate zotero.preferences.export.quickCopy.instructions=Quick Copy erlaubt Ihnen, ausgewählte Literaturangaben durch Drücken einer Tastenkombination (%S) in die Zwischenablage zu kopieren oder Einträge in ein Textfeld auf einer Webseite zu ziehen. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Die folgenden Datein waren im Zielordner bereits vorhanden und wurden nicht kopiert: dragAndDrop.filesNotFound=Die folgenden Datei wurden nicht gefunden und konnten nicht kopiert werden. @@ -445,6 +451,7 @@ fulltext.indexState.partial=Unvollständig exportOptions.exportNotes=Notizen exportieren exportOptions.exportFileData=Dateien exportieren +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=. date.abbreviation.year=J @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Diese Auswahl dauerhaft übernehmen. integration.deleteCitedItem.title=Sind Sie sicher, dass Sie diese Literaturangabe löschen wollen? integration.deleteCitedItem.body=Diese Literaturangabe wird im Text Ihres Dokuments zitiert. Sie zu löschen, wird alle Zitationen entfernen. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/el-GR/zotero/preferences.dtd b/chrome/locale/el-GR/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/el-GR/zotero/zotero.properties b/chrome/locale/el-GR/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Export Notes exportOptions.exportFileData=Export Files +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/en-US/zotero/preferences.dtd b/chrome/locale/en-US/zotero/preferences.dtd @@ -48,17 +48,20 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> <!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> -<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper journal articles in references"> -<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal articles only if the article does not have a page range specified."> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> +<!ENTITY zotero.preferences.quickCopy.copyAsHTML "Copy as HTML"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> <!ENTITY zotero.preferences.quickCopy.siteEditor.setings "Site-Specific Settings:"> <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath "Domain/Path"> <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> diff --git a/chrome/locale/en-US/zotero/zotero.properties b/chrome/locale/en-US/zotero/zotero.properties @@ -451,6 +451,7 @@ fulltext.indexState.partial = Partial exportOptions.exportNotes = Export Notes exportOptions.exportFileData = Export Files +exportOptions.UTF8 = Export as UTF-8 date.daySuffixes = st, nd, rd, th date.abbreviation.year = y @@ -475,7 +476,7 @@ annotations.collapse.tooltip = Collapse Annotation annotations.expand.tooltip = Expand Annotation annotations.oneWindowWarning = Annotations for a snapshot may only be opened in one browser window simultaneously. This snapshot will be opened without annotations. -integration.incompatibleVersion = This version of the Zotero Word plug-in is incompatible with the currently installed version of the Zotero Firefox extension. Please ensure you are using the latest versions of both components. +integration.incompatibleVersion = This version of the Zotero Word plug-in ($INTEGRATION_VERSION) is incompatible with the currently installed version of the Zotero Firefox extension (%1$S). Please ensure you are using the latest versions of both components. integration.fields.label = Fields integration.referenceMarks.label = ReferenceMarks integration.fields.caption = Microsoft Word Fields are less likely to be accidentally modified, but cannot be shared with OpenOffice.org. diff --git a/chrome/locale/es-ES/zotero/preferences.dtd b/chrome/locale/es-ES/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Exportar"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Copia rápida"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Formato de salida normal:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Nota: el formato especial se perderá en Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(p.ej. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Formato de salida"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Atajos de teclado"> <!ENTITY zotero.preferences.keys.openZotero "Abrir/cerrar el panel de Zotero"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Mantenimiento de la base de datos"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Comprobar la integridad de la base de datos"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/es-ES/zotero/zotero.properties b/chrome/locale/es-ES/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Exportar notas exportOptions.exportFileData=Exportar archivos +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=º, º, º, º date.abbreviation.year=a @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/et-EE/zotero/preferences.dtd b/chrome/locale/et-EE/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/et-EE/zotero/zotero.properties b/chrome/locale/et-EE/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Export Notes exportOptions.exportFileData=Export Files +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/fr-FR/zotero/preferences.dtd b/chrome/locale/fr-FR/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Exportation"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Copie rapide"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Format de sortie par défaut :"> <!ENTITY zotero.preferences.quickCopy.macWarning "Noter que le format texte enrichi (RTF) sera perdu sur Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(p. ex. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Format de sortie"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Raccourcis clavier"> <!ENTITY zotero.preferences.keys.openZotero "Ouvrir/fermer le panneau Zotero"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Maintenance de la base de données"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Vérifier l&apos;intégrité de la base de données"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/fr-FR/zotero/zotero.properties b/chrome/locale/fr-FR/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Styles bibliographiques zotero.preferences.export.quickCopy.exportFormats=Formats d'exportation zotero.preferences.export.quickCopy.instructions=La copie rapide vous permet de copier les références sélectionnées dans le presse-papiers par un raccourci clavier (%S) ou en glissant les objets dans une zone de texte d'une page Web. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Les fichiers suivants existent déjà dans le répertoire de destination et n'ont pas été copiés : dragAndDrop.filesNotFound=Les fichiers suivants n'ont pu être trouvés et donc copiés : @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partiel exportOptions.exportNotes=Exporter les notes exportOptions.exportFileData=Exporter les fichiers +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=er, , , date.abbreviation.year=a @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Toujours faire ainsi. integration.deleteCitedItem.title=Voulez-vous vraiment supprimer cette référence ? integration.deleteCitedItem.body=Cette référence est citée dans le texte de votre document. La supprimer supprimera toutes les citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/he-IL/zotero/preferences.dtd b/chrome/locale/he-IL/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/he-IL/zotero/zotero.properties b/chrome/locale/he-IL/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Export Notes exportOptions.exportFileData=יצוא קבצים +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=ש @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/hu-HU/zotero/preferences.dtd b/chrome/locale/hu-HU/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Exportálás"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Gyorsmásolás"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Alapértelmezett kimeneti formátum"> <!ENTITY zotero.preferences.quickCopy.macWarning "Megjegyzés: A formázás Mac OS X alatt elveszik."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(pl: wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Kimeneti formátum"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Billentyűparancsok"> <!ENTITY zotero.preferences.keys.openZotero "Zotero megnyitása/bezárása"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Adatbázis karbantartás"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Az adatbázis integritásának ellenőrzése"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/hu-HU/zotero/zotero.properties b/chrome/locale/hu-HU/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliográfiai stíélusok zotero.preferences.export.quickCopy.exportFormats=Exportálási formátumok zotero.preferences.export.quickCopy.instructions=A Gyorsmásolás segítségével a kiválasztott hivatkozásokat a vágólapra lehet másolni a %S gyorsbillentyű lenyomásával. A hivatkozást egy tetszőleges weboldal szövegmezőjébe is be lehet másolni, ha a kijelölt hivatkozást a szövegmezőbe húzzuk. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Az alábbi fájlok már léteznek a célmappában, ezért nem kerültek bemásolásra. dragAndDrop.filesNotFound=Az alábbi fájlok nem találhatóak, ezért nem lehet őket másolni: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Részleges exportOptions.exportNotes=Jegyzetek exportálása exportOptions.exportFileData=Fájlok exportálása +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=. date.abbreviation.year=év @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Beállítás megőrzése. integration.deleteCitedItem.title=A hivatkozás törlésének megerősítése? integration.deleteCitedItem.body=A hivatkozás említve van a dokumentum szövegében. Törlés után az összes hivatkozás törlésre kerül. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/is-IS/zotero/preferences.dtd b/chrome/locale/is-IS/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Flýtihnappar"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/is-IS/zotero/zotero.properties b/chrome/locale/is-IS/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Flytja út athugasemdir exportOptions.exportFileData=Flytja út skrár +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/it-IT/zotero/preferences.dtd b/chrome/locale/it-IT/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Esportazione"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Copia veloce"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Formato di output predefinito"> <!ENTITY zotero.preferences.quickCopy.macWarning "Nota: la formattazione RTF verrà persa su Mac OS X"> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(per es. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Formato di output"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Scorciatoie da tastiera"> <!ENTITY zotero.preferences.keys.openZotero "Apri o chiudi pannello di Zotero"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Manutenzione database"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Controlla l&apos;integrità del database"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/it-IT/zotero/zotero.properties b/chrome/locale/it-IT/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Stili bibliografici zotero.preferences.export.quickCopy.exportFormats=Formati di esportazione zotero.preferences.export.quickCopy.instructions=Copia veloce permette di copiare le citazioni bibliografiche selezionate negli Appunti utilizzando la scorciatoia da tastiera (%S) o trascinando l'elemento in un campo di testo di una pagina web. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=I seguenti file sono già presenti nella cartella di destinazione e non verranno copiati: dragAndDrop.filesNotFound=I seguenti file non sono stati trovati e non saranno copiati: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Parzialmente indicizzato exportOptions.exportNotes=Esporta note exportOptions.exportFileData=Esporta file +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=°, °, °, ° date.abbreviation.year=a @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Imposta come comportamento predefinito. integration.deleteCitedItem.title=Eliminare questa citazione? integration.deleteCitedItem.body=Questa citazione è contenuta nel testo del documento, la sua eliminazione causerà l'eliminazione di tutte le citazioni. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/ja-JP/zotero/preferences.dtd b/chrome/locale/ja-JP/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "エクスポート"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "クィックコピー"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "標準アウトプットフォーマット:"> <!ENTITY zotero.preferences.quickCopy.macWarning "注意:Mac OS Xにはリッチテキスト形式は失われます。"> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(例:wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "出力形式"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "ショートカットキー"> <!ENTITY zotero.preferences.keys.openZotero "Zoteroパネルを開く/閉じる"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/ja-JP/zotero/zotero.properties b/chrome/locale/ja-JP/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=参考文献のスタイル zotero.preferences.export.quickCopy.exportFormats=エクスポートフォーマット zotero.preferences.export.quickCopy.instructions=クイックコピー機能で、ショートカットキーを押してクリップボードに選択された参照文献のコピー、またはウェブページのテキストボックスにアイテムをドラッグすることができます。 +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=次のファイルは宛先フォルダにすでに存在しており、コピーされませんでした: dragAndDrop.filesNotFound=次のファイルは見つからず、コピーできませんでした。 @@ -445,6 +451,7 @@ fulltext.indexState.partial=部分作成 exportOptions.exportNotes=メモをエクスポート exportOptions.exportFileData=ファイルをエクスポート +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=日, 日, 日, 日 date.abbreviation.year=年 @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=常にこの設定を使用する。 integration.deleteCitedItem.title=この参照事項を削除してよろしいですか? integration.deleteCitedItem.body=この参照事項はあなたのドキュメントの文章の中に引用されています。削除するときに全ての引用はなくなります。 + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/ko-KR/zotero/preferences.dtd b/chrome/locale/ko-KR/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "내보내기"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "빠른 복사"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "기본 출력 형식:"> <!ENTITY zotero.preferences.quickCopy.macWarning "주: Rich-text 형식은 Mac OS X 상에선 손실됩니다."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(예. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "출력 형식"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "단축키"> <!ENTITY zotero.preferences.keys.openZotero "Zotero 패널 열기/닫기"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "데이터베이스 유지"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "데이터베이스 무결성 점검"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/ko-KR/zotero/zotero.properties b/chrome/locale/ko-KR/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=도서목록 형식 zotero.preferences.export.quickCopy.exportFormats=내보내기 형식 zotero.preferences.export.quickCopy.instructions=빠른 복사는 단축 키 (%S)를 누르거나 웹 페이지내 텍스트 박스 안으로 항목을 끌어 오면 클립보드에 선택한 참고를 복사하는 것을 허용시킵니다. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=다음 파일은 목적 디렉토리내 이미 존재하며 복사하지는 않았습니다: dragAndDrop.filesNotFound=다음 파일을 찾을수 없어 복사를 할 수 없습니다. @@ -445,6 +451,7 @@ fulltext.indexState.partial=부분적 exportOptions.exportNotes=노트 내보내기 exportOptions.exportFileData=파일 내보내기 +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=일, 일, 일, 일 date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=언제나 이 선택을 따릅니다. integration.deleteCitedItem.title=이 참조를 삭제하길 원하는 것이 맞습니까? integration.deleteCitedItem.body=이 참조는 문서의 문장 내에 인용되고 있습니다. 삭제할 경우에 모든 인용은 없어집니다. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/mn-MN/zotero/preferences.dtd b/chrome/locale/mn-MN/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/mn-MN/zotero/zotero.properties b/chrome/locale/mn-MN/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Export Notes exportOptions.exportFileData=Export Files +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/nb-NO/zotero/preferences.dtd b/chrome/locale/nb-NO/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Hurtigtaster"> <!ENTITY zotero.preferences.keys.openZotero "Åpne/lukk Zotero-panelet"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/nb-NO/zotero/zotero.properties b/chrome/locale/nb-NO/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Eksporter notater exportOptions.exportFileData=Eksporter filer +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=ste, ndre, dje, de, te date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/nl-NL/zotero/preferences.dtd b/chrome/locale/nl-NL/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Exporteren"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Snelle Kopie"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Standaard Uitvoerformaat:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Let op: onder Mac OS X gaat hierbij de tekstopmaak verloren."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(b.v. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Uitvoerformaat"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Sneltoetsen"> <!ENTITY zotero.preferences.keys.openZotero "Openen/Sluiten van Zotero-paneel"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Onderhoud"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Controleer Integriteit Database"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/nl-NL/zotero/zotero.properties b/chrome/locale/nl-NL/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliografie-stijlen zotero.preferences.export.quickCopy.exportFormats=Exportformaten zotero.preferences.export.quickCopy.instructions=Met Snelle Kopie kunt u geselecteerde verwijzingen naar het klembord kopiëren met behulp van een sneltoets (%S) of door de items naar een tekstvak te slepen. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=De volgende bestanden waren al aanwezig in de bestemmingsmap en zijn niet gekopieerd: dragAndDrop.filesNotFound=De volgende bestanden konden niet gevonden en gekopieerd worden: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Gedeeltelijk exportOptions.exportNotes=Exporteer Aantekeningen exportOptions.exportFileData=Exporteer Bestanden +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=e, e, e, e date.abbreviation.year=j @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Altijd deze selectie volgen. integration.deleteCitedItem.title=Wilt u deze verwijzing verwijderen? integration.deleteCitedItem.body=Deze verwijzing is geciteerd in de tekst van uw document. Als u de verwijzing wist worden de citaties verwijderd. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/pl-PL/zotero/preferences.dtd b/chrome/locale/pl-PL/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Eksport"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Szybka kopia"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Domyślny format wyjściowy"> <!ENTITY zotero.preferences.quickCopy.macWarning "Uwaga: formatowanie RTF zostanie utracone w systemie Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(np. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Format wyjściowy"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Skróty klawiaturowe"> <!ENTITY zotero.preferences.keys.openZotero "Otwórz/Zamknij okno Zotero"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Konserwacja bazy danych"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Sprawdź spójność bazy danych"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/pl-PL/zotero/zotero.properties b/chrome/locale/pl-PL/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Style bibliograficzne zotero.preferences.export.quickCopy.exportFormats=Eksportuj formaty zotero.preferences.export.quickCopy.instructions=Szybka kopia pozwala na skopiowanie wybranych pozycji bibliograficznych do schowka poprzez użycie skrótu klawiaturowego (%S) lub poprzez przeciągnięcie elementu w obszar pola tekstowego na stronie internetowej. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Następujące pliki istnieją już w katalogu docelowym i nie zostały skopiowane: dragAndDrop.filesNotFound=Następujących plików nie znaleziono i nie mogą zostać skopiowane: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Częściowy exportOptions.exportNotes=Eksportuj notatki exportOptions.exportFileData=Eksportuj pliki +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=-szy, -gi, -ci, -ty date.abbreviation.year=r. @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Zawsze korzystaj z tej sekcji. integration.deleteCitedItem.title=Czy chcesz usunąć tę pozycję bibliograficzną? integration.deleteCitedItem.body=W tekście dokumentu znajdują się odwołania do tej pozycji bibliograficznej. Usunięcie jej spowoduje usunięcie wszystkich odwołań. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/pt-BR/zotero/preferences.dtd b/chrome/locale/pt-BR/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Teclas de Atalhos"> <!ENTITY zotero.preferences.keys.openZotero "Abrir/Fechar painel Zotero"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/pt-BR/zotero/zotero.properties b/chrome/locale/pt-BR/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Exportar notas exportOptions.exportFileData=Exportar arquivos +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/pt-PT/zotero/preferences.dtd b/chrome/locale/pt-PT/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/pt-PT/zotero/zotero.properties b/chrome/locale/pt-PT/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Export Notes exportOptions.exportFileData=Export Files +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/ro-RO/zotero/preferences.dtd b/chrome/locale/ro-RO/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Exportare"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Copiere rapidă"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Stil implicit de formatare:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Notă: Formatarea RTF se va pierde pe Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(ex. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Stil de formatare"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Scurtături de la tastatură"> <!ENTITY zotero.preferences.keys.openZotero "Deschide/Închide panoul Zotero"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Întreţinerea bazei de date"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Controlează integritatea bazei de date"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/ro-RO/zotero/zotero.properties b/chrome/locale/ro-RO/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Stiluri bibliografice zotero.preferences.export.quickCopy.exportFormats=Exportă formate zotero.preferences.export.quickCopy.instructions=Copierea rapidă îţi permite să selectezi referinţele în memoria clipboard apăsând scurtătura de la tastatură (%S) sau trăgând înregistrările pe o pagină web, într-o casetă de text. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Fişierele următoare există deja în dosarul de destinaţie şi nu au fost copiate: dragAndDrop.filesNotFound=Următoarele fişiere nu au fost găsite şi nu pot fi copiate: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Parţial exportOptions.exportNotes=Export note exportOptions.exportFileData=Export fişiere +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=, , , date.abbreviation.year=a @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Întotdeauna urmează această selecţie. integration.deleteCitedItem.title=Eşti sigur că vrei să ştergi această referinţă? integration.deleteCitedItem.body=Referinţa este citată în textul documentului tău. Dacă o ştergi, toate citările vor fi şterse. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/ru-RU/zotero/preferences.dtd b/chrome/locale/ru-RU/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Экспортировать"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Быстро копировать"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Выходящий формат по умолчанию:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Примечание: форматирование RTF будет утрачено в Mac OS X"> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(например wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Выходной формат"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Горячие клавиши"> <!ENTITY zotero.preferences.keys.openZotero "Открыть/закрыть панель Zotero"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Поддержка БД"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Проверить целостность БД"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/ru-RU/zotero/zotero.properties b/chrome/locale/ru-RU/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Библиографические zotero.preferences.export.quickCopy.exportFormats=Форматы экспорта zotero.preferences.export.quickCopy.instructions=Быстрое копирование позволяет Вам копировать выбранные ссылки в буфер обмена, нажав горячую клавишу (%S) или перетащить документы в текстовое поле веб-страницы +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Следующие файлы уже существуют в конечной директории и они не скопированы: dragAndDrop.filesNotFound=Файлы не были найдены и не могут быть скопированы: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Частичное exportOptions.exportNotes=Экспорт Заметок exportOptions.exportFileData=Экспорт Файлов +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=ый,ой, ий, ый date.abbreviation.year=г @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Всегда следовать этому integration.deleteCitedItem.title=Вы уверены, что хотите удалить эту ссылку? integration.deleteCitedItem.body=Эта ссылка цитируется в тексте вашего документа. Удалив ее, вы удалите все цитаты + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/sr-YU/zotero/preferences.dtd b/chrome/locale/sr-YU/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Извоз"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Брзо умножавање"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Подразумевани излазни формат:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Белешка: Rich-text формат ће бити изгубљен на Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(нпр. sr.wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Излазни формат"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Пречице на тастатури"> <!ENTITY zotero.preferences.keys.openZotero "Отвори/затвори Зотеро површ"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Одржавање базе података"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Провери целовитост базе података"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/sr-YU/zotero/zotero.properties b/chrome/locale/sr-YU/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Библиографски сти zotero.preferences.export.quickCopy.exportFormats=Извозни формат zotero.preferences.export.quickCopy.instructions=Брзо умножавање вам дозвољава да умножите изабране референце у списак исечака (clipboard) притискајући дугме за пречицу (%S) или превлачењем ставки у поље за текст на веб страници. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Следеће датотеке већ постоје у одредишном директоријуму и нису умножене: dragAndDrop.filesNotFound=Следеће датотеке нису нађене и због тога нису умножене: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Делимично exportOptions.exportNotes=Извези белешке exportOptions.exportFileData=Извези датотеке +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=-ог, -ог, -ег, -ог date.abbreviation.year=г @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Увек прати овај избор. integration.deleteCitedItem.title=Да ли сте сигурни да желите избацити ову референцу? integration.deleteCitedItem.body=Ова референца је цитирана у тексту вашег документа. Брисање ње ће избацити све цитације. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/sv-SE/zotero/preferences.dtd b/chrome/locale/sv-SE/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Export"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Quick Copy"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Default Output Format:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Note: Rich-text formatting will be lost on Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Output Format"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Genvägsknappar"> <!ENTITY zotero.preferences.keys.openZotero "Open/Close Zotero Pane"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/sv-SE/zotero/zotero.properties b/chrome/locale/sv-SE/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliographic Styles zotero.preferences.export.quickCopy.exportFormats=Export Formats zotero.preferences.export.quickCopy.instructions=Quick Copy allows you to copy selected references to the clipboard by pressing a shortcut key (%S) or dragging items into a text box on a web page. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=The following files already existed in the destination directory and were not copied: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Partial exportOptions.exportNotes=Exportera anteckningar exportOptions.exportFileData=Exporter filer +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=å @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/tr-TR/zotero/preferences.dtd b/chrome/locale/tr-TR/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Dışarı Aktar"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Çabuk Kopyala"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Varsayılan Çıktı Biçimi:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Uyarı: Zengin-metin biçimi Mac OS X&apos;de kaybolacaktır."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(ör. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Çıktı Biçimi"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Kısayol Tuşları"> <!ENTITY zotero.preferences.keys.openZotero "Zotero Bölmesini Aç/Kapa"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Database Maintenance"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Check Database Integrity"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/tr-TR/zotero/zotero.properties b/chrome/locale/tr-TR/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Bibliyografik Sitiller zotero.preferences.export.quickCopy.exportFormats=Dışarı Aktarım Biçimleri zotero.preferences.export.quickCopy.instructions=Çabuk Kopya bir kısayol tuşuna (%S) basarak seçilen referansların pano'ya kopyalanmasını sağlar. Veya eserleri bir web sayfasındaki text box'a sürükleyebilirsiniz. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Aşağıdaki dosyalar hedef dizinde zaten varlar ve kopyalanmadılar: dragAndDrop.filesNotFound=The following files were not found and could not be copied: @@ -445,6 +451,7 @@ fulltext.indexState.partial=bölümsel exportOptions.exportNotes=Notları Dışarı Aktar exportOptions.exportFileData=Dosyaları Dışarı Aktar +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=Are you sure you want to remove this reference? integration.deleteCitedItem.body=This reference is cited in the text of your document. Deleting it will remove all citations. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/vi-VN/zotero/preferences.dtd b/chrome/locale/vi-VN/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "Xuất khẩu"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "Sao chép nhanh"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "Định dạng mặc định của dữ liệu đầu ra:"> <!ENTITY zotero.preferences.quickCopy.macWarning "Chú ý: Định dạng rich-text sẽ bị mất khi dùng Mac OS X."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(vd: wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "Định dạng dữ liệu đầu ra"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "Phím gõ tắt"> <!ENTITY zotero.preferences.keys.openZotero "Mở/Đóng cửa sổ Zotero"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "Bảo dưỡng Cơ sở dữ liệu"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "Kiểm tra Tính toàn vẹn của Cơ sở dữ liệu"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/vi-VN/zotero/zotero.properties b/chrome/locale/vi-VN/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=Các Văn phong Thư tịch zotero.preferences.export.quickCopy.exportFormats=Các Định dạng Xuất khẩu zotero.preferences.export.quickCopy.instructions=Quick Copy cho phép bạn sao chép các tham khảo được chọn vào clipboard bằng cách ấn phím tắt (%S) hoặc bằng cách kéo thả các biểu ghi vào trong một khuôn văn bản của một trang Web. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=Các tập tin sau đã có ở trong thư mục đích, và do đó không được sao chép: dragAndDrop.filesNotFound=Các tập tin sau không tồn tại, và do đó không được sao chép: @@ -445,6 +451,7 @@ fulltext.indexState.partial=Bán phần exportOptions.exportNotes=Xuất khẩu các Ghi chép exportOptions.exportFileData=Xuất khẩu các Tập tin +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=năm @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Luôn luôn theo lựa chọn này. integration.deleteCitedItem.title=Bạn có chắc bạn muốn xóa tham khảo này không? integration.deleteCitedItem.body=Tham khảo này được trích dẫn trong văn bản tài liệu của bạn. Nếu tham khảo này bị xóa, tất cả các trích dẫn tương ứng sẽ được gỡ bỏ khỏi văn bản. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/zh-CN/zotero/preferences.dtd b/chrome/locale/zh-CN/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "导出"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "快速复制"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "默认输出格式:"> <!ENTITY zotero.preferences.quickCopy.macWarning "注意: 富文本格式在Mac OS X下将丢失."> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(e.g. wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "输出格式"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "快捷键"> <!ENTITY zotero.preferences.keys.openZotero "开/关 Zotero 面板"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "数据库维护"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "数据库完整性检测"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/zh-CN/zotero/zotero.properties b/chrome/locale/zh-CN/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=文献目录样式 zotero.preferences.export.quickCopy.exportFormats=导出格式 zotero.preferences.export.quickCopy.instructions=快速复制可以让你通过快捷键(%S)或拖放条目到文本框的方式将所选引文复制到剪切板. +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=下列文件因已在目标文件夹中, 所以没有复制: dragAndDrop.filesNotFound=未找到下列文件, 无法复制. @@ -445,6 +451,7 @@ fulltext.indexState.partial=部分 exportOptions.exportNotes=导出笔记 exportOptions.exportFileData=导出文件 +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=st, nd, rd, th date.abbreviation.year=y @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=Always follow this selection. integration.deleteCitedItem.title=确信要清除此文献吗? integration.deleteCitedItem.body=您的文档里引用了此文献. 删除它会清除所有引文. + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/locale/zh-TW/zotero/preferences.dtd b/chrome/locale/zh-TW/zotero/preferences.dtd @@ -47,6 +47,10 @@ <!ENTITY zotero.preferences.prefpane.export "匯出"> +<!ENTITY zotero.preferences.citationOptions.caption "Citation Options"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL "Include URLs of paper articles in references"> +<!ENTITY zotero.preferences.export.citePaperJournalArticleURL.description "When this option is disabled, Zotero includes URLs when citing journal, magazine, and newspaper articles only if the article does not have a page range specified."> + <!ENTITY zotero.preferences.quickCopy.caption "快速複製"> <!ENTITY zotero.preferences.quickCopy.defaultOutputFormat "預設輸出格式:"> <!ENTITY zotero.preferences.quickCopy.macWarning "注意!在 Mac OS X 平台下會失去富文本的格式。"> @@ -55,6 +59,8 @@ <!ENTITY zotero.preferences.quickCopy.siteEditor.domainPath.example "(例如 wikipedia.org)"> <!ENTITY zotero.preferences.quickCopy.siteEditor.outputFormat "輸出格式"> +<!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> + <!ENTITY zotero.preferences.prefpane.keys "快速鍵"> <!ENTITY zotero.preferences.keys.openZotero "開/關 Zotero 窗格"> @@ -80,3 +86,6 @@ <!ENTITY zotero.preferences.dbMaintenance "資料庫維修"> <!ENTITY zotero.preferences.dbMaintenance.integrityCheck "檢查資料庫完整性"> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslatorsAndStyles "Reset Translators and Styles..."> +<!ENTITY zotero.preferences.dbMaintenance.resetTranslators "Reset Translators..."> +<!ENTITY zotero.preferences.dbMaintenance.resetStyles "Reset Styles..."> diff --git a/chrome/locale/zh-TW/zotero/zotero.properties b/chrome/locale/zh-TW/zotero/zotero.properties @@ -381,6 +381,12 @@ zotero.preferences.export.quickCopy.bibStyles=參考文獻的樣式 zotero.preferences.export.quickCopy.exportFormats=匯出格式 zotero.preferences.export.quickCopy.instructions=快速複製讓你可以按快捷鍵(%S)來把選取的參考文獻複製到剪貼簿,或者拖放項目到網頁的文字輸入區。 +zotero.preferences.advanced.resetTranslatorsAndStyles=Reset Translators and Styles +zotero.preferences.advanced.resetTranslatorsAndStyles.changesLost=Any new or modified translators or styles will be lost. +zotero.preferences.advanced.resetTranslators=Reset Translators +zotero.preferences.advanced.resetTranslators.changesLost=Any new or modified translators will be lost. +zotero.preferences.advanced.resetStyles=Reset Styles +zotero.preferences.advanced.resetStyles.changesLost=Any new or modified styles will be lost. dragAndDrop.existingFiles=以下的檔案已經存在目的目錄中,並未被複製: dragAndDrop.filesNotFound=找不到以下的檔案而無法加以複製: @@ -445,6 +451,7 @@ fulltext.indexState.partial=部分的 exportOptions.exportNotes=匯出筆記 exportOptions.exportFileData=匯出檔案 +exportOptions.UTF8=Export as UTF-8 date.daySuffixes=日, 日, 日, 日 date.abbreviation.year=年 @@ -481,3 +488,8 @@ integration.regenerate.saveBehavior=每次都作相同的選擇。 integration.deleteCitedItem.title=你確定要移除這個參考資料嗎? integration.deleteCitedItem.body=在你文件的內文中有引用到這個參考資料,刪除它將會移除所有的引用文獻。 + +styles.installStyle=Install style "%1$S" from %2$S? +styles.updateStyle=Update existing style "%1$S" with "%2$S" from %3$S? +styles.installed=The style "%S" was installed successfully. +styles.installError=%S does not appear to be a valid CSL file. diff --git a/chrome/skin/default/zotero/preferences.css b/chrome/skin/default/zotero/preferences.css @@ -100,6 +100,14 @@ grid row hbox:first-child font-size: .85em; } +#quickCopy-siteSettings-rows::-moz-tree-cell(quickCopy-copyAsHTML) { + /* + DEBUG: possible to center checkmark here instead of with spaces? + + Tried text-align, -moz-box-align, and -moz-box-pack + */ +} + #zotero-quickCopy-format { min-height: 1.5em; /* Fix collapse on Windows */ diff --git a/components/zotero-protocol-handler.js b/components/zotero-protocol-handler.js @@ -154,8 +154,8 @@ function ChromeExtensionHandler() { // items were selected includeAllChildItems = false; } - // If combining children, add matching parents - else if (combineChildItems) { + // If combining children or standalone note/attachment, add matching parents + else if (combineChildItems || !results[i].isRegularItem()) { itemsHash[results[i].getID()] = items.length; items.push(results[i].toArray(2)); // Flag item as a search match @@ -263,6 +263,10 @@ function ChromeExtensionHandler() { var sorts = sortBy.split(','); for (var i=0; i<sorts.length; i++) { var [field, order] = sorts[i].split('/'); + // Year field is really date field + if (field == 'year') { + field = 'date'; + } switch (order) { case 'd': case 'desc': @@ -286,10 +290,45 @@ function ChromeExtensionHandler() { // Multidimensional sort do { - var cmp = collation.compareString(0, - a[sorts[index].field], - b[sorts[index].field] - ); + // Note and attachment sorting when combineChildItems is false + if (!combineChildItems && sorts[index].field == 'note') { + if (a.itemType == 'note' || a.itemType == 'attachment') { + var valA = a.note; + } + else if (a.reportChildren) { + var valA = a.reportChildren.notes[0].note; + } + else { + var valA = ''; + } + + if (b.itemType == 'note' || b.itemType == 'attachment') { + var valB = b.note; + } + else if (b.reportChildren) { + var valB = b.reportChildren.notes[0].note; + } + else { + var valB = ''; + } + + // Put items without notes last + if (valA == '' && valB != '') { + var cmp = 1; + } + else if (valA != '' && valB == '') { + var cmp = -1; + } + else { + var cmp = collation.compareString(0, valA, valB); + } + } + else { + var cmp = collation.compareString(0, + a[sorts[index].field], + b[sorts[index].field] + ); + } if (cmp == 0) { continue; diff --git a/defaults/preferences/zotero.js b/defaults/preferences/zotero.js @@ -14,8 +14,8 @@ pref("extensions.zotero.cacheTranslatorData",true); pref("extensions.zotero.zoteroPaneOnTop",false); pref("extensions.zotero.statusBarIcon", 2); pref("extensions.zotero.browserContentContextMenu", true); -pref("extensions.zotero.openURL.resolver","http://athene.gmu.edu:8888/lfp/LinkFinderPlus/Display"); -pref("extensions.zotero.openURL.version","0.1"); +pref("extensions.zotero.openURL.resolver","http://worldcatlibraries.org/registry/gateway"); +pref("extensions.zotero.openURL.version","1.0"); pref("extensions.zotero.parseEndNoteMIMETypes",true); pref("extensions.zotero.automaticSnapshots",true); pref("extensions.zotero.downloadAssociatedFiles",false); @@ -27,6 +27,7 @@ pref("extensions.zotero.attachmentRenameFormatString", '{%c - }{%y - }{%t{50}}') pref("extensions.zotero.capitalizeTitles", true); pref("extensions.zotero.launchNonNativeFiles", false); pref("extensions.zotero.sortNotesChronologically", false); +pref("extensions.zotero.sortAttachmentsChronologically", false); pref("extensions.zotero.lastCreatorFieldMode",0); pref("extensions.zotero.lastAbstractExpand",0); @@ -57,12 +58,12 @@ pref("extensions.zotero.report.combineChildItems", true); // Export and citation settings pref("extensions.zotero.export.lastTranslator", '14763d24-8ba0-45df-8f52-b8d1108e7ac9'); pref("extensions.zotero.export.translatorSettings", 'true,false'); -pref("extensions.zotero.export.lastStyle", 'http://www.zotero.org/styles/chicago-note.csl'); +pref("extensions.zotero.export.lastStyle", 'http://www.zotero.org/styles/chicago-note'); pref("extensions.zotero.export.bibliographySettings", 'save-as-rtf'); pref("extensions.zotero.export.bibliographyLocale", ''); pref("extensions.zotero.export.citePaperJournalArticleURL", false); -pref("extensions.zotero.export.quickCopy.setting", 'bibliography=http://www.zotero.org/styles/chicago-note.csl'); +pref("extensions.zotero.export.quickCopy.setting", 'bibliography=http://www.zotero.org/styles/chicago-note'); // Integration settings pref("extensions.zotero.integration.autoRegenerate", -1); // -1 = ask; 0 = no; 1 = yes diff --git a/scrapers.sql b/scrapers.sql @@ -22,7 +22,7 @@ -- Set the following timestamp to the most recent scraper update date -REPLACE INTO version VALUES ('repository', STRFTIME('%s', '2007-11-30 22:00:00')); +REPLACE INTO version VALUES ('repository', STRFTIME('%s', '2008-01-30 07:30:00')); REPLACE INTO translators VALUES ('96b9f483-c44d-5784-cdad-ce21b984fe01', '1.0.0b4.r1', '', '2007-06-21 20:00:00', '1', '100', '4', 'Amazon.com', 'Sean Takats', '^https?://(?:www\.)?amazon', 'function detectWeb(doc, url) { @@ -577,7 +577,7 @@ function doWeb(doc, url) { } }'); -REPLACE INTO translators VALUES ('838d8849-4ffb-9f44-3d0d-aa8a0a079afe', '1.0.0b3.r1', '', '2007-03-24 22:20:00', 1, 100, 4, 'OCLC WorldCat FirstSearch', 'Simon Kornblith', '^https?://(?:new)?firstsearch\.oclc\.org[^/]*/WebZ/', +REPLACE INTO translators VALUES ('838d8849-4ffb-9f44-3d0d-aa8a0a079afe', '1.0.0b3.r1', '', '2007-12-12 05:00:00', 1, 100, 4, 'OCLC WorldCat FirstSearch', 'Simon Kornblith', '^https?://(?:new)?firstsearch\.oclc\.org[^/]*/WebZ/', 'function detectWeb(doc, url) { var detailRe = /FirstSearch: [\w ]+ Detailed Record/; var searchRe = /FirstSearch: [\w ]+ List of Records/; @@ -710,7 +710,7 @@ REPLACE INTO translators VALUES ('838d8849-4ffb-9f44-3d0d-aa8a0a079afe', '1.0.0b newItem.complete(); processURLs(urls); - }); + }, false, ''iso-8859-1''); } function doWeb(doc, url) { @@ -930,7 +930,7 @@ function doWeb(doc, url) { } }'); -REPLACE INTO translators VALUES ('88915634-1af6-c134-0171-56fd198235ed', '1.0.0b3.r1', '', '2007-07-31 16:45:00', '1', '100', '4', 'Library Catalog (Voyager)', 'Simon Kornblith', 'Pwebrecon\.cgi', +REPLACE INTO translators VALUES ('88915634-1af6-c134-0171-56fd198235ed', '1.0.0b3.r1', '', '2008-01-30 07:30:00', '1', '100', '4', 'Library Catalog (Voyager)', 'Simon Kornblith', 'Pwebrecon\.cgi', 'function detectWeb(doc, url) { var export_options = doc.forms.namedItem(''frm'').elements.namedItem(''RD'').options; for(var i in export_options) { @@ -941,6 +941,7 @@ REPLACE INTO translators VALUES ('88915634-1af6-c134-0171-56fd198235ed', '1.0.0b || export_options[i].text == ''MARC (Unicode/UTF-8)'' || export_options[i].text == ''MARC UTF-8'' || export_options[i].text == ''UTF-8 MARC (Unicode)'' + || export_options[i].text == ''UTF8-Unicode'' || export_options[i].text == ''MARC (non-Unicode/MARC-8)'') { // We have an exportable single record if(doc.forms.namedItem(''frm'').elements.namedItem(''RC'')) { @@ -1039,6 +1040,7 @@ REPLACE INTO translators VALUES ('88915634-1af6-c134-0171-56fd198235ed', '1.0.0b latin1 = i; } else if(export_options[i].text == ''UTF-8'' || export_options[i].text == ''UTF-8 MARC (Unicode)'' + || export_options[i].text == ''UTF8-Unicode'' || export_options[i].text == ''MARC UTF-8'' || export_options[i].text == ''MARC (Unicode/UTF-8)'') { unicode = i; @@ -1085,7 +1087,7 @@ REPLACE INTO translators VALUES ('88915634-1af6-c134-0171-56fd198235ed', '1.0.0b Zotero.wait(); }'); -REPLACE INTO translators VALUES ('d921155f-0186-1684-615c-ca57682ced9b', '1.0.0b4.r1', '', '2007-03-28 16:00:00', 1, 100, 4, 'JSTOR', 'Simon Kornblith', '^https?://(?:www\.|ocrpdf-sandbox\.)jstor\.org[^/]*/(?:view|browse/[^/]+/[^/]+\?|search/|cgi-bin/jstor/viewitem)', +REPLACE INTO translators VALUES ('d921155f-0186-1684-615c-ca57682ced9b', '1.0.0b4.r1', '', '2008-01-09 20:00:00', '1', '100', '4', 'JSTOR', 'Simon Kornblith', 'https?://[^/]*jstor\.org[^/]*/(?:view|browse/[^/]+/[^/]+\?|search/|cgi-bin/jstor/viewitem)', 'function detectWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -1105,7 +1107,7 @@ REPLACE INTO translators VALUES ('d921155f-0186-1684-615c-ca57682ced9b', '1.0.0b if(elmts.iterateNext()) { return "journalArticle"; } -}', +}', 'function getJSTORAttachment(viewURL) { var viewRe = new RegExp("(^https?://[^/]+/)view([^?]+)"); var m = viewRe.exec(viewURL); @@ -1140,6 +1142,10 @@ function doWeb(doc, url) { var saveCitations = new Array(); var viewPages = new Array(); + var hostRegexp = new RegExp("^(https?://[^/]+)/"); + var hMatch = hostRegexp.exec(url); + var host = hMatch[1]; + if(doc.title == "JSTOR: Search Results") { var availableItems = new Object(); @@ -1167,7 +1173,7 @@ function doWeb(doc, url) { var text = doc.evaluate(''.//strong/text()'', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext(); if(text && text.nodeValue) { - text = Zotero.Utilities.cleanString(text.nodeValue); + text = Zotero.Utilities.trimInternal(text.nodeValue); if(availableItems[i]) { availableItems[i] += " "+text; } else { @@ -1199,7 +1205,7 @@ function doWeb(doc, url) { if(link.href.indexOf("/view/") != -1) { articleTitle = link.textContent; viewPage = link.href; - } else if(link.href.indexOf("citationAction=") != -1) { + } else if(link.href.indexOf("citationAction=save&") != -1) { items[link.href] = articleTitle; tableView[link.href] = viewPage; } @@ -1227,10 +1233,10 @@ function doWeb(doc, url) { } } - Zotero.Utilities.HTTP.doGet(''http://www.jstor.org/browse?citationAction=removeAll&confirmRemAll=on&viewCitations=1'', function() { // clear marked + Zotero.Utilities.HTTP.doGet(host+''/browse?citationAction=removeAll&confirmRemAll=on&viewCitations=1'', function() { // clear marked // Mark all our citations Zotero.Utilities.HTTP.doGet(saveCitations, null, function() { // mark this - Zotero.Utilities.HTTP.doGet(''http://www.jstor.org/browse/citations.txt?exportAction=Save+as+Text+File&exportFormat=cm&viewCitations=1'', function(text) { + Zotero.Utilities.HTTP.doGet(host+''/browse/citations.txt?exportAction=Save+as+Text+File&exportFormat=cm&viewCitations=1'', function(text) { // get marked var k = 0; var lines = text.split("\n"); @@ -1295,7 +1301,7 @@ function doWeb(doc, url) { itemComplete(newItem, url); } - Zotero.Utilities.HTTP.doGet(''http://www.jstor.org/browse?citationAction=removeAll&confirmRemAll=on&viewCitations=1'', function() { // clear marked + Zotero.Utilities.HTTP.doGet(host+''/browse?citationAction=removeAll&confirmRemAll=on&viewCitations=1'', function() { // clear marked Zotero.done(); }); }); @@ -1305,7 +1311,7 @@ function doWeb(doc, url) { Zotero.wait(); }'); -REPLACE INTO translators VALUES ('e85a3134-8c1a-8644-6926-584c8565f23e', '1.0.0b4.r1', '', '2007-09-08 12:00:00', '1', '100', '4', 'History Cooperative', 'Simon Kornblith', '^https?://www\.historycooperative\.org[^/]*/(?:journals/.+/.+/.+\.s?html$|cgi-bin/search.cgi|journals/.+/.+/)', +REPLACE INTO translators VALUES ('e85a3134-8c1a-8644-6926-584c8565f23e', '1.0.0b4.r1', '', '2008-01-13 19:30:00', '1', '100', '4', 'History Cooperative', 'Simon Kornblith', 'https?://[^/]*historycooperative\.org[^/]*/(?:journals/.+/.+/.+\.s?html$|cgi-bin/search.cgi|journals/.+/.+/)', 'function detectWeb(doc, url) { var contents = doc.title.replace("Contents", ""); if(doc.title != contents || doc.title == "History Cooperative: Search Results") { @@ -1959,7 +1965,7 @@ REPLACE INTO translators VALUES ('5dd22e9a-5124-4942-9b9e-6ee779f1023e', '1.0.0b Zotero.wait(); }'); -REPLACE INTO translators VALUES ('d3b1d34c-f8a1-43bb-9dd6-27aa6403b217', '1.0.0b4.r5', '', '2007-11-21 00:25:00', '0', '100', '4', 'YouTube', 'Sean Takats', '^https?://(?:www\.)?youtube\.com\/', +REPLACE INTO translators VALUES ('d3b1d34c-f8a1-43bb-9dd6-27aa6403b217', '1.0.0b4.r5', '', '2008-01-09 20:00:00', '0', '100', '4', 'YouTube', 'Sean Takats', 'https?://[^/]*youtube\.com\/', 'function detectWeb(doc, url){ var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -2082,11 +2088,456 @@ function getData(ids){ Zotero.wait(); }'); -REPLACE INTO translators VALUES ('bdae838b-3a58-461f-9e8a-142ed9de61dc', '1.0.0b4.r5', '', '2007-11-14 20:45:00', '0', '100', '4', 'PLoS Journals', 'Michael Berkowitz', '^http://[^.]+\.plosjournals\.org/', -'function detectWeb(doc, url) { - if (doc.evaluate(''//div[@class="search"][@id="browseResults"]/ul/li/span/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { +REPLACE INTO translators VALUES ('4345839f-b4fd-4e3f-a73d-268b6f280f6e', '1.0.0b4.r5', '', '2008-01-29 20:00:00', '0', '100', '4', 'Journal of Vision', 'Michael Berkowitz', 'http://(www.)?journalofvision.org/', +'function detectWeb(doc, url) { + if (url.indexOf("search.aspx?") != -1 || url.match(/\d+/g).length == 2) { + return "multiple"; + } else if (url.match(/\d+/g).length == 3) { + return "journalArticle"; + } +}', +'function doWeb(doc, url) { + var urls = new Array(); + if (detectWeb(doc, url) == "multiple") { + var items = new Object(); + if (doc.evaluate(''//a[@class="AbsTitle"]'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + var xpath = ''//a[@class="AbsTitle"]''; + } else if (doc.evaluate(''//a[@class="toc_ArticleTitle"]'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + var xpath = ''//a[@class="toc_ArticleTitle"]''; + } + var articles = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); + var next_art; + while (next_art = articles.iterateNext()) { + items[next_art.href] = next_art.textContent; + } + items = Zotero.selectItems(items); + for (var i in items) { + urls.push(i); + } + } else { + urls.push(url); + } + Zotero.debug(urls); + + Zotero.Utilities.processDocuments(urls, function(newDoc) { + var rislink = newDoc.evaluate(''//div[@id="block0"]/table/tbody/tr/td[@class="body"]/a'', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext().href.replace("info/GetCitation", "AutomaticCitationDownload") + ''&type=ReferenceManager''; + var DOI = newDoc.evaluate(''//td[2]/span[@class="toc_VolumeLine"]'', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent.match(/doi:\s*(.*)$/)[1]; + var PDF = newDoc.evaluate(''//div[@class="jovHistory"]//td[2]/a'', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext().href; + Zotero.debug(rislink); + Zotero.Utilities.HTTP.doGet(rislink, function(text) { + var translator = Zotero.loadTranslator("import"); + translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + translator.setString(text); + translator.setHandler("itemDone", function(obj, item) { + item.DOI = DOI; + item.publicationTitle = "Journal of Vision"; + item.attachments = [{url:PDF, title:"Journal of Vision Full Text PDF", mimeType:"application/pdf"}]; + item.complete(); + }); + translator.translate(); + }); + }, function() {Zotero.done;}); +}'); + +REPLACE INTO translators VALUES ('966a7612-900c-42d9-8780-2a3247548588', '1.0.0b4.r5', '', '2008-01-25 20:00:00', '0', '100', '4', 'eMJA', 'Michael Berkowitz', 'http://www.mja.com.au/', +'function detectWeb(doc, url) { + if (doc.evaluate(''//p[@class="Pfoot"]/b/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext() || doc.evaluate(''/html/body/table/tbody/tr[1]/td[2]/a/b'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + return "multiple"; + } else if (doc.title.indexOf("eMJA:") != -1) { + return "journalArticle"; + } +}', +'function senCase(string) { + var smallwords = Array("and", "a", "in", "the", "by", "of", "s", "on"); + var sen = string.split(/\b/); + for (var i = 0 ; i < sen.length; i++) { + if (sen[i].match(/\w+/)) { + if (smallwords.indexOf(sen[i]) != -1 && i != 0) { + sen[i] = sen[i].toLowerCase(); + } else { + sen[i] = sen[i][0].toUpperCase() + sen[i].substring(1).toLowerCase(); + } + } + } + return sen.join(""); +} + +function doWeb(doc, url) { + var URIs = new Array(); + + if (doc.evaluate(''//p[@class="Pfoot"]/b/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + var xpath = ''//p[@class="Pfoot"]/b/a''; + } else if (doc.evaluate(''//tr[1]/td[2]/a/b'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + var xpath = ''//tr[1]/td[2]/a/b''; + var linkpath = ''//tr[2]/td[2]/small[@class="gr"]''; + } + + if (xpath) { + if (linkpath) { + var items = new Object(); + var titles = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); + var links = doc.evaluate(linkpath, doc, null, XPathResult.ANY_TYPE, null); + var title = titles.iterateNext(); + var link = links.iterateNext(); + while (title) { + //Zotero.debug(Zotero.Utilities.cleanString(title.textContent)); + //Zotero.debug(Zotero.Utilities.cleanString(link.textContent)); + items[Zotero.Utilities.cleanString(link.textContent)] = Zotero.Utilities.cleanString(title.textContent).substring(6); + title = titles.iterateNext(); + link = links.iterateNext(); + } + } else { + var items = new Object(); + var things = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); + var next_thing = things.iterateNext(); + while (next_thing) { + items[next_thing.href] = senCase(Zotero.Utilities.cleanString(next_thing.textContent)); + next_thing = things.iterateNext(); + } + } + items = Zotero.selectItems(items); + Zotero.debug(items); + for (var i in items) { + URIs.push(i); + } + } else { + URIs.push(url); + } + Zotero.debug(URIs); + Zotero.Utilities.processDocuments(URIs, function(newDoc) { + var newItem = new Zotero.Item("journalArticle"); + newItem.title = senCase(newDoc.title.substring(6)); + + newItem.publicationTitle = "The Medical Journal of Australia"; + newItem.ISSN = "0025-729X"; + newItem.url = newDoc.location.href; + + //date + newItem.date = newDoc.evaluate(''//meta[@name="date"]/@content'', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent.substring(0,10); + + //voliss + var voliss = newDoc.evaluate(''//meta[@name="citation"]/@content'', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; + //voliss = voliss.match(/[^\d]+(\d+)\s+\((\d+)\)/); + voliss = voliss.match(/;\s+(\d+)\s+\((\d+)[^:]+:\s+(.*)\.$/); + newItem.volume = voliss[1]; + newItem.issue = voliss[2]; + newItem.pages = voliss[3]; + + //authors + var authors = new Array(); + var apath = ''//div[@class="By"]/span[@class="Pn"]''; + var author = newDoc.evaluate(apath, newDoc, null, XPathResult.ANY_TYPE, null); + var next_a = author.iterateNext(); + while (next_a) { + var name = next_a.textContent; + if (name.substring(0,1) == ",") { + name = name.substring(2); + } else if (name.substring(0,4) == " and") { + name = name.substring(5); + } + authors.push(name); + next_a = author.iterateNext(); + } + + for (var i in authors) { + newItem.creators.push(Zotero.Utilities.cleanAuthor(authors[i], "author")); + } + + //attachments + newItem.attachments = [ + {url:newDoc.location.href, title:"eMJA Snapshot", mimeType:"text/html"}, + {url:newDoc.location.href.replace(".html", ".pdf") , title:"eMJA PDF", mimeType:"application/pdf"} + ]; + newItem.complete(); + }, function() {Zotero.done;}); +}'); + +REPLACE INTO translators VALUES ('303c2744-ea37-4806-853d-e1ca67be6818', '1.0.0b4.r5', '', '2008-01-16 21:00:00', '0', '100', '4', 'CSIRO Publishing', 'Michael Berkowitz', 'http://www.publish.csiro.au/', +'function detectWeb(doc, url) { + if (doc.evaluate(''//a[@class="searchBoldBlue"]'', doc, null, XPathResult.ANY_TYPE, null).iterateNext() || doc.evaluate(''//td[2]/a[@class="linkJournal"]'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + return "multiple"; + } else if (url.indexOf("/view/journals/") != -1 || url.indexOf("paper") != -1) { + return "journalArticle"; + } +}', +'function doWeb(doc, url) { + var links = new Array(); + if (detectWeb(doc, url) == "multiple") { + var items = new Object(); + if (doc.evaluate(''//a[@class="searchBoldBlue"]'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + var arts = doc.evaluate(''//a[@class="searchBoldBlue"]'', doc, null, XPathResult.ANY_TYPE, null); + var art = arts.iterateNext(); + while (art) { + items[art.href] = art.textContent; + art = arts.iterateNext(); + } + } else if (doc.evaluate(''//td[2]/a[@class="linkJournal"]'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + var arts = doc.evaluate(''//td[2]/a[@class="linkJournal"]'', doc, null, XPathResult.ANY_TYPE, null); + var titles = doc.evaluate(''//td[3]//td[1]/table/tbody/tr/td/b'', doc, null, XPathResult.ANY_TYPE, null); + var art = arts.iterateNext(); + var title = titles.iterateNext(); + while (art) { + items[art.href] = title.textContent; + art = arts.iterateNext(); + title = titles.iterateNext(); + } + } + items = Zotero.selectItems(items); + for (var i in items) { + links.push(i.match(/([^/=.htm]*)(.htm)?$/)[1]); + } + } else { + links.push(url.match(/([^/=.htm]*)(.htm)?$/)[1]); + } + for (var i in links) { + var newURL = ''http://www.publish.csiro.au/view/journals/dsp_journal_retrieve_citation.cfm?ct='' + links[i] + ''.ris''; + var pdfURL = ''http://www.publish.csiro.au/?act=view_file&file_id='' + links[i] + ''.pdf''; + Zotero.Utilities.HTTP.doGet(newURL, function(text) { + var translator = Zotero.loadTranslator("import"); + translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + translator.setString(text); + translator.setHandler("itemDone", function(obj, item) { + item.itemType = "journalArticle"; + if (item.notes[0]) { + item.abstractNote = item.notes[0].note; + } + item.attachments = [ + {url:pdfURL, title:"CSIRO Publishing PDF", mimeType:"application/pdf"}, + {url:newURL, title:"CSIRO Publishing Snaphost", mimeType:"text/html"} + ]; + item.complete(); + }); + translator.translate(); + }); + } + Zotero.wait(); +}'); + +REPLACE INTO translators VALUES ('27ee5b2c-2a5a-4afc-a0aa-d386642d4eed', '1.0.0b4.r5', '', '2008-01-14 20:00:00', '0', '100', '4', 'PubMed Central', 'Michael Berkowitz', 'http://[^/]*.nih.gov/', +'function detectWeb(doc, url) { + if (doc.evaluate(''//table[@id="ResultPanel"]//td[2]'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + return "multiple"; + } else if (url.indexOf("articlerender") != -1) { + return "journalArticle"; + } +}', +'function doWeb(doc, url) { + var tagMap = {journal_title:"publicationTitle", + title:"title", + date:"date", + issue:"issue", + volume:"volume", + doi:"DOI", + fulltext_html_url:"url" + } + var URIs = new Array(); + var items = new Object(); + if (doc.title.indexOf("PMC Results") != -1) { + var titlex = ''//table[@id="ResultPanel"]/tbody/tr[3]/td/div/table/tbody/tr/td[2]/div[@class="portal-tocentry"]/div[@class="toc-entry"]/div/div[@class="toc-title"]''; + var linkx = ''//table[@id="ResultPanel"]/tbody/tr[3]/td/div/table/tbody/tr/td[2]/div[@class="portal-tocentry"]/div[@class="toc-entry"]/div/a[@class="toc-link"][2]''; + + var titles = doc.evaluate(titlex, doc, null, XPathResult.ANY_TYPE, null); + var next_title = titles.iterateNext(); + var links = doc.evaluate(linkx, doc, null, XPathResult.ANY_TYPE, null); + var next_link = links.iterateNext(); + while (next_title && next_link) { + items[next_link.href] = next_title.textContent; + next_title = titles.iterateNext(); + next_link = links.iterateNext(); + } + items = Zotero.selectItems(items); + for (var i in items) { + var artid= i.match(/\d+/)[0]; + URIs.push(artid); + } + } else { + URIs.push(url.match(/\d+/)[0]); + } + for (var id in URIs) { + Zotero.Utilities.HTTP.doGet(''http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pmcentrez&artid='' + URIs[id], function(text) { + var tags = new Object(); + var meta = text.match(/<meta[^>]*>/gi); + for (var i in meta) { + var item = meta[i].match(/=\"([^"]*)\"/g); + if (item[0].substring(2, 10) == ''citation'') { + tags[item[0].substring(11, item[0].length - 1)] = item[1].substring(2, item[1].length - 1); + } + } + var newItem = new Zotero.Item("journalArticle"); + + for (var tag in tagMap) { + newItem[tagMap[tag]] = tags[tag]; + } + + for (var i in meta) { + if (meta[i].match(/DC.Contributor/)) { + newItem.creators.push(Zotero.Utilities.cleanAuthor(meta[i].match(/content=\"([^"]*)\">/)[1], "author")); + } + } + + newItem.attachments = [ + {url:tags["fulltext_html_url"], title:"PubMed Central Snapshot", mimeType:"text/html"}, + {url:tags["pdf_url"], title:"PubMed Central Full Text PDF", mimeType:"application/pdf"} + ]; + + newItem.complete(); + }); + } + Zotero.wait(); +}'); + +REPLACE INTO translators VALUES ('60d97c99-47f0-4323-98b6-5699faf827b1', '1.0.0b4.r5', '', '2008-01-09 20:00:00', '0', '100', '4', 'Blackwell Compass', 'Michael Berkowitz', 'http://www.blackwell-compass.com/subject/[^/]+/.+', +'function detectWeb(doc, url) { + if (url.indexOf("search_results") != -1 || url.indexOf("section_home") != -1) { + return "multiple"; + } else { + return "journalArticle"; + } +}', +'function doWeb(doc, url) { + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var URIs = new Array(); + var items = new Object(); + if (detectWeb(doc, url) == "multiple") { + + var xpath = ''//div[@class="article-holder"]//h4[@class="article"]/a''; + var articles = doc.evaluate(xpath, doc, namespace, XPathResult.ANY_TYPE, null); + var next_art = articles.iterateNext(); + while (next_art) { + items[next_art.href] = next_art.textContent; + next_art = articles.iterateNext(); + } + items = Zotero.selectItems(items); + + for (var i in items) { + URIs.push(i); + } + } else { + URIs.push(url); + } + + Zotero.Utilities.processDocuments(URIs, function(doc, urll) { + var doi = doc.evaluate(''//div[@id="content"]/p/span[@class="guide"]/a[substring(@href, 1, 4) = "http"]'', doc, null, XPathResult.ANY_TYPE, null).iterateNext().href.match(/doi\/[^/]*\/([^&]*)/)[1]; + Zotero.Utilities.HTTP.doGet(''http://www.blackwell-synergy.com/action/downloadCitation?doi='' + doi + ''&include=cit&format=refman&direct=on&submit=Download+references'', function(text) { + var translator = Zotero.loadTranslator("import"); + translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + translator.setString(text); + translator.setHandler("itemDone", function(obj, item) { + item.attachments = [ + {url:item.url, title:"Blackwell Compass Snapshot", mimeType:"text/html"}, + {url:item.url.replace("/doi/abs", "/doi/pdf"), title:"Blackwell Compass Full Text PDF", mimeType:"application/pdf"} + ]; + + item.complete(); + + }); + + translator.translate(); + }); + }, function() {Zotero.done;}); + Zotero.wait(); +}'); + +REPLACE INTO translators VALUES ('ca6e95d1-46b9-4535-885c-df0c2d4b7f7a', '1.0.0b4.r5', '', '2008-01-07 19:00:00', '0', '100', '4', 'Innovate Online', 'Michael Berkowitz', '^http://(www.)?innovateonline.info/', +'function detectWeb(doc, url) { + if (url.indexOf("view=article") != -1) { + return "journalArticle"; + } else if (url.indexOf("view=search") != -1) { return "multiple"; + } +}', +'function doWeb(doc, url) { + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + var newURIs = new Array(); + + if (url.indexOf("view=search") != -1) { + var titles = new Array(); + var hrefs = new Array(); + var items = new Object(); + var xpath = ''//ul[@class="articles"]/li[@class="result"]/div[@class="header"]''; + var names = doc.evaluate(xpath, doc, namespace, XPathResult.ANY_TYPE, null); + var next_item = names.iterateNext(); + while (next_item) { + titles.push(next_item.textContent.split(/\n/)[3]); + next_item = names.iterateNext(); + } + + var nextpath = ''//ul[@class="articles"]/li/@onclick''; + var links = doc.evaluate(nextpath, doc, namespace, XPathResult.ANY_TYPE, null); + var next_link = links.iterateNext(); + while (next_link) { + hrefs.push(next_link.textContent); + next_link = links.iterateNext(); + } + + for (var i = 0 ; i < titles.length ; i++) { + items[hrefs[i].match(/\d+/)] = titles[i]; + } + items = Zotero.selectItems(items); + + for (var i in items) { + newURIs.push(''http://innovateonline.info/index.php?view=article&id='' + i); + } } else { + var newURL = url; + if (newURL.indexOf("highlight") != -1) { + newURL = newURL.substring(0, newURL.indexOf("highlight") -1); + } + if (newURL.indexOf("action=synopsis") != -1) { + newURL = newURL.replace("action=synopsis", "action=article"); + } + newURIs.push(newURL); + } + Zotero.debug(newURIs); + + Zotero.Utilities.processDocuments(newURIs, function(newDoc) { + var newItem = new Zotero.Item("journalArticle"); + newItem.repository = "Innovate Online"; + newItem.publicationTitle = "Innovate"; + newItem.title = newDoc.title.substring(10); + + var authors = newDoc.evaluate(''//div[@id="title"]/div[@class="author"]/a'', newDoc, namespace, XPathResult.ANY_TYPE, null); + var author = authors.iterateNext(); + while (author) { + newItem.creators.push(Zotero.Utilities.cleanAuthor(author.textContent, "author")); + author = authors.iterateNext(); + } + + newItem.date = newDoc.evaluate(''//div[@id="page"]/a/div[@class="title"]'', newDoc, namespace, XPathResult.ANY_TYPE, null).iterateNext().textContent; + + var voliss = newDoc.evaluate(''//div[@id="page"]/a/div[@class="subtitle"]'', newDoc, namespace, XPathResult.ANY_TYPE, null).iterateNext().textContent.match(/Volume\s+(\d+).*Issue\s+(\d+)/); + newItem.volume = voliss[1]; + newItem.issue = voliss[2]; + + var id = newDoc.location.href.match(/\d+/)[0]; + var PDFurl = "http://innovateonline.info/print.php?view=pdf&id=" + id; + newItem.attachments = [ + {url:newDoc.location.href, title:"Innovate Online Snapshot", mimeType:"text/html"}, + {url:PDFurl, title:"Innovate Online PDF", mimeType:"application/pdf"} + ] + + Zotero.Utilities.HTTP.doGet(newDoc.location.href.replace("action=article", "action=synopsis"), function(text) { + var abs = text.match(/<div id=\"synopsis\">\n<p>(.*)<\/p>/)[1]; + newItem.abstractNote = Zotero.Utilities.unescapeHTML(Zotero.Utilities.cleanTags(abs)); + newItem.complete(); + }); + }, function() {Zotero.done;}); + Zotero.wait(); +}'); + +REPLACE INTO translators VALUES ('bdae838b-3a58-461f-9e8a-142ed9de61dc', '1.0.0b4.r5', '', '2008-01-10 21:00:00', '1', '100', '4', 'PLoS Journals', 'Michael Berkowitz', 'http://[^.]+\.plosjournals\.org/', +'function detectWeb(doc, url) { + if (doc.evaluate(''//div[@class="search"][@id="browseResults"]/ul/li/span/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext() || + doc.evaluate(''//div[@id="toclist"]/dl/dt/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + return "multiple"; + } else if (url.indexOf("get-document") != -1) { return "journalArticle"; } }', @@ -2103,12 +2554,16 @@ REPLACE INTO translators VALUES ('bdae838b-3a58-461f-9e8a-142ed9de61dc', '1.0.0b function doWeb(doc, url) { var URLs = new Array(); var items = new Object(); - if (doc.evaluate(''//div[@class="search"][@id="browseResults"]/ul/li/span/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { - var xpath = ''//div[@class="search"][@id="browseResults"]/ul/li/span/a''; + if (detectWeb(doc, url) == "multiple") { + if (doc.evaluate(''//div[@class="search"][@id="browseResults"]/ul/li/span/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + var xpath = ''//div[@class="search"][@id="browseResults"]/ul/li/span/a''; + } else if (doc.evaluate(''//div[@id="toclist"]/dl/dt/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + var xpath = ''//div[@id="toclist"]/dl/dt/a''; + } var articles = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); var next_article = articles.iterateNext(); while (next_article) { - items[next_article.href] = next_article.textContent; + items[next_article.href] = Zotero.Utilities.cleanString(next_article.textContent); next_article = articles.iterateNext(); } items = Zotero.selectItems(items); @@ -2129,15 +2584,11 @@ function doWeb(doc, url) { var bits = doc.location.href.match(/(^.*\?request=).*(doi=.*$)/); var RISurl = bits[1] + ''download-citation&t=refman&'' + bits[2]; Zotero.Utilities.HTTP.doGet(RISurl, function(text) { - /*text = text.replace(/RT/, "TY"); - text = text.replace(/VO/, "VL"); - text = text.replace(/LK/, "UR"); - text = text.replace(/YR/, "PY");*/ var trans=Zotero.loadTranslator("import"); trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); trans.setString(text); trans.setHandler("itemDone", function(obj, newItem) { - var urlstring= bits[1]+ ''get-pdf&'' +bits[2].replace("doi=", "file=").replace("/", "_") + ''-S.pdf''; + var urlstring= bits[1]+ ''get-pdf&'' +bits[2].replace("doi=", "file=").replace("/", "_").replace("%2F", "_") + ''-S.pdf''; newItem.attachments.push({url:urlstring, title:newItem.title, mimeType:"application/pdf"}); var urlRE = /http:\/\/dx.doi.org\/(.*)$/; @@ -3394,16 +3845,30 @@ function doWeb(doc, url) { } '); -REPLACE INTO translators VALUES ('5af42734-7cd5-4c69-97fc-bc406999bdba', '1.0.0b4.r5', '', '2007-09-06 19:30:00', '0', '100', '4', 'ESA Journals', 'Michael Berkowitz', '^http://www.esajournals.org/*', +REPLACE INTO translators VALUES ('5af42734-7cd5-4c69-97fc-bc406999bdba', '1.0.0b4.r5', '', '2008-01-06 23:55:00', '0', '100', '4', 'ESA Journals', 'Michael Berkowitz', '^http://www.esajournals.org/*', 'function detectWeb(doc, url) { - Zotero.debug(doc.title); - if (url.indexOf("get-toc") != -1) { + if (url.indexOf("get-toc") != -1 || url.indexOf("searchtype") != -1) { return "multiple"; } else if (url.indexOf("get-document") != -1 || url.indexOf("get-abstract") != -1) { return "journalArticle"; } }', -'function doWeb(doc, url) { +'function senCase(string) { + var smallwords = Array("AND", "A", "IN", "THE", "BY", "OF"); + var sen = string.split(/\b/); + for (var i = 0 ; i < sen.length; i++) { + if (sen[i].match(/\w+/)) { + if (smallwords.indexOf(sen[i]) != -1 && i != 0) { + sen[i] = sen[i].toLowerCase(); + } else { + sen[i] = sen[i][0] + sen[i].substring(1).toLowerCase(); + } + } + } + return sen.join(""); +} + +function doWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { if (prefix == ''x'') return namespace; else return null; @@ -3432,7 +3897,7 @@ REPLACE INTO translators VALUES ('5af42734-7cd5-4c69-97fc-bc406999bdba', '1.0.0b var articles = new Object(); for (var i = 0 ; i < linksAr.length ; i++) { - articles[linksAr[i]] = titlesAr[i]; + articles[linksAr[i]] = senCase(titlesAr[i]); } articles = Zotero.selectItems(articles); @@ -3452,13 +3917,12 @@ REPLACE INTO translators VALUES ('5af42734-7cd5-4c69-97fc-bc406999bdba', '1.0.0b var URI = "http://www.esajournals.org/perlserv/?request=cite-builder&doi=" + doi; Zotero.Utilities.HTTP.doGet(URI, function(text) { var newURI = Zotero.Utilities.unescapeHTML(text.match(re)[1]); - Zotero.Utilities.HTTP.doGet("http://www.esajournals.org/perlserv/" + newURI, function(text) { + Zotero.Utilities.HTTP.doGet("http://" + doc.location.host + "/perlserv/" + newURI, function(text) { var translator = Zotero.loadTranslator("import"); text = text.replace(/RT/, "TY"); text = text.replace(/VO/, "VL"); text = text.replace(/LK/, "UR"); text = text.replace(/YR/, "PY"); - Zotero.debug(text); translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); translator.setString(text.replace(/([A-Z][A-Z\d]\s)/g, "$1 - ")); translator.setHandler("itemDone", function(obj, item) { @@ -3467,6 +3931,12 @@ REPLACE INTO translators VALUES ('5af42734-7cd5-4c69-97fc-bc406999bdba', '1.0.0b {url:"http://www.esajournals.org/perlserv/?request=res-loc&uri=urn%3Aap%3Apdf%3Adoi%3A" + doi, title:"EAS Full Text PDF", mimeType:"application/pdf"} ]; item.itemType = "journalArticle"; + item.title = item.title.replace(/\s+\-\s+/g, " "); + if (item.title.indexOf("JF") != -1) { + item.title = item.title.substring(0, item.title.indexOf("JF") - 1); + } + item.title = senCase(item.title); + item.abstractNote = item.notes[0][''note'']; item.complete(); }); translator.translate(); @@ -4693,7 +5163,7 @@ function doWeb(doc, url) } }'); -REPLACE INTO translators VALUES ('1a3e63b2-0adf-4c8e-928b-c58c2594b45d', '1.0.0b4.r1', '', '2007-07-31 16:45:00', '0', '100', '4', 'BioMed Central and More', 'Ben Parr', '^http://(www.)?(biomedcentral|actavetscand|aidsrestherapy|almob|ann-clinmicrob|annals-general-psychiatry|asir-journal|arthritis-research|anzhealthpolicy|behavioralandbrainfunctions|bjoc.beilstein-journals|biology-direct|biomagres|bio-diglib|biomedical-engineering-online|bpsmedicine|breast-cancer-research|cancerci|cbmjournal|cardiab|cardiovascularultrasound|cellandchromosome|biosignaling|celldiv|cerebrospinalfluidresearch|journal.chemistrycentral|capmh|cmjournal|chiroandosteo|clinicalmolecularallergy|cpementalhealth|comparative-hepatology|conflictandhealth|resource-allocation|coughjournal|ccforum|cytojournal|diagnosticpathology|dynamic-med|ete-online|ehjournal|epi-perspectives|filariajournal|frontiersinzoology|gvt-journal|genomebiology|geochemicaltransactions|globalizationandhealth|harmreductionjournal|head-face-med|hqlo|health-policy-systems|human-resources-health|immunityageing|immunome-research|implementationscience|infectagentscancer|internationalbreastfeedingjournal|equityhealthj|ijbnpa|ij-healthgeographics|issoonline|jautoimdis|jbiol|j-biomed-discovery|jbppni|carcinogenesis|cardiothoracicsurgery|jcircadianrhythms|ethnobiomed|jexpclinassistreprod|jibtherapies|journal-inflammation|jmedicalcasereports|jmolecularsignaling|jnanobiotechnology|jnrbm|jneuroengrehab|jneuroinflammation|occup-med|josr-online|translational-medicine|kinetoplastids|lipidworld|malariajournal|medimmunol|microbialcellfactories|molecular-cancer|molecularneurodegeneration|molecularpain|neuraldevelopment|nonlinearbiomedphys|nuclear-receptor|nutritionandmetabolism|nutritionj|ojrd|om-pc|particleandfibretoxicology|ped-rheum|peh-med|plantmethods|pophealthmetrics|proteomesci|ro-journal|rbej|reproductive-health-journal|respiratory-research|retrovirology|salinesystems|scoliosisjournal|scfbm|substanceabusepolicy|tbiomed|thrombosisjournal|trialsjournal|virologyj|wjes|wjso)\.(com|org|net)', +REPLACE INTO translators VALUES ('1a3e63b2-0adf-4c8e-928b-c58c2594b45d', '1.0.0b4.r1', '', '2008-01-09 20:00:00', '0', '100', '4', 'BioMed Central and More', 'Ben Parr', 'http://[^/]*(biomedcentral|actavetscand|aidsrestherapy|almob|ann-clinmicrob|annals-general-psychiatry|asir-journal|arthritis-research|anzhealthpolicy|behavioralandbrainfunctions|bjoc.beilstein-journals|biology-direct|biomagres|bio-diglib|biomedical-engineering-online|bpsmedicine|breast-cancer-research|cancerci|cbmjournal|cardiab|cardiovascularultrasound|cellandchromosome|biosignaling|celldiv|cerebrospinalfluidresearch|journal.chemistrycentral|capmh|cmjournal|chiroandosteo|clinicalmolecularallergy|cpementalhealth|comparative-hepatology|conflictandhealth|resource-allocation|coughjournal|ccforum|cytojournal|diagnosticpathology|dynamic-med|ete-online|ehjournal|epi-perspectives|filariajournal|frontiersinzoology|gvt-journal|genomebiology|geochemicaltransactions|globalizationandhealth|harmreductionjournal|head-face-med|hqlo|health-policy-systems|human-resources-health|immunityageing|immunome-research|implementationscience|infectagentscancer|internationalbreastfeedingjournal|equityhealthj|ijbnpa|ij-healthgeographics|issoonline|jautoimdis|jbiol|j-biomed-discovery|jbppni|carcinogenesis|cardiothoracicsurgery|jcircadianrhythms|ethnobiomed|jexpclinassistreprod|jibtherapies|journal-inflammation|jmedicalcasereports|jmolecularsignaling|jnanobiotechnology|jnrbm|jneuroengrehab|jneuroinflammation|occup-med|josr-online|translational-medicine|kinetoplastids|lipidworld|malariajournal|medimmunol|microbialcellfactories|molecular-cancer|molecularneurodegeneration|molecularpain|neuraldevelopment|nonlinearbiomedphys|nuclear-receptor|nutritionandmetabolism|nutritionj|ojrd|om-pc|particleandfibretoxicology|ped-rheum|peh-med|plantmethods|pophealthmetrics|proteomesci|ro-journal|rbej|reproductive-health-journal|respiratory-research|retrovirology|salinesystems|scoliosisjournal|scfbm|substanceabusepolicy|tbiomed|thrombosisjournal|trialsjournal|virologyj|wjes|wjso)\.(com|org|net)', 'function detectWeb(doc,url) { var namespace = doc.documentElement.namespaceURI; @@ -5013,103 +5483,63 @@ function doWeb(doc,url) } }'); -REPLACE INTO translators VALUES ('b61c224b-34b6-4bfd-8a76-a476e7092d43', '1.0.0b4.r1', '', '2007-07-31 16:45:00', '0', '100', '4', 'SSRN', 'Ramesh Srigiriraju', '^http://papers\.ssrn\.com/', +REPLACE INTO translators VALUES ('b61c224b-34b6-4bfd-8a76-a476e7092d43', '1.0.0b4.r5', '', '2008-01-10 21:00:00', '0', '100', '4', 'SSRN', 'Michael Berkowitz', '^http://papers\.ssrn\.com/', 'function detectWeb(doc, url) { var namespace=doc.documentElement.namespaceURI; var nsResolver=namespace?function(prefix) { return (prefix=="x")?namespace:null; }:null; - var singpath=''//img[@title="go to Document Delivery"]''; - if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) - return "book"; - var searchpath=''//td/font/strong[text()="Sort by"]''; - if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) - return "multiple"; - var browspath=''//td/font/strong[text()="Sort by:"]''; - if(doc.evaluate(browspath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + + if (doc.evaluate(''//font/strong/a[substring(@class, 1, 4) = "text"]'', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { return "multiple"; + } else if (url.indexOf("abstract_id") != -1) { + return "journalArticle"; + } }', -'function doWeb(doc, url) { +'function doWeb(doc, url) { var namespace=doc.documentElement.namespaceURI; var nsResolver=namespace?function(prefix) { return (prefix=="x")?namespace:null; }:null; - var singpath=''//img[@title="go to Document Delivery"]''; - if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { - var id=url.substring(url.indexOf("id=")+3); - var incase=id.indexOf("&"); - if(incase!=-1) - id=id.substring(0, incase); - var string="http://papers.ssrn.com/sol3/RefExport.cfm?abstract_id="+id+"&format=3"; - Zotero.Utilities.HTTP.doGet(string, function(text) { - var datareg=new RegExp(''input type="Hidden" name="hdnContent" value="([^"]+)"''); - var data=datareg.exec(text); + + var uris = new Array(); + + if (doc.evaluate(''//font/strong/a[substring(@class, 1, 4) = "text"]'', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var items = new Object(); + var xpath = ''//font/strong/a[substring(@class, 1, 4) = "text"]''; + var titles = doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var next_title = titles.iterateNext(); + while (next_title) { + items[next_title.href] = next_title.textContent; + next_title = titles.iterateNext(); + } + items = Zotero.selectItems(items); + for (var i in items) { + uris.push(i); + } + } else { + uris.push(url); + } + + Zotero.Utilities.processDocuments(uris, function(newDoc) { + var id = newDoc.location.href.match(/abstract_id=(\d+)/)[1]; + var newURL = ''http://papers.ssrn.com/sol3/RefExport.cfm?abstract_id='' + id + ''&format=3''; + Zotero.Utilities.HTTP.doGet(newURL, function(text) { + var ris=text.match(/<input type=\"Hidden\"\s+name=\"hdnContent\"\s+value=\"([^"]*)\">/)[1]; var trans=Zotero.loadTranslator("import"); trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); - trans.setString(data[1]); + trans.setString(ris); + trans.setHandler("itemDone", function(obj, item) { + item.itemType = "journalArticle"; + item.complete(); + }); trans.translate(); }); - } - var searchpath=''//td/font/strong[text()="Sort by"]''; - if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { - var idpath=''//tr/td/font/strong/a[@class="textLink"]''; - var ids=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null); - var id; - var items=new Array(); - while(id=ids.iterateNext()) { - var link=id.href; - var num=link.substring(link.lastIndexOf("id=")+3); - var incase=num.indexOf("&"); - if(incase!=-1) - num=num.substring(0, incase); - items[num]=id.textContent; - } - items=Zotero.selectItems(items); - var urls=new Array(); - for(var id in items) { - var string="http://papers.ssrn.com/sol3/RefExport.cfm?abstract_id="+id+"&format=3"; - Zotero.Utilities.HTTP.doGet(string, function(text) { - var datareg=new RegExp(''input type="Hidden" name="hdnContent" value="([^"]+)"''); - var data=datareg.exec(text); - var trans=Zotero.loadTranslator("import"); - trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); - trans.setString(data[1]); - trans.translate(); - }); - } - } - var browspath=''//td/font/strong[text()="Sort by:"]''; - if(doc.evaluate(browspath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { - var idpath=''//font/strong/a[@class="textlink"]''; - var ids=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null); - var id; - var items=new Array(); - while(id=ids.iterateNext()) { - var link=id.href; - var num=link.substring(link.lastIndexOf("id=")+3); - var incase=num.indexOf("&"); - if(incase!=-1) - num=num.substring(0, incase); - items[num]=id.textContent; - } - items=Zotero.selectItems(items); - var urls=new Array(); - for(var id in items) { - var string="http://papers.ssrn.com/sol3/RefExport.cfm?abstract_id="+id+"&format=3"; - Zotero.Utilities.HTTP.doGet(string, function(text) { - var datareg=new RegExp(''input type="Hidden" name="hdnContent" value="([^"]+)"''); - var data=datareg.exec(text); - var trans=Zotero.loadTranslator("import"); - trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); - trans.setString(data[1]); - trans.translate(); - }); - } - } + }, function() {Zotero.done;}); Zotero.wait(); }'); -REPLACE INTO translators VALUES ('1c34744d-690f-4cac-b31b-b7f0c90ac14d', '1.0.0b3.r1', '', '2007-07-31 16:45:00', '0', '100', '4', 'RSC Publishing', 'Ramesh Srigiriraju', 'http://(:?www\.|google\.)?rsc\.org/', +REPLACE INTO translators VALUES ('1c34744d-690f-4cac-b31b-b7f0c90ac14d', '1.0.0b3.r1', '', '2007-12-21 16:00:00', '0', '100', '4', 'RSC Publishing', 'Ramesh Srigiriraju', 'http://(:?www\.|google\.)?rsc\.org/', 'function detectWeb(doc, url) { var namespace=doc.documentElement.namespaceURI; var nsResolver=namespace?function(prefix) { @@ -5277,6 +5707,8 @@ function doWeb(doc, url) { Zotero.Utilities.HTTP.doGet(string, function(text) { var trans=Zotero.loadTranslator("import"); trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + // fix bad Y1 tags, which have wrong spacing and typically terminate with "///" + text = text.replace("Y1 - ", "Y1 - "); trans.setString(text); trans.translate(); Zotero.done(); @@ -5301,6 +5733,8 @@ function doWeb(doc, url) { Zotero.Utilities.HTTP.doGet(string, function(text) { var trans=Zotero.loadTranslator("import"); trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + // fix bad Y1 tags, which have wrong spacing and typically terminate with "///" + text = text.replace("Y1 - ", "Y1 - "); trans.setString(text); trans.translate(); Zotero.done(); @@ -5317,6 +5751,8 @@ function doWeb(doc, url) { Zotero.Utilities.HTTP.doGet(string, function(text) { var trans=Zotero.loadTranslator("import"); trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + // fix bad Y1 tags, which have wrong spacing and typically terminate with "///" + text = text.replace("Y1 - ", "Y1 - "); trans.setString(text); trans.setHandler("itemDone", function(obj, newItem) { var url2=newItem.url; @@ -5529,75 +5965,6 @@ function doWeb(doc, url) { Zotero.wait(); }'); -REPLACE INTO translators VALUES ('0faa6714-927a-4b07-911e-7101895daae0', '1.0.0b4.r1', '', '2007-07-31 16:45:00', '0', '100', '4', 'GBV', 'Ramesh Srigiriraju', '^http://(?:www\.|gso\.)?gbv\.de/', -'function detectWeb(doc, url) { - var namespace=doc.documentElement.namespaceURI; - var nsResolver=namespace?function(prefix){ - return (prefix=="x")?namespace:null; - }:null; - var searchpath=''//tr/td[@class="tab1"][text()="shortlist" or text()="Kurzliste"]''; - if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) - return "multiple"; - var singpath=''//tr/td[@class="tab1"][text()="title data" or text()="Titeldaten"]''; - var singpath2=''//tr/td[@class="tab1"][text()="availability" or text()="Nachweisinformationen"]''; - if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()|| - doc.evaluate(singpath2, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) - return "website"; -}', -'function doWeb(doc, url) { - var namespace=doc.documentElement.namespaceURI; - var nsResolver=namespace?function(prefix){ - return (prefix=="x")?namespace:null; - }:null; - var searchpath=''//tr/td[@class="tab1"][text()="shortlist" or text()="Kurzliste"]''; - if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { - var titlpath=''//tr/td[@class="hit"]/a/text()''; - var idpath=''//tr/td[@class="hit"][@align="right"]/text()''; - var titles=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null); - var ids=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null); - var items=new Array(); - var id; - while(id=ids.iterateNext()) { - var str=id.nodeValue; - str=str.substring(0, str.indexOf(".")); - items[str]=titles.iterateNext().nodeValue; - } - items=Zotero.selectItems(items); - var string="http://gso.gbv.de/DWN"; - for(var linx in items) { - var datastr="FRST="+linx+"&LAST="+linx+"&NORND=1&UFRST=" - +linx+"&ULAST="+linx+"&PRS=RIS&CHARSET_ONCE=UTF-8&MAXLINE=77&EMAIL="; - Zotero.Utilities.HTTP.doPost(string, datastr, function(text) { - var trans=Zotero.loadTranslator("import"); - trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); - trans.setString(text); - trans.translate(); - Zotero.done(); - }); - } - Zotero.wait(); - } - var singpath=''//tr/td[@class="tab1"][text()="title data" or text()="Titeldaten"]''; - var singpath2=''//tr/td[@class="tab1"][text()="availability" or text()="Nachweisinformationen"]''; - if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()|| - doc.evaluate(singpath2, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { - var pagepath=''//tr/td[@class="h2"]/strong[@class="pages"]/text()''; - var str=doc.evaluate(pagepath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; - var string="http://gso.gbv.de/DWN"; - var regex=new RegExp("^([\\d]+)"); - var nums=regex.exec(str); - var datastr="FRST="+nums[0]+"&LAST="+nums[0]+"&NORND=1&UFRST=" - +nums[0]+"&ULAST="+nums[0]+"&PRS=RIS&CHARSET_ONCE=UTF-8&MAXLINE=77&EMAIL="; - Zotero.Utilities.HTTP.doPost(string, datastr, function(text) { - var trans=Zotero.loadTranslator("import"); - trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); - trans.setString(text); - trans.translate(); - Zotero.done(); - }); - } -}'); - REPLACE INTO translators VALUES ('4fd6b89b-2316-2dc4-fd87-61a97dd941e8', '1.0.0b3.r1', '', '2007-11-14 17:20:00', '1', '100', '4', 'Library Catalog (InnoPAC)', 'Simon Kornblith', '^https?://[^/]+/(?:search\??/|record=|search%7e/)', 'function detectWeb(doc, url) { // First, check to see if the URL alone reveals InnoPAC, since some sites don''t reveal the MARC button @@ -6117,7 +6484,7 @@ function doWeb(doc, url){ } }'); -REPLACE INTO translators VALUES ('a77690cf-c5d1-8fc4-110f-d1fc765dcf88', '1.0.0b3.r1', '', '2007-08-31 21:00:00', '1', '100', '4', 'ProQuest', 'Simon Kornblith', '^https?://[^/]+/pqdweb\?((?:.*\&)?did=.*&Fmt=[0-9]|(?:.*\&)Fmt=[0-9].*&did=|(?:.*\&)searchInterface=|TS=[0-9])', +REPLACE INTO translators VALUES ('a77690cf-c5d1-8fc4-110f-d1fc765dcf88', '1.0.0b3.r1', '', '2007-12-03 03:00:00', '1', '100', '4', 'ProQuest', 'Simon Kornblith', '^https?://[^/]+/pqdweb\?((?:.*\&)?did=.*&Fmt=[0-9]|(?:.*\&)Fmt=[0-9].*&did=|(?:.*\&)searchInterface=|(?:.*\&)TS=[0-9])', 'function detectWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -6247,7 +6614,7 @@ function doWeb(doc, url) { var str= mInfo.value; str= str.replace("retrieveGroup", "sid"); var url = host+"/pqdweb?RQT=530&markedListInfo="+str+"1"; - items[url] = Zotero.Utilities.cleanString(titleElmt.textContent); + items[url] = Zotero.Utilities.trimInternal(titleElmt.textContent); } while((mInfo = mInfos.iterateNext()) && (titleElmt = titleElmts.iterateNext())); @@ -6640,7 +7007,7 @@ function doWeb(doc, url) { Zotero.wait(); }'); -REPLACE INTO translators VALUES ('b047a13c-fe5c-6604-c997-bef15e502b09', '1.0.0b3.r1', '', '2007-11-30 22:00:00', '1', '100', '4', 'LexisNexis', 'Sean Takats', '^https?://(?:www\.|web\.)?lexis-?nexis\.com[^/]*/us/lnacademic', +REPLACE INTO translators VALUES ('b047a13c-fe5c-6604-c997-bef15e502b09', '1.0.0b3.r1', '', '2008-01-29 23:00:00', '1', '100', '4', 'LexisNexis', 'Sean Takats', 'https?://[^/]*lexis-?nexis\.com[^/]*/us/lnacademic', 'function detectWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -6682,6 +7049,7 @@ REPLACE INTO translators VALUES ('b047a13c-fe5c-6604-c997-bef15e502b09', '1.0.0b Zotero.Utilities.HTTP.doPost(uri, poststring, function(text) { uri = text.match(/&amp;url=([^'']+)''/) uri = decodeURIComponent(uri[1]); + uri = uri.replace(/http:\/\/[^/]*\//, host+"/"); var uris = new Array(); uris.push(uri); Zotero.Utilities.processDocuments(uris, function(newDoc){ @@ -7430,7 +7798,7 @@ REPLACE INTO translators VALUES ('0f9fc2fc-306e-5204-1117-25bca009dffc', '1.0.0b Zotero.wait(); }'); -REPLACE INTO translators VALUES ('c54d1932-73ce-dfd4-a943-109380e06574', '1.0.0b4.r1', '', '2007-10-10 20:00:00', '1', '100', '4', 'Project MUSE', 'Simon Kornblith', '^https?://muse\.jhu\.edu[^/]*/(?:journals/[^/]+/[^/]+/[^/]+\.html|search/results)', +REPLACE INTO translators VALUES ('c54d1932-73ce-dfd4-a943-109380e06574', '1.0.0b4.r1', '', '2008-01-13 19:30:00', '1', '100', '4', 'Project MUSE', 'Simon Kornblith', 'https?://[^/]*muse\.jhu\.edu[^/]*/(?:journals/[^/]+/[^/]+/[^/]+\.html|search/results)', 'function detectWeb(doc, url) { var searchRe = new RegExp("^https?://[^/]+/search/results"); if(searchRe.test(url)) { @@ -7546,7 +7914,7 @@ REPLACE INTO translators VALUES ('c54d1932-73ce-dfd4-a943-109380e06574', '1.0.0b } }'); -REPLACE INTO translators VALUES ('fcf41bed-0cbc-3704-85c7-8062a0068a7a', '1.0.0b3.r1', '', '2007-11-09 05:50:00', '1', '100', '4', 'NCBI PubMed', 'Simon Kornblith and Michael Berkowitz', '^http://www\.ncbi\.nlm\.nih\.gov/(sites/entrez|entrez/query\.fcgi\?.*db=PubMed)', +REPLACE INTO translators VALUES ('fcf41bed-0cbc-3704-85c7-8062a0068a7a', '1.0.0b3.r1', '', '2008-01-23 18:30:00', '1', '100', '4', 'NCBI PubMed', 'Simon Kornblith and Michael Berkowitz', 'http://[^/]*www\.ncbi\.nlm\.nih\.gov[^/]*/(pubmed|sites/entrez|entrez/query\.fcgi\?.*db=PubMed)', 'function detectWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -7555,8 +7923,8 @@ REPLACE INTO translators VALUES ('fcf41bed-0cbc-3704-85c7-8062a0068a7a', '1.0.0b var uids = doc.evaluate(''//input[@id="UidCheckBox" or @name="uid"]'', doc, nsResolver, XPathResult.ANY_TYPE, null); - if(uids.iterateNext()) { - if (uids.iterateNext()){ + if(uids.iterateNext() && doc.title.indexOf("PMC Results") == -1) { + if (uids.iterateNext() && doc.title.indexOf("PMC Results") == -1){ return "multiple"; } return "journalArticle"; @@ -8199,133 +8567,122 @@ function doWeb() { getAllIds(); }'); -REPLACE INTO translators VALUES ('3af43735-36d3-46ae-9ca8-506ff032b0d3', '1.0.0b4.r1', '', '2007-06-21 06:30:00', '0', '100', '4', 'HeinOnline', 'Bill McKinney', 'http:\/\/heinonline\.org\/HOL\/Page\?handle\=hein\.journals\/.+', +REPLACE INTO translators VALUES ('a326fc49-60c2-405b-8f44-607e5d18b9ad', '1.0.0b4.r5', '', '2008-01-25 20:00:00', '0', '100', '4', 'Code4Lib Journal', 'Michael Berkowitz', 'http://journal.code4lib.org/', 'function detectWeb(doc, url) { - var namespace = doc.documentElement.namespaceURI; - var nsResolver = namespace ? function(prefix) { - if (prefix == ''x'') return namespace; else return null; - } : null; - - var re = /http:\/\/heinonline\.org\/HOL\/Page\?handle\=hein\.journals\/.+/ - if(re.test(url)) { - return "book"; - } else { - var aTags = doc.getElementsByTagName("a"); - for(var i=0; i<aTags.length; i++) { - if(articleRegexp.test(aTags[i].href)) { - return "multiple"; - } - } + if (doc.evaluate(''//h2[@class="articletitle"]/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + return "multiple"; + } else if (doc.evaluate(''//h1[@class="articletitle"]/a'', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { + return "journalArticle"; } }', -'function scrape(doc) { - - var namespace = doc.documentElement.namespaceURI; - var nsResolver = namespace ? function(prefix) { - if (prefix == ''x'') return namespace; else return null; - } : null; - - var newItem = new Zotero.Item("journalArticle"); - newItem.url = doc.location.href; - - // publicaton - var tmpTitle = doc.title; - var titleRe= /Law Journal Library (.+)\s+-\s+HeinOnline\.org/ - var titleMatch = titleRe.exec(tmpTitle); - if (titleMatch) { - newItem.publicationTitle = titleMatch[1]; +'function doWeb(doc, url) { + var items = new Object(); + var articles = new Array(); + var xpath = ''//div[@class="article"]/h2[@class="articletitle"]/a''; + if (detectWeb(doc, url) == "multiple") { + var xpath = ''//div[@class="article"]/h2[@class="articletitle"]/a''; + var titles = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); + var next_title = titles.iterateNext(); + while (next_title) { + items[next_title.href] = next_title.textContent; + next_title = titles.iterateNext(); + } + + items = Zotero.selectItems(items); + for (var i in items) { + articles.push(i); + } } else { - newItem.publicationTitle = doc.title; + articles.push(url); } - // default title - newItem.title = doc.title; - - // get selected page - var selectedPage = "1"; - var pageNum = "1"; - var p= doc.getElementsByTagName("select"); - if (p.length > 0) { - for (var i = 0; i < p[4].options.length; i++) { - if (p[4].options[ i ].selected) { - selectedPage = p[4].options[i].value; - pageNum = p[4].options[i].innerHTML; - newItem.pages = pageNum.replace(/^Page\s+/,"") + "-"; - } - } - } - + Zotero.Utilities.processDocuments(articles, function(newDoc, url) { + var newItem = new Zotero.Item("journalArticle"); + newItem.repository = "Code4Lib Journal"; + newItem.publicationTitle = "The Code4Lib Journal"; + newItem.ISSN = "1940-5758"; + newItem.url = newDoc.location.href; + newItem.title = newDoc.evaluate(''//div[@class="article"]/h1[@class="articletitle"]/a'', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; + newItem.abstractNote = newDoc.evaluate(''//div[@class="article"]/div[@class="abstract"]/p'', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; + var issdate = newDoc.evaluate(''//p[@id="issueDesignation"]'', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; + newItem.issue = issdate.match(/([^,]*)/)[0].match(/\d+/)[0]; + newItem.date = issdate.match(/,\s+(.*)$/)[1]; + + + var axpath = ''//div[@class="article"]/div[@class="entry"]/p[1]/a''; + var authors = newDoc.evaluate(axpath, newDoc, null, XPathResult.ANY_TYPE, null); + var next_author = authors.iterateNext(); + while (next_author) { + newItem.creators.push(Zotero.Utilities.cleanAuthor(next_author.textContent, "author")); + next_author = authors.iterateNext(); + } + + newItem.attachments.push({url:newDoc.location.href, title:"Code4Lib Journal Snapshot", mimeType:"text/html"}); + newItem.complete(); + }, function() {Zotero.done;}); + Zotero.wait(); +}'); - // get handle - var handle=""; - var handleRe = /handle=([^\&]+)\&/ - var handleMatch = handleRe.exec(doc.location.href); - if (handleMatch) { - handle = handleMatch[1]; +REPLACE INTO translators VALUES ('37445f52-64fa-4a2a-9532-35753520a0f0', '1.0.0b4.r5', '', '2008-01-16 06:30:00', '0', '100', '4', 'HeinOnline', 'Michael Berkowitz', 'http://heinonline\.org/HOL/', +'function detectWeb(doc, url) { + if (url.indexOf("LuceneSearch") != -1) { + return "multiple"; + } else if (url.indexOf("handle=hein.journals")) { + return "journalArticle"; } +}', +'function doWeb(doc, url) { - // fetch citation - var url = "http://heinonline.org/HOL/citation-info?handle="+handle+"&id="+selectedPage+"&rand=12345&collection=journals"; - Zotero.Utilities.HTTP.doGet(url, function(text) { - - var tmpTxt = text; - var citeRe = /(\d+)\s+(.+)\s+(\d+)\s+\(([^\)]+)\)\s+<br>\s+([^;]+)(;\s.+[\S])/ - var citeMatch = citeRe.exec(tmpTxt) - if (citeMatch) { - - newItem.volume = citeMatch[1]; - //newItem.issue= citeMatch[3]; - newItem.date = citeMatch[4]; - newItem.journalAbbreviation = citeMatch[2]; - newItem.title = citeMatch[5]; - - var tmpAuthors = citeMatch[6]; - var authors = tmpAuthors.split(";"); - for (i=1;i<authors .length;i++) { - - var name = authors[i].split(","); - var fname = name[1].replace(/^\s+/,""); - var lname= name[0].replace(/^\s+/,""); - newItem.creators.push({lastName:lname, firstName:fname, creatorType:"author", fieldMode:true}); - } - newItem.abstractNote = citeMatch[0]; - } + var handle = url.match(/handle=([^&]*)&/)[1]; + if (url.match(/&id=(\d+)/)) { + var id= url.match(/&id=(\d+)/)[1]; + } else if (url.match(/&div=(\d+)/)) { + var ids = new Array(); + var id = doc.evaluate(''//option[@selected="selected"]/@value'', doc, null, XPathResult.ANY_TYPE, null); + var next_id = id.iterateNext(); + while (next_id) { + ids.push(next_id.textContent); + next_id = id.iterateNext(); + } + id = ids[ids.length - 1]; + } - var getSectionUrl = "http://heinonline.org/HOL/ajaxcalls/get-section-id?base=js&handle="+handle+"&id="+selectedPage; - Zotero.Utilities.HTTP.doGet(getSectionUrl, function(sectionRes) { - - var pdfUrl = "http://heinonline.org/HOL/PDF?handle="+handle+"&id="+selectedPage+"&print=section&section="+sectionRes+"&ext=.pdf"; - newItem.attachments.push({url:pdfUrl, title:"PDF version", mimeType:"application/pdf", downloadable:true}); - newItem.notes.push({note:"PDF version: "+pdfUrl}); - newItem.complete(); - }); - }); + var citationurl = ''http://heinonline.org/HOL/citation-info?handle='' + handle + ''&id='' + id; + var xpath = ''//div[@id="guide"]/ul/li[3]/a''; + var journal = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent.match(/([^\d]*)/)[1]; + var newItem = new Zotero.Item("journalArticle"); + newItem.publicationTitle = Zotero.Utilities.trimInternal(journal); + newItem.repository = "HeinOnline"; + newItem.url = url; - // print page: PDF?handle=hein.journals/adelrev11&id=150&print=section&section=16&ext=.pdf" -} - -function doWeb(doc, url) { - var re= /http:\/\/heinonline\.org\/HOL\/Page\?handle\=hein\.journals\/.+/ - if(re.test(url)) { - scrape(doc); - } else { - - var items = Zotero.Utilities.getItemArray(doc, doc, re); - items = Zotero.selectItems(items); - - if(!items) { - return true; - } + Zotero.Utilities.HTTP.doGet(citationurl, function(text) { + var stuff = text.match(/(\d+)\s+([^\d]+)\s+(\d+)\s+\(([-\d]+)\)\s+<br>\s+([^;]+)(;\s*(.*))?/); + newItem.volume = stuff[1]; + newItem.journalAbbreviation = stuff[2]; + newItem.pages = stuff[3]; + newItem.date = stuff[4]; + newItem.title = Zotero.Utilities.trimInternal(stuff[5]); - var urls = new Array(); - for(var i in items) { - urls.push(i); + if (stuff[7]) { + var authors = stuff[7].split('';''); + for (var i in authors) { + authors[i] = authors[i].split('',''); + newItem.creators.push({lastName:authors[i][0], firstName:authors[i][1], creatorType:"author"}); + } } - Zotero.Utilities.processDocuments(urls, scrape, function() { Zotero.done(); }); - Zotero.wait(); - } + var pdfurl = ''http://heinonline.org/HOL/Print?handle='' + handle + ''&id='' + id; + Zotero.Utilities.HTTP.doGet(pdfurl, function(text) { + var newurl = text.match(/<a\s+href=\"(PDF[^"]+)\"/i)[1]; + newItem.attachments = [ + {url:url, title:"HeinOnline Snapshot", mimeType:"text/html"}, + {url:''http://heinonline.org/HOL/'' + newurl, title:"HeinOnline PDF", mimeType:"application/pdf"} + ]; + newItem.complete(); + }); + }); + Zotero.wait(); }'); REPLACE INTO translators VALUES ('dede653d-d1f8-411e-911c-44a0219bbdad', '1.0.0b4.r1', '', '2007-06-18 18:15:00', '0', '100', '4', 'GPO Access e-CFR', 'Bill McKinney', '^http://ecfr\.gpoaccess\.gov/cgi/t/text/text-idx.+', @@ -9013,9 +9370,9 @@ function doWeb(doc, url) { } }'); -REPLACE INTO translators VALUES ('3e684d82-73a3-9a34-095f-19b112d88bbf', '1.0.0b3.r1', '', '2007-11-21 00:25:00', '1', '100', '4', 'Google Books', 'Simon Kornblith', '^http://books\.google\.[a-z]+/books\?(.*id=.*|.*q=.*)', +REPLACE INTO translators VALUES ('3e684d82-73a3-9a34-095f-19b112d88bbf', '1.0.0b3.r1', '', '2007-12-22 21:20:00', '1', '100', '4', 'Google Books', 'Simon Kornblith', '^http://books\.google\.[a-z]+(\.[a-z]+)?/books\?(.*id=.*|.*q=.*)', 'function detectWeb(doc, url) { - var re = new RegExp(''^http://books\\.google\\.[a-z]+/books\\?id=([^&]+)'', ''i''); + var re = new RegExp(''^http://books\\.google\\.[a-z]+(\.[a-z]+)?/books\\?id=([^&]+)'', ''i''); if(re.test(doc.location.href)) { return "book"; } else { @@ -9026,18 +9383,16 @@ REPLACE INTO translators VALUES ('3e684d82-73a3-9a34-095f-19b112d88bbf', '1.0.0b // get local domain suffix var suffixRe = new RegExp("https?://books\.google\.([^/]+)/"); var suffixMatch = suffixRe.exec(url); - var suffix = suffixMatch[1]; - + var suffix = suffixMatch[1]; var uri = doc.location.href; var newUris = new Array(); - var re = new RegExp(''^http://books\\.google\\.[a-z]+/books\\?id=([^&]+)'', ''i''); + var re = new RegExp(''^http://books\\.google\\.[a-z]+(\.[a-z]+)?/books\\?id=([^&]+)'', ''i''); var m = re.exec(uri); if(m) { - newUris.push(''http://books.google.''+suffix+''/books?id=''+m[1]); + newUris.push(''http://books.google.''+suffix+''/books?id=''+m[2]); } else { - var items = Zotero.Utilities.getItemArray(doc, doc, ''http://books\\.google\\.[a-z]+/books\\?id=([^&]+)'', ''^(?:All matching pages|About this Book|Table of Contents|Index)''); - + var items = Zotero.Utilities.getItemArray(doc, doc, ''http://books\\.google\\.'' + suffix + ''/books\\?id=([^&]+)'', ''^(?:All matching pages|About this Book|Table of Contents|Index)''); // Drop " - Page" thing for(var i in items) { items[i] = items[i].replace(/- Page [0-9]+\s*$/, ""); @@ -9050,10 +9405,9 @@ REPLACE INTO translators VALUES ('3e684d82-73a3-9a34-095f-19b112d88bbf', '1.0.0b for(var i in items) { var m = re.exec(i); - newUris.push(''http://books.google.''+suffix+''/books?id=''+m[1]); + newUris.push(''http://books.google.''+suffix+''/books?id=''+m[2]); } } - Zotero.Utilities.processDocuments(newUris, function(newDoc) { var newItem = new Zotero.Item("book"); newItem.extra = ""; @@ -9063,18 +9417,18 @@ REPLACE INTO translators VALUES ('3e684d82-73a3-9a34-095f-19b112d88bbf', '1.0.0b if (prefix == ''x'') return namespace; else return null; } : null; - var xpath = ''//div[@id="titlebar"]/h2[@class="title"]/text()'' + var xpath = ''//h2[@class="title"]'' var elmt; if (elmt = newDoc.evaluate(xpath, newDoc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){ - var title = Zotero.Utilities.superCleanString(elmt.nodeValue); + var title = Zotero.Utilities.superCleanString(elmt.textContent); newItem.title = title; Zotero.debug("title: " + title); } - xpath = ''//div[@id="titlebar"]/span[@class="author"]/text()'' + xpath = ''//div[@class="titlewrap"]/span[@class="addmd"]'' if (elmt = newDoc.evaluate(xpath, newDoc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()){ - var authors = Zotero.Utilities.superCleanString(elmt.nodeValue); + var authors = Zotero.Utilities.superCleanString(elmt.textContent); if (authors.substring(0, 3) == "By "){ authors = authors.substring(3); } @@ -9094,9 +9448,9 @@ REPLACE INTO translators VALUES ('3e684d82-73a3-9a34-095f-19b112d88bbf', '1.0.0b Zotero.debug("output: " + field); if(field.substring(0,10) == "Published ") { newItem.date = field.substring(10); - var publisher = newDoc.evaluate(''../text()[2]'', fieldelmt, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); + var publisher = newDoc.evaluate(''..//a'', fieldelmt, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); if (publisher){ - publisher = Zotero.Utilities.superCleanString(publisher.nodeValue); + publisher = Zotero.Utilities.superCleanString(publisher.textContent); newItem.publisher = publisher; } } else if(field.substring(0,5) == "ISBN ") { @@ -9326,7 +9680,7 @@ function doWeb(doc, url) { Zotero.wait(); }'); -REPLACE INTO translators VALUES ('d0b1914a-11f1-4dd7-8557-b32fe8a3dd47', '1.0.0b3.r1', '', '2007-11-20 09:35:00', '1', '100', '4', 'EBSCOhost', 'Simon Kornblith', '^https?://[^/]+/(?:bsi|ehost)/(?:results|detail|folder)', +REPLACE INTO translators VALUES ('d0b1914a-11f1-4dd7-8557-b32fe8a3dd47', '1.0.0b3.r1', '', '2008-01-09 20:00:00', '1', '100', '4', 'EBSCOhost', 'Simon Kornblith', 'https?://[^/]+/(?:bsi|ehost)/(?:results|detail|folder)', 'function detectWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -9902,7 +10256,7 @@ function doWeb(doc, url) { } }'); -REPLACE INTO translators VALUES ('a07bb62a-4d2d-4d43-ba08-d9679a0122f8', '1.0.0b3.r1', '', '2007-03-24 22:20:00', 1, 100, 4, 'ABC-CLIO Serials Web', 'Simon Kornblith', '^https?://serials\.abc-clio\.com[^/]*/active/go/ABC-Clio-Serials_v4', +REPLACE INTO translators VALUES ('a07bb62a-4d2d-4d43-ba08-d9679a0122f8', '1.0.0b3.r1', '', '2008-01-09 20:00:00', 1, 100, 4, 'ABC-CLIO Serials Web', 'Simon Kornblith', 'https?://[^/]*serials\.abc-clio\.com[^/]*/active/go/ABC-Clio-Serials_v4', 'function detectWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -10123,9 +10477,9 @@ function doWeb(doc, url) { } }'); -REPLACE INTO translators VALUES ('ecddda2e-4fc6-4aea-9f17-ef3b56d7377a', '1.0.0b3.r1', '', '2007-08-10 19:45:00', '1', '100', '4', 'arXiv.org', 'Sean Takats', '^http://(?:www\.)?(?:arxiv\.org/(?:find/\w|list/\w|abs/)|eprintweb.org/S/(?:search|archive|article)(?!.*refs$)(?!.*cited$))', +REPLACE INTO translators VALUES ('ecddda2e-4fc6-4aea-9f17-ef3b56d7377a', '1.0.0b3.r1', '', '2007-12-22 06:00:00', '1', '100', '4', 'arXiv.org', 'Sean Takats', '^http://(?:www\.)?(?:(arxiv\.org|xxx.lanl.gov)/(?:find/\w|list/\w|abs/)|eprintweb.org/S/(?:search|archive|article)(?!.*refs$)(?!.*cited$))', 'function detectWeb(doc, url) { - var searchRe = /^http:\/\/(?:www\.)?(?:arxiv\.org\/(?:find|list)|eprintweb.org\/S\/(?:archive|search$))/; + var searchRe = /^http:\/\/(?:www\.)?(?:(arxiv\.org|xxx\.lanl\.gov)\/(?:find|list)|eprintweb.org\/S\/(?:archive|search$))/; if(searchRe.test(url)) { return "multiple"; } else { @@ -10362,6 +10716,90 @@ REPLACE INTO translators VALUES ('232903bc-7307-4058-bb1a-27cfe3e4e655', '1.0.0b Zotero.wait(); }'); +REPLACE INTO translators VALUES ('fe728bc9-595a-4f03-98fc-766f1d8d0936', '1.0.0b4.r5', '', '2007-12-03 22:00:00', '0', '100', '4', 'Wiley InterScience', 'Sean Takats', 'https?:\/\/(?:www3\.|www\.)?interscience\.wiley\.com[^\/]*\/(?:search\/|cgi-bin\/abstract\/[0-9]+)', +'function detectWeb(doc, url){ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var xpath = ''//input[@name="ID"][@type="checkbox"]''; + if(doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + return "multiple"; + } + var m = url.match(/https?:\/\/[^\/]*\/cgi-bin\/abstract\/[0-9]+/); + if (m){ + return "journalArticle"; + } +}', +'function doWeb(doc, url){ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var m = url.match(/https?:\/\/[^\/]*\/cgi-bin\/abstract\/([0-9]+)/); + var ids = new Array(); + var xpath = ''//tr[td/input[@name="ID"][@type="checkbox"]]''; + var elmt; + var elmts = doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + elmt = elmts.iterateNext(); + if(elmt) { //search + var id; + var title; + var availableItems = new Array(); + do { + title = doc.evaluate(''./td/strong'', elmt, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent; + id = doc.evaluate(''./td/input[@name="ID"][@type="checkbox"]'', elmt, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().value; + availableItems[id] = title; + } while (elmt = elmts.iterateNext()) + + var items = Zotero.selectItems(availableItems); + if(!items) { + return true; + } + for(var id in items) { + ids.push(id); + } + + } else if (m){ //single article + ids.push(m[1]); + } + + var hostRe = new RegExp("^http(?:s)?://[^/]+"); + var m = hostRe.exec(doc.location.href); + var host = m[0]; + var uri = host+"/tools/citex"; + var poststring = ""; + for each(var id in ids) { + poststring = poststring + "&id=" + id; + } + poststring = "clienttype=1&subtype=1&mode=1&version=1" + poststring; + Zotero.Utilities.HTTP.doPost(uri, poststring, function(text) { + uri = host+"/tools/CitEx"; + poststring = "mode=2&format=3&type=2&file=3&exportCitation.x=16&exportCitation.y=10&exportCitation=submit"; + Zotero.Utilities.HTTP.doPost(uri, poststring, function(text) { + var m = text.match(/%A\s(.*)/); //following lines fix Wiley''s incorrect %A tag (should be separate tags for each author) + if (m){ + var newauthors =""; + var authors = m[1].split(",") + for each (var author in authors){ + if (author != ""){ + newauthors = newauthors + "%A "+Zotero.Utilities.trimInternal(author)+"\n"; + } + } + text = text.replace(/%A\s.*\n/, newauthors); + } + var translator = Zotero.loadTranslator("import"); + translator.setTranslator("881f60f2-0802-411a-9228-ce5f47b64c7d"); //EndNote/Refer/BibIX + translator.setString(text); + translator.translate(); + Zotero.done(); + }); + }); + Zotero.wait(); +}'); + REPLACE INTO translators VALUES ('b6d0a7a-d076-48ae-b2f0-b6de28b194e', '1.0.0b3.r1', '', '2007-04-16 17:00:00', '1', '100', '4', 'ScienceDirect', 'Simon Kornblith', '^https?://www\.sciencedirect\.com[^/]*/science\?(?:.+\&|)_ob=(?:ArticleURL|ArticleListURL|PublicationURL)', 'function detectWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; @@ -10689,7 +11127,7 @@ REPLACE INTO translators VALUES ('2c310a37-a4dd-48d2-82c9-bd29c53c1c76', '1.0.0b Zotero.wait(); }'); -REPLACE INTO translators VALUES ('cde4428-5434-437f-9cd9-2281d14dbf9', '1.0.0b3.r1', '', '2006-12-15 22:19:00', 1, 100, 4, 'Ovid', 'Simon Kornblith', '/gw1/ovidweb\.cgi', +REPLACE INTO translators VALUES ('cde4428-5434-437f-9cd9-2281d14dbf9', '1.0.0b3.r1', '', '2008-01-29 19:00:00', '1', '100', '4', 'Ovid', 'Simon Kornblith and Michael Berkowitz', '/(gw2|spa)/ovidweb\.cgi', 'function detectWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -10710,26 +11148,36 @@ REPLACE INTO translators VALUES ('cde4428-5434-437f-9cd9-2281d14dbf9', '1.0.0b3. } return false; -}', -'function doWeb(doc, url) { +}', +'function senCase(string) { + var words = string.split(/\b/); + for (var i = 0 ; i < words.length ; i++) { + if (words[i].match(/[A-Z]/)) { + words[i] = words[i][0] + words[i].substring(1).toLowerCase(); + } + } + return words.join(""); +} + +function doWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { if (prefix == ''x'') return namespace; else return null; } : null; - var results = Zotero.Utilities.cleanString(doc.evaluate(''//div[@class="bibheader-resultsrange"]/b'', doc, nsResolver, - XPathResult.ANY_TYPE, null).iterateNext().textContent); - - var post = "S="+doc.evaluate(''.//input[@name="S"]'', doc, nsResolver, XPathResult.ANY_TYPE, - null).iterateNext().value; - + var results = Zotero.Utilities.cleanString(doc.evaluate(''//div[@class="bibheader-resultsrange"]/b'', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent); + var post = "S="+doc.evaluate(''.//input[@name="S"]'', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().value; + if(results.indexOf("-") != -1) { - var items = new Array(); + var items = new Object(); - var tableRows = doc.evaluate(''/html/body/form/div[substring(@class, 1, 10)="titles-row"]'', doc, - nsResolver, XPathResult.ANY_TYPE, null); - var tableRow; // Go through table rows + if (doc.evaluate(''/html/body/form/div[substring(@class, 1, 10)="titles-row"]'', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var tableRows = doc.evaluate(''/html/body/form/div[substring(@class, 1, 10)="titles-row"]'', doc, nsResolver, XPathResult.ANY_TYPE, null); + } else if (doc.evaluate(''//div[@id="titles-records"]/table[@class="titles-row"]'', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var tableRows = doc.evaluate(''//div[@id="titles-records"]/table[@class="titles-row"]'', doc, nsResolver, XPathResult.ANY_TYPE, null); + } + var tableRow; while(tableRow = tableRows.iterateNext()) { var id = doc.evaluate(''.//input[@name="R"]'', tableRow, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().value; @@ -10758,7 +11206,6 @@ REPLACE INTO translators VALUES ('cde4428-5434-437f-9cd9-2281d14dbf9', '1.0.0b3. post += "&cmRecordSelect=SELECTED&cmFields=ALL&cmFormat=export&cmsave.x=12&cmsave.y=7"; Zotero.Utilities.HTTP.doPost(url, post, function(text) { - Zotero.debug(text); var lines = text.split("\n"); var haveStarted = false; var newItemRe = /^<[0-9]+>/; @@ -10793,22 +11240,18 @@ REPLACE INTO translators VALUES ('cde4428-5434-437f-9cd9-2281d14dbf9', '1.0.0b3. newItem.creators.push({lastName:names[0], isInstitution:true, creatorType:"author"}); } } else if(fieldCode == "SO") { - // make a vague attempt at getting a volume and pages - var m = fieldContent.match(/([0-9]+)\(([0-9]+)\):([A-Z]?[0-9]+(?:\-[A-Z]?[0-9]+))/); - if(m) { - newItem.volume = m[1]; - newItem.issue = m[2]; - newItem.pages = m[3]; - fieldContent = fieldContent.replace(m[0], ""); - } - // try to get the date, too - var m = fieldContent.match(/((?:January|February|March|April|May|June|July|August|September|October|November|December).*[0-9]{4});$/); - if(m) { - newItem.date = m[1]; - fieldContent = fieldContent.replace(m[0], ""); + var m = fieldContent.split("."); + newItem.publicationTitle = Zotero.Utilities.cleanString(m[0]); + if (m[1].match(/\d+\(\d+\)/)) { + var n = m[1].match(/(\d+)\((\d+)\)/); + Zotero.debug(n); + newItem.volume = n[1]; + newItem.issue = n[2]; + } else { + newItem.volume = m[1].match(/\d+/)[0]; } - - newItem.publicationTitle = Zotero.Utilities.superCleanString(fieldContent); + newItem.date = senCase(Zotero.Utilities.cleanString(m[2])); + newItem.pages = Zotero.Utilities.cleanString(m[3]); } else if(fieldCode == "SB") { newItem.tags.push(Zotero.Utilities.superCleanString(fieldContent)); } else if(fieldCode == "KW") { @@ -10827,10 +11270,7 @@ REPLACE INTO translators VALUES ('cde4428-5434-437f-9cd9-2281d14dbf9', '1.0.0b3. if(haveStarted) { newItem.complete(); } - - Zotero.done(); }); - Zotero.wait(); }'); @@ -10933,35 +11373,134 @@ REPLACE INTO translators VALUES ('cb48083-4d9-4ed-ac95-2e93dceea0ec', '1.0.0b3.r Zotero.wait(); }'); -REPLACE INTO translators VALUES ('f8765470-5ace-4a31-b4bd-4327b960ccd', '1.0.0b3.r1', '', '2007-03-24 22:20:00', 1, 100, 4, 'SpringerLink', 'Simon Kornblith', '^https?://(?:www\.springerlink\.com|springerlink.metapress.com)[^/]*/content/', +REPLACE INTO translators VALUES ('df966c80-c199-4329-ab02-fa410c8eb6dc', '1.0.0b3.r1', '', '2008-01-23 20:00:00', '1', '100', '4', 'University of Chicago', 'Sean Takats', 'https?://[^/]*journals\.uchicago\.edu[^/]*/(?:doi/abs|doi/full|toc)', 'function detectWeb(doc, url) { - var namespace = doc.documentElement.namespaceURI; - var nsResolver = namespace ? function(prefix) { - if (prefix == ''x'') return namespace; else return null; - } : null; - - if(doc.title == "SpringerLink - All Search Results" || doc.title == "SpringerLink - Journal Issue") { + if(url.indexOf("toc") != -1) { return "multiple"; - } else if(doc.title == "SpringerLink - Book Chapter") { - return "bookSection"; - } else if(doc.evaluate(''//a[text() = "RIS"]'', - doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + } else { return "journalArticle"; } -}', +}', 'function doWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { if (prefix == ''x'') return namespace; else return null; } : null; - var m = url.match(/https?:\/\/[^\/]+/); - var host = m[0]; + var post = ""; - if(doc.title == "SpringerLink - All Search Results" || doc.title == "SpringerLink - Journal Issue") { - var items = Zotero.Utilities.getItemArray(doc, doc, ''/content/[^/]+/\\?p=[^&]+&pi=''); - - items = Zotero.selectItems(items); + var fulltext = new Object(); + + if(url.indexOf("toc") != -1) { + var items = new Array(); + var links = new Array(); + + var tableRows = doc.evaluate(''//li[div[@class="articleListing_col3"]/label][//input[@name="doi"]]'', doc, + nsResolver, XPathResult.ANY_TYPE, null); + var tableRow; + // Go through table rows + while(tableRow = tableRows.iterateNext()) { + var id = doc.evaluate(''.//input[@name="doi"]'', tableRow, nsResolver, XPathResult.ANY_TYPE, + null).iterateNext().value; + items[id] = Zotero.Utilities.trimInternal(doc.evaluate(''.//label'', tableRow, + nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent); + } + + var items = Zotero.selectItems(items); + if(!items) return true; + + // find all fulltext links so we can determine where we can scrape the fulltext article + var fulltextLinks = doc.evaluate(''//a[starts-with(text(), "Full Text")]'', doc, + nsResolver, XPathResult.ANY_TYPE, null); + var fulltextLink; + while(fulltextLink = fulltextLinks.iterateNext()) { + links.push(fulltextLink.href.toString()); + } + + for(var i in items) { + post += "doi="+encodeURIComponent(i)+"&"; + + // check for fulltext links + for each(var link in links) { + if(link.indexOf(i) != -1) { + fulltext[i] = true; + break; + } + } + } + } else { + var m = url.match(/https?:\/\/[^\/]+\/doi\/[^\/]+\/([^\?]+)(\?|$)/); + if (m) { + var doi = m[1]; + } else { + m = url.match(/https?:\/\/[^\/]+\/links\/doi\/([^\?]+)(\?|$)/); + var doi = m[1]; + } + post += "doi="+encodeURIComponent(doi)+"&"; + + if(url.indexOf("doi/full") != -1 || + doc.evaluate(''//img[@alt="Full Text Article"]'', doc, nsResolver, XPathResult.ANY_TYPE, + null).iterateNext()) { + fulltext[doi] = true; + } + } + + post += "include=cit&downloadFileName=deadbeef&format=refman&direct=on&submit=Download+article+citation+data"; + + Zotero.Utilities.HTTP.doPost("http://www.journals.uchicago.edu/action/downloadCitation", post, function(text) { + // load translator for RIS + var translator = Zotero.loadTranslator("import"); + translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + translator.setString(text); + translator.setHandler("itemDone", function(obj, item) { + item.attachments = [ + {url:item.url, title:"University of Chicago Journals Snapshot", mimeType:"text/html"}, + {url:item.url.replace("/doi/abs", "/doi/pdf"), title:"University of Chicago Full Text PDF", mimeType:"application/pdf"} + ]; + // use fulltext if possible + if(fulltext[item.DOI.substr(4)]) { + item.attachments[0].url = item.attachments[0].url.replace("/doi/abs", "/doi/full"); + } + + item.complete(); + }); + translator.translate(); + + Zotero.done(); + }); + + Zotero.wait(); +}'); + +REPLACE INTO translators VALUES ('f8765470-5ace-4a31-b4bd-4327b960ccd', '1.0.0b3.r1', '', '2007-03-24 22:20:00', 1, 100, 4, 'SpringerLink', 'Simon Kornblith', '^https?://(?:www\.springerlink\.com|springerlink.metapress.com)[^/]*/content/', +'function detectWeb(doc, url) { + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + if(doc.title == "SpringerLink - All Search Results" || doc.title == "SpringerLink - Journal Issue") { + return "multiple"; + } else if(doc.title == "SpringerLink - Book Chapter") { + return "bookSection"; + } else if(doc.evaluate(''//a[text() = "RIS"]'', + doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + return "journalArticle"; + } +}', +'function doWeb(doc, url) { + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var m = url.match(/https?:\/\/[^\/]+/); + var host = m[0]; + + if(doc.title == "SpringerLink - All Search Results" || doc.title == "SpringerLink - Journal Issue") { + var items = Zotero.Utilities.getItemArray(doc, doc, ''/content/[^/]+/\\?p=[^&]+&pi=''); + + items = Zotero.selectItems(items); if(!items) return true; var urls = new Array(); @@ -11110,7 +11649,7 @@ REPLACE INTO translators VALUES ('6614a99-479a-4524-8e30-686e4d66663e', '1.0.0b3 Zotero.wait(); }'); -REPLACE INTO translators VALUES ('92d4ed84-8d0-4d3c-941f-d4b9124cfbb', '1.0.0b3.r1', '', '2007-11-29 18:00:00', 1, 100, 4, 'IEEE Xplore', 'Simon Kornblith', '^https?://ieeexplore.ieee.org[^/]*/(?:[^\?]+\?(?:|.*&)arnumber=[0-9]+|search/(?:searchresult.jsp|selected.jsp))', +REPLACE INTO translators VALUES ('92d4ed84-8d0-4d3c-941f-d4b9124cfbb', '1.0.0b3.r1', '', '2008-01-29 19:00:00', '1', '100', '4', 'IEEE Xplore', 'Simon Kornblith and Michael Berkowitz', 'https?://ieeexplore.ieee.org[^/]*/(?:[^\?]+\?(?:|.*&)arnumber=[0-9]+|search/(?:searchresult.jsp|selected.jsp))', 'function detectWeb(doc, url) { var articleRe = /[?&]arnumber=([0-9]+)/; var m = articleRe.exec(url); @@ -11122,7 +11661,7 @@ REPLACE INTO translators VALUES ('92d4ed84-8d0-4d3c-941f-d4b9124cfbb', '1.0.0b3. } return false; -}', +}', 'function doWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -11163,47 +11702,60 @@ REPLACE INTO translators VALUES ('92d4ed84-8d0-4d3c-941f-d4b9124cfbb', '1.0.0b3. } else { var urls = [url]; } - var arnumber = ""; for each(var url in urls) { var m = articleRe.exec(url); arnumber += "%3Carnumber%3E"+m[1]+"%3C%2Farnumber%3E"; - } - - var post = "dlSelect=cite_abs&fileFormate=ris&arnumber="+arnumber+"&x=5&y=10"; - - var isRe = /[?&]isnumber=([0-9]+)/; - var puRe = /[?&]punumber=([0-9]+)/; - - Zotero.Utilities.HTTP.doPost("http://ieeexplore.ieee.org/xpls/citationAct", post, function(text) { - // load translator for RIS - var translator = Zotero.loadTranslator("import"); - translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); - translator.setString(text); - translator.setHandler("itemDone", function(obj, item) { - var url = urls.shift(); - Zotero.debug(url); - var is = isRe.exec(url); - var pu = puRe.exec(url); - var arnumber = articleRe.exec(url); - - if(is && pu) { - item.url = "http://ieeexplore.ieee.org/iel4/"+pu[1]+"/"+is[1]+"/"+Zotero.Utilities.lpad(arnumber[1], "0", 8)+".pdf"; - item.attachments = [{title:"IEEE Xplore Full Text PDF", mimeType:"application/pdf", url:item.url}]; - } - - if(item.notes[0] && item.notes[0].note) { - item.abstractNote = item.notes[0].note; - item.notes = new Array(); - } - - item.complete(); + var newurls = [url]; + var post = "dlSelect=cite_abs&fileFormate=ris&arnumber="+arnumber+"&x=5&y=10"; + var isRe = /[?&]isnumber=([0-9]+)/; + var puRe = /[?&]punumber=([0-9]+)/; + Zotero.Utilities.HTTP.doPost("http://ieeexplore.ieee.org/xpls/citationAct", post, function(text) { + // load translator for RIS + var translator = Zotero.loadTranslator("import"); + translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + translator.setString(text); + translator.setHandler("itemDone", function(obj, item) { + var url = urls.shift(); + Zotero.debug(url); + var is = isRe.exec(url); + var pu = puRe.exec(url); + var arnumber = articleRe.exec(url); + + if(item.notes[0] && item.notes[0].note) { + item.abstractNote = item.notes[0].note; + item.notes = new Array(); + } + var dupes = new Array(); + for (var i = 0 ; i < item.creators.length - 1 ; i++) { + if (item.creators[i].lastName + item.creators[i].firstName == item.creators[i+1].lastName + item.creators[i].firstName) { + dupes.push(i + 1); + } + } + + for (var i in dupes) { + delete item.creators[dupes[i]]; + } + var dupes = []; + for (var i = 0 ; i < item.creators.length ; i++) { + if (item.creators[i]) { + dupes.push(item.creators[i]); + } + } + item.creators = dupes; + + Zotero.Utilities.processDocuments(newurls, function(newDoc) { + var xpath = ''//p[@class="bodyCopyBlackLargeSpaced"]''; + item.DOI = newDoc.evaluate(xpath, newDoc, namespace, XPathResult.ANY_TYPE, null).iterateNext().textContent.match(/Identifier:\s+([^\n]*)\n/)[1]; + var pdfpath = ''//td[2][@class="bodyCopyBlackLarge"]/a[@class="bodyCopy"][substring(text(), 1, 3) = "PDF"]''; + var pdfurl = newDoc.evaluate(pdfpath, newDoc, namespace, XPathResult.ANY_TYPE, null).iterateNext().href; + item.attachments = [{url:pdfurl, title:"IEEE Xplore Full Text PDF", mimeType:"application/pdf"}]; + item.complete(); + }, function() {Zotero.done;}); + }); + translator.translate(); }); - translator.translate(); - - Zotero.done(); - }); - + } Zotero.wait(); }'); @@ -11331,7 +11883,7 @@ REPLACE INTO translators VALUES ('7bdb79e-a47f-4e3d-b317-ccd5a0a74456', '1.0.0b3 Zotero.wait(); }'); -REPLACE INTO translators VALUES ('850f4c5f-71fb-4669-b7da-7fb7a95500ef', '1.0.0b3r1', '', '2007-11-25 14:00:00', '0', '100', '4', 'Cambridge Journals Online', 'Sean Takats', '^https?://(?:www\.)?journals\.cambridge\.org/action/(quickSearch|search|displayAbstract|displayFulltext|displayIssue)', +REPLACE INTO translators VALUES ('850f4c5f-71fb-4669-b7da-7fb7a95500ef', '1.0.0b3r1', '', '2008-01-10 19:00:00', '0', '100', '4', 'Cambridge Journals Online', 'Sean Takats', 'https?://[^/]*journals\.cambridge\.org[^/]*/action/(quickSearch|search|displayAbstract|displayFulltext|displayIssue)', 'function detectWeb(doc, url) { var namespace=doc.documentElement.namespaceURI; var nsResolver=namespace?function(prefix) { @@ -11596,7 +12148,7 @@ function doWeb(doc, url) { } }'); -REPLACE INTO translators VALUES ('e78d20f7-488-4023-831-dfe39679f3f', '1.0.0b3.r1', '', '2007-03-24 22:20:00', '1', '100', '4', 'ACM', 'Simon Kornblith', '^https?://portal\.acm\.org[^/]*/(?:results\.cfm|citation\.cfm)', +REPLACE INTO translators VALUES ('e78d20f7-488-4023-831-dfe39679f3f', '1.0.0b3.r1', '', '2008-01-10 09:45:00', '1', '100', '4', 'ACM', 'Simon Kornblith', 'https?://[^/]*portal\.acm\.org[^/]*/(?:results\.cfm|citation\.cfm)', 'function detectWeb(doc, url) { if(url.indexOf("/results.cfm") != -1) { var items = Zotero.Utilities.getItemArray(doc, doc, ''^https?://[^/]+/citation.cfm\\?[^#]+$''); @@ -11664,9 +12216,12 @@ function scrape(doc) { } Zotero.Utilities.HTTP.doGet("http://portal.acm.org/"+m[1], function(text) { + // split() may no longer be necessary var m = text.split(/<\/?pre[^>]*>/ig); - var text = m[1]; - + if (m[1]) { + var text = m[1]; + } + // load Refer translator var translator = Zotero.loadTranslator("import"); translator.setTranslator("881f60f2-0802-411a-9228-ce5f47b64c7d"); @@ -12399,7 +12954,7 @@ REPLACE INTO translators VALUES ('a354331-981b-43de-a61-bc26dd1be3a9', '1.0.0b3. }); }'); -REPLACE INTO translators VALUES ('938ebe32-2b2e-4349-a5b3-b3a05d3de627', '1.0.0b3.r1', '', '2007-09-18 07:10:00', '1', '100', '4', 'ACS Publications', 'Sean Takats', '[^/]*/(?:wls/journals/query/subscriberResults\.html|acs/journals/toc.page|cgi-bin/(?:article|abstract|sample).cgi/[^/]+/[0-9]+/[0-9]+/i[0-9]+/(?:html|abs)/[^\.]+.html)', +REPLACE INTO translators VALUES ('938ebe32-2b2e-4349-a5b3-b3a05d3de627', '1.0.0b3.r1', '', '2007-12-21 22:00:00', '1', '100', '4', 'ACS Publications', 'Sean Takats', '[^/]*/(?:wls/journals/query/(?:subscriberResults|query)\.html|acs/journals/toc.page|cgi-bin/(?:article|abstract|sample).cgi/[^/]+/[0-9]+/[0-9]+/i[0-9]+/(?:html|abs)/[^\.]+.html)', 'function detectWeb(doc, url) { var namespace = doc.documentElement.namespaceURI; var nsResolver = namespace ? function(prefix) { @@ -13774,7 +14329,7 @@ function doImport() { } }'); -REPLACE INTO translators VALUES ('14763d24-8ba0-45df-8f52-b8d1108e7ac9', '1.0.0b4.r1', '', '2007-04-26 09:00:00', 1, 25, 2, 'Zotero RDF', 'Simon Kornblith', 'rdf', +REPLACE INTO translators VALUES ('14763d24-8ba0-45df-8f52-b8d1108e7ac9', '1.0.0b4.r1', '', '2008-01-10 22:00:00', 1, 25, 2, 'Zotero RDF', 'Simon Kornblith', 'rdf', 'Zotero.configure("getCollections", true); Zotero.configure("dataMode", "rdf"); Zotero.addOption("exportNotes", true); @@ -13819,14 +14374,14 @@ function generateTags(resource, tags) { } function generateCollection(collection) { - var collectionResource = "#collection:"+collection.id; + var collectionResource = "#collection_"+collection.id; Zotero.RDF.addStatement(collectionResource, rdf+"type", n.z+"Collection", false); Zotero.RDF.addStatement(collectionResource, n.dc+"title", collection.name, true); for each(var child in collection.descendents) { // add child list items if(child.type == "collection") { - Zotero.RDF.addStatement(collectionResource, n.dcterms+"hasPart", "#collection:"+child.id, false); + Zotero.RDF.addStatement(collectionResource, n.dcterms+"hasPart", "#collection_"+child.id, false); // do recursive processing of collections generateCollection(child); } else if(itemResources[child.id]) { @@ -14193,16 +14748,16 @@ function doExport() { usedResources[itemResources[item.itemID]] = true; } else { // just specify a node ID - itemResources[item.itemID] = "#item:"+item.itemID; + itemResources[item.itemID] = "#item_"+item.itemID; } for(var j in item.notes) { - itemResources[item.notes[j].itemID] = "#item:"+item.notes[j].itemID; + itemResources[item.notes[j].itemID] = "#item_"+item.notes[j].itemID; } for each(var attachment in item.attachments) { // just specify a node ID - itemResources[attachment.itemID] = "#item:"+attachment.itemID; + itemResources[attachment.itemID] = "#item_"+attachment.itemID; } } @@ -14910,7 +15465,7 @@ function doImport() { } }'); -REPLACE INTO translators VALUES ('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7', '1.0.0b4.r1', '', '2007-11-29 21:00:00', '1', '100', '3', 'RIS', 'Simon Kornblith', 'ris', +REPLACE INTO translators VALUES ('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7', '1.0.2', '', '2008-01-04 02:47:18', '1', '100', '3', 'RIS', 'Simon Kornblith', 'ris', 'Zotero.configure("dataMode", "line"); Zotero.addOption("exportNotes", true); @@ -15143,26 +15698,20 @@ function processTag(item, tag, value) { } } else if(tag == "UR" || tag == "L1" || tag == "L2" || tag == "L4") { // URL - //using regex to test URL until #821 is fixed - urlRe = /(https?:\/\/[^\s]*)/; - var m = urlRe.exec(value); - if (m){ - value = m[1]; - if(!item.url) { + if(!item.url) { item.url = value; - } - if(tag == "UR") { - item.attachments.push({url:value}); - } else if(tag == "L1") { - item.attachments.push({url:value, mimeType:"application/pdf", - title:"Full Text (PDF)", downloadable:true}); - } else if(tag == "L2") { - item.attachments.push({url:value, mimeType:"text/html", - title:"Full Text (HTML)", downloadable:true}); - } else if(tag == "L4") { - item.attachments.push({url:value, - title:"Image", downloadable:true}); - } + } + if(tag == "UR") { + item.attachments.push({url:value}); + } else if(tag == "L1") { + item.attachments.push({url:value, mimeType:"application/pdf", + title:"Full Text (PDF)", downloadable:true}); + } else if(tag == "L2") { + item.attachments.push({url:value, mimeType:"text/html", + title:"Full Text (HTML)", downloadable:true}); + } else if(tag == "L4") { + item.attachments.push({url:value, + title:"Image", downloadable:true}); } } else if (tag == "IS") { // Issue Number (patent: patentNumber) @@ -15418,7 +15967,7 @@ function doExport() { } }'); -REPLACE INTO translators VALUES ('881f60f2-0802-411a-9228-ce5f47b64c7d', '1.0.0b4.r5', '', '2007-11-29 18:00:00', '1', '100', '3', 'EndNote/Refer/BibIX', 'Simon Kornblith', 'txt', +REPLACE INTO translators VALUES ('881f60f2-0802-411a-9228-ce5f47b64c7d', '1.0.0b4.r5', '', '2008-01-22 19:00:00', '1', '100', '3', 'Refer/BibIX', 'Simon Kornblith', 'txt', 'Zotero.configure("dataMode", "line"); function detectImport() { @@ -15696,8 +16245,9 @@ function doExport() { } }'); -REPLACE INTO translators VALUES ('9cb70025-a888-4a29-a210-93ec52da40d4', '1.0.0b4.r1', '', '2007-11-07 08:00:00', '1', '100', '3', 'BibTeX', 'Simon Kornblith', 'bib', +REPLACE INTO translators VALUES ('9cb70025-a888-4a29-a210-93ec52da40d4', '1.0.0b4.r1', '', '2008-01-24 18:00:00', '1', '100', '3', 'BibTeX', 'Simon Kornblith', 'bib', 'Zotero.configure("dataMode", "block"); +Zotero.addOption("UTF8", true); function detectImport() { var block = ""; @@ -15781,46 +16331,1408 @@ var months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"] /* - * this is the character table for converting TeX to Unicode. sorry, Czech - * speakers; you''ll have to add your own (or stop using BibTeX!) + * new mapping table based on that from Matthias Steffens, + * then enhanced with some fields generated from the unicode table. */ -var accentedCharacters = { - // grave accents - 192:"\\`A", 224:"\\`a", - 200:"\\`E", 232:"\\`e", - 204:"\\`I", 236:"\\`i", - 210:"\\`O", 242:"\\`o", - 217:"\\`U", 249:"\\`u", - // acute accents - 193:"\\''A", 225:"\\''a", - 201:"\\''E", 233:"\\''e", - 205:"\\''I", 237:"\\''i", - 211:"\\''O", 243:"\\''o", - 218:"\\''U", 250:"\\''u", - // circumflexes - 194:"\\^A", 226:"\\^a", - 202:"\\^E", 234:"\\^e", - 206:"\\^I", 238:"\\^i", - 212:"\\^O", 244:"\\^o", - 219:"\\^U", 251:"\\^u", - // tildes - 195:"\\~A", 227:"\\~a", - 213:"\\~O", 245:"\\~o", - 209:"\\~N", 241:"\\~n", - // umlauts - 196:''\\"A'', 228:''\\"a'', - 203:''\\"E'', 235:''\\"e'', - 207:''\\"I'', 239:''\\"i'', - 214:''\\"O'', 246:''\\"o'', - 220:''\\"U'', 252:''\\"u'', - // cidillas - 191:"\\c{C}", 231:"\\c{c}", - // AE norwegian tings - 198:"{\\AE}", 230:"{\\ae}", - // o norwegian things - 216:"{\\o}", 248:"{\\O}", - // a norweigan things - 197:"{\\AA}", 229:"{\\aa}" + +var mappingTable = { + "\u00A0":"~", // NO-BREAK SPACE + "\u00A1":"{\\textexclamdown}", // INVERTED EXCLAMATION MARK + "\u00A2":"{\\textcent}", // CENT SIGN + "\u00A3":"{\\textsterling}", // POUND SIGN + "\u00A5":"{\\textyen}", // YEN SIGN + "\u00A6":"{\\textbrokenbar}", // BROKEN BAR + "\u00A7":"{\\textsection}", // SECTION SIGN + "\u00A8":"{\\textasciidieresis}", // DIAERESIS + "\u00A9":"{\\textcopyright}", // COPYRIGHT SIGN + "\u00AA":"{\\textordfeminine}", // FEMININE ORDINAL INDICATOR + "\u00AB":"{\\guillemotleft}", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + "\u00AC":"{\\textlnot}", // NOT SIGN + "\u00AD":"-", // SOFT HYPHEN + "\u00AE":"{\\textregistered}", // REGISTERED SIGN + "\u00AF":"{\\textasciimacron}", // MACRON + "\u00B0":"{\\textdegree}", // DEGREE SIGN + "\u00B1":"{\\textpm}", // PLUS-MINUS SIGN + "\u00B2":"{\\texttwosuperior}", // SUPERSCRIPT TWO + "\u00B3":"{\\textthreesuperior}", // SUPERSCRIPT THREE + "\u00B4":"{\\textasciiacute}", // ACUTE ACCENT + "\u00B5":"{\\textmu}", // MICRO SIGN + "\u00B6":"{\\textparagraph}", // PILCROW SIGN + "\u00B7":"{\\textperiodcentered}", // MIDDLE DOT + "\u00B8":"{\\c\\ }", // CEDILLA + "\u00B9":"{\\textonesuperior}", // SUPERSCRIPT ONE + "\u00BA":"{\\textordmasculine}", // MASCULINE ORDINAL INDICATOR + "\u00BB":"{\\guillemotright}", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + "\u00BC":"{\\textonequarter}", // VULGAR FRACTION ONE QUARTER + "\u00BD":"{\\textonehalf}", // VULGAR FRACTION ONE HALF + "\u00BE":"{\\textthreequarters}", // VULGAR FRACTION THREE QUARTERS + "\u00BF":"{\\textquestiondown}", // INVERTED QUESTION MARK + "\u00C6":"{\\AE}", // LATIN CAPITAL LETTER AE + "\u00D0":"{\\DH}", // LATIN CAPITAL LETTER ETH + "\u00D7":"{\\texttimes}", // MULTIPLICATION SIGN + "\u00DE":"{\\TH}", // LATIN CAPITAL LETTER THORN + "\u00DF":"{\\ss}", // LATIN SMALL LETTER SHARP S + "\u00E6":"{\\ae}", // LATIN SMALL LETTER AE + "\u00F0":"{\\dh}", // LATIN SMALL LETTER ETH + "\u00F7":"{\\textdiv}", // DIVISION SIGN + "\u00FE":"{\\th}", // LATIN SMALL LETTER THORN + "\u0131":"{\\i}", // LATIN SMALL LETTER DOTLESS I + "\u0132":"IJ", // LATIN CAPITAL LIGATURE IJ + "\u0133":"ij", // LATIN SMALL LIGATURE IJ + "\u0138":"k", // LATIN SMALL LETTER KRA + "\u0149":"''n", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + "\u014A":"{\\NG}", // LATIN CAPITAL LETTER ENG + "\u014B":"{\\ng}", // LATIN SMALL LETTER ENG + "\u0152":"{\\OE}", // LATIN CAPITAL LIGATURE OE + "\u0153":"{\\oe}", // LATIN SMALL LIGATURE OE + "\u017F":"s", // LATIN SMALL LETTER LONG S + "\u02B9":"''", // MODIFIER LETTER PRIME + "\u02BB":"''", // MODIFIER LETTER TURNED COMMA + "\u02BC":"''", // MODIFIER LETTER APOSTROPHE + "\u02BD":"''", // MODIFIER LETTER REVERSED COMMA + "\u02C6":"{\\textasciicircum}", // MODIFIER LETTER CIRCUMFLEX ACCENT + "\u02C8":"''", // MODIFIER LETTER VERTICAL LINE + "\u02C9":"-", // MODIFIER LETTER MACRON + "\u02CC":",", // MODIFIER LETTER LOW VERTICAL LINE + "\u02D0":":", // MODIFIER LETTER TRIANGULAR COLON + "\u02DA":"o", // RING ABOVE + "\u02DC":"\\~{}", // SMALL TILDE + "\u02DD":"{\\textacutedbl}", // DOUBLE ACUTE ACCENT + "\u0374":"''", // GREEK NUMERAL SIGN + "\u0375":",", // GREEK LOWER NUMERAL SIGN + "\u037E":";", // GREEK QUESTION MARK + "\u2000":" ", // EN QUAD + "\u2001":" ", // EM QUAD + "\u2002":" ", // EN SPACE + "\u2003":" ", // EM SPACE + "\u2004":" ", // THREE-PER-EM SPACE + "\u2005":" ", // FOUR-PER-EM SPACE + "\u2006":" ", // SIX-PER-EM SPACE + "\u2007":" ", // FIGURE SPACE + "\u2008":" ", // PUNCTUATION SPACE + "\u2009":" ", // THIN SPACE + "\u2010":"-", // HYPHEN + "\u2011":"-", // NON-BREAKING HYPHEN + "\u2012":"-", // FIGURE DASH + "\u2013":"{\\textendash}", // EN DASH + "\u2014":"{\\textemdash}", // EM DASH + "\u2015":"--", // HORIZONTAL BAR + "\u2016":"{\\textbardbl}", // DOUBLE VERTICAL LINE + "\u2017":"{\\textunderscore}", // DOUBLE LOW LINE + "\u2018":"{\\textquoteleft}", // LEFT SINGLE QUOTATION MARK + "\u2019":"{\\textquoteright}", // RIGHT SINGLE QUOTATION MARK + "\u201A":"{\\quotesinglbase}", // SINGLE LOW-9 QUOTATION MARK + "\u201B":"''", // SINGLE HIGH-REVERSED-9 QUOTATION MARK + "\u201C":"{\\textquotedblleft}", // LEFT DOUBLE QUOTATION MARK + "\u201D":"{\\textquotedblright}", // RIGHT DOUBLE QUOTATION MARK + "\u201E":"{\\quotedblbase}", // DOUBLE LOW-9 QUOTATION MARK + "\u201F":"{\\quotedblbase}", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK + "\u2020":"{\\textdagger}", // DAGGER + "\u2021":"{\\textdaggerdbl}", // DOUBLE DAGGER + "\u2022":"{\\textbullet}", // BULLET + "\u2023":">", // TRIANGULAR BULLET + "\u2024":".", // ONE DOT LEADER + "\u2025":"..", // TWO DOT LEADER + "\u2026":"{\\textellipsis}", // HORIZONTAL ELLIPSIS + "\u2027":"-", // HYPHENATION POINT + "\u202F":" ", // NARROW NO-BREAK SPACE + "\u2030":"{\\textperthousand}", // PER MILLE SIGN + "\u2032":"''", // PRIME + "\u2033":"''", // DOUBLE PRIME + "\u2034":"''''''", // TRIPLE PRIME + "\u2035":"`", // REVERSED PRIME + "\u2036":"``", // REVERSED DOUBLE PRIME + "\u2037":"```", // REVERSED TRIPLE PRIME + "\u2039":"{\\guilsinglleft}", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK + "\u203A":"{\\guilsinglright}", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + "\u203C":"!!", // DOUBLE EXCLAMATION MARK + "\u203E":"-", // OVERLINE + "\u2043":"-", // HYPHEN BULLET + "\u2044":"{\\textfractionsolidus}", // FRACTION SLASH + "\u2048":"?!", // QUESTION EXCLAMATION MARK + "\u2049":"!?", // EXCLAMATION QUESTION MARK + "\u204A":"7", // TIRONIAN SIGN ET + "\u2070":"$^{0}$", // SUPERSCRIPT ZERO + "\u2074":"$^{4}$", // SUPERSCRIPT FOUR + "\u2075":"$^{5}$", // SUPERSCRIPT FIVE + "\u2076":"$^{6}$", // SUPERSCRIPT SIX + "\u2077":"$^{7}$", // SUPERSCRIPT SEVEN + "\u2078":"$^{8}$", // SUPERSCRIPT EIGHT + "\u2079":"$^{9}$", // SUPERSCRIPT NINE + "\u207A":"$^{+}$", // SUPERSCRIPT PLUS SIGN + "\u207B":"$^{-}$", // SUPERSCRIPT MINUS + "\u207C":"$^{=}$", // SUPERSCRIPT EQUALS SIGN + "\u207D":"$^{(}$", // SUPERSCRIPT LEFT PARENTHESIS + "\u207E":"$^{)}$", // SUPERSCRIPT RIGHT PARENTHESIS + "\u207F":"$^{n}$", // SUPERSCRIPT LATIN SMALL LETTER N + "\u2080":"$_{0}$", // SUBSCRIPT ZERO + "\u2081":"$_{1}$", // SUBSCRIPT ONE + "\u2082":"$_{2}$", // SUBSCRIPT TWO + "\u2083":"$_{3}$", // SUBSCRIPT THREE + "\u2084":"$_{4}$", // SUBSCRIPT FOUR + "\u2085":"$_{5}$", // SUBSCRIPT FIVE + "\u2086":"$_{6}$", // SUBSCRIPT SIX + "\u2087":"$_{7}$", // SUBSCRIPT SEVEN + "\u2088":"$_{8}$", // SUBSCRIPT EIGHT + "\u2089":"$_{9}$", // SUBSCRIPT NINE + "\u208A":"$_{+}$", // SUBSCRIPT PLUS SIGN + "\u208B":"$_{-}$", // SUBSCRIPT MINUS + "\u208C":"$_{=}$", // SUBSCRIPT EQUALS SIGN + "\u208D":"$_{(}$", // SUBSCRIPT LEFT PARENTHESIS + "\u208E":"$_{)}$", // SUBSCRIPT RIGHT PARENTHESIS + "\u20AC":"{\\texteuro}", // EURO SIGN + "\u2100":"a/c", // ACCOUNT OF + "\u2101":"a/s", // ADDRESSED TO THE SUBJECT + "\u2103":"{\\textcelsius}", // DEGREE CELSIUS + "\u2105":"c/o", // CARE OF + "\u2106":"c/u", // CADA UNA + "\u2109":"F", // DEGREE FAHRENHEIT + "\u2113":"l", // SCRIPT SMALL L + "\u2116":"{\\textnumero}", // NUMERO SIGN + "\u2117":"{\\textcircledP}", // SOUND RECORDING COPYRIGHT + "\u2120":"{\\textservicemark}", // SERVICE MARK + "\u2121":"TEL", // TELEPHONE SIGN + "\u2122":"{\\texttrademark}", // TRADE MARK SIGN + "\u2126":"{\\textohm}", // OHM SIGN + "\u212A":"K", // KELVIN SIGN + "\u212B":"A", // ANGSTROM SIGN + "\u212E":"{\\textestimated}", // ESTIMATED SYMBOL + "\u2153":" 1/3", // VULGAR FRACTION ONE THIRD + "\u2154":" 2/3", // VULGAR FRACTION TWO THIRDS + "\u2155":" 1/5", // VULGAR FRACTION ONE FIFTH + "\u2156":" 2/5", // VULGAR FRACTION TWO FIFTHS + "\u2157":" 3/5", // VULGAR FRACTION THREE FIFTHS + "\u2158":" 4/5", // VULGAR FRACTION FOUR FIFTHS + "\u2159":" 1/6", // VULGAR FRACTION ONE SIXTH + "\u215A":" 5/6", // VULGAR FRACTION FIVE SIXTHS + "\u215B":" 1/8", // VULGAR FRACTION ONE EIGHTH + "\u215C":" 3/8", // VULGAR FRACTION THREE EIGHTHS + "\u215D":" 5/8", // VULGAR FRACTION FIVE EIGHTHS + "\u215E":" 7/8", // VULGAR FRACTION SEVEN EIGHTHS + "\u215F":" 1/", // FRACTION NUMERATOR ONE + "\u2160":"I", // ROMAN NUMERAL ONE + "\u2161":"II", // ROMAN NUMERAL TWO + "\u2162":"III", // ROMAN NUMERAL THREE + "\u2163":"IV", // ROMAN NUMERAL FOUR + "\u2164":"V", // ROMAN NUMERAL FIVE + "\u2165":"VI", // ROMAN NUMERAL SIX + "\u2166":"VII", // ROMAN NUMERAL SEVEN + "\u2167":"VIII", // ROMAN NUMERAL EIGHT + "\u2168":"IX", // ROMAN NUMERAL NINE + "\u2169":"X", // ROMAN NUMERAL TEN + "\u216A":"XI", // ROMAN NUMERAL ELEVEN + "\u216B":"XII", // ROMAN NUMERAL TWELVE + "\u216C":"L", // ROMAN NUMERAL FIFTY + "\u216D":"C", // ROMAN NUMERAL ONE HUNDRED + "\u216E":"D", // ROMAN NUMERAL FIVE HUNDRED + "\u216F":"M", // ROMAN NUMERAL ONE THOUSAND + "\u2170":"i", // SMALL ROMAN NUMERAL ONE + "\u2171":"ii", // SMALL ROMAN NUMERAL TWO + "\u2172":"iii", // SMALL ROMAN NUMERAL THREE + "\u2173":"iv", // SMALL ROMAN NUMERAL FOUR + "\u2174":"v", // SMALL ROMAN NUMERAL FIVE + "\u2175":"vi", // SMALL ROMAN NUMERAL SIX + "\u2176":"vii", // SMALL ROMAN NUMERAL SEVEN + "\u2177":"viii", // SMALL ROMAN NUMERAL EIGHT + "\u2178":"ix", // SMALL ROMAN NUMERAL NINE + "\u2179":"x", // SMALL ROMAN NUMERAL TEN + "\u217A":"xi", // SMALL ROMAN NUMERAL ELEVEN + "\u217B":"xii", // SMALL ROMAN NUMERAL TWELVE + "\u217C":"l", // SMALL ROMAN NUMERAL FIFTY + "\u217D":"c", // SMALL ROMAN NUMERAL ONE HUNDRED + "\u217E":"d", // SMALL ROMAN NUMERAL FIVE HUNDRED + "\u217F":"m", // SMALL ROMAN NUMERAL ONE THOUSAND + "\u2190":"{\\textleftarrow}", // LEFTWARDS ARROW + "\u2191":"{\\textuparrow}", // UPWARDS ARROW + "\u2192":"{\\textrightarrow}", // RIGHTWARDS ARROW + "\u2193":"{\\textdownarrow}", // DOWNWARDS ARROW + "\u2194":"<->", // LEFT RIGHT ARROW + "\u21D0":"<=", // LEFTWARDS DOUBLE ARROW + "\u21D2":"=>", // RIGHTWARDS DOUBLE ARROW + "\u21D4":"<=>", // LEFT RIGHT DOUBLE ARROW + "\u2212":"-", // MINUS SIGN + "\u2215":"/", // DIVISION SLASH + "\u2216":"\\", // SET MINUS + "\u2217":"*", // ASTERISK OPERATOR + "\u2218":"o", // RING OPERATOR + "\u2219":".", // BULLET OPERATOR + "\u221E":"$\\infty$", // INFINITY + "\u2223":"|", // DIVIDES + "\u2225":"||", // PARALLEL TO + "\u2236":":", // RATIO + "\u223C":"\\~{}", // TILDE OPERATOR + "\u2260":"/=", // NOT EQUAL TO + "\u2261":"=", // IDENTICAL TO + "\u2264":"<=", // LESS-THAN OR EQUAL TO + "\u2265":">=", // GREATER-THAN OR EQUAL TO + "\u226A":"<<", // MUCH LESS-THAN + "\u226B":">>", // MUCH GREATER-THAN + "\u2295":"(+)", // CIRCLED PLUS + "\u2296":"(-)", // CIRCLED MINUS + "\u2297":"(x)", // CIRCLED TIMES + "\u2298":"(/)", // CIRCLED DIVISION SLASH + "\u22A2":"|-", // RIGHT TACK + "\u22A3":"-|", // LEFT TACK + "\u22A6":"|-", // ASSERTION + "\u22A7":"|=", // MODELS + "\u22A8":"|=", // TRUE + "\u22A9":"||-", // FORCES + "\u22C5":".", // DOT OPERATOR + "\u22C6":"*", // STAR OPERATOR + "\u22D5":"$\\#$", // EQUAL AND PARALLEL TO + "\u22D8":"<<<", // VERY MUCH LESS-THAN + "\u22D9":">>>", // VERY MUCH GREATER-THAN + "\u22EF":"...", // MIDLINE HORIZONTAL ELLIPSIS + "\u2329":"{\\textlangle}", // LEFT-POINTING ANGLE BRACKET + "\u232A":"{\\textrangle}", // RIGHT-POINTING ANGLE BRACKET + "\u2400":"NUL", // SYMBOL FOR NULL + "\u2401":"SOH", // SYMBOL FOR START OF HEADING + "\u2402":"STX", // SYMBOL FOR START OF TEXT + "\u2403":"ETX", // SYMBOL FOR END OF TEXT + "\u2404":"EOT", // SYMBOL FOR END OF TRANSMISSION + "\u2405":"ENQ", // SYMBOL FOR ENQUIRY + "\u2406":"ACK", // SYMBOL FOR ACKNOWLEDGE + "\u2407":"BEL", // SYMBOL FOR BELL + "\u2408":"BS", // SYMBOL FOR BACKSPACE + "\u2409":"HT", // SYMBOL FOR HORIZONTAL TABULATION + "\u240A":"LF", // SYMBOL FOR LINE FEED + "\u240B":"VT", // SYMBOL FOR VERTICAL TABULATION + "\u240C":"FF", // SYMBOL FOR FORM FEED + "\u240D":"CR", // SYMBOL FOR CARRIAGE RETURN + "\u240E":"SO", // SYMBOL FOR SHIFT OUT + "\u240F":"SI", // SYMBOL FOR SHIFT IN + "\u2410":"DLE", // SYMBOL FOR DATA LINK ESCAPE + "\u2411":"DC1", // SYMBOL FOR DEVICE CONTROL ONE + "\u2412":"DC2", // SYMBOL FOR DEVICE CONTROL TWO + "\u2413":"DC3", // SYMBOL FOR DEVICE CONTROL THREE + "\u2414":"DC4", // SYMBOL FOR DEVICE CONTROL FOUR + "\u2415":"NAK", // SYMBOL FOR NEGATIVE ACKNOWLEDGE + "\u2416":"SYN", // SYMBOL FOR SYNCHRONOUS IDLE + "\u2417":"ETB", // SYMBOL FOR END OF TRANSMISSION BLOCK + "\u2418":"CAN", // SYMBOL FOR CANCEL + "\u2419":"EM", // SYMBOL FOR END OF MEDIUM + "\u241A":"SUB", // SYMBOL FOR SUBSTITUTE + "\u241B":"ESC", // SYMBOL FOR ESCAPE + "\u241C":"FS", // SYMBOL FOR FILE SEPARATOR + "\u241D":"GS", // SYMBOL FOR GROUP SEPARATOR + "\u241E":"RS", // SYMBOL FOR RECORD SEPARATOR + "\u241F":"US", // SYMBOL FOR UNIT SEPARATOR + "\u2420":"SP", // SYMBOL FOR SPACE + "\u2421":"DEL", // SYMBOL FOR DELETE + "\u2423":"{\\textvisiblespace}", // OPEN BOX + "\u2424":"NL", // SYMBOL FOR NEWLINE + "\u2425":"///", // SYMBOL FOR DELETE FORM TWO + "\u2426":"?", // SYMBOL FOR SUBSTITUTE FORM TWO + "\u2460":"(1)", // CIRCLED DIGIT ONE + "\u2461":"(2)", // CIRCLED DIGIT TWO + "\u2462":"(3)", // CIRCLED DIGIT THREE + "\u2463":"(4)", // CIRCLED DIGIT FOUR + "\u2464":"(5)", // CIRCLED DIGIT FIVE + "\u2465":"(6)", // CIRCLED DIGIT SIX + "\u2466":"(7)", // CIRCLED DIGIT SEVEN + "\u2467":"(8)", // CIRCLED DIGIT EIGHT + "\u2468":"(9)", // CIRCLED DIGIT NINE + "\u2469":"(10)", // CIRCLED NUMBER TEN + "\u246A":"(11)", // CIRCLED NUMBER ELEVEN + "\u246B":"(12)", // CIRCLED NUMBER TWELVE + "\u246C":"(13)", // CIRCLED NUMBER THIRTEEN + "\u246D":"(14)", // CIRCLED NUMBER FOURTEEN + "\u246E":"(15)", // CIRCLED NUMBER FIFTEEN + "\u246F":"(16)", // CIRCLED NUMBER SIXTEEN + "\u2470":"(17)", // CIRCLED NUMBER SEVENTEEN + "\u2471":"(18)", // CIRCLED NUMBER EIGHTEEN + "\u2472":"(19)", // CIRCLED NUMBER NINETEEN + "\u2473":"(20)", // CIRCLED NUMBER TWENTY + "\u2474":"(1)", // PARENTHESIZED DIGIT ONE + "\u2475":"(2)", // PARENTHESIZED DIGIT TWO + "\u2476":"(3)", // PARENTHESIZED DIGIT THREE + "\u2477":"(4)", // PARENTHESIZED DIGIT FOUR + "\u2478":"(5)", // PARENTHESIZED DIGIT FIVE + "\u2479":"(6)", // PARENTHESIZED DIGIT SIX + "\u247A":"(7)", // PARENTHESIZED DIGIT SEVEN + "\u247B":"(8)", // PARENTHESIZED DIGIT EIGHT + "\u247C":"(9)", // PARENTHESIZED DIGIT NINE + "\u247D":"(10)", // PARENTHESIZED NUMBER TEN + "\u247E":"(11)", // PARENTHESIZED NUMBER ELEVEN + "\u247F":"(12)", // PARENTHESIZED NUMBER TWELVE + "\u2480":"(13)", // PARENTHESIZED NUMBER THIRTEEN + "\u2481":"(14)", // PARENTHESIZED NUMBER FOURTEEN + "\u2482":"(15)", // PARENTHESIZED NUMBER FIFTEEN + "\u2483":"(16)", // PARENTHESIZED NUMBER SIXTEEN + "\u2484":"(17)", // PARENTHESIZED NUMBER SEVENTEEN + "\u2485":"(18)", // PARENTHESIZED NUMBER EIGHTEEN + "\u2486":"(19)", // PARENTHESIZED NUMBER NINETEEN + "\u2487":"(20)", // PARENTHESIZED NUMBER TWENTY + "\u2488":"1.", // DIGIT ONE FULL STOP + "\u2489":"2.", // DIGIT TWO FULL STOP + "\u248A":"3.", // DIGIT THREE FULL STOP + "\u248B":"4.", // DIGIT FOUR FULL STOP + "\u248C":"5.", // DIGIT FIVE FULL STOP + "\u248D":"6.", // DIGIT SIX FULL STOP + "\u248E":"7.", // DIGIT SEVEN FULL STOP + "\u248F":"8.", // DIGIT EIGHT FULL STOP + "\u2490":"9.", // DIGIT NINE FULL STOP + "\u2491":"10.", // NUMBER TEN FULL STOP + "\u2492":"11.", // NUMBER ELEVEN FULL STOP + "\u2493":"12.", // NUMBER TWELVE FULL STOP + "\u2494":"13.", // NUMBER THIRTEEN FULL STOP + "\u2495":"14.", // NUMBER FOURTEEN FULL STOP + "\u2496":"15.", // NUMBER FIFTEEN FULL STOP + "\u2497":"16.", // NUMBER SIXTEEN FULL STOP + "\u2498":"17.", // NUMBER SEVENTEEN FULL STOP + "\u2499":"18.", // NUMBER EIGHTEEN FULL STOP + "\u249A":"19.", // NUMBER NINETEEN FULL STOP + "\u249B":"20.", // NUMBER TWENTY FULL STOP + "\u249C":"(a)", // PARENTHESIZED LATIN SMALL LETTER A + "\u249D":"(b)", // PARENTHESIZED LATIN SMALL LETTER B + "\u249E":"(c)", // PARENTHESIZED LATIN SMALL LETTER C + "\u249F":"(d)", // PARENTHESIZED LATIN SMALL LETTER D + "\u24A0":"(e)", // PARENTHESIZED LATIN SMALL LETTER E + "\u24A1":"(f)", // PARENTHESIZED LATIN SMALL LETTER F + "\u24A2":"(g)", // PARENTHESIZED LATIN SMALL LETTER G + "\u24A3":"(h)", // PARENTHESIZED LATIN SMALL LETTER H + "\u24A4":"(i)", // PARENTHESIZED LATIN SMALL LETTER I + "\u24A5":"(j)", // PARENTHESIZED LATIN SMALL LETTER J + "\u24A6":"(k)", // PARENTHESIZED LATIN SMALL LETTER K + "\u24A7":"(l)", // PARENTHESIZED LATIN SMALL LETTER L + "\u24A8":"(m)", // PARENTHESIZED LATIN SMALL LETTER M + "\u24A9":"(n)", // PARENTHESIZED LATIN SMALL LETTER N + "\u24AA":"(o)", // PARENTHESIZED LATIN SMALL LETTER O + "\u24AB":"(p)", // PARENTHESIZED LATIN SMALL LETTER P + "\u24AC":"(q)", // PARENTHESIZED LATIN SMALL LETTER Q + "\u24AD":"(r)", // PARENTHESIZED LATIN SMALL LETTER R + "\u24AE":"(s)", // PARENTHESIZED LATIN SMALL LETTER S + "\u24AF":"(t)", // PARENTHESIZED LATIN SMALL LETTER T + "\u24B0":"(u)", // PARENTHESIZED LATIN SMALL LETTER U + "\u24B1":"(v)", // PARENTHESIZED LATIN SMALL LETTER V + "\u24B2":"(w)", // PARENTHESIZED LATIN SMALL LETTER W + "\u24B3":"(x)", // PARENTHESIZED LATIN SMALL LETTER X + "\u24B4":"(y)", // PARENTHESIZED LATIN SMALL LETTER Y + "\u24B5":"(z)", // PARENTHESIZED LATIN SMALL LETTER Z + "\u24B6":"(A)", // CIRCLED LATIN CAPITAL LETTER A + "\u24B7":"(B)", // CIRCLED LATIN CAPITAL LETTER B + "\u24B8":"(C)", // CIRCLED LATIN CAPITAL LETTER C + "\u24B9":"(D)", // CIRCLED LATIN CAPITAL LETTER D + "\u24BA":"(E)", // CIRCLED LATIN CAPITAL LETTER E + "\u24BB":"(F)", // CIRCLED LATIN CAPITAL LETTER F + "\u24BC":"(G)", // CIRCLED LATIN CAPITAL LETTER G + "\u24BD":"(H)", // CIRCLED LATIN CAPITAL LETTER H + "\u24BE":"(I)", // CIRCLED LATIN CAPITAL LETTER I + "\u24BF":"(J)", // CIRCLED LATIN CAPITAL LETTER J + "\u24C0":"(K)", // CIRCLED LATIN CAPITAL LETTER K + "\u24C1":"(L)", // CIRCLED LATIN CAPITAL LETTER L + "\u24C2":"(M)", // CIRCLED LATIN CAPITAL LETTER M + "\u24C3":"(N)", // CIRCLED LATIN CAPITAL LETTER N + "\u24C4":"(O)", // CIRCLED LATIN CAPITAL LETTER O + "\u24C5":"(P)", // CIRCLED LATIN CAPITAL LETTER P + "\u24C6":"(Q)", // CIRCLED LATIN CAPITAL LETTER Q + "\u24C7":"(R)", // CIRCLED LATIN CAPITAL LETTER R + "\u24C8":"(S)", // CIRCLED LATIN CAPITAL LETTER S + "\u24C9":"(T)", // CIRCLED LATIN CAPITAL LETTER T + "\u24CA":"(U)", // CIRCLED LATIN CAPITAL LETTER U + "\u24CB":"(V)", // CIRCLED LATIN CAPITAL LETTER V + "\u24CC":"(W)", // CIRCLED LATIN CAPITAL LETTER W + "\u24CD":"(X)", // CIRCLED LATIN CAPITAL LETTER X + "\u24CE":"(Y)", // CIRCLED LATIN CAPITAL LETTER Y + "\u24CF":"(Z)", // CIRCLED LATIN CAPITAL LETTER Z + "\u24D0":"(a)", // CIRCLED LATIN SMALL LETTER A + "\u24D1":"(b)", // CIRCLED LATIN SMALL LETTER B + "\u24D2":"(c)", // CIRCLED LATIN SMALL LETTER C + "\u24D3":"(d)", // CIRCLED LATIN SMALL LETTER D + "\u24D4":"(e)", // CIRCLED LATIN SMALL LETTER E + "\u24D5":"(f)", // CIRCLED LATIN SMALL LETTER F + "\u24D6":"(g)", // CIRCLED LATIN SMALL LETTER G + "\u24D7":"(h)", // CIRCLED LATIN SMALL LETTER H + "\u24D8":"(i)", // CIRCLED LATIN SMALL LETTER I + "\u24D9":"(j)", // CIRCLED LATIN SMALL LETTER J + "\u24DA":"(k)", // CIRCLED LATIN SMALL LETTER K + "\u24DB":"(l)", // CIRCLED LATIN SMALL LETTER L + "\u24DC":"(m)", // CIRCLED LATIN SMALL LETTER M + "\u24DD":"(n)", // CIRCLED LATIN SMALL LETTER N + "\u24DE":"(o)", // CIRCLED LATIN SMALL LETTER O + "\u24DF":"(p)", // CIRCLED LATIN SMALL LETTER P + "\u24E0":"(q)", // CIRCLED LATIN SMALL LETTER Q + "\u24E1":"(r)", // CIRCLED LATIN SMALL LETTER R + "\u24E2":"(s)", // CIRCLED LATIN SMALL LETTER S + "\u24E3":"(t)", // CIRCLED LATIN SMALL LETTER T + "\u24E4":"(u)", // CIRCLED LATIN SMALL LETTER U + "\u24E5":"(v)", // CIRCLED LATIN SMALL LETTER V + "\u24E6":"(w)", // CIRCLED LATIN SMALL LETTER W + "\u24E7":"(x)", // CIRCLED LATIN SMALL LETTER X + "\u24E8":"(y)", // CIRCLED LATIN SMALL LETTER Y + "\u24E9":"(z)", // CIRCLED LATIN SMALL LETTER Z + "\u24EA":"(0)", // CIRCLED DIGIT ZERO + "\u2500":"-", // BOX DRAWINGS LIGHT HORIZONTAL + "\u2501":"=", // BOX DRAWINGS HEAVY HORIZONTAL + "\u2502":"|", // BOX DRAWINGS LIGHT VERTICAL + "\u2503":"|", // BOX DRAWINGS HEAVY VERTICAL + "\u2504":"-", // BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL + "\u2505":"=", // BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL + "\u2506":"|", // BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL + "\u2507":"|", // BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL + "\u2508":"-", // BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL + "\u2509":"=", // BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL + "\u250A":"|", // BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL + "\u250B":"|", // BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL + "\u250C":"+", // BOX DRAWINGS LIGHT DOWN AND RIGHT + "\u250D":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY + "\u250E":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT + "\u250F":"+", // BOX DRAWINGS HEAVY DOWN AND RIGHT + "\u2510":"+", // BOX DRAWINGS LIGHT DOWN AND LEFT + "\u2511":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY + "\u2512":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT + "\u2513":"+", // BOX DRAWINGS HEAVY DOWN AND LEFT + "\u2514":"+", // BOX DRAWINGS LIGHT UP AND RIGHT + "\u2515":"+", // BOX DRAWINGS UP LIGHT AND RIGHT HEAVY + "\u2516":"+", // BOX DRAWINGS UP HEAVY AND RIGHT LIGHT + "\u2517":"+", // BOX DRAWINGS HEAVY UP AND RIGHT + "\u2518":"+", // BOX DRAWINGS LIGHT UP AND LEFT + "\u2519":"+", // BOX DRAWINGS UP LIGHT AND LEFT HEAVY + "\u251A":"+", // BOX DRAWINGS UP HEAVY AND LEFT LIGHT + "\u251B":"+", // BOX DRAWINGS HEAVY UP AND LEFT + "\u251C":"+", // BOX DRAWINGS LIGHT VERTICAL AND RIGHT + "\u251D":"+", // BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY + "\u251E":"+", // BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT + "\u251F":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT + "\u2520":"+", // BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT + "\u2521":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY + "\u2522":"+", // BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY + "\u2523":"+", // BOX DRAWINGS HEAVY VERTICAL AND RIGHT + "\u2524":"+", // BOX DRAWINGS LIGHT VERTICAL AND LEFT + "\u2525":"+", // BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY + "\u2526":"+", // BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT + "\u2527":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT + "\u2528":"+", // BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT + "\u2529":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY + "\u252A":"+", // BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY + "\u252B":"+", // BOX DRAWINGS HEAVY VERTICAL AND LEFT + "\u252C":"+", // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL + "\u252D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT + "\u252E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT + "\u252F":"+", // BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY + "\u2530":"+", // BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT + "\u2531":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY + "\u2532":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY + "\u2533":"+", // BOX DRAWINGS HEAVY DOWN AND HORIZONTAL + "\u2534":"+", // BOX DRAWINGS LIGHT UP AND HORIZONTAL + "\u2535":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT + "\u2536":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT + "\u2537":"+", // BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY + "\u2538":"+", // BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT + "\u2539":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY + "\u253A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY + "\u253B":"+", // BOX DRAWINGS HEAVY UP AND HORIZONTAL + "\u253C":"+", // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL + "\u253D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT + "\u253E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT + "\u253F":"+", // BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY + "\u2540":"+", // BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT + "\u2541":"+", // BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT + "\u2542":"+", // BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT + "\u2543":"+", // BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT + "\u2544":"+", // BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT + "\u2545":"+", // BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT + "\u2546":"+", // BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT + "\u2547":"+", // BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY + "\u2548":"+", // BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY + "\u2549":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY + "\u254A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY + "\u254B":"+", // BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL + "\u254C":"-", // BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL + "\u254D":"=", // BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL + "\u254E":"|", // BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL + "\u254F":"|", // BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL + "\u2550":"=", // BOX DRAWINGS DOUBLE HORIZONTAL + "\u2551":"|", // BOX DRAWINGS DOUBLE VERTICAL + "\u2552":"+", // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE + "\u2553":"+", // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE + "\u2554":"+", // BOX DRAWINGS DOUBLE DOWN AND RIGHT + "\u2555":"+", // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE + "\u2556":"+", // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE + "\u2557":"+", // BOX DRAWINGS DOUBLE DOWN AND LEFT + "\u2558":"+", // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE + "\u2559":"+", // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE + "\u255A":"+", // BOX DRAWINGS DOUBLE UP AND RIGHT + "\u255B":"+", // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE + "\u255C":"+", // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE + "\u255D":"+", // BOX DRAWINGS DOUBLE UP AND LEFT + "\u255E":"+", // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE + "\u255F":"+", // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE + "\u2560":"+", // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT + "\u2561":"+", // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE + "\u2562":"+", // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE + "\u2563":"+", // BOX DRAWINGS DOUBLE VERTICAL AND LEFT + "\u2564":"+", // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE + "\u2565":"+", // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE + "\u2566":"+", // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL + "\u2567":"+", // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE + "\u2568":"+", // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE + "\u2569":"+", // BOX DRAWINGS DOUBLE UP AND HORIZONTAL + "\u256A":"+", // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE + "\u256B":"+", // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE + "\u256C":"+", // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL + "\u256D":"+", // BOX DRAWINGS LIGHT ARC DOWN AND RIGHT + "\u256E":"+", // BOX DRAWINGS LIGHT ARC DOWN AND LEFT + "\u256F":"+", // BOX DRAWINGS LIGHT ARC UP AND LEFT + "\u2570":"+", // BOX DRAWINGS LIGHT ARC UP AND RIGHT + "\u2571":"/", // BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT + "\u2572":"\\", // BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT + "\u2573":"X", // BOX DRAWINGS LIGHT DIAGONAL CROSS + "\u257C":"-", // BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT + "\u257D":"|", // BOX DRAWINGS LIGHT UP AND HEAVY DOWN + "\u257E":"-", // BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT + "\u257F":"|", // BOX DRAWINGS HEAVY UP AND LIGHT DOWN + "\u25CB":"o", // WHITE CIRCLE + "\u25E6":"{\\textopenbullet}", // WHITE BULLET + "\u2605":"*", // BLACK STAR + "\u2606":"*", // WHITE STAR + "\u2612":"X", // BALLOT BOX WITH X + "\u2613":"X", // SALTIRE + "\u2639":":-(", // WHITE FROWNING FACE + "\u263A":":-)", // WHITE SMILING FACE + "\u263B":"(-:", // BLACK SMILING FACE + "\u266D":"b", // MUSIC FLAT SIGN + "\u266F":"$\\#$", // MUSIC SHARP SIGN + "\u2701":"$\\%<$", // UPPER BLADE SCISSORS + "\u2702":"$\\%<$", // BLACK SCISSORS + "\u2703":"$\\%<$", // LOWER BLADE SCISSORS + "\u2704":"$\\%<$", // WHITE SCISSORS + "\u270C":"V", // VICTORY HAND + "\u2713":"v", // CHECK MARK + "\u2714":"V", // HEAVY CHECK MARK + "\u2715":"x", // MULTIPLICATION X + "\u2716":"x", // HEAVY MULTIPLICATION X + "\u2717":"X", // BALLOT X + "\u2718":"X", // HEAVY BALLOT X + "\u2719":"+", // OUTLINED GREEK CROSS + "\u271A":"+", // HEAVY GREEK CROSS + "\u271B":"+", // OPEN CENTRE CROSS + "\u271C":"+", // HEAVY OPEN CENTRE CROSS + "\u271D":"+", // LATIN CROSS + "\u271E":"+", // SHADOWED WHITE LATIN CROSS + "\u271F":"+", // OUTLINED LATIN CROSS + "\u2720":"+", // MALTESE CROSS + "\u2721":"*", // STAR OF DAVID + "\u2722":"+", // FOUR TEARDROP-SPOKED ASTERISK + "\u2723":"+", // FOUR BALLOON-SPOKED ASTERISK + "\u2724":"+", // HEAVY FOUR BALLOON-SPOKED ASTERISK + "\u2725":"+", // FOUR CLUB-SPOKED ASTERISK + "\u2726":"+", // BLACK FOUR POINTED STAR + "\u2727":"+", // WHITE FOUR POINTED STAR + "\u2729":"*", // STRESS OUTLINED WHITE STAR + "\u272A":"*", // CIRCLED WHITE STAR + "\u272B":"*", // OPEN CENTRE BLACK STAR + "\u272C":"*", // BLACK CENTRE WHITE STAR + "\u272D":"*", // OUTLINED BLACK STAR + "\u272E":"*", // HEAVY OUTLINED BLACK STAR + "\u272F":"*", // PINWHEEL STAR + "\u2730":"*", // SHADOWED WHITE STAR + "\u2731":"*", // HEAVY ASTERISK + "\u2732":"*", // OPEN CENTRE ASTERISK + "\u2733":"*", // EIGHT SPOKED ASTERISK + "\u2734":"*", // EIGHT POINTED BLACK STAR + "\u2735":"*", // EIGHT POINTED PINWHEEL STAR + "\u2736":"*", // SIX POINTED BLACK STAR + "\u2737":"*", // EIGHT POINTED RECTILINEAR BLACK STAR + "\u2738":"*", // HEAVY EIGHT POINTED RECTILINEAR BLACK STAR + "\u2739":"*", // TWELVE POINTED BLACK STAR + "\u273A":"*", // SIXTEEN POINTED ASTERISK + "\u273B":"*", // TEARDROP-SPOKED ASTERISK + "\u273C":"*", // OPEN CENTRE TEARDROP-SPOKED ASTERISK + "\u273D":"*", // HEAVY TEARDROP-SPOKED ASTERISK + "\u273E":"*", // SIX PETALLED BLACK AND WHITE FLORETTE + "\u273F":"*", // BLACK FLORETTE + "\u2740":"*", // WHITE FLORETTE + "\u2741":"*", // EIGHT PETALLED OUTLINED BLACK FLORETTE + "\u2742":"*", // CIRCLED OPEN CENTRE EIGHT POINTED STAR + "\u2743":"*", // HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK + "\u2744":"*", // SNOWFLAKE + "\u2745":"*", // TIGHT TRIFOLIATE SNOWFLAKE + "\u2746":"*", // HEAVY CHEVRON SNOWFLAKE + "\u2747":"*", // SPARKLE + "\u2748":"*", // HEAVY SPARKLE + "\u2749":"*", // BALLOON-SPOKED ASTERISK + "\u274A":"*", // EIGHT TEARDROP-SPOKED PROPELLER ASTERISK + "\u274B":"*", // HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK + "\uFB00":"ff", // LATIN SMALL LIGATURE FF + "\uFB01":"fi", // LATIN SMALL LIGATURE FI + "\uFB02":"fl", // LATIN SMALL LIGATURE FL + "\uFB03":"ffi", // LATIN SMALL LIGATURE FFI + "\uFB04":"ffl", // LATIN SMALL LIGATURE FFL + "\uFB05":"st", // LATIN SMALL LIGATURE LONG S T + "\uFB06":"st", // LATIN SMALL LIGATURE ST +/* Derived accented characters */ + "\u00C0":"\\`{A}", // LATIN CAPITAL LETTER A WITH GRAVE + "\u00C1":"\\''{A}", // LATIN CAPITAL LETTER A WITH ACUTE + "\u00C2":"\\^{A}", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX + "\u00C3":"\\~{A}", // LATIN CAPITAL LETTER A WITH TILDE + "\u00C4":"\\~{A}", // LATIN CAPITAL LETTER A WITH DIAERESIS + "\u00C7":"\\c{C}", // LATIN CAPITAL LETTER C WITH CEDILLA + "\u00C8":"\\`{E}", // LATIN CAPITAL LETTER E WITH GRAVE + "\u00C9":"\\''{E}", // LATIN CAPITAL LETTER E WITH ACUTE + "\u00CA":"\\^{E}", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX + "\u00CB":"\\~{E}", // LATIN CAPITAL LETTER E WITH DIAERESIS + "\u00CC":"\\`{I}", // LATIN CAPITAL LETTER I WITH GRAVE + "\u00CD":"\\''{I}", // LATIN CAPITAL LETTER I WITH ACUTE + "\u00CE":"\\^{I}", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX + "\u00CF":"\\~{I}", // LATIN CAPITAL LETTER I WITH DIAERESIS + "\u00D1":"\\~{N}", // LATIN CAPITAL LETTER N WITH TILDE + "\u00D2":"\\`{O}", // LATIN CAPITAL LETTER O WITH GRAVE + "\u00D3":"\\''{O}", // LATIN CAPITAL LETTER O WITH ACUTE + "\u00D4":"\\^{O}", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX + "\u00D5":"\\~{O}", // LATIN CAPITAL LETTER O WITH TILDE + "\u00D6":"\\~{O}", // LATIN CAPITAL LETTER O WITH DIAERESIS + "\u00D9":"\\`{U}", // LATIN CAPITAL LETTER U WITH GRAVE + "\u00DA":"\\''{U}", // LATIN CAPITAL LETTER U WITH ACUTE + "\u00DB":"\\^{U}", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX + "\u00DC":"\\~{U}", // LATIN CAPITAL LETTER U WITH DIAERESIS + "\u00DD":"\\''{Y}", // LATIN CAPITAL LETTER Y WITH ACUTE + "\u00E0":"\\`{a}", // LATIN SMALL LETTER A WITH GRAVE + "\u00E1":"\\''{a}", // LATIN SMALL LETTER A WITH ACUTE + "\u00E2":"\\^{a}", // LATIN SMALL LETTER A WITH CIRCUMFLEX + "\u00E3":"\\~{a}", // LATIN SMALL LETTER A WITH TILDE + "\u00E4":"\\~{a}", // LATIN SMALL LETTER A WITH DIAERESIS + "\u00E7":"\\c{c}", // LATIN SMALL LETTER C WITH CEDILLA + "\u00E8":"\\`{e}", // LATIN SMALL LETTER E WITH GRAVE + "\u00E9":"\\''{e}", // LATIN SMALL LETTER E WITH ACUTE + "\u00EA":"\\^{e}", // LATIN SMALL LETTER E WITH CIRCUMFLEX + "\u00EB":"\\~{e}", // LATIN SMALL LETTER E WITH DIAERESIS + "\u00EC":"\\`{i}", // LATIN SMALL LETTER I WITH GRAVE + "\u00ED":"\\''{i}", // LATIN SMALL LETTER I WITH ACUTE + "\u00EE":"\\^{i}", // LATIN SMALL LETTER I WITH CIRCUMFLEX + "\u00EF":"\\~{i}", // LATIN SMALL LETTER I WITH DIAERESIS + "\u00F1":"\\~{n}", // LATIN SMALL LETTER N WITH TILDE + "\u00F2":"\\`{o}", // LATIN SMALL LETTER O WITH GRAVE + "\u00F3":"\\''{o}", // LATIN SMALL LETTER O WITH ACUTE + "\u00F4":"\\^{o}", // LATIN SMALL LETTER O WITH CIRCUMFLEX + "\u00F5":"\\~{o}", // LATIN SMALL LETTER O WITH TILDE + "\u00F6":"\\~{o}", // LATIN SMALL LETTER O WITH DIAERESIS + "\u00F9":"\\`{u}", // LATIN SMALL LETTER U WITH GRAVE + "\u00FA":"\\''{u}", // LATIN SMALL LETTER U WITH ACUTE + "\u00FB":"\\^{u}", // LATIN SMALL LETTER U WITH CIRCUMFLEX + "\u00FC":"\\~{u}", // LATIN SMALL LETTER U WITH DIAERESIS + "\u00FD":"\\''{y}", // LATIN SMALL LETTER Y WITH ACUTE + "\u00FF":"\\~{y}", // LATIN SMALL LETTER Y WITH DIAERESIS + "\u0100":"\\={A}", // LATIN CAPITAL LETTER A WITH MACRON + "\u0101":"\\={a}", // LATIN SMALL LETTER A WITH MACRON + "\u0102":"\\u{A}", // LATIN CAPITAL LETTER A WITH BREVE + "\u0103":"\\u{a}", // LATIN SMALL LETTER A WITH BREVE + "\u0104":"\\k{A}", // LATIN CAPITAL LETTER A WITH OGONEK + "\u0105":"\\k{a}", // LATIN SMALL LETTER A WITH OGONEK + "\u0106":"\\''{C}", // LATIN CAPITAL LETTER C WITH ACUTE + "\u0107":"\\''{c}", // LATIN SMALL LETTER C WITH ACUTE + "\u0108":"\\^{C}", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX + "\u0109":"\\^{c}", // LATIN SMALL LETTER C WITH CIRCUMFLEX + "\u010A":"\\.{C}", // LATIN CAPITAL LETTER C WITH DOT ABOVE + "\u010B":"\\.{c}", // LATIN SMALL LETTER C WITH DOT ABOVE + "\u010C":"\\v{C}", // LATIN CAPITAL LETTER C WITH CARON + "\u010D":"\\v{c}", // LATIN SMALL LETTER C WITH CARON + "\u010E":"\\v{D}", // LATIN CAPITAL LETTER D WITH CARON + "\u010F":"\\v{d}", // LATIN SMALL LETTER D WITH CARON + "\u0112":"\\={E}", // LATIN CAPITAL LETTER E WITH MACRON + "\u0113":"\\={e}", // LATIN SMALL LETTER E WITH MACRON + "\u0114":"\\u{E}", // LATIN CAPITAL LETTER E WITH BREVE + "\u0115":"\\u{e}", // LATIN SMALL LETTER E WITH BREVE + "\u0116":"\\.{E}", // LATIN CAPITAL LETTER E WITH DOT ABOVE + "\u0117":"\\.{e}", // LATIN SMALL LETTER E WITH DOT ABOVE + "\u0118":"\\k{E}", // LATIN CAPITAL LETTER E WITH OGONEK + "\u0119":"\\k{e}", // LATIN SMALL LETTER E WITH OGONEK + "\u011A":"\\v{E}", // LATIN CAPITAL LETTER E WITH CARON + "\u011B":"\\v{e}", // LATIN SMALL LETTER E WITH CARON + "\u011C":"\\^{G}", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX + "\u011D":"\\^{g}", // LATIN SMALL LETTER G WITH CIRCUMFLEX + "\u011E":"\\u{G}", // LATIN CAPITAL LETTER G WITH BREVE + "\u011F":"\\u{g}", // LATIN SMALL LETTER G WITH BREVE + "\u0120":"\\.{G}", // LATIN CAPITAL LETTER G WITH DOT ABOVE + "\u0121":"\\.{g}", // LATIN SMALL LETTER G WITH DOT ABOVE + "\u0122":"\\c{G}", // LATIN CAPITAL LETTER G WITH CEDILLA + "\u0123":"\\c{g}", // LATIN SMALL LETTER G WITH CEDILLA + "\u0124":"\\^{H}", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX + "\u0125":"\\^{h}", // LATIN SMALL LETTER H WITH CIRCUMFLEX + "\u0128":"\\~{I}", // LATIN CAPITAL LETTER I WITH TILDE + "\u0129":"\\~{i}", // LATIN SMALL LETTER I WITH TILDE + "\u012A":"\\={I}", // LATIN CAPITAL LETTER I WITH MACRON + "\u012B":"\\={i}", // LATIN SMALL LETTER I WITH MACRON + "\u012C":"\\u{I}", // LATIN CAPITAL LETTER I WITH BREVE + "\u012D":"\\u{i}", // LATIN SMALL LETTER I WITH BREVE + "\u012E":"\\k{I}", // LATIN CAPITAL LETTER I WITH OGONEK + "\u012F":"\\k{i}", // LATIN SMALL LETTER I WITH OGONEK + "\u0130":"\\.{I}", // LATIN CAPITAL LETTER I WITH DOT ABOVE + "\u0134":"\\^{J}", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX + "\u0135":"\\^{j}", // LATIN SMALL LETTER J WITH CIRCUMFLEX + "\u0136":"\\c{K}", // LATIN CAPITAL LETTER K WITH CEDILLA + "\u0137":"\\c{k}", // LATIN SMALL LETTER K WITH CEDILLA + "\u0139":"\\''{L}", // LATIN CAPITAL LETTER L WITH ACUTE + "\u013A":"\\''{l}", // LATIN SMALL LETTER L WITH ACUTE + "\u013B":"\\c{L}", // LATIN CAPITAL LETTER L WITH CEDILLA + "\u013C":"\\c{l}", // LATIN SMALL LETTER L WITH CEDILLA + "\u013D":"\\v{L}", // LATIN CAPITAL LETTER L WITH CARON + "\u013E":"\\v{l}", // LATIN SMALL LETTER L WITH CARON + "\u0143":"\\''{N}", // LATIN CAPITAL LETTER N WITH ACUTE + "\u0144":"\\''{n}", // LATIN SMALL LETTER N WITH ACUTE + "\u0145":"\\c{N}", // LATIN CAPITAL LETTER N WITH CEDILLA + "\u0146":"\\c{n}", // LATIN SMALL LETTER N WITH CEDILLA + "\u0147":"\\v{N}", // LATIN CAPITAL LETTER N WITH CARON + "\u0148":"\\v{n}", // LATIN SMALL LETTER N WITH CARON + "\u014C":"\\={O}", // LATIN CAPITAL LETTER O WITH MACRON + "\u014D":"\\={o}", // LATIN SMALL LETTER O WITH MACRON + "\u014E":"\\u{O}", // LATIN CAPITAL LETTER O WITH BREVE + "\u014F":"\\u{o}", // LATIN SMALL LETTER O WITH BREVE + "\u0150":"\\H{O}", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + "\u0151":"\\H{o}", // LATIN SMALL LETTER O WITH DOUBLE ACUTE + "\u0154":"\\''{R}", // LATIN CAPITAL LETTER R WITH ACUTE + "\u0155":"\\''{r}", // LATIN SMALL LETTER R WITH ACUTE + "\u0156":"\\c{R}", // LATIN CAPITAL LETTER R WITH CEDILLA + "\u0157":"\\c{r}", // LATIN SMALL LETTER R WITH CEDILLA + "\u0158":"\\v{R}", // LATIN CAPITAL LETTER R WITH CARON + "\u0159":"\\v{r}", // LATIN SMALL LETTER R WITH CARON + "\u015A":"\\''{S}", // LATIN CAPITAL LETTER S WITH ACUTE + "\u015B":"\\''{s}", // LATIN SMALL LETTER S WITH ACUTE + "\u015C":"\\^{S}", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX + "\u015D":"\\^{s}", // LATIN SMALL LETTER S WITH CIRCUMFLEX + "\u015E":"\\c{S}", // LATIN CAPITAL LETTER S WITH CEDILLA + "\u015F":"\\c{s}", // LATIN SMALL LETTER S WITH CEDILLA + "\u0160":"\\v{S}", // LATIN CAPITAL LETTER S WITH CARON + "\u0161":"\\v{s}", // LATIN SMALL LETTER S WITH CARON + "\u0162":"\\c{T}", // LATIN CAPITAL LETTER T WITH CEDILLA + "\u0163":"\\c{t}", // LATIN SMALL LETTER T WITH CEDILLA + "\u0164":"\\v{T}", // LATIN CAPITAL LETTER T WITH CARON + "\u0165":"\\v{t}", // LATIN SMALL LETTER T WITH CARON + "\u0168":"\\~{U}", // LATIN CAPITAL LETTER U WITH TILDE + "\u0169":"\\~{u}", // LATIN SMALL LETTER U WITH TILDE + "\u016A":"\\={U}", // LATIN CAPITAL LETTER U WITH MACRON + "\u016B":"\\={u}", // LATIN SMALL LETTER U WITH MACRON + "\u016C":"\\u{U}", // LATIN CAPITAL LETTER U WITH BREVE + "\u016D":"\\u{u}", // LATIN SMALL LETTER U WITH BREVE + "\u0170":"\\H{U}", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + "\u0171":"\\H{u}", // LATIN SMALL LETTER U WITH DOUBLE ACUTE + "\u0172":"\\k{U}", // LATIN CAPITAL LETTER U WITH OGONEK + "\u0173":"\\k{u}", // LATIN SMALL LETTER U WITH OGONEK + "\u0174":"\\^{W}", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX + "\u0175":"\\^{w}", // LATIN SMALL LETTER W WITH CIRCUMFLEX + "\u0176":"\\^{Y}", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + "\u0177":"\\^{y}", // LATIN SMALL LETTER Y WITH CIRCUMFLEX + "\u0178":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH DIAERESIS + "\u0179":"\\''{Z}", // LATIN CAPITAL LETTER Z WITH ACUTE + "\u017A":"\\''{z}", // LATIN SMALL LETTER Z WITH ACUTE + "\u017B":"\\.{Z}", // LATIN CAPITAL LETTER Z WITH DOT ABOVE + "\u017C":"\\.{z}", // LATIN SMALL LETTER Z WITH DOT ABOVE + "\u017D":"\\v{Z}", // LATIN CAPITAL LETTER Z WITH CARON + "\u017E":"\\v{z}", // LATIN SMALL LETTER Z WITH CARON + "\u01CD":"\\v{A}", // LATIN CAPITAL LETTER A WITH CARON + "\u01CE":"\\v{a}", // LATIN SMALL LETTER A WITH CARON + "\u01CF":"\\v{I}", // LATIN CAPITAL LETTER I WITH CARON + "\u01D0":"\\v{i}", // LATIN SMALL LETTER I WITH CARON + "\u01D1":"\\v{O}", // LATIN CAPITAL LETTER O WITH CARON + "\u01D2":"\\v{o}", // LATIN SMALL LETTER O WITH CARON + "\u01D3":"\\v{U}", // LATIN CAPITAL LETTER U WITH CARON + "\u01D4":"\\v{u}", // LATIN SMALL LETTER U WITH CARON + "\u01E6":"\\v{G}", // LATIN CAPITAL LETTER G WITH CARON + "\u01E7":"\\v{g}", // LATIN SMALL LETTER G WITH CARON + "\u01E8":"\\v{K}", // LATIN CAPITAL LETTER K WITH CARON + "\u01E9":"\\v{k}", // LATIN SMALL LETTER K WITH CARON + "\u01EA":"\\k{O}", // LATIN CAPITAL LETTER O WITH OGONEK + "\u01EB":"\\k{o}", // LATIN SMALL LETTER O WITH OGONEK + "\u01F0":"\\v{j}", // LATIN SMALL LETTER J WITH CARON + "\u01F4":"\\''{G}", // LATIN CAPITAL LETTER G WITH ACUTE + "\u01F5":"\\''{g}", // LATIN SMALL LETTER G WITH ACUTE + "\u1E02":"\\.{B}", // LATIN CAPITAL LETTER B WITH DOT ABOVE + "\u1E03":"\\.{b}", // LATIN SMALL LETTER B WITH DOT ABOVE + "\u1E04":"\\d{B}", // LATIN CAPITAL LETTER B WITH DOT BELOW + "\u1E05":"\\d{b}", // LATIN SMALL LETTER B WITH DOT BELOW + "\u1E06":"\\b{B}", // LATIN CAPITAL LETTER B WITH LINE BELOW + "\u1E07":"\\b{b}", // LATIN SMALL LETTER B WITH LINE BELOW + "\u1E0A":"\\.{D}", // LATIN CAPITAL LETTER D WITH DOT ABOVE + "\u1E0B":"\\.{d}", // LATIN SMALL LETTER D WITH DOT ABOVE + "\u1E0C":"\\d{D}", // LATIN CAPITAL LETTER D WITH DOT BELOW + "\u1E0D":"\\d{d}", // LATIN SMALL LETTER D WITH DOT BELOW + "\u1E0E":"\\b{D}", // LATIN CAPITAL LETTER D WITH LINE BELOW + "\u1E0F":"\\b{d}", // LATIN SMALL LETTER D WITH LINE BELOW + "\u1E10":"\\c{D}", // LATIN CAPITAL LETTER D WITH CEDILLA + "\u1E11":"\\c{d}", // LATIN SMALL LETTER D WITH CEDILLA + "\u1E1E":"\\.{F}", // LATIN CAPITAL LETTER F WITH DOT ABOVE + "\u1E1F":"\\.{f}", // LATIN SMALL LETTER F WITH DOT ABOVE + "\u1E20":"\\={G}", // LATIN CAPITAL LETTER G WITH MACRON + "\u1E21":"\\={g}", // LATIN SMALL LETTER G WITH MACRON + "\u1E22":"\\.{H}", // LATIN CAPITAL LETTER H WITH DOT ABOVE + "\u1E23":"\\.{h}", // LATIN SMALL LETTER H WITH DOT ABOVE + "\u1E24":"\\d{H}", // LATIN CAPITAL LETTER H WITH DOT BELOW + "\u1E25":"\\d{h}", // LATIN SMALL LETTER H WITH DOT BELOW + "\u1E26":"\\~{H}", // LATIN CAPITAL LETTER H WITH DIAERESIS + "\u1E27":"\\~{h}", // LATIN SMALL LETTER H WITH DIAERESIS + "\u1E28":"\\c{H}", // LATIN CAPITAL LETTER H WITH CEDILLA + "\u1E29":"\\c{h}", // LATIN SMALL LETTER H WITH CEDILLA + "\u1E30":"\\''{K}", // LATIN CAPITAL LETTER K WITH ACUTE + "\u1E31":"\\''{k}", // LATIN SMALL LETTER K WITH ACUTE + "\u1E32":"\\d{K}", // LATIN CAPITAL LETTER K WITH DOT BELOW + "\u1E33":"\\d{k}", // LATIN SMALL LETTER K WITH DOT BELOW + "\u1E34":"\\b{K}", // LATIN CAPITAL LETTER K WITH LINE BELOW + "\u1E35":"\\b{k}", // LATIN SMALL LETTER K WITH LINE BELOW + "\u1E36":"\\d{L}", // LATIN CAPITAL LETTER L WITH DOT BELOW + "\u1E37":"\\d{l}", // LATIN SMALL LETTER L WITH DOT BELOW + "\u1E3A":"\\b{L}", // LATIN CAPITAL LETTER L WITH LINE BELOW + "\u1E3B":"\\b{l}", // LATIN SMALL LETTER L WITH LINE BELOW + "\u1E3E":"\\''{M}", // LATIN CAPITAL LETTER M WITH ACUTE + "\u1E3F":"\\''{m}", // LATIN SMALL LETTER M WITH ACUTE + "\u1E40":"\\.{M}", // LATIN CAPITAL LETTER M WITH DOT ABOVE + "\u1E41":"\\.{m}", // LATIN SMALL LETTER M WITH DOT ABOVE + "\u1E42":"\\d{M}", // LATIN CAPITAL LETTER M WITH DOT BELOW + "\u1E43":"\\d{m}", // LATIN SMALL LETTER M WITH DOT BELOW + "\u1E44":"\\.{N}", // LATIN CAPITAL LETTER N WITH DOT ABOVE + "\u1E45":"\\.{n}", // LATIN SMALL LETTER N WITH DOT ABOVE + "\u1E46":"\\d{N}", // LATIN CAPITAL LETTER N WITH DOT BELOW + "\u1E47":"\\d{n}", // LATIN SMALL LETTER N WITH DOT BELOW + "\u1E48":"\\b{N}", // LATIN CAPITAL LETTER N WITH LINE BELOW + "\u1E49":"\\b{n}", // LATIN SMALL LETTER N WITH LINE BELOW + "\u1E54":"\\''{P}", // LATIN CAPITAL LETTER P WITH ACUTE + "\u1E55":"\\''{p}", // LATIN SMALL LETTER P WITH ACUTE + "\u1E56":"\\.{P}", // LATIN CAPITAL LETTER P WITH DOT ABOVE + "\u1E57":"\\.{p}", // LATIN SMALL LETTER P WITH DOT ABOVE + "\u1E58":"\\.{R}", // LATIN CAPITAL LETTER R WITH DOT ABOVE + "\u1E59":"\\.{r}", // LATIN SMALL LETTER R WITH DOT ABOVE + "\u1E5A":"\\d{R}", // LATIN CAPITAL LETTER R WITH DOT BELOW + "\u1E5B":"\\d{r}", // LATIN SMALL LETTER R WITH DOT BELOW + "\u1E5E":"\\b{R}", // LATIN CAPITAL LETTER R WITH LINE BELOW + "\u1E5F":"\\b{r}", // LATIN SMALL LETTER R WITH LINE BELOW + "\u1E60":"\\.{S}", // LATIN CAPITAL LETTER S WITH DOT ABOVE + "\u1E61":"\\.{s}", // LATIN SMALL LETTER S WITH DOT ABOVE + "\u1E62":"\\d{S}", // LATIN CAPITAL LETTER S WITH DOT BELOW + "\u1E63":"\\d{s}", // LATIN SMALL LETTER S WITH DOT BELOW + "\u1E6A":"\\.{T}", // LATIN CAPITAL LETTER T WITH DOT ABOVE + "\u1E6B":"\\.{t}", // LATIN SMALL LETTER T WITH DOT ABOVE + "\u1E6C":"\\d{T}", // LATIN CAPITAL LETTER T WITH DOT BELOW + "\u1E6D":"\\d{t}", // LATIN SMALL LETTER T WITH DOT BELOW + "\u1E6E":"\\b{T}", // LATIN CAPITAL LETTER T WITH LINE BELOW + "\u1E6F":"\\b{t}", // LATIN SMALL LETTER T WITH LINE BELOW + "\u1E7C":"\\~{V}", // LATIN CAPITAL LETTER V WITH TILDE + "\u1E7D":"\\~{v}", // LATIN SMALL LETTER V WITH TILDE + "\u1E7E":"\\d{V}", // LATIN CAPITAL LETTER V WITH DOT BELOW + "\u1E7F":"\\d{v}", // LATIN SMALL LETTER V WITH DOT BELOW + "\u1E80":"\\`{W}", // LATIN CAPITAL LETTER W WITH GRAVE + "\u1E81":"\\`{w}", // LATIN SMALL LETTER W WITH GRAVE + "\u1E82":"\\''{W}", // LATIN CAPITAL LETTER W WITH ACUTE + "\u1E83":"\\''{w}", // LATIN SMALL LETTER W WITH ACUTE + "\u1E84":"\\~{W}", // LATIN CAPITAL LETTER W WITH DIAERESIS + "\u1E85":"\\~{w}", // LATIN SMALL LETTER W WITH DIAERESIS + "\u1E86":"\\.{W}", // LATIN CAPITAL LETTER W WITH DOT ABOVE + "\u1E87":"\\.{w}", // LATIN SMALL LETTER W WITH DOT ABOVE + "\u1E88":"\\d{W}", // LATIN CAPITAL LETTER W WITH DOT BELOW + "\u1E89":"\\d{w}", // LATIN SMALL LETTER W WITH DOT BELOW + "\u1E8A":"\\.{X}", // LATIN CAPITAL LETTER X WITH DOT ABOVE + "\u1E8B":"\\.{x}", // LATIN SMALL LETTER X WITH DOT ABOVE + "\u1E8C":"\\~{X}", // LATIN CAPITAL LETTER X WITH DIAERESIS + "\u1E8D":"\\~{x}", // LATIN SMALL LETTER X WITH DIAERESIS + "\u1E8E":"\\.{Y}", // LATIN CAPITAL LETTER Y WITH DOT ABOVE + "\u1E8F":"\\.{y}", // LATIN SMALL LETTER Y WITH DOT ABOVE + "\u1E90":"\\^{Z}", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + "\u1E91":"\\^{z}", // LATIN SMALL LETTER Z WITH CIRCUMFLEX + "\u1E92":"\\d{Z}", // LATIN CAPITAL LETTER Z WITH DOT BELOW + "\u1E93":"\\d{z}", // LATIN SMALL LETTER Z WITH DOT BELOW + "\u1E94":"\\b{Z}", // LATIN CAPITAL LETTER Z WITH LINE BELOW + "\u1E95":"\\b{z}", // LATIN SMALL LETTER Z WITH LINE BELOW + "\u1E96":"\\b{h}", // LATIN SMALL LETTER H WITH LINE BELOW + "\u1E97":"\\~{t}", // LATIN SMALL LETTER T WITH DIAERESIS + "\u1EA0":"\\d{A}", // LATIN CAPITAL LETTER A WITH DOT BELOW + "\u1EA1":"\\d{a}", // LATIN SMALL LETTER A WITH DOT BELOW + "\u1EB8":"\\d{E}", // LATIN CAPITAL LETTER E WITH DOT BELOW + "\u1EB9":"\\d{e}", // LATIN SMALL LETTER E WITH DOT BELOW + "\u1EBC":"\\~{E}", // LATIN CAPITAL LETTER E WITH TILDE + "\u1EBD":"\\~{e}", // LATIN SMALL LETTER E WITH TILDE + "\u1ECA":"\\d{I}", // LATIN CAPITAL LETTER I WITH DOT BELOW + "\u1ECB":"\\d{i}", // LATIN SMALL LETTER I WITH DOT BELOW + "\u1ECC":"\\d{O}", // LATIN CAPITAL LETTER O WITH DOT BELOW + "\u1ECD":"\\d{o}", // LATIN SMALL LETTER O WITH DOT BELOW + "\u1EE4":"\\d{U}", // LATIN CAPITAL LETTER U WITH DOT BELOW + "\u1EE5":"\\d{u}", // LATIN SMALL LETTER U WITH DOT BELOW + "\u1EF2":"\\`{Y}", // LATIN CAPITAL LETTER Y WITH GRAVE + "\u1EF3":"\\`{y}", // LATIN SMALL LETTER Y WITH GRAVE + "\u1EF4":"\\d{Y}", // LATIN CAPITAL LETTER Y WITH DOT BELOW + "\u1EF5":"\\d{y}", // LATIN SMALL LETTER Y WITH DOT BELOW + "\u1EF8":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH TILDE + "\u1EF9":"\\~{y}", // LATIN SMALL LETTER Y WITH TILDE + +}; + +/* unfortunately the mapping isn''t reversible - hence this second table - sigh! */ +var reversemappingTable = { + "\u00A0":"~", // NO-BREAK SPACE + "\u00A1":"{\\textexclamdown}", // INVERTED EXCLAMATION MARK + "\u00A2":"{\\textcent}", // CENT SIGN + "\u00A3":"{\\textsterling}", // POUND SIGN + "\u00A5":"{\\textyen}", // YEN SIGN + "\u00A6":"{\\textbrokenbar}", // BROKEN BAR + "\u00A7":"{\\textsection}", // SECTION SIGN + "\u00A8":"{\\textasciidieresis}", // DIAERESIS + "\u00A9":"{\\textcopyright}", // COPYRIGHT SIGN + "\u00AA":"{\\textordfeminine}", // FEMININE ORDINAL INDICATOR + "\u00AB":"{\\guillemotleft}", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + "\u00AC":"{\\textlnot}", // NOT SIGN + "\u00AE":"{\\textregistered}", // REGISTERED SIGN + "\u00AF":"{\\textasciimacron}", // MACRON + "\u00B0":"{\\textdegree}", // DEGREE SIGN + "\u00B1":"{\\textpm}", // PLUS-MINUS SIGN + "\u00B2":"{\\texttwosuperior}", // SUPERSCRIPT TWO + "\u00B3":"{\\textthreesuperior}", // SUPERSCRIPT THREE + "\u00B4":"{\\textasciiacute}", // ACUTE ACCENT + "\u00B5":"{\\textmu}", // MICRO SIGN + "\u00B6":"{\\textparagraph}", // PILCROW SIGN + "\u00B7":"{\\textperiodcentered}", // MIDDLE DOT + "\u00B8":"{\\c\\ }", // CEDILLA + "\u00B9":"{\\textonesuperior}", // SUPERSCRIPT ONE + "\u00BA":"{\\textordmasculine}", // MASCULINE ORDINAL INDICATOR + "\u00BB":"{\\guillemotright}", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + "\u00BC":"{\\textonequarter}", // VULGAR FRACTION ONE QUARTER + "\u00BD":"{\\textonehalf}", // VULGAR FRACTION ONE HALF + "\u00BE":"{\\textthreequarters}", // VULGAR FRACTION THREE QUARTERS + "\u00BF":"{\\textquestiondown}", // INVERTED QUESTION MARK + "\u00C6":"{\\AE}", // LATIN CAPITAL LETTER AE + "\u00D0":"{\\DH}", // LATIN CAPITAL LETTER ETH + "\u00D7":"{\\texttimes}", // MULTIPLICATION SIGN + "\u00DE":"{\\TH}", // LATIN CAPITAL LETTER THORN + "\u00DF":"{\\ss}", // LATIN SMALL LETTER SHARP S + "\u00E6":"{\\ae}", // LATIN SMALL LETTER AE + "\u00F0":"{\\dh}", // LATIN SMALL LETTER ETH + "\u00F7":"{\\textdiv}", // DIVISION SIGN + "\u00FE":"{\\th}", // LATIN SMALL LETTER THORN + "\u0131":"{\\i}", // LATIN SMALL LETTER DOTLESS I + "\u0132":"IJ", // LATIN CAPITAL LIGATURE IJ + "\u0133":"ij", // LATIN SMALL LIGATURE IJ + "\u0149":"''n", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + "\u014A":"{\\NG}", // LATIN CAPITAL LETTER ENG + "\u014B":"{\\ng}", // LATIN SMALL LETTER ENG + "\u0152":"{\\OE}", // LATIN CAPITAL LIGATURE OE + "\u0153":"{\\oe}", // LATIN SMALL LIGATURE OE + "\u02C6":"{\\textasciicircum}", // MODIFIER LETTER CIRCUMFLEX ACCENT + "\u02DC":"\\~{}", // SMALL TILDE + "\u02DD":"{\\textacutedbl}", // DOUBLE ACUTE ACCENT + "\u2001":" ", // EM QUAD + "\u2013":"{\\textendash}", // EN DASH + "\u2014":"{\\textemdash}", // EM DASH + "\u2015":"--", // HORIZONTAL BAR + "\u2016":"{\\textbardbl}", // DOUBLE VERTICAL LINE + "\u2017":"{\\textunderscore}", // DOUBLE LOW LINE + "\u2018":"{\\textquoteleft}", // LEFT SINGLE QUOTATION MARK + "\u2019":"{\\textquoteright}", // RIGHT SINGLE QUOTATION MARK + "\u201A":"{\\quotesinglbase}", // SINGLE LOW-9 QUOTATION MARK + "\u201C":"{\\textquotedblleft}", // LEFT DOUBLE QUOTATION MARK + "\u201D":"{\\textquotedblright}", // RIGHT DOUBLE QUOTATION MARK + "\u201E":"{\\quotedblbase}", // DOUBLE LOW-9 QUOTATION MARK + "\u201F":"{\\quotedblbase}", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK + "\u2020":"{\\textdagger}", // DAGGER + "\u2021":"{\\textdaggerdbl}", // DOUBLE DAGGER + "\u2022":"{\\textbullet}", // BULLET + "\u2026":"{\\textellipsis}", // HORIZONTAL ELLIPSIS + "\u2030":"{\\textperthousand}", // PER MILLE SIGN + "\u2034":"''''''", // TRIPLE PRIME + "\u2036":"``", // REVERSED DOUBLE PRIME + "\u2037":"```", // REVERSED TRIPLE PRIME + "\u2039":"{\\guilsinglleft}", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK + "\u203A":"{\\guilsinglright}", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + "\u203C":"!!", // DOUBLE EXCLAMATION MARK + "\u2044":"{\\textfractionsolidus}", // FRACTION SLASH + "\u2048":"?!", // QUESTION EXCLAMATION MARK + "\u2049":"!?", // EXCLAMATION QUESTION MARK + "\u2070":"$^{0}$", // SUPERSCRIPT ZERO + "\u2074":"$^{4}$", // SUPERSCRIPT FOUR + "\u2075":"$^{5}$", // SUPERSCRIPT FIVE + "\u2076":"$^{6}$", // SUPERSCRIPT SIX + "\u2077":"$^{7}$", // SUPERSCRIPT SEVEN + "\u2078":"$^{8}$", // SUPERSCRIPT EIGHT + "\u2079":"$^{9}$", // SUPERSCRIPT NINE + "\u207A":"$^{+}$", // SUPERSCRIPT PLUS SIGN + "\u207B":"$^{-}$", // SUPERSCRIPT MINUS + "\u207C":"$^{=}$", // SUPERSCRIPT EQUALS SIGN + "\u207D":"$^{(}$", // SUPERSCRIPT LEFT PARENTHESIS + "\u207E":"$^{)}$", // SUPERSCRIPT RIGHT PARENTHESIS + "\u207F":"$^{n}$", // SUPERSCRIPT LATIN SMALL LETTER N + "\u2080":"$_{0}$", // SUBSCRIPT ZERO + "\u2081":"$_{1}$", // SUBSCRIPT ONE + "\u2082":"$_{2}$", // SUBSCRIPT TWO + "\u2083":"$_{3}$", // SUBSCRIPT THREE + "\u2084":"$_{4}$", // SUBSCRIPT FOUR + "\u2085":"$_{5}$", // SUBSCRIPT FIVE + "\u2086":"$_{6}$", // SUBSCRIPT SIX + "\u2087":"$_{7}$", // SUBSCRIPT SEVEN + "\u2088":"$_{8}$", // SUBSCRIPT EIGHT + "\u2089":"$_{9}$", // SUBSCRIPT NINE + "\u208A":"$_{+}$", // SUBSCRIPT PLUS SIGN + "\u208B":"$_{-}$", // SUBSCRIPT MINUS + "\u208C":"$_{=}$", // SUBSCRIPT EQUALS SIGN + "\u208D":"$_{(}$", // SUBSCRIPT LEFT PARENTHESIS + "\u208E":"$_{)}$", // SUBSCRIPT RIGHT PARENTHESIS + "\u20AC":"{\\texteuro}", // EURO SIGN + "\u2100":"a/c", // ACCOUNT OF + "\u2101":"a/s", // ADDRESSED TO THE SUBJECT + "\u2103":"{\\textcelsius}", // DEGREE CELSIUS + "\u2105":"c/o", // CARE OF + "\u2106":"c/u", // CADA UNA + "\u2116":"{\\textnumero}", // NUMERO SIGN + "\u2117":"{\\textcircledP}", // SOUND RECORDING COPYRIGHT + "\u2120":"{\\textservicemark}", // SERVICE MARK + "\u2121":"{TEL}", // TELEPHONE SIGN + "\u2122":"{\\texttrademark}", // TRADE MARK SIGN + "\u2126":"{\\textohm}", // OHM SIGN + "\u212E":"{\\textestimated}", // ESTIMATED SYMBOL + "\u2153":" 1/3", // VULGAR FRACTION ONE THIRD + "\u2154":" 2/3", // VULGAR FRACTION TWO THIRDS + "\u2155":" 1/5", // VULGAR FRACTION ONE FIFTH + "\u2156":" 2/5", // VULGAR FRACTION TWO FIFTHS + "\u2157":" 3/5", // VULGAR FRACTION THREE FIFTHS + "\u2158":" 4/5", // VULGAR FRACTION FOUR FIFTHS + "\u2159":" 1/6", // VULGAR FRACTION ONE SIXTH + "\u215A":" 5/6", // VULGAR FRACTION FIVE SIXTHS + "\u215B":" 1/8", // VULGAR FRACTION ONE EIGHTH + "\u215C":" 3/8", // VULGAR FRACTION THREE EIGHTHS + "\u215D":" 5/8", // VULGAR FRACTION FIVE EIGHTHS + "\u215E":" 7/8", // VULGAR FRACTION SEVEN EIGHTHS + "\u215F":" 1/", // FRACTION NUMERATOR ONE + "\u2190":"{\\textleftarrow}", // LEFTWARDS ARROW + "\u2191":"{\\textuparrow}", // UPWARDS ARROW + "\u2192":"{\\textrightarrow}", // RIGHTWARDS ARROW + "\u2193":"{\\textdownarrow}", // DOWNWARDS ARROW + "\u2194":"<->", // LEFT RIGHT ARROW + "\u21D0":"<=", // LEFTWARDS DOUBLE ARROW + "\u21D2":"=>", // RIGHTWARDS DOUBLE ARROW + "\u21D4":"<=>", // LEFT RIGHT DOUBLE ARROW + "\u221E":"$\\infty$", // INFINITY + "\u2225":"||", // PARALLEL TO + "\u223C":"\\~{}", // TILDE OPERATOR + "\u2260":"/=", // NOT EQUAL TO + "\u2264":"<=", // LESS-THAN OR EQUAL TO + "\u2265":">=", // GREATER-THAN OR EQUAL TO + "\u226A":"<<", // MUCH LESS-THAN + "\u226B":">>", // MUCH GREATER-THAN + "\u2295":"(+)", // CIRCLED PLUS + "\u2296":"(-)", // CIRCLED MINUS + "\u2297":"(x)", // CIRCLED TIMES + "\u2298":"(/)", // CIRCLED DIVISION SLASH + "\u22A2":"|-", // RIGHT TACK + "\u22A3":"-|", // LEFT TACK + "\u22A6":"|-", // ASSERTION + "\u22A7":"|=", // MODELS + "\u22A8":"|=", // TRUE + "\u22A9":"||-", // FORCES + "\u22D5":"$\\#$", // EQUAL AND PARALLEL TO + "\u22D8":"<<<", // VERY MUCH LESS-THAN + "\u22D9":">>>", // VERY MUCH GREATER-THAN + "\u22EF":"...", // MIDLINE HORIZONTAL ELLIPSIS + "\u2329":"{\\textlangle}", // LEFT-POINTING ANGLE BRACKET + "\u232A":"{\\textrangle}", // RIGHT-POINTING ANGLE BRACKET + "\u2423":"{\\textvisiblespace}", // OPEN BOX + "\u2425":"///", // SYMBOL FOR DELETE FORM TWO + "\u25E6":"{\\textopenbullet}", // WHITE BULLET + "\u2639":":-(", // WHITE FROWNING FACE + "\u263A":":-)", // WHITE SMILING FACE + "\u263B":"(-:", // BLACK SMILING FACE + "\u266F":"$\\#$", // MUSIC SHARP SIGN + "\u2701":"$\\%<$", // UPPER BLADE SCISSORS + "\u2702":"$\\%<$", // BLACK SCISSORS + "\u2703":"$\\%<$", // LOWER BLADE SCISSORS + "\u2704":"$\\%<$", // WHITE SCISSORS + "\uFB00":"ff", // LATIN SMALL LIGATURE FF + "\uFB01":"fi", // LATIN SMALL LIGATURE FI + "\uFB02":"fl", // LATIN SMALL LIGATURE FL + "\uFB03":"ffi", // LATIN SMALL LIGATURE FFI + "\uFB04":"ffl", // LATIN SMALL LIGATURE FFL +/* Derived accented characters */ + "\u00C0":"\\`{A}", // LATIN CAPITAL LETTER A WITH GRAVE + "\u00C1":"\\''{A}", // LATIN CAPITAL LETTER A WITH ACUTE + "\u00C2":"\\^{A}", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX + "\u00C3":"\\~{A}", // LATIN CAPITAL LETTER A WITH TILDE + "\u00C4":"\\~{A}", // LATIN CAPITAL LETTER A WITH DIAERESIS + "\u00C7":"\\c{C}", // LATIN CAPITAL LETTER C WITH CEDILLA + "\u00C8":"\\`{E}", // LATIN CAPITAL LETTER E WITH GRAVE + "\u00C9":"\\''{E}", // LATIN CAPITAL LETTER E WITH ACUTE + "\u00CA":"\\^{E}", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX + "\u00CB":"\\~{E}", // LATIN CAPITAL LETTER E WITH DIAERESIS + "\u00CC":"\\`{I}", // LATIN CAPITAL LETTER I WITH GRAVE + "\u00CD":"\\''{I}", // LATIN CAPITAL LETTER I WITH ACUTE + "\u00CE":"\\^{I}", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX + "\u00CF":"\\~{I}", // LATIN CAPITAL LETTER I WITH DIAERESIS + "\u00D1":"\\~{N}", // LATIN CAPITAL LETTER N WITH TILDE + "\u00D2":"\\`{O}", // LATIN CAPITAL LETTER O WITH GRAVE + "\u00D3":"\\''{O}", // LATIN CAPITAL LETTER O WITH ACUTE + "\u00D4":"\\^{O}", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX + "\u00D5":"\\~{O}", // LATIN CAPITAL LETTER O WITH TILDE + "\u00D6":"\\~{O}", // LATIN CAPITAL LETTER O WITH DIAERESIS + "\u00D9":"\\`{U}", // LATIN CAPITAL LETTER U WITH GRAVE + "\u00DA":"\\''{U}", // LATIN CAPITAL LETTER U WITH ACUTE + "\u00DB":"\\^{U}", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX + "\u00DC":"\\~{U}", // LATIN CAPITAL LETTER U WITH DIAERESIS + "\u00DD":"\\''{Y}", // LATIN CAPITAL LETTER Y WITH ACUTE + "\u00E0":"\\`{a}", // LATIN SMALL LETTER A WITH GRAVE + "\u00E1":"\\''{a}", // LATIN SMALL LETTER A WITH ACUTE + "\u00E2":"\\^{a}", // LATIN SMALL LETTER A WITH CIRCUMFLEX + "\u00E3":"\\~{a}", // LATIN SMALL LETTER A WITH TILDE + "\u00E4":"\\~{a}", // LATIN SMALL LETTER A WITH DIAERESIS + "\u00E7":"\\c{c}", // LATIN SMALL LETTER C WITH CEDILLA + "\u00E8":"\\`{e}", // LATIN SMALL LETTER E WITH GRAVE + "\u00E9":"\\''{e}", // LATIN SMALL LETTER E WITH ACUTE + "\u00EA":"\\^{e}", // LATIN SMALL LETTER E WITH CIRCUMFLEX + "\u00EB":"\\~{e}", // LATIN SMALL LETTER E WITH DIAERESIS + "\u00EC":"\\`{i}", // LATIN SMALL LETTER I WITH GRAVE + "\u00ED":"\\''{i}", // LATIN SMALL LETTER I WITH ACUTE + "\u00EE":"\\^{i}", // LATIN SMALL LETTER I WITH CIRCUMFLEX + "\u00EF":"\\~{i}", // LATIN SMALL LETTER I WITH DIAERESIS + "\u00F1":"\\~{n}", // LATIN SMALL LETTER N WITH TILDE + "\u00F2":"\\`{o}", // LATIN SMALL LETTER O WITH GRAVE + "\u00F3":"\\''{o}", // LATIN SMALL LETTER O WITH ACUTE + "\u00F4":"\\^{o}", // LATIN SMALL LETTER O WITH CIRCUMFLEX + "\u00F5":"\\~{o}", // LATIN SMALL LETTER O WITH TILDE + "\u00F6":"\\~{o}", // LATIN SMALL LETTER O WITH DIAERESIS + "\u00F9":"\\`{u}", // LATIN SMALL LETTER U WITH GRAVE + "\u00FA":"\\''{u}", // LATIN SMALL LETTER U WITH ACUTE + "\u00FB":"\\^{u}", // LATIN SMALL LETTER U WITH CIRCUMFLEX + "\u00FC":"\\~{u}", // LATIN SMALL LETTER U WITH DIAERESIS + "\u00FD":"\\''{y}", // LATIN SMALL LETTER Y WITH ACUTE + "\u00FF":"\\~{y}", // LATIN SMALL LETTER Y WITH DIAERESIS + "\u0100":"\\={A}", // LATIN CAPITAL LETTER A WITH MACRON + "\u0101":"\\={a}", // LATIN SMALL LETTER A WITH MACRON + "\u0102":"\\u{A}", // LATIN CAPITAL LETTER A WITH BREVE + "\u0103":"\\u{a}", // LATIN SMALL LETTER A WITH BREVE + "\u0104":"\\k{A}", // LATIN CAPITAL LETTER A WITH OGONEK + "\u0105":"\\k{a}", // LATIN SMALL LETTER A WITH OGONEK + "\u0106":"\\''{C}", // LATIN CAPITAL LETTER C WITH ACUTE + "\u0107":"\\''{c}", // LATIN SMALL LETTER C WITH ACUTE + "\u0108":"\\^{C}", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX + "\u0109":"\\^{c}", // LATIN SMALL LETTER C WITH CIRCUMFLEX + "\u010A":"\\.{C}", // LATIN CAPITAL LETTER C WITH DOT ABOVE + "\u010B":"\\.{c}", // LATIN SMALL LETTER C WITH DOT ABOVE + "\u010C":"\\v{C}", // LATIN CAPITAL LETTER C WITH CARON + "\u010D":"\\v{c}", // LATIN SMALL LETTER C WITH CARON + "\u010E":"\\v{D}", // LATIN CAPITAL LETTER D WITH CARON + "\u010F":"\\v{d}", // LATIN SMALL LETTER D WITH CARON + "\u0112":"\\={E}", // LATIN CAPITAL LETTER E WITH MACRON + "\u0113":"\\={e}", // LATIN SMALL LETTER E WITH MACRON + "\u0114":"\\u{E}", // LATIN CAPITAL LETTER E WITH BREVE + "\u0115":"\\u{e}", // LATIN SMALL LETTER E WITH BREVE + "\u0116":"\\.{E}", // LATIN CAPITAL LETTER E WITH DOT ABOVE + "\u0117":"\\.{e}", // LATIN SMALL LETTER E WITH DOT ABOVE + "\u0118":"\\k{E}", // LATIN CAPITAL LETTER E WITH OGONEK + "\u0119":"\\k{e}", // LATIN SMALL LETTER E WITH OGONEK + "\u011A":"\\v{E}", // LATIN CAPITAL LETTER E WITH CARON + "\u011B":"\\v{e}", // LATIN SMALL LETTER E WITH CARON + "\u011C":"\\^{G}", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX + "\u011D":"\\^{g}", // LATIN SMALL LETTER G WITH CIRCUMFLEX + "\u011E":"\\u{G}", // LATIN CAPITAL LETTER G WITH BREVE + "\u011F":"\\u{g}", // LATIN SMALL LETTER G WITH BREVE + "\u0120":"\\.{G}", // LATIN CAPITAL LETTER G WITH DOT ABOVE + "\u0121":"\\.{g}", // LATIN SMALL LETTER G WITH DOT ABOVE + "\u0122":"\\c{G}", // LATIN CAPITAL LETTER G WITH CEDILLA + "\u0123":"\\c{g}", // LATIN SMALL LETTER G WITH CEDILLA + "\u0124":"\\^{H}", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX + "\u0125":"\\^{h}", // LATIN SMALL LETTER H WITH CIRCUMFLEX + "\u0128":"\\~{I}", // LATIN CAPITAL LETTER I WITH TILDE + "\u0129":"\\~{i}", // LATIN SMALL LETTER I WITH TILDE + "\u012A":"\\={I}", // LATIN CAPITAL LETTER I WITH MACRON + "\u012B":"\\={i}", // LATIN SMALL LETTER I WITH MACRON + "\u012C":"\\u{I}", // LATIN CAPITAL LETTER I WITH BREVE + "\u012D":"\\u{i}", // LATIN SMALL LETTER I WITH BREVE + "\u012E":"\\k{I}", // LATIN CAPITAL LETTER I WITH OGONEK + "\u012F":"\\k{i}", // LATIN SMALL LETTER I WITH OGONEK + "\u0130":"\\.{I}", // LATIN CAPITAL LETTER I WITH DOT ABOVE + "\u0134":"\\^{J}", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX + "\u0135":"\\^{j}", // LATIN SMALL LETTER J WITH CIRCUMFLEX + "\u0136":"\\c{K}", // LATIN CAPITAL LETTER K WITH CEDILLA + "\u0137":"\\c{k}", // LATIN SMALL LETTER K WITH CEDILLA + "\u0139":"\\''{L}", // LATIN CAPITAL LETTER L WITH ACUTE + "\u013A":"\\''{l}", // LATIN SMALL LETTER L WITH ACUTE + "\u013B":"\\c{L}", // LATIN CAPITAL LETTER L WITH CEDILLA + "\u013C":"\\c{l}", // LATIN SMALL LETTER L WITH CEDILLA + "\u013D":"\\v{L}", // LATIN CAPITAL LETTER L WITH CARON + "\u013E":"\\v{l}", // LATIN SMALL LETTER L WITH CARON + "\u0143":"\\''{N}", // LATIN CAPITAL LETTER N WITH ACUTE + "\u0144":"\\''{n}", // LATIN SMALL LETTER N WITH ACUTE + "\u0145":"\\c{N}", // LATIN CAPITAL LETTER N WITH CEDILLA + "\u0146":"\\c{n}", // LATIN SMALL LETTER N WITH CEDILLA + "\u0147":"\\v{N}", // LATIN CAPITAL LETTER N WITH CARON + "\u0148":"\\v{n}", // LATIN SMALL LETTER N WITH CARON + "\u014C":"\\={O}", // LATIN CAPITAL LETTER O WITH MACRON + "\u014D":"\\={o}", // LATIN SMALL LETTER O WITH MACRON + "\u014E":"\\u{O}", // LATIN CAPITAL LETTER O WITH BREVE + "\u014F":"\\u{o}", // LATIN SMALL LETTER O WITH BREVE + "\u0150":"\\H{O}", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + "\u0151":"\\H{o}", // LATIN SMALL LETTER O WITH DOUBLE ACUTE + "\u0154":"\\''{R}", // LATIN CAPITAL LETTER R WITH ACUTE + "\u0155":"\\''{r}", // LATIN SMALL LETTER R WITH ACUTE + "\u0156":"\\c{R}", // LATIN CAPITAL LETTER R WITH CEDILLA + "\u0157":"\\c{r}", // LATIN SMALL LETTER R WITH CEDILLA + "\u0158":"\\v{R}", // LATIN CAPITAL LETTER R WITH CARON + "\u0159":"\\v{r}", // LATIN SMALL LETTER R WITH CARON + "\u015A":"\\''{S}", // LATIN CAPITAL LETTER S WITH ACUTE + "\u015B":"\\''{s}", // LATIN SMALL LETTER S WITH ACUTE + "\u015C":"\\^{S}", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX + "\u015D":"\\^{s}", // LATIN SMALL LETTER S WITH CIRCUMFLEX + "\u015E":"\\c{S}", // LATIN CAPITAL LETTER S WITH CEDILLA + "\u015F":"\\c{s}", // LATIN SMALL LETTER S WITH CEDILLA + "\u0160":"\\v{S}", // LATIN CAPITAL LETTER S WITH CARON + "\u0161":"\\v{s}", // LATIN SMALL LETTER S WITH CARON + "\u0162":"\\c{T}", // LATIN CAPITAL LETTER T WITH CEDILLA + "\u0163":"\\c{t}", // LATIN SMALL LETTER T WITH CEDILLA + "\u0164":"\\v{T}", // LATIN CAPITAL LETTER T WITH CARON + "\u0165":"\\v{t}", // LATIN SMALL LETTER T WITH CARON + "\u0168":"\\~{U}", // LATIN CAPITAL LETTER U WITH TILDE + "\u0169":"\\~{u}", // LATIN SMALL LETTER U WITH TILDE + "\u016A":"\\={U}", // LATIN CAPITAL LETTER U WITH MACRON + "\u016B":"\\={u}", // LATIN SMALL LETTER U WITH MACRON + "\u016C":"\\u{U}", // LATIN CAPITAL LETTER U WITH BREVE + "\u016D":"\\u{u}", // LATIN SMALL LETTER U WITH BREVE + "\u0170":"\\H{U}", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + "\u0171":"\\H{u}", // LATIN SMALL LETTER U WITH DOUBLE ACUTE + "\u0172":"\\k{U}", // LATIN CAPITAL LETTER U WITH OGONEK + "\u0173":"\\k{u}", // LATIN SMALL LETTER U WITH OGONEK + "\u0174":"\\^{W}", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX + "\u0175":"\\^{w}", // LATIN SMALL LETTER W WITH CIRCUMFLEX + "\u0176":"\\^{Y}", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + "\u0177":"\\^{y}", // LATIN SMALL LETTER Y WITH CIRCUMFLEX + "\u0178":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH DIAERESIS + "\u0179":"\\''{Z}", // LATIN CAPITAL LETTER Z WITH ACUTE + "\u017A":"\\''{z}", // LATIN SMALL LETTER Z WITH ACUTE + "\u017B":"\\.{Z}", // LATIN CAPITAL LETTER Z WITH DOT ABOVE + "\u017C":"\\.{z}", // LATIN SMALL LETTER Z WITH DOT ABOVE + "\u017D":"\\v{Z}", // LATIN CAPITAL LETTER Z WITH CARON + "\u017E":"\\v{z}", // LATIN SMALL LETTER Z WITH CARON + "\u01CD":"\\v{A}", // LATIN CAPITAL LETTER A WITH CARON + "\u01CE":"\\v{a}", // LATIN SMALL LETTER A WITH CARON + "\u01CF":"\\v{I}", // LATIN CAPITAL LETTER I WITH CARON + "\u01D0":"\\v{i}", // LATIN SMALL LETTER I WITH CARON + "\u01D1":"\\v{O}", // LATIN CAPITAL LETTER O WITH CARON + "\u01D2":"\\v{o}", // LATIN SMALL LETTER O WITH CARON + "\u01D3":"\\v{U}", // LATIN CAPITAL LETTER U WITH CARON + "\u01D4":"\\v{u}", // LATIN SMALL LETTER U WITH CARON + "\u01E6":"\\v{G}", // LATIN CAPITAL LETTER G WITH CARON + "\u01E7":"\\v{g}", // LATIN SMALL LETTER G WITH CARON + "\u01E8":"\\v{K}", // LATIN CAPITAL LETTER K WITH CARON + "\u01E9":"\\v{k}", // LATIN SMALL LETTER K WITH CARON + "\u01EA":"\\k{O}", // LATIN CAPITAL LETTER O WITH OGONEK + "\u01EB":"\\k{o}", // LATIN SMALL LETTER O WITH OGONEK + "\u01F0":"\\v{j}", // LATIN SMALL LETTER J WITH CARON + "\u01F4":"\\''{G}", // LATIN CAPITAL LETTER G WITH ACUTE + "\u01F5":"\\''{g}", // LATIN SMALL LETTER G WITH ACUTE + "\u1E02":"\\.{B}", // LATIN CAPITAL LETTER B WITH DOT ABOVE + "\u1E03":"\\.{b}", // LATIN SMALL LETTER B WITH DOT ABOVE + "\u1E04":"\\d{B}", // LATIN CAPITAL LETTER B WITH DOT BELOW + "\u1E05":"\\d{b}", // LATIN SMALL LETTER B WITH DOT BELOW + "\u1E06":"\\b{B}", // LATIN CAPITAL LETTER B WITH LINE BELOW + "\u1E07":"\\b{b}", // LATIN SMALL LETTER B WITH LINE BELOW + "\u1E0A":"\\.{D}", // LATIN CAPITAL LETTER D WITH DOT ABOVE + "\u1E0B":"\\.{d}", // LATIN SMALL LETTER D WITH DOT ABOVE + "\u1E0C":"\\d{D}", // LATIN CAPITAL LETTER D WITH DOT BELOW + "\u1E0D":"\\d{d}", // LATIN SMALL LETTER D WITH DOT BELOW + "\u1E0E":"\\b{D}", // LATIN CAPITAL LETTER D WITH LINE BELOW + "\u1E0F":"\\b{d}", // LATIN SMALL LETTER D WITH LINE BELOW + "\u1E10":"\\c{D}", // LATIN CAPITAL LETTER D WITH CEDILLA + "\u1E11":"\\c{d}", // LATIN SMALL LETTER D WITH CEDILLA + "\u1E1E":"\\.{F}", // LATIN CAPITAL LETTER F WITH DOT ABOVE + "\u1E1F":"\\.{f}", // LATIN SMALL LETTER F WITH DOT ABOVE + "\u1E20":"\\={G}", // LATIN CAPITAL LETTER G WITH MACRON + "\u1E21":"\\={g}", // LATIN SMALL LETTER G WITH MACRON + "\u1E22":"\\.{H}", // LATIN CAPITAL LETTER H WITH DOT ABOVE + "\u1E23":"\\.{h}", // LATIN SMALL LETTER H WITH DOT ABOVE + "\u1E24":"\\d{H}", // LATIN CAPITAL LETTER H WITH DOT BELOW + "\u1E25":"\\d{h}", // LATIN SMALL LETTER H WITH DOT BELOW + "\u1E26":"\\~{H}", // LATIN CAPITAL LETTER H WITH DIAERESIS + "\u1E27":"\\~{h}", // LATIN SMALL LETTER H WITH DIAERESIS + "\u1E28":"\\c{H}", // LATIN CAPITAL LETTER H WITH CEDILLA + "\u1E29":"\\c{h}", // LATIN SMALL LETTER H WITH CEDILLA + "\u1E30":"\\''{K}", // LATIN CAPITAL LETTER K WITH ACUTE + "\u1E31":"\\''{k}", // LATIN SMALL LETTER K WITH ACUTE + "\u1E32":"\\d{K}", // LATIN CAPITAL LETTER K WITH DOT BELOW + "\u1E33":"\\d{k}", // LATIN SMALL LETTER K WITH DOT BELOW + "\u1E34":"\\b{K}", // LATIN CAPITAL LETTER K WITH LINE BELOW + "\u1E35":"\\b{k}", // LATIN SMALL LETTER K WITH LINE BELOW + "\u1E36":"\\d{L}", // LATIN CAPITAL LETTER L WITH DOT BELOW + "\u1E37":"\\d{l}", // LATIN SMALL LETTER L WITH DOT BELOW + "\u1E3A":"\\b{L}", // LATIN CAPITAL LETTER L WITH LINE BELOW + "\u1E3B":"\\b{l}", // LATIN SMALL LETTER L WITH LINE BELOW + "\u1E3E":"\\''{M}", // LATIN CAPITAL LETTER M WITH ACUTE + "\u1E3F":"\\''{m}", // LATIN SMALL LETTER M WITH ACUTE + "\u1E40":"\\.{M}", // LATIN CAPITAL LETTER M WITH DOT ABOVE + "\u1E41":"\\.{m}", // LATIN SMALL LETTER M WITH DOT ABOVE + "\u1E42":"\\d{M}", // LATIN CAPITAL LETTER M WITH DOT BELOW + "\u1E43":"\\d{m}", // LATIN SMALL LETTER M WITH DOT BELOW + "\u1E44":"\\.{N}", // LATIN CAPITAL LETTER N WITH DOT ABOVE + "\u1E45":"\\.{n}", // LATIN SMALL LETTER N WITH DOT ABOVE + "\u1E46":"\\d{N}", // LATIN CAPITAL LETTER N WITH DOT BELOW + "\u1E47":"\\d{n}", // LATIN SMALL LETTER N WITH DOT BELOW + "\u1E48":"\\b{N}", // LATIN CAPITAL LETTER N WITH LINE BELOW + "\u1E49":"\\b{n}", // LATIN SMALL LETTER N WITH LINE BELOW + "\u1E54":"\\''{P}", // LATIN CAPITAL LETTER P WITH ACUTE + "\u1E55":"\\''{p}", // LATIN SMALL LETTER P WITH ACUTE + "\u1E56":"\\.{P}", // LATIN CAPITAL LETTER P WITH DOT ABOVE + "\u1E57":"\\.{p}", // LATIN SMALL LETTER P WITH DOT ABOVE + "\u1E58":"\\.{R}", // LATIN CAPITAL LETTER R WITH DOT ABOVE + "\u1E59":"\\.{r}", // LATIN SMALL LETTER R WITH DOT ABOVE + "\u1E5A":"\\d{R}", // LATIN CAPITAL LETTER R WITH DOT BELOW + "\u1E5B":"\\d{r}", // LATIN SMALL LETTER R WITH DOT BELOW + "\u1E5E":"\\b{R}", // LATIN CAPITAL LETTER R WITH LINE BELOW + "\u1E5F":"\\b{r}", // LATIN SMALL LETTER R WITH LINE BELOW + "\u1E60":"\\.{S}", // LATIN CAPITAL LETTER S WITH DOT ABOVE + "\u1E61":"\\.{s}", // LATIN SMALL LETTER S WITH DOT ABOVE + "\u1E62":"\\d{S}", // LATIN CAPITAL LETTER S WITH DOT BELOW + "\u1E63":"\\d{s}", // LATIN SMALL LETTER S WITH DOT BELOW + "\u1E6A":"\\.{T}", // LATIN CAPITAL LETTER T WITH DOT ABOVE + "\u1E6B":"\\.{t}", // LATIN SMALL LETTER T WITH DOT ABOVE + "\u1E6C":"\\d{T}", // LATIN CAPITAL LETTER T WITH DOT BELOW + "\u1E6D":"\\d{t}", // LATIN SMALL LETTER T WITH DOT BELOW + "\u1E6E":"\\b{T}", // LATIN CAPITAL LETTER T WITH LINE BELOW + "\u1E6F":"\\b{t}", // LATIN SMALL LETTER T WITH LINE BELOW + "\u1E7C":"\\~{V}", // LATIN CAPITAL LETTER V WITH TILDE + "\u1E7D":"\\~{v}", // LATIN SMALL LETTER V WITH TILDE + "\u1E7E":"\\d{V}", // LATIN CAPITAL LETTER V WITH DOT BELOW + "\u1E7F":"\\d{v}", // LATIN SMALL LETTER V WITH DOT BELOW + "\u1E80":"\\`{W}", // LATIN CAPITAL LETTER W WITH GRAVE + "\u1E81":"\\`{w}", // LATIN SMALL LETTER W WITH GRAVE + "\u1E82":"\\''{W}", // LATIN CAPITAL LETTER W WITH ACUTE + "\u1E83":"\\''{w}", // LATIN SMALL LETTER W WITH ACUTE + "\u1E84":"\\~{W}", // LATIN CAPITAL LETTER W WITH DIAERESIS + "\u1E85":"\\~{w}", // LATIN SMALL LETTER W WITH DIAERESIS + "\u1E86":"\\.{W}", // LATIN CAPITAL LETTER W WITH DOT ABOVE + "\u1E87":"\\.{w}", // LATIN SMALL LETTER W WITH DOT ABOVE + "\u1E88":"\\d{W}", // LATIN CAPITAL LETTER W WITH DOT BELOW + "\u1E89":"\\d{w}", // LATIN SMALL LETTER W WITH DOT BELOW + "\u1E8A":"\\.{X}", // LATIN CAPITAL LETTER X WITH DOT ABOVE + "\u1E8B":"\\.{x}", // LATIN SMALL LETTER X WITH DOT ABOVE + "\u1E8C":"\\~{X}", // LATIN CAPITAL LETTER X WITH DIAERESIS + "\u1E8D":"\\~{x}", // LATIN SMALL LETTER X WITH DIAERESIS + "\u1E8E":"\\.{Y}", // LATIN CAPITAL LETTER Y WITH DOT ABOVE + "\u1E8F":"\\.{y}", // LATIN SMALL LETTER Y WITH DOT ABOVE + "\u1E90":"\\^{Z}", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + "\u1E91":"\\^{z}", // LATIN SMALL LETTER Z WITH CIRCUMFLEX + "\u1E92":"\\d{Z}", // LATIN CAPITAL LETTER Z WITH DOT BELOW + "\u1E93":"\\d{z}", // LATIN SMALL LETTER Z WITH DOT BELOW + "\u1E94":"\\b{Z}", // LATIN CAPITAL LETTER Z WITH LINE BELOW + "\u1E95":"\\b{z}", // LATIN SMALL LETTER Z WITH LINE BELOW + "\u1E96":"\\b{h}", // LATIN SMALL LETTER H WITH LINE BELOW + "\u1E97":"\\~{t}", // LATIN SMALL LETTER T WITH DIAERESIS + "\u1EA0":"\\d{A}", // LATIN CAPITAL LETTER A WITH DOT BELOW + "\u1EA1":"\\d{a}", // LATIN SMALL LETTER A WITH DOT BELOW + "\u1EB8":"\\d{E}", // LATIN CAPITAL LETTER E WITH DOT BELOW + "\u1EB9":"\\d{e}", // LATIN SMALL LETTER E WITH DOT BELOW + "\u1EBC":"\\~{E}", // LATIN CAPITAL LETTER E WITH TILDE + "\u1EBD":"\\~{e}", // LATIN SMALL LETTER E WITH TILDE + "\u1ECA":"\\d{I}", // LATIN CAPITAL LETTER I WITH DOT BELOW + "\u1ECB":"\\d{i}", // LATIN SMALL LETTER I WITH DOT BELOW + "\u1ECC":"\\d{O}", // LATIN CAPITAL LETTER O WITH DOT BELOW + "\u1ECD":"\\d{o}", // LATIN SMALL LETTER O WITH DOT BELOW + "\u1EE4":"\\d{U}", // LATIN CAPITAL LETTER U WITH DOT BELOW + "\u1EE5":"\\d{u}", // LATIN SMALL LETTER U WITH DOT BELOW + "\u1EF2":"\\`{Y}", // LATIN CAPITAL LETTER Y WITH GRAVE + "\u1EF3":"\\`{y}", // LATIN SMALL LETTER Y WITH GRAVE + "\u1EF4":"\\d{Y}", // LATIN CAPITAL LETTER Y WITH DOT BELOW + "\u1EF5":"\\d{y}", // LATIN SMALL LETTER Y WITH DOT BELOW + "\u1EF8":"\\~{Y}", // LATIN CAPITAL LETTER Y WITH TILDE + "\u1EF9":"\\~{y}", // LATIN SMALL LETTER Y WITH TILDE + +}; + +var alwaysMap = { + "|":"{\\textbar}", + "<":"{\\textless}", + ">":"{\\textgreater}", + "~":"{\\textasciitilde}", + "^":"{\\textasciicircum}", + "\\":"{\\textbackslash}" }; function processField(item, field, value) { @@ -15951,8 +17863,17 @@ function getFieldValue() { if(value.length > 1) { // replace accented characters (yucky slow) - for(var i in accentedCharacters) { - value = value.replace(accentedCharacters[i], i); + for (var i in reversemappingTable) { // really really slow! + var mapped = reversemappingTable[i]; + if (value.indexOf(mapped) != -1) { + Zotero.debug("Replace " + mapped + " in " + value + " with " + i); + value = value.replace(mapped, i, "g"); + } + mapped = mapped.replace(/[{}]/, ""); + if (value.indexOf(mapped) != -1) { + Zotero.debug("Replace(2) " + mapped + " in " + value + " with " + i); + value = value.replace(mapped, i, "g"); + } } // kill braces @@ -16018,16 +17939,11 @@ function beginRecord(type, closeChar) { } function doImport() { - // make regular expressions out of values - var newArray = new Array(); - for(var i in accentedCharacters) { - newArray[String.fromCharCode(i)] = new RegExp(accentedCharacters[i].replace(/\\/g, "\\\\"), "g"); - } - accentedCharacters = newArray; - var read = "", text = "", recordCloseElement = false; var type = false; + Zotero.setCharacterSet("UTF-8"); + while(read = Zotero.read(1)) { if(read == "@") { type = ""; @@ -16047,55 +17963,36 @@ function doImport() { // some fields are, in fact, macros. If that is the case then we should not put the // data in the braces as it will cause the macros to not expand properly -function writeMacroField(field, value) { - if (!value) { - return; - } - - value = value.toString(); - // replace naughty chars - value = value.replace(/([#$%&~_^\\{}])/g, "\\$1"); - - // replace accented characters - for (var i in accentedCharacters) { - value = value.replace(accentedCharacters[i], i); - } - // replace other accented characters - value = value.replace(/[\u0080-\uFFFF]/g, "?") - - // write - Zotero.write(",\n\t"+field+" = "+value); +function writeField(field, value, isMacro) { + if(!value) return; + value = value + ""; // convert integers to strings + Zotero.write(",\n\t"+field+" = "); + if(!isMacro) Zotero.write("{"); + // I hope these are all the escape characters! + value = value.replace(/[|\<\>\~\^\\]/g, mapEscape).replace(/([\#\$\%\&\_])/g, "\\$1"); + if (!Zotero.getOption("UTF8")) { + value = value.replace(/[\u0080-\uFFFF]/g, mapAccent); + } + Zotero.write(value); + if(!isMacro) Zotero.write("}"); } -function writeField(field, value) { - if(!value) return; - - value = value.toString(); - // replace naughty chars - value = value.replace(/([#$%&~_^\\{}])/g, "\\$1"); - // we assume people who use braces in their title probably did so intentionally - if (field == "title") { - value = value.replace(/\\([{}])/g, "$1"); - } - // replace accented characters - for (var i in accentedCharacters) { - value = value.replace(accentedCharacters[i], i); - } - // replace other accented characters - value = value.replace(/[\u0080-\uFFFF]/g, "?") - - // write - Zotero.write(",\n\t"+field+" = {"+value+"}"); +function mapEscape(character) { + return alwaysMap[character]; +} + +function mapAccent(character) { + return (mappingTable[character] ? mappingTable[character] : "?"); } var numberRe = /^[0-9]+/; function doExport() { - // switch keys and values of accented characters - var newArray = new Array(); - for(var i in accentedCharacters) { - newArray["{"+accentedCharacters[i]+"}"] = new RegExp(String.fromCharCode(i), "g"); + if(Zotero.getOption("UTF8")) { + Zotero.setCharacterSet("UTF-8"); + } + else { + Zotero.setCharacterSet("us-ascii"); } - accentedCharacters = newArray; //Zotero.write("% BibTeX export generated by Zotero "+Zotero.Utilities.getVersion()); @@ -16110,33 +18007,37 @@ function doExport() { // create a unique citation key var basekey = ""; if(item.creators && item.creators[0] && item.creators[0].lastName) { - basekey = item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,""); + basekey += "_" + item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,""); } // include the item title as part of the citation key if (item["title"]) { // this is a list of words that should not appear as part of the citation key - var bannedTitleKeys = {"a" : 1, "an" : 1, "does": 1, "how": 1, "it''s": 1, "on" : 1, "some": 1, "the" : 1, "this" : 1, "why" : 1 }; - var titleElements = item["title"].split(" "); - var appendKey = ""; - for (te in titleElements) { - if (!bannedTitleKeys[titleElements[te].toLowerCase()]) { - appendKey = "_" + titleElements[te].toLowerCase() + "_"; + var bannedTitleKeys = ["a", "an", "from", "does", "how", "it''s", "its", "on", "some", "the", "this", "why"]; + var titleElements = item["title"].toLowerCase().split(" "); + for(var te in titleElements) { + if (bannedTitleKeys.indexOf(titleElements[te]) == -1) { + basekey += "_" + titleElements[te]; break; - } } - basekey = basekey + appendKey; + } } if(item.date) { var date = Zotero.Utilities.strToDate(item.date); if(date.year && numberRe.test(date.year)) { - basekey += date.year; + basekey += "_" + date.year; } } - // make sure we do not have any other funny characters - basekey = basekey.replace(/[\. ,'':\"!&]/g,""); + // for now, remove any characters not explicitly known to be allowed; + // we might want to allow UTF-8 citation keys in the future, depending + // on implementation support. + // + // no matter what, we want to make sure we exclude + // " # % '' ( ) , = { } ~ and backslash + + basekey = basekey.substr(1).replace(/[^a-z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+/g,""); var citekey = basekey; var i = 0; while(citekeys[citekey]) { @@ -16204,7 +18105,7 @@ function doExport() { if(item.date) { // need to use non-localized abbreviation if(date.month) { - writeMacroField("month", months[date.month]); + writeField("month", months[date.month], true); } if(date.year) { writeField("year", date.year); @@ -16230,6 +18131,7 @@ function doExport() { } }'); + REPLACE INTO translators VALUES ('a6ee60df-1ddc-4aae-bb25-45e0537be973', '1.0.0b3.r1', '', '2007-03-28 19:15:00', 1, 100, 1, 'MARC', 'Simon Kornblith', 'marc', 'function detectImport() { var marcRecordRegexp = /^[0-9]{5}[a-z ]{3}$/ @@ -16921,13 +18823,209 @@ function doExport() { } }'); -REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '2007-10-23 18:00:00', 'American Psychological Association', -'<?oxygen RNGSchema="csl.rnc" type="compact"?> + + + +-- ---------------------------------------------------------------- +-- +-- CSL styles +-- +-- ---------------------------------------------------------------- +REPLACE INTO csl VALUES ('http://www.zotero.org/syles/ama', '2008-01-03 23:00:00', 'American Medical Association', +'<?xml version="1.0" encoding="UTF-8"?> +<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" xml:lang="en"> + <info> + <title>American Medical Association</title> + <id>http://www.zotero.org/syles/ama</id> + <link href="http://www.zotero.org/syles/ama"/> + <author> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> + </author> + <category term="numeric"/> + <category term="medicine"/> + <updated>2008-01-03T23:00:00+00:00</updated> + <summary>The American Medical Association style as used in JAMA.</summary> + <link href="http://www.samford.edu/schools/pharmacy/dic/amaquickref07.pdf" rel="documentation"/> + </info> + <macro name="editor"> + <names variable="editor"> + <name name-as-sort-order="all" sort-separator=" " initialize-with="" delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=", " text-case="lowercase" suffix="."/> + </names> + </macro> + <macro name="anon"> + <text term="anonymous" form="short" text-case="capitalize-first"/> + </macro> + <macro name="author"> + <group suffix="."> + <names variable="author"> + <name name-as-sort-order="all" sort-separator=" " initialize-with="" + delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=" " suffix="" text-case="lowercase"/> + <substitute> + <names variable="editor"/> + <text macro="anon"/> + </substitute> + </names> + </group> + </macro> + <macro name="author-short"> + <names variable="author"> + <name form="short" and="symbol" delimiter=", " initialize-with="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="anon"/> + </substitute> + </names> + </macro> + <macro name="access"> + <group> + <text value="Available at:" suffix=" "/> + <text variable="URL"/> + <group prefix=" [" suffix="]"> + <text term="accessed" text-case="capitalize-first" suffix=" "/> + <date variable="accessed"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </group> + </group> + </macro> + <macro name="title"> + <choose> + <if type="book"> + <text variable="title" font-style="italic"/> + </if> + <else> + <text variable="title"/> + </else> + </choose> + </macro> + <macro name="publisher"> + <group delimiter=": "> + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + </macro> + <macro name="year-date"> + <group prefix=" "> + <choose> + <if variable="issued"> + <date variable="issued"> + <date-part name="year"/> + </date> + </if> + <else> + <text term="no date"/> + </else> + </choose> + </group> + </macro> + <macro name="edition"> + <choose> + <if is-numeric="edition"> + <group delimiter=" "> + <number variable="edition" form="ordinal"/> + <text term="edition" form="short" suffix="."/> + </group> + </if> + <else> + <text variable="edition" suffix="."/> + </else> + </choose> + </macro> + <citation> + <option name="collapse" value="citation-number"/> + <sort> + <key variable="citation-number"/> + </sort> + <layout delimiter="," vertical-align="sup"> + <text variable="citation-number" /> + <group prefix="(" suffix=")"> + <label variable="locator" form="short"/> + <text variable="locator"/> + </group> + </layout> + </citation> + <bibliography> + <option name="hanging-indent" value="false"/> + <option name="et-al-min" value="6"/> + <option name="et-al-use-first" value="3"/> + <layout> + <text variable="citation-number" prefix="" suffix=". "/> + <text macro="author" suffix=""/> + <choose> + <if type="book"> + <group suffix="."> + <text macro="title" prefix=" " suffix="."/> + <text macro="edition" prefix=" " /> + <text macro="editor" prefix=" (" suffix=")"/> + </group> + <text prefix=" " suffix="" macro="publisher"/> + <group suffix="." prefix="; "> + <date variable="issued"> + <date-part name="year"/> + </date> + <text variable="page" prefix=":"/> + </group> + </if> + <else-if type="chapter"> + <text macro="title" prefix=" " suffix="."/> + <group class="container" prefix=" "> + <text term="in" text-case="capitalize-first" suffix=": "/> + <text macro="editor"/> + <text variable="container-title" font-style="italic" prefix=" " suffix="."/> + <text variable="volume" prefix="Vol " suffix="."/> + <text macro="edition" prefix=" "/> + <text variable="collection-title" prefix=" " suffix="."/> + <group suffix="."> + <text macro="publisher" prefix=" "/> + <group suffix="." prefix="; "> + <date variable="issued"> + <date-part name="year"/> + </date> + <text variable="page" prefix=":"/> + </group> + </group> + </group> + </else-if> + <else> + <group suffix="."> + <text macro="title" prefix=" " /> + <text macro="editor" prefix=" "/> + </group> + <group class="container" prefix=" " suffix="."> + <text variable="container-title" font-style="italic" form="short" suffix="."/> + <group delimiter=";" prefix=" "> + <date variable="issued"> + <date-part name="year"/> + </date> + <group> + <text variable="volume" /> + <text variable="issue" prefix="(" suffix=")"/> + </group> + </group> + <text variable="page" prefix=":"/> + </group> + </else> + </choose> + <text prefix=" " macro="access" suffix="."/> + </layout> + </bibliography> +</style> +'); + +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/apa', '2008-01-03 23:00:00', 'American Psychological Association', +'<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="http://xbiblio.svn.sourceforge.net/viewvc/*checkout*/xbiblio/csl/schema/trunk/csl.rnc" type="compact"?> <style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" xml:lang="en"> <info> <title>American Psychological Association</title> - <id>http://purl.org/net/xbiblio/csl/styles/apa.csl</id> - <link>http://purl.org/net/xbiblio/csl/styles/apa.csl</link> + <id>http://www.zotero.org/styles/apa</id> + <link href="http://www.zotero.org/styles/apa"/> <author> <name>Simon Kornblith</name> <email>simon@simonster.com</email> @@ -16935,19 +19033,19 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '2007- <category term="psychology"/> <category term="generic-base"/> <category term="author-date"/> - <updated>2007-09-26T10:58:54+00:00</updated> + <updated>2008-01-03T23:00:00+00:00</updated> </info> <macro name="editor-translator"> <names variable="editor translator" prefix="(" suffix=")" delimiter=", "> <name and="symbol" initialize-with=". " delimiter=", "/> - <label form="short" prefix=", " text-transform="capitalize" suffix="."/> + <label form="short" prefix=", " text-case="capitalize-first" suffix="."/> </names> </macro> <macro name="author"> <names variable="author"> <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" prefix=" (" suffix=".)" text-transform="capitalize"/> + <label form="short" prefix=" (" suffix=".)" text-case="capitalize-first"/> <substitute> <names variable="editor"/> <names variable="translator"/> @@ -16973,26 +19071,33 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '2007- </names> </macro> <macro name="access"> - <group> - <text term="retrieved" text-transform="capitalize" suffix=" "/> - <date variable="accessed" suffix=", "> - <date-part name="month" suffix=" "/> - <date-part name="day" suffix=", "/> - <date-part name="year"/> - </date> - <group> - <text term="from" suffix=" "/> - <text variable="URL"/> - </group> - </group> + <choose> + <if variable="DOI"> + <text variable="DOI" prefix="doi: "/> + </if> + <else> + <group> + <text term="retrieved" text-case="capitalize-first" suffix=" "/> + <date variable="accessed" suffix=", "> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + <group> + <text term="from" suffix=" "/> + <text variable="URL"/> + </group> + </group> + </else> + </choose> </macro> <macro name="title"> <choose> <if type="book"> - <text variable="title" enforce-case="sentence" font-style="italic"/> + <text variable="title" text-case="sentence" font-style="italic"/> </if> <else> - <text variable="title" enforce-case="sentence"/> + <text variable="title" text-case="sentence"/> </else> </choose> </macro> @@ -17002,6 +19107,10 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '2007- <text variable="publisher"/> </group> </macro> + <macro name="event"> + <text variable="event"/> + <text variable="event-place" prefix=", "/> + </macro> <citation> <option name="et-al-min" value="6"/> <option name="et-al-use-first" value="1"/> @@ -17038,25 +19147,36 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '2007- </sort> <layout> <text macro="author" suffix="."/> - <date variable="issued" prefix=" (" suffix=")."> - <date-part name="year"/> - </date> + <group prefix=" (" suffix=")."> + <date variable="issued"> + <date-part name="year"/> + </date> + <choose> + <if type="book chapter article-journal" match="none"> + <date variable="issued"> + <date-part prefix=", " name="month"/> + <date-part prefix=" " name="day"/> + </date> + </if> + </choose> + </group> <choose> <if type="book"> <group suffix="."> <text macro="title" prefix=" "/> <text macro="editor-translator" prefix=" "/> + <text variable="edition" prefix=" (" suffix=")"/> </group> <text prefix=" " suffix="." macro="publisher"/> </if> <else-if type="chapter"> <text macro="title" prefix=" "/> <group class="container" prefix=". "> - <text term="in" text-transform="capitalize" suffix=" "/> + <text term="in" text-case="capitalize-first" suffix=" "/> <group delimiter=", " suffix="."> <names variable="editor translator" delimiter=", "> <name and="symbol" sort-separator=", " initialize-with=". "/> - <label form="short" prefix=" (" suffix=".)" text-transform="capitalize"/> + <label form="short" prefix=" (" suffix=".)" text-case="capitalize-first"/> </names> <group delimiter=" "> <text variable="container-title" font-style="italic"/> @@ -17079,7 +19199,6 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '2007- <text variable="container-title" font-style="italic"/> <group prefix=", "> <text variable="volume" font-style="italic"/> - <text variable="issue" prefix="(" suffix=")"/> </group> <text variable="page" prefix=", "/> </group> @@ -17088,643 +19207,126 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '2007- <text prefix=" " macro="access"/> </layout> </bibliography> -</style>'); - -REPLACE INTO csl VALUES('http://www.zotero.org/namespaces/CSL/chicago-author-date.csl', '2007-11-10 03:39:37', 'Chicago Manual of Style (Author-Date)', -'<?xml version="1.0" encoding="UTF-8"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="author-date" xml:lang="en"> - <info> - <title>Chicago Reference List Style</title> - <id>http://www.zotero.org/namespaces/CSL/chicago-author-date.csl</id> - <author> - <name>Simon Kornblith</name> - <email>simon@simonster.com</email> - </author> - <updated>2007-11-10T03:39:37+00:00</updated> - <summary>The author-date variant of the Chicago style.</summary> - </info> - <defaults> - <contributor name-as-sort-order="no"> - <label form="verb-short" suffix=". "/> - <name and="text" delimiter=", "/> - </contributor> - <author name-as-sort-order="first"> - <name and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" prefix=", " suffix="."/> - <substitute> - <choose> - <editor/> - <translator/> - <titles relation="container" font-style="italic"/> - <titles/> - </choose> - </substitute> - </author> - <locator> - <number/> - </locator> - <identifier> - <number/> - </identifier> - <titles> - <title/> - </titles> - <date> - <year/> - </date> - <access> - <url/> - <date prefix=" (" suffix=")"> - <text term-name="accessed" suffix=" "/> - <month suffix=" " text-transform="capitalize"/> - <day suffix=", "/> - <year/> - </date> - </access> - </defaults> - <citation prefix="(" suffix=")" delimiter="; "> - <et-al min-authors="3" use-first="1"/> - <layout> - <item> - <group delimiter=" "> - <author form="short"> - <name and="text" delimiter=", "/> - </author> - <group> - <date/> - <locator prefix=", "/> - </group> - </group> - </item> - </layout> - </citation> - <bibliography hanging-indent="true" subsequent-author-substitute="&#8212;&#8212;&#8212;"> - <sort algorithm="author-date"/> - <et-al min-authors="6" use-first="6"/> - <layout> - <list> - <heading> - <text term-name="works cited"/> - </heading> - </list> - <item suffix="."> - <choose> - <type name="book"> - <author suffix="."/> - <conditional> - <if field="date"> - <date prefix=" " suffix="."/> - </if><else> - <text term-name="no date" text-transform="capitalize" prefix=" " suffix="."/> - </else> - </conditional> - <titles prefix=" " suffix="." font-style="italic"/> - <group prefix=" " suffix="." delimiter=", " text-transform="capitalize"> - <editor/> - <translator/> - </group> - <group prefix=" " suffix="." delimiter=": "> - <publisher><place/></publisher> - <publisher><name/></publisher> - </group> - <access prefix=" "/> - </type> - <type name="chapter"> - <author suffix="."/> - <conditional> - <if field="date"> - <date prefix=" " suffix="."/> - </if><else> - <text term-name="no date" text-transform="capitalize" prefix=" " suffix="."/> - </else> - </conditional> - <titles prefix=" " suffix="."/> - <group class="container" suffix="."> - <text prefix=" " term-name="in" text-transform="capitalize"/> - <titles prefix=" " relation="container" font-style="italic"/> - <editor prefix=", "/> - <translator prefix=", "/> - <pages prefix=", "/> - <group prefix=". " delimiter=": "> - <publisher><place/></publisher> - <publisher><name/></publisher> - </group> - </group> - <access prefix=" "/> - </type> - <type name="article"> - <author suffix="."/> - <date prefix=" " suffix="."/> - <titles prefix=" " suffix="."/> - <group prefix=" " suffix="." delimiter=", " text-transform="capitalize"> - <editor/> - <translator/> - </group> - <group class="container" prefix=" " suffix="." delimiter=", "> - <titles relation="container" font-style="italic"/> - <date> - <month text-transform="capitalize"/> - <day prefix=" "/> - </date> - </group> - <access prefix=" "/> - </type> - <type name="article-journal"> - <author suffix="."/> - <date prefix=" " suffix="."/> - <titles prefix=" " suffix="."/> - <group prefix=" " suffix="." delimiter=", " text-transform="capitalize"> - <editor/> - <translator/> - </group> - <group class="container" prefix=" " suffix="."> - <titles relation="container" font-style="italic"/> - <volume prefix=" "/> - <conditional> - <if field="issue"> - <conditional> - <if field="date"> - <issue prefix=", no. "/> - <date prefix=" (" suffix=")"> - <month text-transform="capitalize"/> - <day prefix=" "/> - </date> - </if><else> - <issue prefix=" (" suffix=")"/> - </else> - </conditional> - <pages prefix=": "/> - </if><else> - <pages prefix=":"/> - </else> - </conditional> - </group> - <access prefix=" "/> - </type> - </choose> - </item> - </layout> - </bibliography> -</style>'); - -REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/chicago-note.csl', '2007-11-10 03:39:37', 'Chicago Manual of Style (Note without Reference List)', -'<?xml version="1.0" encoding="UTF-8"?> -<?oxygen RNGSchema="../schema/trunk/csl.rnc" type="compact"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="note" xml:lang="en"> - <info> - <title>Chicago Note Sans Reference List</title> - <id>http://purl.org/net/xbiblio/csl/styles/chicago-note.csl</id> - <author> - <name>Bruce D’Arcus</name> - <email>bdarcus@sourceforge.net</email> - </author> - <contributor> - <name>Simon Kornblith</name> - <email>simon@simonster.com</email> - </contributor> - <contributor> - <name>Johan Kool</name> - <email>johankool@users.sourceforge.net</email> - </contributor> - <updated>2007-10-10T03:39:37+00:00</updated> - <summary>The note-without-bibliography variant of the Chicago style.</summary> - </info> - <defaults> - <contributor> - <label form="short" suffix=". " text-transform="lowercase"/> - <name and="text" delimiter=", "/> - </contributor> - <author> - <name and="text" delimiter=", "/> - <label form="short" prefix=", " suffix="." text-transform="lowercase"/> - <substitute> - <choose> - <editor/> - <translator/> - </choose> - </substitute> - </author> - <locator> - <number/> - </locator> - <titles> - <title/> - </titles> - <date> - <month suffix=" " text-transform="capitalize"/> - <day suffix=", "/> - <year/> - </date> - <access> - <url/> - <date prefix=" (" suffix=")"> - <text term-name="accessed" suffix=" "/> - <month suffix=" " text-transform="capitalize"/> - <day suffix=", "/> - <year/> - </date> - </access> - </defaults> - <citation suffix="." delimiter="; "> - <et-al min-authors="4" use-first="1"/> - <layout> - <item> - <choose> - <type name="book"> - <group delimiter=", "> - <author/> - <titles font-style="italic"/> - <editor/> - <translator/> - </group> - <group prefix=" (" suffix=")" delimiter=", "> - <group delimiter=": "> - <publisher><place/></publisher> - <publisher><name/></publisher> - </group> - <conditional> - <if field="date"> - <date><year/></date> - </if><else> - <text term-name="no date"/> - </else> - </conditional> - </group> - <locator prefix=", "/> - <access prefix=", "/> - </type> - <type name="chapter"> - <group delimiter=", "> - <author/> - <titles quotes="true"/> - </group> - <group class="container"> - <text prefix=", " term-name="in" text-transform="lowercase"/> - <group delimiter=", "> - <titles relation="container" prefix=" " font-style="italic"/> - <editor/> - <translator/> - </group> - <group prefix=" (" suffix=")" delimiter=", "> - <group delimiter=": "> - <publisher><place/></publisher> - <publisher><name/></publisher> - </group> - <conditional> - <if field="date"> - <date><year/></date> - </if><else> - <text term-name="no date"/> - </else> - </conditional> - </group> - <conditional> - <if field="locator"> - <locator prefix=", "/> - </if><else> - <pages prefix=", "/> - </else> - </conditional> - <access prefix=", "/> - </group> - </type> - <type name="article"> - <group delimiter=", "> - <author/> - <titles quotes="true"/> - <titles relation="container" font-style="italic"/> - <date/> - <locator/> - <access/> - </group> - </type> - <type name="article-journal"> - <group delimiter=", "> - <author/> - <titles quotes="true"/> - <titles relation="container" font-style="italic"/> - </group> - <volume prefix=" "/> - <issue prefix=", "> - <label form="short" text-transform="lowercase" suffix=". "/> - <number/> - </issue> - <date prefix=" (" suffix=")"/> - <locator prefix=": "/> - <access prefix=", "/> - </type> - </choose> - </item> - <item position="subsequent" ibid="true"> - <author form="short"/> - <conditional> - <if type="book"> - <titles prefix=", " font-style="italic" form="short"/> - </if><else> - <titles prefix=", " quotes="true" form="short"/> - </else> - </conditional> - <pages prefix=", "/> - </item> - </layout> - </citation> -</style>'); +</style> +'); -REPLACE INTO csl VALUES('http://www.zotero.org/namespaces/CSL/chicago-note-bibliography.csl', '2007-10-23 18:00:00', 'Chicago Manual of Style (Note with Reference List)', +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/apsa', '2008-01-03 23:00:00', 'American Political Science Association', '<?xml version="1.0" encoding="UTF-8"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="note" xml:lang="en"> - <info> - <title>Chicago Note With Bibliography Style</title> - <id>http://www.zotero.org/namespaces/CSL/chicago-note-bibliography.csl</id> - <author> - <name>Simon Kornblith</name> - <email>simon@simonster.com</email> - </author> - <updated>2006-12-20T03:29:00+05:00</updated> - <summary>The note-with-bibliography variant of the Chicago style.</summary> - </info> - <defaults> - <contributor name-as-sort-order="no"> - <label form="verb" suffix=" "/> - <name and="text" delimiter=", "/> - </contributor> - <author name-as-sort-order="first"> - <name and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> - <label form="short" prefix=", " suffix="."/> - <substitute> - <choose> - <editor/> - <translator/> - <titles relation="container" font-style="italic"/> - <titles/> - </choose> - </substitute> - </author> - <locator> - <number/> - </locator> - <identifier> - <number/> - </identifier> - <titles> - <title/> - </titles> - <date> - <month suffix=" " text-transform="capitalize"/> - <day suffix=", "/> - <year/> - </date> - <access> - <url/> - <date prefix=" (" suffix=")"> - <text term-name="accessed" suffix=" "/> - <month suffix=" " text-transform="capitalize"/> - <day suffix=", "/> - <year/> - </date> - </access> - </defaults> - <citation suffix="." delimiter="; "> - <et-al min-authors="3" use-first="1"/> - <layout> - <item suffix="."> - <group delimiter=", "> - <author form="short"> - <name and="text" sort-separator=", " delimiter=", "/> - </author> - <conditional> - <if type="book"> - <titles font-style="italic" form="short"/> - </if><else> - <titles quotes="true" form="short"/> - </else> - </conditional> - <locator/> - </group> - </item> - <item suffix="." position="subsequent" ibid="true"> - <group delimiter=", "> - <author form="short"> - <name and="text" sort-separator=", " delimiter=", "/> - </author> - <conditional> - <if type="book"> - <titles font-style="italic" form="short"/> - </if><else> - <titles quotes="true" form="short"/> - </else> - </conditional> - <locator/> - </group> - </item> - </layout> - </citation> - <bibliography hanging-indent="true" subsequent-author-substitute="&#8212;&#8212;&#8212;"> - <sort> - <author name-as-sort-order="all"/> - <titles/> - </sort> - <et-al min-authors="6" use-first="6"/> - <layout> - <list> - <heading> - <text term-name="works cited"/> - </heading> - </list> - <item suffix="."> - <choose> - <type name="book"> - <author suffix="."/> - <titles prefix=" " suffix="." font-style="italic"/> - <group prefix=" " suffix="." delimiter=", " text-transform="capitalize"> - <editor/> - <translator/> - </group> - <group prefix=" " suffix="." delimiter=", " text-transform="capitalize"> - <group delimiter=": "> - <publisher><place/></publisher> - <publisher><name/></publisher> - </group> - <conditional> - <if field="date"> - <date><year/></date> - </if><else> - <text term-name="no date"/> - </else> - </conditional> - </group> - <access prefix=" "/> - </type> - <type name="chapter"> - <author suffix="."/> - <titles prefix=" " suffix="." quotes="true"/> - <group class="container" suffix="."> - <text prefix=" " term-name="in" text-transform="capitalize"/> - <titles prefix=" " relation="container" font-style="italic"/> - <editor prefix=", "/> - <translator prefix=", "/> - <pages prefix=", "/> - <group prefix=". " delimiter=", "> - <group delimiter=": "> - <publisher><place/></publisher> - <publisher><name/></publisher> - </group> - <conditional> - <if field="date"> - <date><year/></date> - </if><else> - <text term-name="no date"/> - </else> - </conditional> - </group> - </group> - <access prefix=" "/> - </type> - <type name="article"> - <author suffix="."/> - <titles prefix=" " quotes="true"/> - <group prefix=" " suffix="." delimiter=", " text-transform="capitalize"> - <editor/> - <translator/> - </group> - <group class="container" prefix=" " suffix="." delimiter=", "> - <titles prefix=" " relation="container" font-style="italic"/> - <date/> - </group> - <access prefix=" "/> - </type> - <type name="article-journal"> - <author suffix="."/> - <titles prefix=" " suffix="." quotes="true"/> - <group prefix=" " suffix="." delimiter=", " text-transform="capitalize"> - <editor/> - <translator/> - </group> - <group class="container" prefix=" " suffix="."> - <titles relation="container" font-style="italic"/> - <volume prefix=" "/> - <issue prefix=", no. "/> - <conditional> - <if field="date"> - <date prefix=" (" suffix=")"/> - <pages prefix=": "/> - </if><else> - <pages prefix=":"/> - </else> - </conditional> - </group> - <access prefix=" "/> - </type> - </choose> - </item> - </layout> - </bibliography> -</style>'); - -REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/mla.csl', '2007-11-03 19:45:00', 'Modern Language Association', -'<?oxygen RNGSchema="csl.rnc" type="compact"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" xml:lang="en"> +<style xmlns="http://purl.org/net/xbiblio/csl" xml:lang="en" class="in-text" > <info> - <title>Modern Language Association</title> - <id>http://purl.org/net/xbiblio/csl/styles/mla.csl</id> - <link>http://purl.org/net/xbiblio/csl/styles/mla.csl</link> + <title>American Political Science Association</title> + <id>http://www.zotero.org/styles/apsa</id> + <link href="http://www.zotero.org/styles/apsa"/> <author> - <name>Simon Kornblith</name> - <email>simon@simonster.com</email> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> </author> - <category term="generic-base"/> - <updated>2007-09-13T21:23:00+00:00</updated> + <category term="author-date"/> + <category term="political_science"/> + <updated>2008-01-03T23:00:00+00:00</updated> + <summary>The American Political Science Association style.</summary> + <link href="http://www.wisc.edu/writing/Handbook/DocAPSA.html" rel="documentation"/> </info> - <macro name="editor-translator"> - <names variable="editor translator" delimiter=". "> - <label form="verb-short" text-transform="capitalize" suffix=". "/> - <name and="symbol" delimiter=", "/> + <macro name="editor"> + <names variable="editor" delimiter=", "> + <label form="short" text-case="lowercase" suffix=". "/> + <name and="text" delimiter=", "/> </names> </macro> <macro name="author"> <names variable="author"> - <name name-as-sort-order="first" and="text" sort-separator=", " - delimiter=", " delimiter-precedes-last="always"/> - <label form="short" prefix=", " suffix="."/> + <name name-as-sort-order="first" and="text" sort-separator=", " + delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="." text-case="lowercase"/> <substitute> - <names variable="editor"/> - <names variable="translator"/> - <text macro="title"/> + <names variable="editor"/> + <text variable="title"/> </substitute> </names> </macro> <macro name="author-short"> <names variable="author"> - <name form="short" and="symbol" delimiter=", " initialize-with=". "/> + <name form="short" and="text" delimiter=", " initialize-with=". "/> <substitute> - <names variable="editor"/> - <names variable="translator"/> - <text macro="title-short"/> + <names variable="editor"/> + <names variable="translator"/> + <text variable="title"/> </substitute> </names> </macro> <macro name="access"> <group delimiter=" "> - <date variable="accessed"> - <date-part name="day" suffix=" "/> - <date-part name="month" form="short" include-period="true" suffix=" "/> - <date-part name="year"/> - </date> - <text variable="URL" prefix="&lt;" suffix="&gt;"/> + <text value="Available at:"/> + <text variable="URL"/> + <group prefix="[" suffix="]"> + <text term="accessed" text-case="capitalize-first" suffix=" "/> + <date variable="accessed"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </group> </group> </macro> <macro name="title"> <choose> <if type="book"> - <text variable="title" text-decoration="underline"/> + <text variable="title" font-style="italic"/> </if> <else> - <text variable="title" quotes="true"/> + <text variable="title"/> </else> </choose> </macro> - <macro name="title-short"> + <macro name="publisher"> + <group delimiter=": "> + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + </macro> + <macro name="year-date"> + <group prefix=" "> + <choose> + <if variable="issued"> + <date variable="issued"> + <date-part name="year"/> + </date> + </if> + <else> + <text term="no date"/> + </else> + </choose> + </group> + </macro> + <macro name="edition"> <choose> - <if type="book"> - <text variable="title" form="short" text-decoration="underline"/> + <if is-numeric="edition"> + <group delimiter=" "> + <number variable="edition" form="ordinal"/> + <text term="edition" form="short" suffix="."/> + </group> </if> <else> - <text variable="title" form="short" quotes="true"/> + <text variable="edition" suffix="."/> </else> </choose> </macro> - <macro name="publisher-year"> - <group delimiter=", "> - <group delimiter=": "> - <text variable="publisher-place"/> - <text variable="publisher"/> - </group> - <date variable="issued"> - <date-part name="year"/> - </date> - </group> - </macro> <citation> <option name="et-al-min" value="4"/> <option name="et-al-use-first" value="1"/> + <option name="et-al-subsequent-min" value="6"/> + <option name="et-al-subsequent-use-first" value="1"/> + <option name="disambiguate-add-year-suffix" value="true"/> <option name="disambiguate-add-names" value="true"/> <option name="disambiguate-add-givenname" value="true"/> + <option name="collapse" value="year"/> <layout prefix="(" suffix=")" delimiter="; "> - <group delimiter=" "> - <choose> - <if variable="author editor translator" match="any"> - <text macro="author-short"/> - <choose> - <if disambiguate="true"> - <text macro="title-short" prefix=", "/> - </if> - </choose> - </if> - <else> - <text macro="title-short"/> - </else> - </choose> - <text variable="locator"/> + <group delimiter=", "> + <group delimiter=" "> + <text macro="author-short"/> + <text macro="year-date"/> + </group> + <text variable="locator"/> </group> </layout> </citation> @@ -17738,126 +19340,2306 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/mla.csl', '2007- </sort> <layout> <text macro="author" suffix="."/> - <text macro="title" prefix=" " suffix="."/> + <date variable="issued" prefix=" " suffix="."> + <date-part name="year"/> + </date> <choose> - <if type="book"> - <text macro="editor-translator" prefix=" " suffix="."/> - <text macro="publisher-year" prefix=" " suffix="."/> - </if> - <else-if type="chapter"> - <group class="container"> - <text variable="container-title" text-decoration="underline" prefix=" " suffix="."/> - <text macro="editor-translator" prefix=" " suffix="."/> - <text macro="publisher-year" prefix=" " suffix="."/> - </group> - <text variable="page" prefix=" " suffix="."/> - </else-if> - <else> - <group class="container" prefix=" " suffix="." delimiter=": "> - <group delimiter=" "> - <text variable="container-title" text-decoration="underline"/> - <choose> - <if type="article-journal"> - <group delimiter=" "> - <group delimiter="."> - <text variable="volume"/> - <text variable="issue"/> - </group> - <date variable="issued" prefix="(" suffix=")"> - <date-part name="year"/> - </date> - </group> - </if> - <else> - <date variable="issued"> - <date-part name="day" suffix=" "/> - <date-part name="month" form="short" include-period="true" suffix=" "/> - <date-part name="year"/> - </date> - </else> - </choose> - </group> - <text variable="page"/> - </group> - </else> + <if type="book"> + <group prefix=" " delimiter=" "> + <text macro="title" suffix="."/> + <text macro="edition"/> + <text macro="editor" suffix="."/> + </group> + <text prefix=" " suffix="." macro="publisher"/> + </if> + <else-if type="chapter"> + <text macro="title" prefix=" " suffix="." quotes="true"/> + <group class="container" prefix=" " delimiter=" "> + <text term="in" text-case="capitalize-first"/> + <text variable="container-title" font-style="italic" suffix=","/> + <text variable="collection-title" suffix=","/> + <text macro="editor" suffix="."/> + <group suffix="."> + <text macro="publisher" prefix=" "/> + <group prefix=", "> + <text variable="page" prefix="p. "/> + </group> + </group> + </group> + </else-if> + <else> + <group prefix=" " delimiter=" " suffix="."> + <text macro="title" quotes="true"/> + <text macro="editor" /> + </group> + <group class="container" prefix=" " suffix="."> + <text variable="container-title" font-style="italic"/> + <group prefix=" "> + <text variable="volume" /> + <text variable="issue" prefix="(" suffix=")"/> + </group> + <text variable="page" prefix=":"/> + </group> + </else> </choose> - <text prefix=" " suffix="." macro="access"/> + <text prefix=" " macro="access" suffix="."/> </layout> </bibliography> -</style>'); +</style> +'); -REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/mhra_note_without_bibliography.csl', '2007-10-23 18:00:00', 'Modern Humanities Research Association (Note without Bibliography)', +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/asa', '2008-01-03 23:00:00', 'American Sociological Association (Author-Date)', '<?xml version="1.0" encoding="UTF-8"?> -<?oxygen RNGSchema="../csl.rnc" type="compact"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="note"> - <info> - <title>Modern Humanities Research Association</title> - <id>http://purl.org/net/xbiblio/csl/styles/mhra_note_without_bibliography.csl</id> - <link>http://purl.org/net/xbiblio/csl/styles/mhra_note_without_bibliography.csl</link> - <summary>Bibliography styles for the Modern Humanities Research Association.</summary> - <author> - <name>Jim Safley</name> - <email>jsafley@gmu.edu</email> - </author> - <updated>2007-06-18T00:32:33</updated> - </info> - <defaults> - <et-al min-authors="4" use-first="1" term-name="and-others"></et-al> - <author name-as-sort-order="no"> - <name and="text" delimiter=", " delimiter-precedes-last="always"></name> - <substitute> - <choose> - <editor></editor> - <translator></translator> - <titles></titles> - </choose> - </substitute> - </author> - <contributor name-as-sort-order="no"> - <label suffix=" " form="verb"></label> - <name and="text" delimiter=", "></name> - </contributor> - <locator> - <number></number> - </locator> - <pages> - <label suffix=". " form="short" ></label> - <number></number> - </pages> - <identifier> - <number></number> - </identifier> - <titles> - <title></title> - </titles> - <date> - <year></year> - </date> - <publisher> - <place suffix=": "></place> - <name></name> - </publisher> - <access> - <url prefix=" &lt;" suffix="&gt; "></url> - <text prefix=" [" suffix=" " term-name="accessed"></text> - <date suffix="]"> - <day suffix=" "></day> - <month suffix=" " text-transform="capitalize"></month> - <year></year> - </date> - </access> - </defaults> - <citation suffix="." delimiter="; "> - <layout> - <item> - <choose> - <type name="book"> - <author></author> - <titles prefix=", " font-style="italic"></titles> - <editor prefix=", "></editor> - <translator prefix=", "></translator> - <titles prefix=" " relation="collection"></titles><!-- this line should print out Zoteros "Series", but it does not --> - <!-- this line should be Zoteros "Series Number", what CSL element matches it? --> +<style xmlns="http://purl.org/net/xbiblio/csl" xml:lang="en" class="in-text" > + <info> + <title>American Sociological Association (Author-Date)</title> + <id>http://www.zotero.org/styles/asa</id> + <link href="http://www.zotero.org/styles/asa"/> + <author> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> + </author> + <category term="author-date"/> + <category term="sociology"/> + <updated>2008-01-03T23:00:00+00:00</updated> + <summary>The ASA style.</summary> + <link href="http://www.asanet.org/page.ww?name=Quick+Style+Guide%38section=Sociology+Depts" rel="documentation"/> + </info> + <macro name="editor"> + <names variable="editor"> + <label form="verb" text-case="lowercase" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="series-editor"> + <names variable="original-author"> + <label form="short" text-case="capitalize-first" suffix=". "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="anon"> + <text term="anonymous" form="short" text-case="capitalize-first"/> + </macro> + <macro name="author"> + <names variable="author"> + <name and="text" name-as-sort-order="first" sort-separator=", " delimiter=", " + delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="." text-case="lowercase"/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="anon"/> + </substitute> + </names> + </macro> + <macro name="author-short"> + <names variable="author"> + <name form="short" and="text" delimiter=", "/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="anon"/> + </substitute> + </names> + </macro> + <macro name="access"> + <group> + <text variable="URL"/> + <group prefix=" (" suffix=")"> + <text term="accessed" text-case="capitalize-first" suffix=" "/> + <date variable="accessed"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </group> + </group> + </macro> + <macro name="title"> + <choose> + <if type="thesis"> + <text variable="title"/> + </if> + <else-if type="book"> + <text variable="title" font-style="italic"/> + </else-if> + <else> + <text variable="title" quotes="true"/> + </else> + </choose> + </macro> + <macro name="publisher"> + <group delimiter=": " > + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + </macro> + <macro name="year-date"> + <choose> + <if variable="issued"> + <date variable="issued"> + <date-part name="year"/> + </date> + </if> + <else> + <text term="no date" form="short"/> + </else> + </choose> + </macro> + <macro name="day-month"> + <date variable="issued"> + <date-part name="month"/> + <date-part name="day" prefix=" "/> + </date> + + </macro> + <macro name="pages"> + <label variable="page" form="short" suffix=". " text-case="capitalize-first"/> + <text variable="page"/> + </macro> + <macro name="edition"> + <choose> + <if is-numeric="edition"> + <group delimiter=" "> + <number variable="edition" form="ordinal"/> + <text term="edition" form="short" suffix="."/> + </group> + </if> + <else> + <text variable="edition" suffix="."/> + </else> + </choose> + </macro> + <citation> + <option name="et-al-min" value="3"/> + <option name="et-al-use-first" value="1"/> + <option name="et-al-subsequent-min" value="6"/> + <option name="et-al-subsequent-use-first" value="1"/> + <option name="disambiguate-add-year-suffix" value="true"/> + <option name="disambiguate-add-names" value="true"/> + <option name="disambiguate-add-givenname" value="true"/> + <option name="collapse" value="year"/> + <layout prefix="(" suffix=")" delimiter="; "> + <group delimiter=":"> + <group delimiter=" "> + <text macro="author-short"/> + <text macro="year-date"/> + </group> + <text variable="locator"/> + </group> + </layout> + </citation> + <bibliography> + <option name="hanging-indent" value="true"/> + <option name="et-al-min" value="6"/> + <option name="et-al-use-first" value="1"/> + <sort> + <key macro="author"/> + <key variable="title"/> + </sort> + <layout suffix="."> + <group delimiter=" "> + <text macro="author" suffix="."/> + <text macro="year-date" suffix="."/> + </group> + <choose> + <if type="article-newspaper article-magazine" match="any"> + <group delimiter=" "> + <text macro="title" prefix=" " suffix="."/> + </group> + <group prefix=" " delimiter=", "> + <text variable="container-title" font-style="italic"/> + <text macro="day-month"/> + <text variable="edition"/> + <text variable="page"/> + </group> + </if> + <else-if type="thesis"> + <text macro="title" prefix=" " suffix="." quotes="true"/> + <group prefix=" " delimiter=", "> + <text macro="edition" /> + <text macro="editor" suffix="."/> + <text variable="genre"/> + <text macro="publisher"/> + </group> + </else-if> + <else-if type="book"> + <group delimiter=" "> + <text macro="title" prefix=" " suffix="."/> + <text macro="edition" /> + <text macro="editor" suffix="."/> + <text macro="publisher"/> + </group> + </else-if> + <else-if type="chapter"> + <group delimiter=" "> + <text macro="title" prefix=" " suffix="."/> + <group class="container" delimiter=", " suffix="."> + <group delimiter=" "> + <text macro="pages"/> + <text term="in" text-case="lowercase"/> + <text variable="container-title" font-style="italic"/> + </group> + <text variable="volume" prefix="vol. "/> + <text variable="collection-title" font-style="italic"/> + <text macro="editor" prefix=" "/> + </group> + <text macro="publisher" prefix=" "/> + </group> + </else-if> + <else> + <group suffix="." > + <text macro="title" prefix=" " /> + <text macro="editor" prefix=" "/> + </group> + <group class="container" prefix=" " suffix="." delimiter=" "> + <text variable="container-title" font-style="italic"/> + <group delimiter=":"> + <text variable="volume" /> + <text variable="page"/> + </group> + </group> + </else> + </choose> + <text prefix=" " macro="access" suffix="."/> + </layout> + </bibliography> +</style> +'); + +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/chicago-author-date', '2008-01-03 23:00:00', 'Chicago Manual of Style (Author-Date format)', +'<?xml version="1.0" encoding="UTF-8"?> +<style xmlns="http://purl.org/net/xbiblio/csl" xml:lang="en" class="in-text" > + <info> + <title>Chicago Manual of Style (Author-Date format)</title> + <id>http://www.zotero.org/styles/chicago-author-date</id> + <link href="http://www.zotero.org/styles/chicago-author-date"/> + <author> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> + </author> + <category term="author-date"/> + <category term="generic-base"/> + <updated>2008-01-03T23:00:00+00:00</updated> + <summary>The author-date variant of the Chicago style</summary> + <link href="http://www.chicagomanualofstyle.org/tools_citationguide.html" rel="documentation"/> + </info> + <macro name="editor"> + <names variable="editor"> + <label form="short" text-case="capitalize-first" suffix=". "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="series-editor"> + <names variable="original-author"> + <label form="short" text-case="capitalize-first" suffix=". "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="anon"> + <text term="anonymous" form="short" text-case="capitalize-first"/> + </macro> + <macro name="author"> + <names variable="author"> + <name and="text" name-as-sort-order="first" sort-separator=", " delimiter=", " + delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="." text-case="lowercase"/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="anon"/> + </substitute> + </names> + </macro> + <macro name="author-short"> + <names variable="author"> + <name form="short" and="text" delimiter=", "/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="anon"/> + </substitute> + </names> + </macro> + <macro name="access"> + <group> + <text variable="URL"/> + <group prefix=" (" suffix=")"> + <text term="accessed" text-case="capitalize-first" suffix=" "/> + <date variable="accessed"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </group> + </group> + </macro> + <macro name="title"> + <choose> + <if type="thesis"> + <text variable="title"/> + </if> + <else-if type="book"> + <text variable="title" font-style="italic"/> + </else-if> + <else> + <text variable="title"/> + </else> + </choose> + </macro> + <macro name="edition"> + <choose> + <if is-numeric="edition"> + <group delimiter=" "> + <number variable="edition" form="ordinal"/> + <text term="edition" form="short" suffix="."/> + </group> + </if> + <else> + <text variable="edition" suffix="."/> + </else> + </choose> + </macro> + <macro name="volumes"> + <group delimiter=" "> + <number variable="number-of-volumes" form="numeric"/> + <text term="volume" form="short" suffix="." plural="true"/> + </group> + </macro> + <macro name="publisher"> + <group delimiter=": " > + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + </macro> + <macro name="year-date"> + <date variable="issued"> + <date-part name="year"/> + </date> + </macro> + <macro name="day-month"> + <date variable="issued"> + <date-part name="month"/> + <date-part name="day" prefix=" "/> + </date> + </macro> + <citation> + <option name="et-al-min" value="4"/> + <option name="et-al-use-first" value="1"/> + <option name="et-al-subsequent-min" value="6"/> + <option name="et-al-subsequent-use-first" value="1"/> + <option name="disambiguate-add-year-suffix" value="true"/> + <option name="disambiguate-add-names" value="true"/> + <option name="disambiguate-add-givenname" value="true"/> + <option name="collapse" value="year"/> + <layout prefix="(" suffix=")" delimiter="; "> + <group delimiter=", "> + <group delimiter=" "> + <text macro="author-short"/> + <text macro="year-date"/> + </group> + <text variable="locator"/> + </group> + </layout> + </citation> + <bibliography> + <option name="hanging-indent" value="true"/> + <option name="et-al-min" value="6"/> + <option name="et-al-use-first" value="1"/> + <sort> + <key macro="author"/> + <key variable="title"/> + </sort> + <layout suffix="."> + <group delimiter=" "> + <text macro="author" suffix="."/> + <text macro="year-date" suffix="."/> + </group> + <choose> + <if type="article-newspaper article-magazine" match="any"> + <group delimiter=" "> + <text macro="title" prefix=" " suffix="."/> + </group> + <group prefix=" " delimiter=", "> + <text variable="container-title" font-style="italic"/> + <text macro="day-month"/> + <text variable="edition"/> + </group> + </if> + <else-if type="thesis"> + <text macro="title" prefix=" " suffix="."/> + <group prefix=" " delimiter=", "> + <text variable="edition" suffix=" ed."/> + <text macro="editor" suffix="."/> + <text variable="genre"/> + <text macro="publisher"/> + </group> + </else-if> + <else-if type="book"> + <group delimiter=" "> + <text macro="title" prefix=" " suffix="."/> + <text macro="edition"/> + <text macro="volumes"/> + <text macro="editor" suffix="."/> + <text macro="publisher"/> + </group> + </else-if> + <else-if type="chapter"> + <group delimiter=" "> + <text macro="title" prefix=" " suffix="."/> + <group class="container" delimiter=", "> + <group delimiter=" "> + <text term="in" text-case="capitalize-first"/> + <text variable="container-title" font-style="italic"/> + </group> + <text macro="editor" prefix=" "/> + <group delimiter=" "> + <text variable="volume" prefix="Vol. " suffix=" of"/> + <text variable="collection-title" font-style="italic"/> + <text macro="series-editor"/> + </group> + <text variable="page"/> + <text macro="publisher" prefix=" "/> + </group> + </group> + </else-if> + <else> + <group suffix="." > + <text macro="title" prefix=" " /> + <text macro="editor" prefix=" "/> + </group> + <group class="container" prefix=" " suffix="." delimiter=" "> + <text variable="container-title" font-style="italic"/> + <group delimiter=":"> + <group delimiter=", "> + <text variable="volume" /> + <text variable="issue" prefix="no. "/> + </group> + <text variable="page"/> + </group> + </group> + </else> + </choose> + <text prefix=" " macro="access" suffix="."/> + </layout> + </bibliography> +</style> +'); + +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/chicago-fullnote-bibliography', '2008-01-03 23:00:00', 'Chicago Manual of Style (Full Note with Bibliography)', +'<style xmlns="http://purl.org/net/xbiblio/csl" class="note" xml:lang="en"> + <info> + <title>Chicago Manual of Style (Full Note with Bibliography)</title> + <id>http://www.zotero.org/styles/chicago-fullnote-bibliography</id> + <link href="http://www.zotero.org/styles/chicago-fullnote-bibliography"/> + <link href="http://www.chicagomanualofstyle.org/tools_citationguide.html" rel="documentation"/> + <author> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> + </author> + <contributor> + <name>Simon Kornblith</name> + <email>simon@simonster.com</email> + </contributor> + <contributor> + <name>Elena Razlogova</name> + <email>elena.razlogova@gmail.com</email> + </contributor> + <summary>Chicago format with full notes and bibliography</summary> + <category term="generic-base"/> + <category term="numeric"/> + <updated>2008-01-03T23:00:00+00:00</updated> + </info> + <macro name="editor-translator"> + <names variable="editor translator" delimiter=", "> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="editor-translator-bib"> + <names variable="editor translator" delimiter=". "> + <label form="verb" prefix=" " text-case="capitalize-first" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="editor-translator-short"> + <choose> + <if variable="author"> + <names variable="editor translator" delimiter=", "> + <label form="short" prefix=" " text-case="lowercase" suffix=". "/> + <name and="text" delimiter=", "/> + </names> + </if> + </choose> + </macro> + <macro name="author"> + <names variable="author"> + <name and="text" sort-separator=", " + delimiter=", "/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="author-bib"> + <names variable="author"> + <name name-as-sort-order="first" and="text" sort-separator=", " + delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="author-full"> + <names variable="author"> + <name name-as-sort-order="all" and="text" sort-separator=", " + delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="author-short"> + <names variable="author"> + <name form="short" and="text" delimiter=", " /> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="recipient"> + <names variable="recipient" delimiter=", "> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="recipient-short"> + <names variable="recipient"> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name form="short" and="text" delimiter=", " /> + </names> + </macro> + <macro name="interviewer"> + <names variable="interviewer" delimiter=", "> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="interviewer-bib"> + <names variable="interviewer" delimiter=", "> + <label form="verb" prefix=" " text-case="capitalize-first" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="access"> + <group> + <text variable="URL"/> + <group prefix=" (" suffix=")" delimiter=" "> + <text term="accessed" text-case="lowercase" suffix=" "/> + <date variable="accessed" suffix=", "> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </group> + </group> + </macro> + <macro name="title"> + <choose> + <if type="book"> + <text variable="title" font-style="italic" text-case="title"/> + </if> + <else> + <text variable="title" quotes="true" text-case="title"/> + </else> + </choose> + </macro> + <macro name="title-short"> + <choose> + <if type="book"> + <text variable="title" form="short" font-style="italic" text-case="title"/> + </if> + <else> + <text variable="title" form="short" quotes="true" text-case="title"/> + </else> + </choose> + </macro> + <macro name="event"> + <text variable="event"/> + <text variable="event-place" prefix=", "/> + </macro> + <macro name="publisher"> + <group delimiter=": "> + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + </macro> + <macro name="archive"> + <group delimiter=", "> + <text variable="archive"/> + <text variable="archive-place"/> + </group> + </macro> + <macro name="issued"> + <choose> + <if type="graphic report" match="any"> + <date variable="issued"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </if> + <else-if type="book chapter thesis" match="any"> + <date variable="issued"> + <date-part name="year"/> + </date> + </else-if> + <else> + <date variable="issued"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </else> + </choose> + </macro> + <macro name="sort-key"> + <text macro="author-full" suffix=" "/> + <text variable="title" suffix=" "/> + <text variable="genre"/> + </macro> + <citation> + <option name="et-al-min" value="4"/> + <option name="et-al-use-first" value="1"/> + <option name="et-al-subsequent-min" value="4"/> + <option name="et-al-subsequent-use-first" value="1"/> + <option name="disambiguate-add-year-suffix" value="true"/> + <option name="disambiguate-add-names" value="true"/> + <option name="disambiguate-add-givenname" value="true"/> + <layout prefix="" suffix="." delimiter="; "> + <choose> + <if position="ibid-with-locator"> + <group delimiter=", "> + <text term="ibid" text-case="capitalize-first" suffix="."/> + <text variable="locator"/> + </group> + </if> + <else-if position="ibid"> + <text term="ibid" text-case="capitalize-first" suffix="."/> + </else-if> + <else-if position="subsequent"> + <group delimiter=", "> + <group> + <text macro="author-short"/> + <text macro="recipient-short"/> + </group> + <text macro="title-short"/> + <choose> + <if type="interview"> + <text term="interview" text-case="lowercase"/> + </if> + <else-if variable="recipient"> + <text macro="issued"/> + </else-if> + </choose> + <text variable="locator"/> + </group> + </else-if> + <else> + <group delimiter=", "> + <group> + <text macro="author"/> + <text macro="recipient"/> + </group> + <text macro="title"/> + </group> + <choose> + <if type="thesis"> + <group prefix=" (" delimiter=", " suffix=")"> + <text variable="genre"/> + <text variable="publisher"/> + <text macro="issued"/> + </group> + </if> + <else-if type="chapter"> + <group delimiter=", "> + <group class="container" prefix=", " delimiter=" "> + <text term="in" text-case="lowercase"/> + <text variable="container-title" font-style="italic"/> + </group> + <text macro="editor-translator"/> + </group> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="article-journal"> + <group class="container" prefix=", "> + <text variable="container-title" font-style="italic" prefix=" "/> + <text macro="publisher"/> + <text variable="volume" prefix=" "/> + <text variable="issue" prefix=", no. "/> + <text macro="issued" prefix=" (" suffix=")"/> + </group> + </else-if> + <else-if type="article-newspaper article-magazine" match="any"> + <group prefix=", " delimiter=", "> + <text macro="editor-translator"/> + <text variable="container-title" font-style="italic"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="paper-conference"> + <text macro="editor-translator" prefix=", "/> + <text variable="genre" prefix=", " suffix=" presented at the "/> + <text macro="event" suffix=", "/> + <text macro="issued"/> + </else-if> + <else-if type="interview"> + <group prefix=", " delimiter=", "> + <text macro="interviewer"/> + <text variable="medium"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="personal_communication"> + <group prefix=", " delimiter=", "> + <text variable="genre"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="graphic"> + <group prefix=", " delimiter=", "> + <text variable="medium"/> + <text macro="publisher"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="report"> + <text macro="editor-translator" prefix=", "/> + <text variable="genre" prefix=", "/> + <choose> + <if variable="publisher-place publisher" match="any"> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher"/> + <text macro="issued"/> + </group> + </if> + <else> + <text macro="issued" prefix=", "/> + </else> + </choose> + </else-if> + <else-if type="book"> + <text macro="editor-translator" prefix=", "/> + <text variable="collection-title" prefix=", "/> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher"/> + <text macro="issued"/> + </group> + </else-if> + <else> + <group class="container" prefix=", " delimiter=", "> + <text macro="editor-translator"/> + <text variable="container-title" font-style="italic"/> + <text variable="collection-title" font-style="italic"/> + <text variable="genre"/> + <text variable="medium"/> + <text macro="issued"/> + </group> + </else> + </choose> + <choose> + <if type="article-journal"> + <text variable="locator" prefix=": "/> + </if> + <else> + <text variable="locator" prefix=", "/> + </else> + </choose> + <choose> + <if type="book thesis chapter article-journal article-newspaper article-magazine" match="none"> + <group prefix=", " delimiter=", "> + <text variable="archive_location"/> + <text macro="archive"/> + </group> + </if> + </choose> + <choose> + <if variable="page" match="none"> + <text variable="URL" prefix=", "/> + </if> + </choose> + </else> + </choose> + </layout> + </citation> + <bibliography> + <option name="hanging-indent" value="true"/> + <option name="et-al-min" value="6"/> + <option name="et-al-use-first" value="6"/> + <option name="subsequent-author-substitute" value="---"/> + <sort> + <key macro="sort-key"/> + </sort> + <layout suffix="."> + <group delimiter=". "> + <text macro="author-bib"/> + <text macro="title"/> + <choose> + <if type="thesis"> + <group delimiter=", "> + <text variable="genre"/> + <text variable="publisher"/> + <text macro="issued"/> + </group> + </if> + <else-if type="chapter"> + <group class="container"> + <group delimiter=". "> + <group delimiter=" "> + <text term="in" text-case="capitalize-first"/> + <text variable="container-title" font-style="italic" /> + </group> + <text variable="collection-title"/> + <text macro="editor-translator-bib" /> + </group> + <text variable="page" prefix=", "/> + <text macro="publisher" prefix=". "/> + <text macro="issued" prefix=", "/> + </group> + </else-if> + <else-if type="article-journal"> + <text macro="editor-translator-bib" suffix=". "/> + <group class="container"> + <text variable="container-title" font-style="italic"/> + <text variable="volume" prefix=" "/> + <text variable="issue" prefix=", no. "/> + <text macro="issued" prefix=" (" suffix=")"/> + <text variable="page" prefix=": "/> + </group> + </else-if> + <else-if type="article-newspaper article-magazine" match="any"> + <text macro="editor-translator-bib" suffix=". "/> + <group delimiter=", "> + <text variable="container-title" font-style="italic"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="paper-conference"> + <text macro="editor-translator-bib" suffix=". "/> + <text variable="genre" text-case="capitalize-first" suffix=" presented at the "/> + <text variable="event" suffix=", "/> + <text variable="event-place" suffix=", "/> + <text macro="issued"/> + </else-if> + <else-if type="interview"> + <group delimiter=". " suffix="."> + <text macro="interviewer-bib"/> + <text variable="medium" text-case="capitalize-first"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="personal_communication"> + <choose> + <if variable="genre"> + <text variable="genre" text-case="capitalize-first"/> + </if> + <else> + <text term="letter" text-case="capitalize-first"/> + </else> + </choose> + <text macro="recipient" prefix=" "/> + <text macro="issued" prefix=". "/> + </else-if> + <else-if type="graphic"> + <text variable="medium" text-case="capitalize-first" suffix=". "/> + <text macro="publisher" suffix=", "/> + <text macro="issued"/> + </else-if> + <else-if type="report"> + <text macro="editor-translator-bib" suffix=". "/> + <text variable="genre" suffix=". "/> + <text macro="publisher" suffix=", "/> + <text macro="issued"/> + </else-if> + <else-if type="book"> + <text macro="editor-translator-bib" suffix=". "/> + <text variable="collection-title" suffix=". "/> + <text macro="publisher" suffix=", "/> + <text macro="issued"/> + </else-if> + <else> + <group class="container" delimiter=". "> + <text macro="editor-translator-bib"/> + <text variable="container-title" font-style="italic"/> + <text variable="collection-title" font-style="italic"/> + <text variable="genre" text-case="capitalize-first"/> + <text variable="medium" text-case="capitalize-first"/> + <text macro="issued"/> + </group> + </else> + </choose> + <choose> + <if type="book thesis chapter article-journal article-newspaper article-magazine" match="none"> + <group delimiter=". "> + <text variable="archive_location" text-case="title"/> + <text macro="archive"/> + </group> + </if> + </choose> + <choose> + <if variable="page" match="none"> + <text variable="URL"/> + </if> + </choose> + </group> + </layout> + </bibliography> +</style> +'); + +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/chicago-note-bibliography', '2008-01-03 23:00:00', 'Chicago Manual of Style (Note with Bibliography)', +'<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="http://xbiblio.svn.sourceforge.net/viewvc/*checkout*/xbiblio/csl/schema/trunk/csl.rnc" type="compact"?> +<style xmlns="http://purl.org/net/xbiblio/csl" class="note" xml:lang="en"> + <info> + <title>Chicago Manual of Style (Note with Bibliography)</title> + <id>http://www.zotero.org/styles/chicago-note-bibliography</id> + <link href="http://www.zotero.org/styles/chicago-note-bibliography"/> + <link href="http://www.chicagomanualofstyle.org/tools_citationguide.html" rel="documentation"/> + <author> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> + </author> + <contributor> + <name>Simon Kornblith</name> + <email>simon@simonster.com</email> + </contributor> + <contributor> + <name>Elena Razlogova</name> + <email>elena.razlogova@gmail.com</email> + </contributor> + <summary>Chicago format with short notes and full bibliography</summary> + <category term="generic-base"/> + <category term="numeric"/> + <updated>2008-01-03T23:00:00+00:00</updated> + </info> + <macro name="editor-translator"> + <names variable="editor translator" delimiter=". "> + <label form="verb" prefix=" " text-case="capitalize-first" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="editor-translator-short"> + <choose> + <if variable="author"> + <names variable="editor translator" delimiter=", "> + <label form="short" prefix=" " text-case="lowercase" suffix=". "/> + <name and="text" delimiter=", "/> + </names> + </if> + </choose> + </macro> + <macro name="author"> + <names variable="author"> + <name name-as-sort-order="first" and="text" sort-separator=", " + delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="author-full"> + <names variable="author"> + <name name-as-sort-order="all" and="text" sort-separator=", " + delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="author-short"> + <names variable="author"> + <name form="short" and="text" delimiter=", " /> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="recipient"> + <names variable="recipient" delimiter=", "> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="recipient-short"> + <names variable="recipient"> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name form="short" and="text" delimiter=", " /> + </names> + </macro> + <macro name="interviewer"> + <names variable="interviewer" delimiter=", "> + <label form="verb" prefix=" " text-case="capitalize-first" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="access"> + <group> + <text variable="URL"/> + <group prefix=" (" suffix=")" delimiter=" "> + <text term="accessed" text-case="lowercase" suffix=" "/> + <date variable="accessed" suffix=", "> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </group> + </group> + </macro> + <macro name="title"> + <choose> + <if type="book"> + <text variable="title" font-style="italic" text-case="title"/> + </if> + <else> + <text variable="title" quotes="true" text-case="title"/> + </else> + </choose> + </macro> + <macro name="title-short"> + <choose> + <if type="book"> + <text variable="title" form="short" font-style="italic" text-case="title"/> + </if> + <else> + <text variable="title" form="short" quotes="true" text-case="title"/> + </else> + </choose> + </macro> + <macro name="publisher"> + <group delimiter=": "> + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + </macro> + <macro name="archive"> + <group delimiter=", "> + <text variable="archive"/> + <text variable="archive-place"/> + </group> + </macro> + <macro name="issued"> + <choose> + <if type="graphic report" match="any"> + <date variable="issued"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </if> + <else-if type="book chapter thesis" match="any"> + <date variable="issued"> + <date-part name="year"/> + </date> + </else-if> + <else> + <date variable="issued"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </else> + </choose> + </macro> + <macro name="sort-key"> + <text macro="author-full" suffix=" "/> + <text variable="title" suffix=" "/> + <text variable="genre"/> + </macro> + <citation> + <option name="et-al-min" value="4"/> + <option name="et-al-use-first" value="1"/> + <option name="et-al-subsequent-min" value="4"/> + <option name="et-al-subsequent-use-first" value="1"/> + <option name="disambiguate-add-year-suffix" value="true"/> + <option name="disambiguate-add-names" value="true"/> + <option name="disambiguate-add-givenname" value="true"/> + <layout prefix="" suffix="." delimiter="; "> + <group delimiter=", "> + <group> + <text macro="author-short"/> + <text macro="recipient-short"/> + </group> + <text macro="title-short"/> + <choose> + <if type="interview"> + <text term="interview" text-case="lowercase"/> + </if> + <else-if variable="recipient"> + <text macro="issued"/> + </else-if> + </choose> + <text variable="locator"/> + </group> + </layout> + </citation> + <bibliography> + <option name="hanging-indent" value="true"/> + <option name="et-al-min" value="6"/> + <option name="et-al-use-first" value="6"/> + <option name="subsequent-author-substitute" value="---"/> + <sort> + <key macro="sort-key"/> + </sort> + <layout suffix="."> + <group delimiter=". "> + <text macro="author"/> + <text macro="title"/> + <choose> + <if type="thesis"> + <group delimiter=", "> + <text variable="genre"/> + <text variable="publisher"/> + <text macro="issued"/> + </group> + </if> + <else-if type="chapter"> + <group class="container"> + <text term="in" text-case="capitalize-first"/> + <text variable="container-title" font-style="italic" prefix=" "/> + <text variable="collection-title" prefix=". "/> + <text macro="editor-translator" prefix=". "/> + <text variable="page" prefix=", "/> + <text macro="publisher" prefix=". "/> + <text macro="issued" prefix=", "/> + </group> + </else-if> + <else-if type="article-journal"> + <text macro="editor-translator" suffix=". "/> + <group class="container"> + <text variable="container-title" font-style="italic"/> + <text variable="volume" prefix=" "/> + <text variable="issue" prefix=", no. "/> + <text macro="issued" prefix=" (" suffix=")"/> + <text variable="page" prefix=": "/> + </group> + </else-if> + <else-if type="article-newspaper article-magazine" match="any"> + <text macro="editor-translator" suffix=". "/> + <group delimiter=", "> + <text variable="container-title" font-style="italic"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="paper-conference"> + <text macro="editor-translator" suffix=". "/> + <text variable="genre" text-case="capitalize-first" suffix=" presented at the "/> + <text variable="event" suffix=", "/> + <text variable="event-place" suffix=", "/> + <text macro="issued"/> + </else-if> + <else-if type="interview"> + <group delimiter=". " suffix="."> + <text macro="interviewer"/> + <text variable="medium" text-case="capitalize-first"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="personal_communication"> + <choose> + <if variable="genre"> + <text variable="genre" text-case="capitalize-first"/> + </if> + <else> + <text term="letter" text-case="capitalize-first"/> + </else> + </choose> + <text macro="recipient" prefix=" "/> + <text macro="issued" prefix=". "/> + </else-if> + <else-if type="graphic"> + <text variable="medium" text-case="capitalize-first" suffix=". "/> + <text macro="publisher" suffix=", "/> + <text macro="issued"/> + </else-if> + <else-if type="report"> + <text macro="editor-translator" suffix=". "/> + <text variable="genre" suffix=". "/> + <text macro="publisher" suffix=", "/> + <text macro="issued"/> + </else-if> + <else-if type="book"> + <text macro="editor-translator" suffix=". "/> + <text variable="collection-title" suffix=". "/> + <text macro="publisher" suffix=", "/> + <text macro="issued"/> + </else-if> + <else> + <group class="container" delimiter=". "> + <text macro="editor-translator"/> + <text variable="container-title" font-style="italic"/> + <text variable="collection-title" font-style="italic"/> + <text variable="genre" text-case="capitalize-first"/> + <text variable="medium" text-case="capitalize-first"/> + <text macro="issued"/> + </group> + </else> + </choose> + <choose> + <if type="book thesis chapter article-journal article-newspaper article-magazine" match="none"> + <group delimiter=". "> + <text variable="archive_location" text-case="title"/> + <text macro="archive"/> + </group> + </if> + </choose> + <choose> + <if variable="page" match="none"> + <text variable="URL"/> + </if> + </choose> + </group> + </layout> + </bibliography> +</style> +'); + +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/chicago-note', '2008-01-03 23:00:00', 'Chicago Manual of Style (Note without Bibliography)', +'<style xmlns="http://purl.org/net/xbiblio/csl" class="note" xml:lang="en"> + <info> + <title>Chicago Manual of Style (Note without Bibliography)</title> + <id>http://www.zotero.org/styles/chicago-note</id> + <link href="http://www.zotero.org/styles/chicago-note"/> + <link href="http://www.chicagomanualofstyle.org/tools_citationguide.html" rel="documentation"/> + <author> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> + </author> + <contributor> + <name>Simon Kornblith</name> + <email>simon@simonster.com</email> + </contributor> + <contributor> + <name>Elena Razlogova</name> + <email>elena.razlogova@gmail.com</email> + </contributor> + <summary>Chicago format with full notes and no bibliography</summary> + <category term="generic-base"/> + <category term="numeric"/> + <updated>2008-01-03T23:00:00+00:00</updated> + </info> + <macro name="editor-translator"> + <names variable="editor translator" delimiter=", "> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="editor-translator-short"> + <choose> + <if variable="author"> + <names variable="editor translator" delimiter=", "> + <label form="short" prefix=" " text-case="lowercase" suffix=". "/> + <name and="text" delimiter=", "/> + </names> + </if> + </choose> + </macro> + <macro name="author"> + <names variable="author"> + <name and="text" sort-separator=", " + delimiter=", "/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="author-full"> + <names variable="author"> + <name and="text" sort-separator=", " + delimiter=", "/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="author-short"> + <names variable="author"> + <name form="short" and="text" delimiter=", " /> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="recipient"> + <names variable="recipient" delimiter=", "> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="recipient-short"> + <names variable="recipient"> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name form="short" and="text" delimiter=", " /> + </names> + </macro> + <macro name="interviewer"> + <names variable="interviewer" delimiter=", "> + <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="access"> + <group> + <text variable="URL"/> + <group prefix=" (" suffix=")" delimiter=" "> + <text term="accessed" text-case="lowercase" suffix=" "/> + <date variable="accessed" suffix=", "> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </group> + </group> + </macro> + <macro name="title"> + <choose> + <if type="book"> + <text variable="title" font-style="italic" text-case="title"/> + </if> + <else> + <text variable="title" quotes="true" text-case="title"/> + </else> + </choose> + </macro> + <macro name="title-short"> + <choose> + <if type="book"> + <text variable="title" form="short" font-style="italic" text-case="title"/> + </if> + <else> + <text variable="title" form="short" quotes="true" text-case="title"/> + </else> + </choose> + </macro> + <macro name="event"> + <text variable="event"/> + <text variable="event-place" prefix=", "/> + </macro> + <macro name="publisher"> + <group delimiter=": "> + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + </macro> + <macro name="archive"> + <group delimiter=", "> + <text variable="archive"/> + <text variable="archive-place"/> + </group> + </macro> + <macro name="issued"> + <choose> + <if type="graphic report" match="any"> + <date variable="issued"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </if> + <else-if type="book chapter thesis" match="any"> + <date variable="issued"> + <date-part name="year"/> + </date> + </else-if> + <else> + <date variable="issued"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </else> + </choose> + </macro> + <citation> + <option name="et-al-min" value="4"/> + <option name="et-al-use-first" value="1"/> + <option name="et-al-subsequent-min" value="4"/> + <option name="et-al-subsequent-use-first" value="1"/> + <option name="disambiguate-add-year-suffix" value="true"/> + <option name="disambiguate-add-names" value="true"/> + <option name="disambiguate-add-givenname" value="true"/> + <layout prefix="" suffix="." delimiter="; "> + <choose> + <if position="ibid-with-locator"> + <group delimiter=", "> + <text term="ibid" text-case="capitalize-first" suffix="."/> + <text variable="locator"/> + </group> + </if> + <else-if position="ibid"> + <text term="ibid" text-case="capitalize-first" suffix="."/> + </else-if> + <else-if position="subsequent"> + <group delimiter=", "> + <group> + <text macro="author-short"/> + <text macro="recipient-short"/> + </group> + <text macro="title-short"/> + <choose> + <if type="interview"> + <text term="interview" text-case="lowercase"/> + </if> + <else-if variable="recipient"> + <text macro="issued"/> + </else-if> + </choose> + <text variable="locator"/> + </group> + </else-if> + <else> + <group delimiter=", "> + <group> + <text macro="author"/> + <text macro="recipient"/> + </group> + <text macro="title"/> + </group> + <choose> + <if type="thesis"> + <group prefix=" (" delimiter=", " suffix=")"> + <text variable="genre"/> + <text variable="publisher"/> + <text macro="issued"/> + </group> + </if> + <else-if type="chapter"> + <group delimiter=", "> + <group class="container" prefix=", " delimiter=" "> + <text term="in" text-case="lowercase"/> + <text variable="container-title" font-style="italic"/> + </group> + <text macro="editor-translator"/> + </group> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="article-journal"> + <group class="container" prefix=", "> + <text variable="container-title" font-style="italic" prefix=" "/> + <text macro="publisher"/> + <text variable="volume" prefix=" "/> + <text variable="issue" prefix=", no. "/> + <text macro="issued" prefix=" (" suffix=")"/> + </group> + </else-if> + <else-if type="article-newspaper article-magazine" match="any"> + <group prefix=", " delimiter=", "> + <text macro="editor-translator"/> + <text variable="container-title" font-style="italic"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="paper-conference"> + <text macro="editor-translator" prefix=", "/> + <text variable="genre" prefix=", " suffix=" presented at the "/> + <text macro="event" suffix=", "/> + <text macro="issued"/> + </else-if> + <else-if type="interview"> + <group prefix=", " delimiter=", "> + <text macro="interviewer"/> + <text variable="medium"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="personal_communication"> + <group prefix=", " delimiter=", "> + <text variable="genre"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="graphic"> + <group prefix=", " delimiter=", "> + <text variable="medium"/> + <text macro="publisher"/> + <text macro="issued"/> + </group> + </else-if> + <else-if type="report"> + <text macro="editor-translator" prefix=", "/> + <text variable="genre" prefix=", "/> + <choose> + <if variable="publisher publisher-place" match="all"> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher"/> + <text macro="issued"/> + </group> + </if> + <else> + <text macro="issued" prefix=", "/> + </else> + </choose> + </else-if> + <else-if type="book"> + <text macro="editor-translator" prefix=", "/> + <text variable="collection-title" prefix=", "/> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher"/> + <text macro="issued"/> + </group> + </else-if> + <else> + <group class="container" prefix=", " delimiter=", "> + <text macro="editor-translator"/> + <text variable="container-title" font-style="italic"/> + <text variable="collection-title" font-style="italic"/> + <text variable="genre"/> + <text variable="medium"/> + <text macro="issued"/> + </group> + </else> + </choose> + <choose> + <if type="article-journal"> + <text variable="locator" prefix=": "/> + </if> + <else> + <text variable="locator" prefix=", "/> + </else> + </choose> + <choose> + <if type="book thesis chapter article-journal article-newspaper article-magazine" match="none"> + <group prefix=", " delimiter=", "> + <text variable="archive_location"/> + <text macro="archive"/> + </group> + </if> + </choose> + <choose> + <if variable="page" match="none"> + <text variable="URL" prefix=", "/> + </if> + </choose> + </else> + </choose> + </layout> + </citation> +</style> +'); + +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/ieee', '2008-01-03 23:00:00', 'IEEE', +'<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="http://xbiblio.svn.sourceforge.net/viewvc/*checkout*/xbiblio/csl/schema/trunk/csl.rnc" type="compact"?> +<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" xml:lang="en"> + <info> + <title>IEEE</title> + <id>http://www.zotero.org/styles/ieee</id> + <link href="http://www.zotero.org/styles/ieee"/> + <author> + <name>Michael Berkowitz</name> + <email>mberkowi@gmu.edu</email> + </author> + <contributor> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> + </contributor> + <category term="engineering"/> + <category term="generic-base"/> + <category term="numeric"/> + <updated>2008-01-03T23:00:00+00:00</updated> + </info> + <macro name="author"> + <names variable="author"> + <name initialize-with="." delimiter=", " and="text" name-as-sort-order="all"/> + <label form="short" prefix=", " text-case="lowercase" suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + </substitute> + </names> + </macro> + <macro name="editor"> + <names variable="editor"> + <name initialize-with="." delimiter=", " and="text" name-as-sort-order="all"/> + <label form="short" prefix=", " text-case="lowercase" suffix="."/> + </names> + </macro> + <macro name="title"> + <choose> + <if type="book"> + <text variable="title" font-style="italic"/> + </if> + <else> + <text variable="title" quotes="true"/> + </else> + </choose> + </macro> + <macro name="publisher"> + <text variable="publisher-place" suffix=": " prefix=" "/> + <text variable="publisher" suffix=", "/> + <date variable="issued"> + <date-part name="year"/> + </date> + </macro> + <macro name="access"> + <text variable="URL"/> + </macro> + <macro name="page"> + <group> + <label variable="page" form="short" suffix=". "/> + <text variable="page" /> + </group> + </macro> + <citation> + <option name="collapse" value="citation-number"/> + <sort> + <key variable="citation-number"/> + </sort> + <layout prefix="[" suffix="]" delimiter=","> + <text variable="citation-number"/> + </layout> + </citation> + <bibliography> + <option name="et-al-min" value="4"/> + <option name="et-al-use-first" value="1"/> + <option name="second-field-align" value="margin"/> + <layout suffix="."> + <text variable="citation-number" prefix="[" suffix="]"/> + <text macro="author" prefix=" " suffix=", "/> + <choose> + <if type="book"> + <group delimiter=", "> + <text macro="title"/> + <text macro="publisher"/> + </group> + </if> + <else-if type="chapter"> + <group delimiter=", "> + <text macro="title"/> + <text variable="container-title" font-style="italic"/> + <text macro="editor"/> + <text macro="publisher" /> + <text macro="page"/> + </group> + </else-if> + <else> + <group delimiter=", "> + <text macro="title"/> + <text variable="container-title" font-style="italic"/> + <text variable="volume" prefix=" vol. " /> + <date variable="issued" > + <date-part name="month" form="short" suffix=". "/> + <date-part name="year"/> + </date> + <text macro="page"/> + </group> + </else> + </choose> + <text macro="access" prefix="; "/> + </layout> + </bibliography> +</style> +'); + +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/harvard1', '2008-01-03 23:00:00', 'Harvard Reference format 1 (Author-Date)', +'<?xml version="1.0" encoding="UTF-8"?> +<style xmlns="http://purl.org/net/xbiblio/csl" xml:lang="en" class="in-text" > + <info> + <title>Harvard Reference format 1 (Author-Date)</title> + <id>http://www.zotero.org/styles/harvard1</id> + <link href="http://www.zotero.org/styles/harvard1"/> + <author> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> + </author> + <category term="author-date"/> + <category term="generic-base"/> + <updated>2008-01-03T23:00:00+00:00</updated> + <summary>The Harvard author-date style</summary> + <link href="http://libweb.anglia.ac.uk/referencing/harvard.htm" rel="documentation"/> + </info> + <macro name="editor"> + <names variable="editor" delimiter=", "> + <name and="symbol" initialize-with=". " delimiter=", "/> + <label form="short" prefix=", " text-case="lowercase" suffix="."/> + </names> + </macro> + <macro name="anon"> + <text term="anonymous" form="short" text-case="capitalize-first"/> + </macro> + <macro name="author"> + <names variable="author"> + <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with="." + delimiter=", "/> + <label form="short" prefix=" " suffix="." text-case="lowercase"/> + <substitute> + <names variable="editor"/> + <text macro="anon"/> + </substitute> + </names> + </macro> + <macro name="author-short"> + <names variable="author"> + <name form="short" and="symbol" delimiter=", " initialize-with=". "/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="anon"/> + </substitute> + </names> + </macro> + <macro name="access"> + <group> + <text value="Available at:" suffix=" "/> + <text variable="URL"/> + <group prefix=" [" suffix="]"> + <text term="accessed" text-case="capitalize-first" suffix=" "/> + <date variable="accessed"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </group> + </group> + </macro> + <macro name="title"> + <choose> + <if type="book"> + <text variable="title" font-style="italic"/> + </if> + <else> + <text variable="title"/> + </else> + </choose> + </macro> + <macro name="publisher"> + <group delimiter=": "> + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + </macro> + <macro name="year-date"> + <choose> + <if variable="issued"> + <date variable="issued"> + <date-part name="year"/> + </date> + </if> + <else> + <text term="no date"/> + </else> + </choose> + </macro> + <macro name="edition"> + <choose> + <if is-numeric="edition"> + <group delimiter=" "> + <number variable="edition" form="ordinal"/> + <text term="edition" form="short" suffix="."/> + </group> + </if> + <else> + <text variable="edition" suffix="."/> + </else> + </choose> + </macro> + <citation> + <option name="et-al-min" value="4"/> + <option name="et-al-use-first" value="1"/> + <option name="et-al-subsequent-min" value="6"/> + <option name="et-al-subsequent-use-first" value="1"/> + <option name="disambiguate-add-year-suffix" value="true"/> + <option name="disambiguate-add-names" value="true"/> + <option name="disambiguate-add-givenname" value="true"/> + <option name="collapse" value="year"/> + <layout prefix="(" suffix=")" delimiter="; "> + <group delimiter=", "> + <group delimiter=" "> + <text macro="author-short"/> + <text macro="year-date"/> + </group> + <text variable="locator" prefix="p."/> + </group> + </layout> + </citation> + <bibliography> + <option name="hanging-indent" value="true"/> + <option name="et-al-min" value="4"/> + <option name="et-al-use-first" value="1"/> + <sort> + <key macro="author"/> + <key variable="title"/> + </sort> + <layout> + <text macro="author" suffix=","/> + <date variable="issued" prefix=" " suffix="."> + <date-part name="year"/> + </date> + <choose> + <if type="book"> + <group prefix=" " delimiter=" " suffix=","> + <text macro="title" /> + <text macro="edition"/> + <text macro="editor"/> + </group> + <text prefix=" " suffix="." macro="publisher"/> + </if> + <else-if type="chapter"> + <text macro="title" prefix=" " suffix="."/> + <group class="container" prefix=" "> + <text term="in" text-case="capitalize-first"/> + <text macro="editor" prefix=" "/> + <text variable="container-title" font-style="italic" prefix=" " suffix="."/> + <text variable="collection-title" prefix=" " suffix="."/> + <group suffix="."> + <text macro="publisher" prefix=" "/> + <group prefix=", "> + <text variable="page" prefix="p. "/> + </group> + </group> + </group> + </else-if> + <else> + <group suffix="."> + <text macro="title" prefix=" " /> + <text macro="editor" prefix=" "/> + </group> + <group class="container" prefix=" " suffix="."> + <text variable="container-title" font-style="italic"/> + <group prefix=", "> + <text variable="volume" /> + <text variable="issue" prefix="(" suffix=")"/> + </group> + <group prefix=", "> + <text variable="page" prefix="p."/> + </group> + </group> + </else> + </choose> + <text prefix=" " macro="access" suffix="."/> + </layout> + </bibliography> +</style> +'); + +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/mhra', '2008-01-03 23:00:00', 'Modern Humanities Research Association (Note with Bibliography)', +'<style xmlns="http://purl.org/net/xbiblio/csl" class="note" xml:lang="en"> + <info> + <title>Modern Humanities Research Association (Note with Bibliography)</title> + <id>http://www.zotero.org/styles/mhra</id> + <link href="http://www.zotero.org/styles/mhra"/> + <link href="http://www.mhra.org.uk/Publications/Books/StyleGuide/download.shtml" rel="documentation"/> + <author> + <name>Julian Onions</name> + <email>julian.onions@gmail.com</email> + </author> + <category term="history"/> + <category term="numeric"/> + <category term="generic-base"/> + <updated>2008-01-03T23:00:00+00:00</updated> + </info> + <macro name="editor-translator"> + <names variable="editor translator" prefix="" suffix="" delimiter=", "> + <label form="verb-short" prefix=" " text-case="lowercase" suffix=" "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="editor-translator-short"> + <names variable="editor translator" prefix="" suffix="" delimiter=", "> + <label form="short" prefix=" " text-case="lowercase" suffix=". "/> + <name and="text" delimiter=", "/> + </names> + </macro> + <macro name="author"> + <names variable="author"> + <name name-as-sort-order="first" and="text" sort-separator=", " + delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="title"/> + </substitute> + </names> + </macro> + <macro name="author-full"> + <names variable="author"> + <name name-as-sort-order="all" and="text" sort-separator=", " + delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="title"/> + </substitute> + </names> + </macro> + <macro name="author-short"> + <names variable="author"> + <name form="long" and="text" delimiter=", " /> + <label form="short" prefix=", " suffix="."/> + </names> + </macro> + <macro name="access"> + <group> + <text variable="URL"/> + <group prefix=" (" suffix=")" delimiter=" "> + <text term="accessed" text-case="lowercase" suffix=" "/> + <date variable="accessed" suffix=", "> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + </group> + </group> + </macro> + <macro name="title"> + <choose> + <if type="thesis"> + <text variable="title" form="long" quotes="true"/> + </if> + <else-if type="book"> + <text variable="title" form="long" font-style="italic"/> + </else-if> + <else> + <text variable="title" form="long" quotes="true"/> + </else> + </choose> + </macro> + <macro name="publisher"> + <group delimiter=": "> + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + </macro> + <macro name="pages"> + <choose> + <if type="article-journal" match="none"> + <label variable="page" form="short" suffix=". "/> + </if> + </choose> + <text variable="page"/> + </macro> + <macro name="locator"> + <label variable="locator" form="short" suffix=". "/> + <text variable="locator"/> + </macro> + <macro name="vols"> + <choose> + <if variable="number-of-volumes"> + <text variable="number-of-volumes"/> + <text term="volume" prefix=" " form="short" plural="true"/> + </if> + </choose> + </macro> + <citation> + <layout suffix="." delimiter="; "> + <group suffix=""> + <text macro="author-short" suffix=", "/> + <text macro="title" prefix=""/> + <choose> + <if type="thesis"> + <group prefix=" (" delimiter=", " suffix=")"> + <text variable="genre"/> + <text variable="publisher"/> + <date variable="issued"> + <date-part name="year"/> + </date> + </group> + </if> + <else-if type="chapter"> + <group class="container" prefix=", "> + <text term="in" text-case="lowercase"/> + <text variable="container-title" font-style="italic" prefix=" " suffix=","/> + <text variable="collection-title" prefix=" " suffix=","/> + <text macro="editor-translator-short"/> + </group> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher" /> + <date variable="issued"> + <date-part name="year"/> + </date> + </group> + </else-if> + <else-if type="book"> + <group delimiter=", " prefix=" "> + <text macro="editor-translator-short"/> + <text variable="collection-title"/> + <text variable="edition" suffix=" edn"/> + <text macro="vols"/> + </group> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher"/> + <date variable="issued" prefix=" " suffix=""> + <date-part name="year"/> + </date> + </group> + <text variable="volume" prefix=", "/> + </else-if> + <else-if type="article-newspaper article-magazine" match="any"> + <group delimiter=", " prefix=", "> + <text variable="container-title" font-style="italic"/> + <text variable="issue" suffix="."/> + <date variable="issued"> + <date-part name="day" form="numeric" suffix=" "/> + <date-part name="month" form="long" suffix=" "/> + <date-part name="year"/> + </date> + </group> + </else-if> + <else-if type="article-journal"> + <group class="container" prefix=", " delimiter=", "> + <text variable="container-title" font-style="italic"/> + <text macro="publisher"/> + <text variable="volume" prefix=" "/> + </group> + <date variable="issued" prefix=" (" suffix=")"> + <date-part name="year"/> + </date> + </else-if> + <else> + <group delimiter=", " prefix=". "> + <text variable="container-title" font-style="italic"/> + <text variable="issue" prefix=", " suffix="."/> + <date variable="issued"> + <date-part name="month" form="long"/> + <date-part name="day" form="numeric" prefix=" " suffix=", "/> + <date-part name="year"/> + </date> + </group> + </else> + </choose> + <group prefix=", " delimiter=" "> + <text macro="pages"/> + <text macro="locator" prefix="(" suffix=")"/> + </group> + </group> + </layout> + </citation> + <bibliography> + <option name="hanging-indent" value="true"/> + <option name="et-al-min" value="6"/> + <option name="et-al-use-first" value="6"/> + <option name="subsequent-author-substitute" value="---"/> + <sort> + <key macro="author"/> + <key variable="title"/> + </sort> + <layout suffix="."> + <text macro="author" suffix=","/> + <choose> + <if type="thesis"> + <group suffix="."> + <text macro="title" prefix=" "/> + </group> + <group delimiter=", " prefix=" "> + <text variable="genre"/> + <text variable="publisher"/> + <date variable="issued"> + <date-part name="year"/> + </date> + </group> + </if> + <else-if type="chapter"> + <text macro="title" prefix=" "/> + <group class="container" prefix=", "> + <text term="in" text-case="lowercase"/> + <text variable="container-title" font-style="italic" prefix=" " suffix=","/> + <text variable="collection-title" prefix=" " suffix=","/> + <text macro="editor-translator-short"/> + </group> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher" /> + <date variable="issued"> + <date-part name="year"/> + </date> + </group> + </else-if> + <else-if type="article-journal"> + <group suffix="."> + <text macro="title" prefix=" "/> + <text macro="editor-translator" prefix=" "/> + </group> + <group class="container" prefix=" " suffix=""> + <text variable="container-title" font-style="italic" prefix=" "/> + <text variable="volume" prefix=" "/> + <text variable="issue" prefix=", no. "/> + <date variable="issued" prefix=" (" suffix=")"> + <date-part name="month" suffix=" "/> + <date-part name="day" suffix=", "/> + <date-part name="year"/> + </date> + <text variable="page" prefix=": "/> + </group> + </else-if> + <else-if type="article-newspaper article-magazine" match="any"> + <group suffix="."> + <text macro="title" prefix=" "/> + <text macro="editor-translator" prefix=" "/> + </group> + <group delimiter=", " prefix=" "> + <text variable="container-title" font-style="italic"/> + <text variable="issue" suffix="."/> + <date variable="issued"> + <date-part name="month" form="long"/> + <date-part name="day" form="numeric" prefix=" " suffix=", "/> + <date-part name="year"/> + </date> + </group> + </else-if> + <else-if type="paper-conference"> + <group suffix="."> + <text macro="title" prefix=" "/> + <text macro="editor-translator" prefix=" "/> + </group> + <group suffix=""> + <text value="paper presented at" text-case="capitalize-first"/> + <text variable="event" prefix=" "/> + <text variable="event-place" prefix=", "/> + <date variable="event"> + <date-part name="month" form="long"/> + <date-part name="day" form="numeric" prefix=" " suffix=", "/> + <date-part name="year"/> + </date> + </group> + </else-if> + <else-if type="book"> + <group suffix="."> + <text macro="title" prefix=" " suffix="."/> + </group> + <group delimiter=", " prefix=" "> + <text macro="editor-translator-short"/> + <text variable="collection-title"/> + <text variable="edition" suffix=" edn"/> + <text macro="vols"/> + </group> + <group prefix=" (" suffix=")" delimiter=", "> + <text macro="publisher"/> + <date variable="issued" prefix=" " suffix=""> + <date-part name="year"/> + </date> + </group> + <text variable="volume" prefix=", "/> + </else-if> + <else> + <group suffix="."> + <text macro="title" prefix=" "/> + <text macro="editor-translator" prefix=" "/> + </group> + <group class="container" prefix=" " suffix=""> + <text variable="container-title" font-style="italic"/> + <group prefix=", "> + <text variable="volume" font-style="italic"/> + <text variable="issue" prefix="(" suffix=")"/> + </group> + <text variable="page" prefix=", "/> + </group> + </else> + </choose> + <text prefix=" " macro="access"/> + </layout> + </bibliography> +</style> +'); + +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/mhra_note_without_bibliography', '2008-01-03 23:00:00', 'Modern Humanities Research Association (Note without Bibliography)', +'<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="csl.rnc" type="compact"?> +<style xmlns="http://purl.org/net/xbiblio/csl" class="note"> + <info> + <title>Modern Humanities Research Association (Note without Bibliography)</title> + <id>http://www.zotero.org/styles/mhra_note_without_bibliography</id> + <link href="http://www.zotero.org/styles/mhra_note_without_bibliography"/> + <summary>Bibliography style for the Modern Humanities Research Association</summary> + <author> + <name>Jim Safley</name> + <email>jsafley@gmu.edu</email> + </author> + <updated>2008-01-03T23:00:00+00:00</updated> + </info> + <defaults> + <et-al min-authors="4" use-first="1" term-name="and-others"></et-al> + <author name-as-sort-order="no"> + <name and="text" delimiter=", " delimiter-precedes-last="always"></name> + <substitute> + <choose> + <editor></editor> + <translator></translator> + <titles></titles> + </choose> + </substitute> + </author> + <contributor name-as-sort-order="no"> + <label suffix=" " form="verb"></label> + <name and="text" delimiter=", "></name> + </contributor> + <locator> + <number></number> + </locator> + <pages> + <label suffix=". " form="short" ></label> + <number></number> + </pages> + <identifier> + <number></number> + </identifier> + <titles> + <title></title> + </titles> + <date> + <year></year> + </date> + <publisher> + <place suffix=": "></place> + <name></name> + </publisher> + <access> + <url prefix=" &lt;" suffix="&gt; "></url> + <text prefix=" [" suffix=" " term-name="accessed"></text> + <date suffix="]"> + <day suffix=" "></day> + <month suffix=" " text-case="capitalize-first"></month> + <year></year> + </date> + </access> + </defaults> + <citation suffix="." delimiter="; "> + <layout> + <item> + <choose> + <type name="book"> + <author></author> + <titles prefix=", " font-style="italic"></titles> + <editor prefix=", "></editor> + <translator prefix=", "></translator> + <titles prefix=" " relation="collection"></titles><!-- this line should print out Zoteros "Series", but it does not --> + <!-- this line should be Zoteros "Series Number", what CSL element matches it? --> <edition prefix=", "></edition> <text prefix=" " term-name="edn"></text> <!-- this line should be Zoteros "# of Volumes", what CSL element matches it? --> @@ -17898,7 +21680,7 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/mhra_note_withou <titles prefix=", " relation="container" font-style="italic"/> <date prefix=", "> <day suffix=" "></day> - <month suffix=" " text-transform="capitalize"></month> + <month suffix=" " text-case="capitalize-first"></month> <year></year> </date> <pages prefix=", "></pages> @@ -17920,190 +21702,194 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/mhra_note_withou </item> </layout> </citation> -</style>'); +</style> +'); -REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/asa.csl', '2007-10-23 18:00:00', 'American Sociological Association', +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/mla', '2008-01-03 23:00:00', 'Modern Language Association', '<?xml version="1.0" encoding="UTF-8"?> -<?oxygen RNGSchema="../csl.rnc" type="compact"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="author-date"> - <info> - <title>American Sociological Association</title> - <id>http://purl.org/net/xbiblio/csl/styles/asa.csl</id> - <link>http://purl.org/net/xbiblio/csl/styles/asa.csl</link> - <summary>Bibliography styles for the American Sociological Association.</summary> - <author> - <name>Jim Safley</name> - <email>jsafley@gmu.edu</email> - </author> - <updated>2007-06-18T00:28:24</updated> - </info> - <defaults> - <et-al min-authors="6" use-first="6"></et-al> - <contributor name-as-sort-order="no"> - <label suffix=" " form="verb"></label> - <name and="text" delimiter=", "></name> - </contributor> - <author name-as-sort-order="first"> - <name sort-separator=", " and="text" delimiter=", "></name> - <substitute> - <choose> - <editor></editor> - <translator></translator> - <titles></titles> - </choose> - </substitute> - </author> - <locator> - <number></number> - </locator> - <identifier> - <number></number> - </identifier> - <titles> - <title></title> - </titles> - <date> - <year></year> - </date> - <publisher> - <place suffix=": "></place> - <name></name> - </publisher> - <access> - <text suffix=" " term-name="retrieved" text-transform="capitalize"></text> - <date> - <month suffix=" " text-transform="capitalize"></month> - <day suffix=", "></day> - <year></year> - </date> - <url prefix=" (" suffix=")"></url> - </access> - </defaults> - <citation prefix="(" suffix=")" delimiter="; "> - <et-al min-authors="3" use-first="3" position="first"/> - <et-al min-authors="3" use-first="1" position="subsequent"/> - <layout> - <item> - <group delimiter=" "> - <author form="short"></author> - <group delimiter=":"> - <date></date> - <locator></locator> - </group> - </group> - </item> - </layout> - </citation> - <bibliography hanging-indent="true" subsequent-author-substitute="------."> - <sort algorithm="author-date"></sort> - <layout> - <list> - <heading> - <text term-name="references"></text> - </heading> - </list> - <item> - <choose> - <type name="book"> - <author suffix=". "></author> - <date suffix=". "></date> - <group suffix=". " delimiter=", "> - <titles> - <title font-style="italic"></title> - </titles> - <editor></editor> - <translator></translator> - </group> - <edition suffix=" ed. "></edition> - <publisher suffix=". "></publisher> - <access></access> - </type> - <type name="chapter"> - <author suffix=". "></author> - <date suffix=". "></date> - <titles> - <title suffix=". " quotes="true"></title> - </titles> - <pages suffix=" "> - <label suffix=". " form="short" text-transform="capitalize"></label> - <number></number> - </pages> - <conditional> - <if field="pages"> - <text suffix=" " term-name="in"></text> - </if><else> - <text suffix=" " term-name="in" text-transform="capitalize"></text> - </else> - </conditional> - <group prefix=" " suffix=". " delimiter=", " class="container"> - <titles relation="container"> - <title font-style="italic"></title> - </titles> - <editor></editor> - <translator></translator> - </group> - <edition suffix=" ed. "></edition> - <publisher suffix=". "></publisher> - <access></access> - </type> - <type name="article"> - <author suffix=". "></author> - <date suffix=". "></date> - <titles> - <title suffix=". " quotes="true"></title> - </titles> - <group suffix=". " class="container"> - <titles relation="container"> - <title suffix=", " font-style="italic"></title> - </titles> - <date> - <month suffix=" " text-transform="capitalize"></month> - <day></day> - </date> - <volume prefix=", "></volume> - <issue prefix="(" suffix=")"></issue> - <pages prefix=":"></pages> - </group> - <access></access> - </type> - <type name="article-journal"> - <author suffix=". "></author> - <date suffix=". "></date> - <titles> - <title suffix=". " quotes="true"></title> - </titles> - <group suffix=". " class="container"> - <titles relation="container"> - <title font-style="italic"></title> - </titles> - <volume prefix=" "></volume> - <issue prefix="(" suffix=")"></issue> - <pages prefix=":"></pages> - </group> - <access></access> - </type> - </choose> - </item> - </layout> - </bibliography> -</style>'); - +<?oxygen RNGSchema="http://xbiblio.svn.sourceforge.net/viewvc/*checkout*/xbiblio/csl/schema/trunk/csl.rnc" type="compact"?> +<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" xml:lang="en"> + <info> + <title>Modern Language Association</title> + <id>http://www.zotero.org/styles/mla</id> + <link href="http://www.zotero.org/styles/mla"/> + <author> + <name>Simon Kornblith</name> + <email>simon@simonster.com</email> + </author> + <category term="generic-base"/> + <category term="author-date"/> + <updated>2008-01-03T23:00:00+00:00</updated> + </info> + <macro name="editor-translator"> + <names variable="editor translator" delimiter=". "> + <label form="verb-short" text-case="capitalize-first" suffix=". "/> + <name and="symbol" delimiter=", "/> + </names> + </macro> + <macro name="author"> + <names variable="author"> + <name name-as-sort-order="first" and="text" sort-separator=", " + delimiter=", " delimiter-precedes-last="always"/> + <label form="short" prefix=", " suffix="."/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="title"/> + </substitute> + </names> + </macro> + <macro name="author-short"> + <names variable="author"> + <name form="short" and="symbol" delimiter=", " initialize-with=". "/> + <substitute> + <names variable="editor"/> + <names variable="translator"/> + <text macro="title-short"/> + </substitute> + </names> + </macro> + <macro name="access"> + <group delimiter=" "> + <date variable="accessed"> + <date-part name="day" suffix=" "/> + <date-part name="month" form="short" include-period="true" suffix=" "/> + <date-part name="year"/> + </date> + <text variable="URL" prefix="&lt;" suffix="&gt;"/> + </group> + </macro> + <macro name="title"> + <choose> + <if type="book"> + <text variable="title" text-decoration="underline"/> + </if> + <else> + <text variable="title" quotes="true"/> + </else> + </choose> + </macro> + <macro name="title-short"> + <choose> + <if type="book"> + <text variable="title" form="short" text-decoration="underline"/> + </if> + <else> + <text variable="title" form="short" quotes="true"/> + </else> + </choose> + </macro> + <macro name="publisher-year"> + <group delimiter=", "> + <group delimiter=": "> + <text variable="publisher-place"/> + <text variable="publisher"/> + </group> + <date variable="issued"> + <date-part name="year"/> + </date> + </group> + </macro> + <citation> + <option name="et-al-min" value="4"/> + <option name="et-al-use-first" value="1"/> + <option name="disambiguate-add-names" value="true"/> + <option name="disambiguate-add-givenname" value="true"/> + <layout prefix="(" suffix=")" delimiter="; "> + <group delimiter=" "> + <choose> + <if variable="author editor translator" match="any"> + <text macro="author-short"/> + <choose> + <if disambiguate="true"> + <text macro="title-short" prefix=", "/> + </if> + </choose> + </if> + <else> + <text macro="title-short"/> + </else> + </choose> + <text variable="locator"/> + </group> + </layout> + </citation> + <bibliography> + <option name="hanging-indent" value="true"/> + <option name="et-al-min" value="4"/> + <option name="et-al-use-first" value="1"/> + <option name="line-spacing" value="2"/> + <sort> + <key macro="author"/> + <key variable="title"/> + </sort> + <layout> + <text macro="author" suffix="."/> + <text macro="title" prefix=" " suffix="."/> + <choose> + <if type="book"> + <text macro="editor-translator" prefix=" " suffix="."/> + <text macro="publisher-year" prefix=" " suffix="."/> + </if> + <else-if type="chapter"> + <group class="container"> + <text variable="container-title" text-decoration="underline" prefix=" " suffix="."/> + <text macro="editor-translator" prefix=" " suffix="."/> + <text macro="publisher-year" prefix=" " suffix="."/> + </group> + <text variable="page" prefix=" " suffix="."/> + </else-if> + <else> + <group class="container" prefix=" " suffix="." delimiter=": "> + <group delimiter=" "> + <text variable="container-title" text-decoration="underline"/> + <choose> + <if type="article-journal"> + <group delimiter=" "> + <group delimiter="."> + <text variable="volume"/> + <text variable="issue"/> + </group> + <date variable="issued" prefix="(" suffix=")"> + <date-part name="year"/> + </date> + </group> + </if> + <else> + <date variable="issued"> + <date-part name="day" suffix=" "/> + <date-part name="month" form="short" include-period="true" suffix=" "/> + <date-part name="year"/> + </date> + </else> + </choose> + </group> + <text variable="page"/> + </group> + </else> + </choose> + <text prefix=" " suffix="." macro="access"/> + </layout> + </bibliography> +</style> +'); -REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/nature.csl', '2007-10-23 18:00:00', 'Nature Journal', +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/nature', '2008-01-03 23:00:00', 'Nature Journal', '<?xml version="1.0" encoding="UTF-8"?> -<?oxygen RNGSchema="file:/Users/mikowitz/Documents/Development/CSLs/csl.rnc" type="compact"?> +<?oxygen RNGSchema="http://xbiblio.svn.sourceforge.net/viewvc/*checkout*/xbiblio/csl/schema/trunk/csl.rnc" type="compact"?> <style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" xml:lang="en"> <info> - <title>Nature Journals</title> - <id>http://purl.org/net/xbiblio/csl/styles/nature.csl</id> - <link>http://purl.org/net/xbiblio/csl/styles/nature.csl</link> + <title>Nature Journal</title> + <id>http://www.zotero.org/styles/nature</id> + <link href="http://www.zotero.org/styles/nature"/> <author> <name>Michael Berkowitz</name> - <email>michael@songsaboutsnow.com</email> + <email>mberkowi@gmu.edu</email> </author> <category term="biology"/> <category term="generic-base"/> - <updated>2007-09-19T04:01:40+00:00</updated> + <category term="numeric"/> + <updated>2008-01-03T23:00:00+00:00</updated> </info> <macro name="author"> <names variable="author"> @@ -18135,6 +21921,7 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/nature.csl', '20 <option name="et-al-min" value="4"/> <option name="et-al-use-first" value="1"/> <option name="second-field-align" value="true"/> + <option name="entry-spacing" value="0"/> <layout> <text variable="citation-number" suffix=". "/> <text macro="author"/> @@ -18148,163 +21935,126 @@ REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/nature.csl', '20 </date> </layout> </bibliography> -</style>' -); - -REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/nlm.csl', '2007-10-23 18:00:00', 'National Library of Medicine', -'<?xml version="1.0" encoding="UTF-8"?> -<?oxygen RNGSchema="file:/Users/mikowitz/Documents/Development/CSLs/csl.rnc" type="compact"?> -<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" xml:lang="en"> - <info> - <title>National Library of Medicine</title> - <id>http://purl.org/net/xbiblio/csl/styles/nlm.csl</id> - <link>http://purl.org/net/xbiblio/csl/styles/nlm.csl</link> - <author> - <name>Michael Berkowitz</name> - <email>michael@songsaboutsnow.com</email> - </author> - <category term="generic-base"/> - <updated>2007-09-19T04:01:40+00:00</updated> - </info> - <macro name="author"> - <names variable="author" suffix=". "> - <name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/> - </names> - </macro> - <macro name="editor"> - <names variable="editor" suffix=", editor(s). "> - <name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/> - </names> - </macro> - <macro name="publisher"> - <text variable="publisher-place" suffix=": "/> - <text variable="publisher" suffix="; "/> - <date variable="issued"> - <date-part name="year" suffix=". "/> - </date> - </macro> - <citation> - <option name="collapse" value="citation-number"/> - <sort> - <key variable="citation-number"/> - </sort> - <layout prefix="(" suffix=")" delimiter="; "> - <text variable="citation-number"/> - </layout> - </citation> - <bibliography> - <option name="et-al-min" value="7"/> - <option name="et-al-use-first" value="6"/> - <option name="second-field-align" value="true"/> - <layout> - <text variable="citation-number" suffix=". "/> - <text macro="author"/> - <text variable="title" suffix=". "/> - <choose> - <if type="book"> - <text variable="edition" prefix=" " suffix=" ed. "/> - <text macro="publisher" prefix=" "/> - </if> - <else-if type="chapter"> - <group prefix=" In: " suffix=". "> - <text macro="editor"/> - <text variable="container-title"/> - </group> - <text macro="publisher" prefix=" "/> - <text variable="page" prefix=" p. " suffix="."/> - </else-if> - <else> - <text variable="container-title" suffix=". " form="short"/> - <date variable="issued" suffix=";"> - <date-part name="year" suffix=" "/> - <date-part name="month" form="short" suffix=" "/> - <date-part name="day"/> - </date> - <text variable="volume"/> - <text variable="issue" prefix="(" suffix="):"/> - <text variable="page" suffix="."/> - </else> - </choose> - </layout> - </bibliography> -</style>'); +</style> +'); -REPLACE INTO csl VALUES('http://purl.org/net/xbiblio/csl/styles/ieee.csl', '2007-10-23 18:00:00', 'IEEE', +REPLACE INTO csl VALUES ('http://www.zotero.org/styles/nlm', '2008-01-03 23:00:00', 'National Library of Medicine', '<?xml version="1.0" encoding="UTF-8"?> -<?oxygen RNGSchema="file:/Users/mikowitz/Documents/Development/CSLs/csl.rnc" type="compact"?> +<?oxygen RNGSchema="http://xbiblio.svn.sourceforge.net/viewvc/*checkout*/xbiblio/csl/schema/trunk/csl.rnc" type="compact"?> <style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" xml:lang="en"> - <info> - <title>IEEE</title> - <id>http://purl.org/net/xbiblio/csl/styles/ieee.csl</id> - <link>http://purl.org/net/xbiblio/csl/styles/ieee.csl</link> - <author> - <name>Michael Berkowitz</name> - <email>michael@songsaboutsnow.com</email> - </author> - <category term="engineering"/> - <category term="generic-base"/> - <updated>2007-09-19T04:01:40+00:00</updated> - </info> - <macro name="author"> - <names variable="author"> - <name initialize-with="." delimiter=", " and="text" name-as-sort-order="all"/> - </names> - </macro> - <macro name="title"> - <choose> - <if type="book"> - <text variable="title" font-style="italic"/> - </if> - <else> - <text variable="title" prefix='' "'' suffix=''," ''/> - </else> - </choose> - </macro> - <macro name="publisher"> - <text variable="publisher-place" suffix=": " prefix=" "/> - <text variable="publisher" suffix=", "/> - <date variable="issued"> - <date-part name="year"/> - </date> - </macro> - <citation> - <option name="collapse" value="citation-number"/> - <sort> - <key variable="citation-number"/> - </sort> - <layout prefix="[" suffix="]" delimiter=","> - <text variable="citation-number"/> - </layout> - </citation> - <bibliography> - <option name="et-al-min" value="4"/> - <option name="et-al-use-first" value="1"/> - <option name="second-field-align" value="margin"/> - <layout> - <text variable="citation-number" prefix="[" suffix="]"/> - <text macro="author" prefix=" " suffix=", "/> - <choose> - <if type="book"> - <text macro="title" suffix=". "/> - <text macro="publisher" suffix="."/> - </if> - <else-if type="chapter"> - <text macro="title"/> - <text variable="container-title" font-style="italic" prefix=" in " suffix=", "/> - <text macro="publisher" suffix=", "/> - <text variable="page" prefix=" pp. " suffix="."/> - </else-if> - <else> - <text macro="title"/> - <text variable="container-title" font-style="italic" suffix=", "/> - <text variable="volume" prefix=" vol. " suffix=", "/> - <text variable="page" prefix="pp. " suffix=", "/> - <date variable="issued" suffix="."> - <date-part name="month" form="short" suffix=" "/> - <date-part name="year"/> - </date> - </else> - </choose> - </layout> - </bibliography> -</style>'); -\ No newline at end of file + <info> + <title>National Library of Medicine</title> + <id>http://www.zotero.org/styles/nlm</id> + <link href="http://www.zotero.org/styles/nlm"/> + <author> + <name>Michael Berkowitz</name> + <email>mberkowi@gmu.edu</email> + </author> + <category term="generic-base"/> + <category term="numeric"/> + <updated>2008-01-03T23:00:00+00:00</updated> + </info> + <macro name="author"> + <names variable="author" suffix=". "> + <name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/> + </names> + </macro> + <macro name="editor"> + <names variable="editor" suffix=", editor(s). "> + <name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/> + </names> + </macro> + <macro name="publisher"> + <text variable="publisher-place" suffix=": "/> + <text variable="publisher" suffix="; "/> + <date variable="issued"> + <date-part name="year" suffix=". "/> + </date> + </macro> + <macro name="access"> + <group delimiter=" "> + <group prefix="[" suffix="]" delimiter=" "> + <text term="cited" text-case="lowercase"/> + <date variable="accessed" suffix=" "> + <date-part name="year"/> + <date-part name="month" prefix=" " form="short"/> + <date-part name="day" prefix=" "/> + </date> + </group> + <group> + <text value="Available from: "/> + <text variable="URL"/> + </group> + </group> + </macro> + <macro name="title"> + <group delimiter=" "> + <text variable="title"/> + <choose> + <if variable="URL"> + <text term="internet" prefix="[" suffix="]" text-case="capitalize-first"/> + </if> + </choose> + </group> + </macro> + <macro name="edition"> + <choose> + <if is-numeric="edition"> + <group delimiter=" "> + <number variable="edition" form="ordinal"/> + <text term="edition" form="short" suffix="."/> + </group> + </if> + <else> + <text variable="edition" suffix="."/> + </else> + </choose> + </macro> + <citation> + <option name="collapse" value="citation-number"/> + <sort> + <key variable="citation-number"/> + </sort> + <layout prefix="(" suffix=")" delimiter="; "> + <text variable="citation-number"/> + </layout> + </citation> + <bibliography> + <option name="et-al-min" value="7"/> + <option name="et-al-use-first" value="6"/> + <option name="second-field-align" value="true"/> + <layout> + <text variable="citation-number" suffix=". "/> + <text macro="author"/> + <text macro="title" suffix=". "/> + <choose> + <if type="book"> + <text macro="edition" prefix=" " suffix=" "/> + <text macro="publisher" prefix=" "/> + </if> + <else-if type="chapter"> + <group prefix=" " suffix=". "> + <text term="in" suffix=": " text-case="capitalize-first"/> + <text macro="editor"/> + <text variable="container-title"/> + </group> + <text macro="publisher" prefix=" "/> + <text variable="page" prefix=" p. " suffix="."/> + </else-if> + <else> + <text variable="container-title" suffix=". " form="short"/> + <date variable="issued" suffix=";"> + <date-part name="year" suffix=" "/> + <date-part name="month" form="short" suffix=" "/> + <date-part name="day"/> + </date> + <text variable="volume"/> + <text variable="issue" prefix="(" suffix="):"/> + <text variable="page" suffix="."/> + </else> + </choose> + <text macro="access"/> + </layout> + </bibliography> +</style> +'); +\ No newline at end of file