diff --git a/.gitignore b/.gitignore index 84cfe2a6e61..39e400a4fd0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +bin +build.number +build/ +nbproject/private/ +src/resource/build.properties +src/windows/nsis/dist/ .gradle jabref-launch4j.tmp user.properties diff --git a/README.md b/README.md index 5e383b557a6..495ed8676f4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,29 @@ +# JabRef + JabRef is a graphical application for managing bibliographical data. * Homepage: http://jabref.sourceforge.net/ -* Development page: https://sourceforge.net/projects/jabref/ -* Main git repository: `git://git.code.sf.net/p/jabref/code` / https://sourceforge.net/p/jabref/code/ci/master/tree/ +* Development page: https://github.com/JabRef +* Main git repository: https://github.com/JabRef/jabref + +This repository has been generated out of the old git repository at sourceforge. +The folder `jabref` of the old repository is now this repositry. +Although that changed **all** git commit ids, the advantage is to have a clean separation between plugins, the homepage and the code of JabRef. + +### Bug tracker + +The github tracker is the main bug tracker. + +However, the "old" trackers at sourceforge still remain intact. + +* Bugs: https://sourceforge.net/p/jabref/bugs/ +* Feature Requests: https://sourceforge.net/p/jabref/feature-requests/ + +Do *not* file patches using https://sourceforge.net/p/jabref/patches/. +Just fork JabRef and create a pull request. + +### Next Steps -There is a github mirror at https://github.com/JabRef/jabref. This repository is a rewrite of the original repository containing the `jabref` folder only. Although this changes **all** git commit ids, the advantage is to have a clean separation between plugins, the homepage and the code of JabRef. +* Change build system from `ant` to `gradle` to get rid of the binaries in the repository. +* Migrate the sourceforge wiki to github +* Fix bugs listed at https://sourceforge.net/p/jabref/bugs/. diff --git a/build.xml b/build.xml index b0caa71829a..d13a9f38268 100644 --- a/build.xml +++ b/build.xml @@ -35,9 +35,9 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> - - - + + + diff --git a/src/help/RevisionHistory.html b/src/help/RevisionHistory.html index e908b37122c..6e9c6c107cd 100644 --- a/src/help/RevisionHistory.html +++ b/src/help/RevisionHistory.html @@ -6,6 +6,39 @@

Revision history

+

Version 2.10 (March 11th, 2014)

+
+
    +
  • Made IEEEXploreFetcher author parsing work again.
  • +
  • Added a few more characters in the HTML/Unicode to LaTeX conversion.
  • +
  • Find unlinked files tool doesn't always use PDF content importer any more, + but the dialog opened when a file is dropped into JabRef
  • +
  • Uninstaller doesn't delete whole directory any more. Fixes bugs 1142, 1175, 1212.
  • +
+
+ +

Version 2.10 beta 3 (February 12th, 2014)

+
+
    +
  • Fix GoogleScholarFetcher (patch 207)
  • +
  • Line breaks in BibTeX fields (e.g., abstract and review) are now kept.
  • +
  • Fixed completeness indicator in main table for entries with crossrefs and either/or required fields.
  • +
  • Fixed [shorttitle] and [veryshorttitle] key generator markers, so they remove punctuation as described in the documentation.
  • +
+
+ +

Version 2.10 beta 2 (June 19th, 2013)

+
+
    +
  • Patched Windows install script to avoid wrong placement of Start menu items.
  • +
  • Reintroduced right-click on type label in entry editor to change entry type.
  • +
  • Fixed compatibility issue with OpenOffice plugin.
  • +
  • Added Russian as language.
  • +
  • Fix for bug 1160: Certain DOI references with “<” characters are not processed correctly (by Jonathan Powell).
  • +
  • Fix for bug 1153: Bug in user-specific file paths stored in @comment (by Thomas Arildsen).
  • +
+
+

2.10 beta

  • Applied fix for JStor fetcher (patch 202 by Nicolas Brouard)
  • diff --git a/src/images/splash-release.svg b/src/images/splash-release.svg index 6020e4597a7..e21295a9248 100644 --- a/src/images/splash-release.svg +++ b/src/images/splash-release.svg @@ -14,7 +14,7 @@ inkscape:export-xdpi="90.000000" inkscape:export-filename="/home/alver/jabref_head/jabref/src/images/jabref_splash-2.2.png" sodipodi:docname="splash-release.svg" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.2 r9819" sodipodi:version="0.32" id="svg2138" height="432" @@ -79,18 +79,18 @@ width="572.00000" patternUnits="userSpaceOnUse"> + width="572.00000" + x="231.00000" + y="284.36218" + inkscape:export-filename="/home/alver/Desktop/bilder/jabref/splash4.png" + inkscape:export-xdpi="90.000000" + inkscape:export-ydpi="90.000000" + style="opacity:1.0000000;stroke:#000000;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" + transform="translate(-231.0000,-284.3622)" /> image/svg+xml - + @@ -185,16 +185,16 @@ id="rect6833" style="fill:#6b6b75;fill-opacity:1;stroke:none" /> + inkscape:export-xdpi="75" + y="172.36218" + x="79" + width="572" + height="428" + id="image1821" /> This program is distributed under the terms of the General Public License.Copyright (2003-2013) Morten O. Alver, Nizar Batada and all contributors. Copyright (2003-2014) Morten O. Alver, Nizar Batada and all contributors. 2.9 + style="font-size:119.00261688px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000007;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;font-family:Bitstream Vera Sans">2.10 diff --git a/src/images/splash.png b/src/images/splash.png index bc87517a0d5..1c790d0fece 100644 Binary files a/src/images/splash.png and b/src/images/splash.png differ diff --git a/src/java/net/sf/jabref/BibtexFields.java b/src/java/net/sf/jabref/BibtexFields.java index cc128b9ba7c..20a9845162f 100644 --- a/src/java/net/sf/jabref/BibtexFields.java +++ b/src/java/net/sf/jabref/BibtexFields.java @@ -434,6 +434,19 @@ public static String[] getAllFieldNames() { return runtime.PUBLIC_FIELDS ; } + + /** returns an string-array with only private fieldnames */ + public static String[] getAllPrivateFieldNames(){ + Vector pFields = new Vector() ; + for (BibtexSingleField sField : runtime.fieldSet.values()){ + if (sField.isPrivate()) { + pFields.add( sField.getFieldName() ); + } + } + return pFields.toArray(new String[pFields.size()]); + + } + /** returns the fieldname of the entry at index t */ public static String getFieldName( int t ) diff --git a/src/java/net/sf/jabref/imports/GoogleScholarFetcher.java b/src/java/net/sf/jabref/imports/GoogleScholarFetcher.java index be2491e760d..ddd045873f2 100644 --- a/src/java/net/sf/jabref/imports/GoogleScholarFetcher.java +++ b/src/java/net/sf/jabref/imports/GoogleScholarFetcher.java @@ -42,7 +42,7 @@ public class GoogleScholarFetcher implements PreviewEntryFetcher { final static String SEARCH_URL = URL_START+"/scholar?q="+QUERY_MARKER +"&hl=en&btnG=Search"; - final static Pattern BIBTEX_LINK_PATTERN = Pattern.compile("[A-Za-z ]*BibTeX"); + final static Pattern BIBTEX_LINK_PATTERN = Pattern.compile("]*>[A-Za-z ]*BibTeX"); final static Pattern TITLE_START_PATTERN = Pattern.compile("
    "); final static Pattern LINK_PATTERN = Pattern.compile("

    "); final static Pattern TITLE_END_PATTERN = Pattern.compile("
    "); diff --git a/src/java/net/sf/jabref/imports/HTMLConverter.java b/src/java/net/sf/jabref/imports/HTMLConverter.java index 56d8b4367c9..c38913b133f 100644 --- a/src/java/net/sf/jabref/imports/HTMLConverter.java +++ b/src/java/net/sf/jabref/imports/HTMLConverter.java @@ -76,6 +76,7 @@ public class HTMLConverter implements LayoutFormatter { {"180", "acute", "\\{\\\\'\\{\\}\\}"}, // acute accent = spacing acute, // U+00B4 ISOdia {"181", "micro", "\\$\\\\mu\\$"}, // micro sign, U+00B5 ISOnum + {"", "mu", "\\$\\\\mu\\$"}, // micro sign, U+00B5 ISOnum {"182", "para", "\\{\\\\P\\}"}, // pilcrow sign = paragraph sign, // U+00B6 ISOnum {"183", "middot", "\\$\\\\cdot\\$"}, // middle dot = Georgian comma @@ -418,13 +419,14 @@ public class HTMLConverter implements LayoutFormatter { // U+22A5 ISOtech {"8901", "sdot", "\\$\\\\cdot\\$"}, // dot operator, U+22C5 ISOamsb /* dot operator is NOT the same character as U+00B7 middle dot */ - /* Miscellaneous Technical */ {"8968", "lceil", "\\$\\\\lceil\\$"}, // left ceiling = apl upstile, // U+2308 ISOamsc {"8969", "rceil", "\\$\\\\rceil\\$"}, // right ceiling, U+2309 ISOamsc {"8970", "lfloor", "\\$\\\\lfloor\\$"}, // left floor = apl downstile, // U+230A ISOamsc {"8971", "rfloor", "\\$\\\\rfloor\\$"}, // right floor, U+230B ISOamsc + + /* Miscellaneous Technical */ {"9001", "lang", "\\$\\\\langle\\$"}, // left-pointing angle bracket = bra, // U+2329 ISOtech /* lang is NOT the same character as U+003C 'less than' @@ -557,6 +559,8 @@ public class HTMLConverter implements LayoutFormatter { {"", "imath", "\\{\\\\i\\}"}, // Small i without the dot {"321", "Lstrok", "\\{\\\\L\\}"}, // upper case l with stroke {"322", "lstrok", "\\{\\\\l\\}"}, // lower case l with stroke + {"348", "Scirc", "\\{\\\\\\^\\{S\\}\\}"}, // upper case S with circumflex + {"349", "scirc", "\\{\\\\\\^\\{s\\}\\}"}, // lower case s with circumflex {"370", "Uogon", "\\{\\\\k\\{U\\}\\}"}, // capital U with ogonek {"371", "uogon", "\\{\\\\k\\{u\\}\\}"}, // small u with ogonek {"381", "Zcaron", "\\{\\\\v\\{Z\\}\\}"}, // capital Z with caron @@ -590,12 +594,15 @@ public class HTMLConverter implements LayoutFormatter { {"8198", "", "\\\\hspace\\{0.167em\\}"}, // Six-Per-Em Space {"8208", "hyphen", "-"}, // Hyphen {"8229", "nldr", "\\.\\."}, // Double dots - en leader + {"8450", "complexes", "\\$\\\\mathbb\\{C\\}\\$"}, // double struck capital C -- requires e.g. amsfonts {"8451", "", "\\$\\\\deg\\$\\{C\\}"}, // Degree Celsius {"8459", "Hscr", "\\$\\\\mathcal\\{H\\}\\$"}, // script capital H -- possibly use \mathscr {"8460", "Hfr", "\\$\\\\mathbb\\{H\\}\\$"}, // black letter capital H -- requires e.g. amsfonts {"8466", "Lscr", "\\$\\\\mathcal\\{L\\}\\$"}, // script capital L -- possibly use \mathscr {"8467", "ell", "\\{\\\\ell\\}"}, // script small l {"8469", "naturals", "\\$\\\\mathbb\\{N\\}\\$"}, // double struck capital N -- requires e.g. amsfonts + {"8474", "Qopf", "\\$\\\\mathbb\\{Q\\}\\$"}, // double struck capital Q -- requires e.g. amsfonts + {"8477", "reals", "\\$\\\\mathbb\\{R\\}\\$"}, // double struck capital R -- requires e.g. amsfonts {"8486", "", "\\$\\{\\\\Omega\\}\\$"}, // Omega {"8491", "angst", "\\{\\\\AA\\}"}, // Angstrom {"8496", "Escr", "\\$\\\\mathcal\\{E\\}\\$"}, // script capital E @@ -631,6 +638,11 @@ public class HTMLConverter implements LayoutFormatter { {"8883", "vrtri", "\\$\\\\triangleright\\$"}, // Right triangle {"8896", "xwedge", "\\$\\\\bigwedge\\$"}, // Big wedge {"8897", "xvee", "\\$\\\\bigvee\\$"}, // Big vee + {"8942", "vdots", "\\$\\\\vdots\\$"}, // vertical ellipsis U+22EE + {"8943", "cdots", "\\$\\\\cdots\\$"}, // midline horizontal ellipsis U+22EF + /*{"8944", "", "\\$\\\\ddots\\$"}, // up right diagonal ellipsis U+22F0 */ + {"8945", "ddots", "\\$\\\\ddots\\$"}, // down right diagonal ellipsis U+22F1 + {"9426", "circledc", "\\{\\\\copyright\\}"}, // circled small letter C {"9633", "square", "\\$\\\\square\\$"}, // White square {"9651", "xutri", "\\$\\\\bigtriangleup\\$"}, // White up-pointing big triangle diff --git a/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java b/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java index cd5328d6fa2..beb6beae602 100644 --- a/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java +++ b/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java @@ -103,6 +103,7 @@ public class IEEEXploreFetcher implements EntryFetcher { Pattern ieeeArticleNumberPattern = Pattern.compile(""); + Pattern authorPattern = Pattern.compile(""); // Common words in IEEE Xplore that should always be public IEEEXploreFetcher() { @@ -111,7 +112,8 @@ public IEEEXploreFetcher() { fieldPatterns.put("title", "\\s*(.+)\\s*"); //fieldPatterns.put("author", "

    \\s*(.+)"); - fieldPatterns.put("author", "(?s)\\s*(.+)
    "); + //fieldPatterns.put("author", "(?s)\\s*(.+)
    "); + // fieldPatterns.put("author", ""); fieldPatterns.put("volume", "Volume:\\s*([A-Za-z-]*\\d+)"); fieldPatterns.put("number", "Issue:\\s*(\\d+)"); //fieldPatterns.put("part", "Part (\\d+), (.+)"); @@ -390,7 +392,7 @@ private BibtexEntry cleanup(BibtexEntry entry) { } // clean up author - String author = (String)entry.getField("author"); + /* String author = (String)entry.getField("author"); if (author != null) { if (author.indexOf("a href=") >= 0) { // Author parsing failed because it was empty entry.setField("author",""); // Maybe not needed anymore due to another change @@ -406,7 +408,7 @@ private BibtexEntry cleanup(BibtexEntry entry) { author = author.replaceAll("[ ,;]+$", ""); entry.setField("author", author); } - } + }*/ // clean up month String month = (String)entry.getField("month"); if ((month != null) && (month.length() > 0)) { @@ -702,6 +704,20 @@ private BibtexEntry parseNextEntry(String allText, int startIndex) { } } } + + Matcher authorMatcher = authorPattern.matcher(text); + // System.out.println(text); + StringBuffer authorNames = new StringBuffer(""); + int authorCount=0; + while(authorMatcher.find()) { + if(authorCount >= 1) { + authorNames.append(" and "); + } + authorNames.append(htmlConverter.format(authorMatcher.group(1))); + //System.out.println(authorCount + ": " + authorMatcher.group(1)); + authorCount++; + } + entry.setField("author",authorNames.toString()); if (entry.getField("author") == null || entry.getField("author").startsWith("a href") || entry.getField("author").startsWith("Topic(s)")) { // Fix for some documents without authors entry.setField("author",""); diff --git a/src/java/net/sf/jabref/sql/SQLUtil.java b/src/java/net/sf/jabref/sql/SQLUtil.java index 7bb146fd81b..0aaead01e2a 100644 --- a/src/java/net/sf/jabref/sql/SQLUtil.java +++ b/src/java/net/sf/jabref/sql/SQLUtil.java @@ -27,7 +27,6 @@ import java.util.ListIterator; import net.sf.jabref.BibtexFields; -import net.sf.jabref.Globals; /** * @@ -62,6 +61,7 @@ public static void refreshFields() { allFields.clear(); } uniqueInsert(allFields, BibtexFields.getAllFieldNames()); + uniqueInsert(allFields, BibtexFields.getAllPrivateFieldNames()); } /** @@ -108,12 +108,12 @@ private static ArrayList uniqueInsert(ArrayList list, if (array != null) { for (int i = 0; i < array.length; i++) { if (!list.contains(array[i])) + if (!array[i].equals("#")) list.add(array[i]); } } return list; } - /** * Generates DML specifying table columns and their datatypes. The output of * this routine should be used within a CREATE TABLE statement. diff --git a/src/resource/JabRef_pt_BR.properties b/src/resource/JabRef_pt_BR.properties index 14035c39fc8..a5a996a1054 100644 --- a/src/resource/JabRef_pt_BR.properties +++ b/src/resource/JabRef_pt_BR.properties @@ -1,5 +1,5 @@ #! -#! created/edited by Popeye version 0.54 (popeye.sourceforge.net) +#! created/edited by Popeye version 0.55 (https://github.com/koppor/popeye) #! encoding:ISO-8859-1 %0_contains_the_Regular_Expression_%1=%0_cont\u00e9m_a_Express\u00e3o_Regular_%1 %0_contains_the_term_%1=%0_cont\u00e9m_o_termo_%1 @@ -16,6 +16,7 @@ =