#Build Number for ANT. Do not edit!
-#Sun Nov 26 20:22:40 CET 2006
-build.number=341
+#Tue Jan 30 19:29:15 CET 2007
+build.number=436
Compiler: Ant
Authors: Joerg K. Wegner, wegnerj@informatik.uni-tuebingen.de
Morten O. Alver
- Version: $Revision: 1.77 $
- $Date: 2006/11/23 22:37:19 $
+ Version: $Revision: 1.78 $
+ $Date: 2006/11/29 00:51:22 $
$Author: coezbek $
modified:
========================================================================================== -->
<!-- some version information -->
- <property name="jabref.bin" value="JabRef-2.2" />
- <property name="jabref.version" value="2.2b2" />
+ <property name="jabref.version" value="2.2" />
<property name="jabref.placeholder.version" value="@version@" />
<!-- used by replace task -->
<!-- Set the properties for intermediate directory -->
+ <property name="build.jar" value="JabRef-${jabref.version}.jar" />
<property name="build.dir" value="build" />
<property name="build.classes" value="${build.dir}/classes" />
<property name="build.tmp" value="${build.dir}/tmp" />
<!-- Set the properties for library directories -->
<property name="library.directory" value="lib" />
+<!-- <property name="nsis.executable" value="makensis.exe"/> -->
+
<!-- Load user dependent properties -->
- <property file="build.properties" />
- <!--
- * For instance define the NSIS-compiler:
- * nsis.executable="d:\prog\dev\NSIS\makensis.exe"
- *-->
+ <!-- For instance to redefine the NSIS-compiler write
+ nsis.executable="d:\prog\dev\NSIS\makensis.exe"
+ -->
+ <property file="user.properties" />
- <!-- win.installer can only be build under Windows -->
+ <!-- win.installer can only be build under Windows if the nsis.executable is found -->
<condition property="is.windows">
<and>
<os family="windows" />
<isset property="nsis.executable" />
+<!-- <available file="${nsis.executable}" /> -->
</and>
</condition>
<pathelement location="${library.directory}/spin.jar" />
<pathelement location="${library.directory}/glazedlists-1.7.0_java14.jar" />
<pathelement location="${library.directory}/microba.jar" />
- <pathelement location="${library.directory}/PDFBox-0.7.3-dev-reduced.jar" />
- <pathelement location="${library.directory}/JempBox-0.1.0-dev.jar" />
+ <pathelement location="${library.directory}/PDFBox-0.7.3-dev-reduced.jar" />
+ <pathelement location="${library.directory}/JempBox-0.1.0-dev.jar" />
</path>
-
+
<target name="run" depends="build">
<java classname="net.sf.jabref.JabRef" fork="true">
- <classpath refid="classpath"/>
+ <classpath refid="classpath" />
</java>
</target>
-
+
<!-- Runs project -->
<target name="runFromJar" depends="jars">
<java classname="net.sf.jabref.JabRef" fork="true">
<classpath>
- <pathelement location="${build.lib}/jabref.jar" />
+ <pathelement location="${build.lib}/${build.jar}" />
</classpath>
</java>
</target>
<fail unless="netbeans.home">This target can only run inside the NetBeans IDE.</fail>
<nbprofiledirect>
- <classpath refid="classpath"/>
+ <classpath refid="classpath" />
</nbprofiledirect>
<property environment="env" />
<jvmarg value="${profiler.info.jvmargs.agent}" />
<jvmarg line="${profiler.info.jvmargs}" />
<env key="LD_LIBRARY_PATH" path="${profiler.info.agentpath}:${env.LD_LIBRARY_PATH}" />
- <classpath refid="classpath"/>
+ <classpath refid="classpath" />
</java>
</target>
<!-- Compiles project -->
<target name="compile">
<mkdir dir="${build.classes}" />
- <javac debug="on" deprecation="on" destdir="${build.classes}" source="1.4" target="1.4">
+ <javac debug="off" deprecation="on" destdir="${build.classes}" source="1.4" target="1.4">
<src path="${java.dir}" />
<exclude name="tests/**" />
- <classpath refid="classpath"/>
+ <classpath refid="classpath" />
</javac>
</target>
<mkdir dir="${build.classes}" />
<!--deprecation="on"-->
<javac srcdir="${java.dir}/tests" debug="off" destdir="${build.classes}" source="1.4" target="1.4">
- <classpath refid="classpath"/>
+ <classpath refid="classpath" />
</javac>
</target>
<target name="jars" depends="build, unjarlib">
<mkdir dir="${build.lib}" />
<mkdir dir="${build.tmp}" />
- <jar destfile="${build.lib}/jabref.jar">
+ <jar destfile="${build.lib}/${build.jar}">
<fileset dir="${build.classes}" />
<fileset dir="${build.tmp}" />
<unjar src="${library.directory}/spin.jar" dest="${build.tmp}" />
<unjar src="${library.directory}/glazedlists-1.7.0_java14.jar" dest="${build.tmp}" />
<unjar src="${library.directory}/microba.jar" dest="${build.tmp}" />
- <unjar src="${library.directory}/PDFBox-0.7.3-dev-reduced.jar" dest="${build.tmp}" />
- <unjar src="${library.directory}/JempBox-0.1.0-dev.jar" dest="${build.tmp}" />
- <delete dir="${build.tmp}/META-INF" />
+ <unjar src="${library.directory}/PDFBox-0.7.3-dev-reduced.jar" dest="${build.tmp}" />
+ <unjar src="${library.directory}/JempBox-0.1.0-dev.jar" dest="${build.tmp}" />
+ <delete dir="${build.tmp}/META-INF" />
<!-- rename the microba license file -->
<move file="${build.tmp}/license.txt" tofile="${build.tmp}/microba-license.txt" />
</target>
<target name="osxjar">
- <jarbundler dir="${build.lib}" name="JabRef" mainclass="net.sf.jabref.JabRef" jars="${build.lib}/jabref.jar" icon="${images.dir}/JabRef-Logo.icns" version="${jabref.version}" jvmversion="1.4+" stubfile="${library.directory}/JavaApplicationStub" />
+ <jarbundler dir="${build.lib}" name="JabRef" mainclass="net.sf.jabref.JabRef" jars="${build.lib}/${build.jar}" icon="${images.dir}/JabRef-Logo.icns" version="${jabref.version}" jvmversion="1.4+" stubfile="${library.directory}/JavaApplicationStub" />
</target>
<delete file="${win.installer.dir}/JabRefSetup.exe" />
</target>
- <target name="win.installer.prepare" depends="jars" if="is.windows" description="Copy files in place to be used by the installer">
+ <target name="win.installer" if="is.windows" description="Copy files in place to be used by the installer">
+
<!-- Gather everything that will go into the installer in dist -->
<mkdir dir="${win.installer.dir}/dist" />
+
<!-- <copy file="${build.lib}/${jabref.bin}.jar"
todir="${win.installer.dir}/dist" /> -->
+
+ <available property="win.installer.jar.available" file="${win.installer.dir}/dist/${build.jar}"/>
+
+ <fail unless="win.installer.jar.available" message="Did not find jar: ${build.jar}"/>
+
<copy todir="${win.installer.dir}/dist">
<fileset dir="${txt.dir}">
<include name="gpl.txt" />
<include name="README" />
</fileset>
</copy>
- </target>
- <target name="win.installer.exewrapper" depends="win.installer.prepare" if="is.windows" description="Create Exe-Wrapper">
+ <!-- "Create Exe-Wrapper" -->
<exec dir="." executable="${nsis.executable}" failonerror="true">
- <arg line="'/DJARFILE=${jabref.bin}.jar' '/DVERSION=${jabref.version}' '/DAPPICON=../../../${images.dir}/JabRef.ico' ${win.installer.dir}/launcher.nsi" />
+ <arg line="'/DJARFILE=${build.jar}' '/DVERSION=${jabref.version}' '/DAPPICON=../../../${images.dir}/JabRef.ico' ${win.installer.dir}/launcher.nsi" />
</exec>
- </target>
- <target name="win.installer.build" depends="win.installer.exewrapper" if="is.windows" description="Create Windows-Installer.">
+ <!-- Finally create Windows-Installer -->
<exec dir="." executable="${nsis.executable}" failonerror="true">
<arg line="'/DVERSION=${jabref.version}' ${win.installer.dir}/setup.nsi" />
</exec>
<include name="**/*Test.class" />
</fileset>
</batchtest>
- <classpath refid="classpath"/>
+ <classpath refid="classpath" />
</junit>
</target>
-
+
</project>
<CENTER>
<H1>JabRef version @version@ </H1>
-(c) 2006
+(c) 2007
<p>
<img src="/images/JabRef-icon-48.png"></img>
Jörg Zieren
<H2>Contributions from:</H2>
+
+Michael Beckmann,
+Oliver Böckmann,
Kolja Brix,
Frédéric Darboux,
Fabrice Dessaint,
Christian Kopf,
Jeffrey Kuhn,
Alex Montgomery,
+Ambrogio Oliva,
John Relph,
+Hannes Restel,
Moritz Ringler,
Andreas Rudert,
Mark Schenk,
Rudolf Seemann,
Toralf Senger,
+Manuel Siebeneicher
Mike Smoot,
Ulrich Stärk,
Martin Stolle,
(<code>http://www.everaldo.com</code>), which is distributed under the
terms of the Lesser General Public License.
+<P>
+JabRef uses the JempBox and PDFBox libraries for PDF handling, both of which are
+distributed under a BSD style license.
+
+
+
</CENTER>
</BODY>
</HTML>
<a href="PreviewHelp.html">Entry preview setup</a><br>
<a href="XMPHelp.html">XMP metadata support in JabRef</a>
-</HTML>
+</HTML>
\ No newline at end of file
<h2>Export from JabRef</h2>
JabRef can export databases to EndNote-readable files.
-To use this feature, choose <b>File -> Export -> EndNote</b>,
+To use this feature, choose <b>Tools -> EndNote</b>,
then specify the name of the export file.
<h2>Import to EndNote</h2>
<li>To <b>write the bibliographic information to the associated PDF</b> do the following: Double click the entry in the main view, go to the "General" tab and click on "Write XMP".</li>
<li>If you want <b>to annotate all the PDFs in a given database</b> you can select "Tools -> Write XMP for database"</li>
<li>To verify if it worked you can open the PDF in Adobe Acrobat and select
- "File -> Document Properties -> Additional Metadata -> Advanced". In the tree to the right you should see an entry called "http://purl.org/net/bibteXMP"
+ "File -> Document Properties -> Additional Metadata -> Advanced". In the tree to the right you should see an entry called "http://purl.org/net/bibteXMP". This works only with Adobe Acrobat, not with Adobe Reader.</li>
+ <li>If you don't have Adobe Acrobat, you can use <i>pdfinfo</i> instead in order to see the XMP metadata. <i>pdfinfo</i> is part of Xpdf (<code>www.foolabs.com/xpdf</code>) and Poppler (<code>http://poppler.freedesktop.org</code>).</li>
<ul>
<h2>BibteXmp Fileformat</h2>
<center>
<h1>JabRef Version @version@</h1>
-(c) 2006
+(c) 2007
<p>
<img src="/images/JabRef-icon-48.png"></img>
Guillaume Gardey,
Cyrille d'Haese,
Raik Nagel,
+Christopher Oezbek,
Ellen Reitmayr,
Gert Renckens,
Andreas Rudert,
Jörg Zieren
<h2>Beiträge von:</h2>
+Michael Beckmann,
+Oliver Böckmann,
Kolja Brix,
Frédéric Darboux,
Fabrice Dessaint,
Nathan Dunn,
-Brian van Essen,
+Brian Van Essen,
Alexis Gallagher,
Sascha Hunold,
Bernd Kalbfuss,
Martin Kähmer,
Ervin Kolenovic,
Krzysztof A. Kościuszkiewicz,
+Christian Kopf,
Jeffrey Kuhn,
Alex Montgomery,
-Christopher Oezbek,
+Ambrogio Oliva,
John Relph,
+Hannes Restel,
Moritz Ringler,
+Andreas Rudert,
Mark Schenk,
Rudolf Seemann,
Toralf Senger,
+Manuel Siebeneicher,
Mike Smoot,
+Ulrich Stärk,
Martin Stolle,
David Weitzman,
Seb Wills,
John Zedlewski
-
+
<h2>Dank an:</h2>
Samin Muhammad Ridwanul Karim,
Stefan Robert
<h2>Benutzte Fremdsoftware:</h2>
-JabRef benutzt JGoodies Looks 2.0.4 und JGoodiesForms 1.0.5, das von JGoodies (<code>http://www.jgoodies.com</code>) unter den Bedingungen der BSD License vertrieben wird (siehe <code>http://www.opensource.org/licenses/bsd-license.html</code> für nähere Einzelheiten dieser Lizenz).
+JabRef benutzt JGoodies Looks 2.0.4 und JGoodiesForms 1.0.5, das von JGoodies (<code>http://www.jgoodies.com</code>) unter den Bedingungen der BSD-Lizenz vertrieben wird (siehe <code>http://www.opensource.org/licenses/bsd-license.html</code> für nähere Einzelheiten dieser Lizenz).
<p>
Außerdem werden zwei zustätzliche Klassen
(SimpleInternalFrame and UIFSplitPane) von Karsten Lentzsch benutzt,
(<code>http://publicobject.com/glazedlists</code>), die unter den Bedingungen der Lesser General Public License vertrieben wird.
</p><p>
JabRef benutzt darüber hinaus die "threading library" Spin 1.3.1,
-die unter den Bedingungen der LGPL (Lesser General Public License)
+die ebenfalls unter den Bedingungen der Lesser General Public License
vertrieben wird.<br>
</p>
<p>Für die einfache Auswahl und den Umgang mit Datumsangaben
-werden Komponenten der Microba Bibliothek verwenden. Diese wird unter
-einer BSD Lizenz vertrieben, siehe auch <code>http://sourceforge.net/projects/microba/</code>
+werden Komponenten der Microba-Bibliothek verwenden. Diese wird unter
+einer BSD-Lizenz vertrieben, siehe <code>http://sourceforge.net/projects/microba/</code>
für eine genauere Beschreibung.
</p><p>
-The majority of icons are from the Crystal Clear icon set by Everaldo
-(<code>http://www.everaldo.com</code>), which is distributed under the
- terms of the Lesser General Public License.
+Die meisten Icons stammen aus dem Crystal Clear Icon-Set von Everaldo
+(<code>http://www.everaldo.com</code>), das unter den Bedingungen
+der Lesser General Public License vertrieben wird.
+
+<P>
+JabRef verwendet für die Behandlung von PDF-Dateien die JempBox- und PDFBox-Bibliotheken, die unter
+einer BSD-Lizenz vertrieben werden.
</p></center>
</body></html>
\ No newline at end of file
<ul>
<li>Die Auswahl der entsprechenden Felder können Sie im <strong>Einstellungs</strong>-Dialog vornehmen.</li>
-<li>Die Felder können direkt in der Tabelle bearbeitet werden, indem Sie einfach auf eine Zelle klicken und den Inhalt eingeben (nur möglich, wenn "Bearbeiten in der Tabelle zulassen" im Dialog <strong>Optionen --> Einstellungen --> Allgemein</strong> ausgewählt ist). Ein Doppelklick auf eine Zelle öffnet einen leistungsfähigeren Editor. Sie können mit den Pfeiltasten in der Tabelle navigieren.</li>
+<li>Mit einem Doppelklick auf eine Tabellenzeile können Sie den Inhalt bearbeiten (der <a href="EntryEditorHelp.html">Eintragseditor</a> wird geöffnet). Sie können mit den Pfeiltasten innerhalb der Tabelle navigieren. Wenn Sie einen Buchstaben drücken, springen Sie zu dem ersten Eintrag, der mit diesem Buchstaben beginnt (abhängig von der Spalte, nach der Sie die Tabelle sortiert haben).</li>
-<li>Die Tabelle wird nach einem Feld Ihrer Wahl sortiert. Klicken Sie einfach auf die Kopfzeile einer Spalte, um die Einträge nach dem Feld dieser Spalte zu sortieren. Klicken Sie erneut auf den Spaltenkopf, um die Sortierrichtung umzukehren. Einträge mit gleichem Inhalt im ausgewählten Feld werden nach dem zweiten (und eventuell dem dritten) Kriterium sortiert. Diese Sortierkriterien können im <strong>Einstellungs</strong>-Dialog festgelegt werden.</li>
+<li>Die Tabelle wird nach einem Feld Ihrer Wahl sortiert. Sie können das Standardverhalten unter <strong>Optionen -> Einstellungen -> Tabellenansicht</strong> angeben. Um die Sortierreihenfolge schnell zu ändern, klicken Sie einfach auf die Kopfzeile einer Spalte; damit haben Sie das primäre Sortierkriterium definiert. Klicken Sie erneut auf den Spaltenkopf, um die Sortierrichtung umzukehren. Ein weiterer Klick sorgt dafür, dass die Spalte nicht mehr zur Sortierung herangezogen wird. Halten Sie die CONTROL-Taste beim Klicken auf einen Spaltenknopf gedrückt, um eine zweite Spalte als sekundäres Sortierkriterium festzulegen. Sie können beliebig viele Spalten zur Sortierung heranziehen.</li>
-<li>Sie können die Breite der Tabellenspalten einstellen, indem Sie die Trennlinie zwischen den Spaltenköpfen anklicken und verschieben.</li>
+<li>Sie können die Breite der Tabellenspalten einstellen, indem Sie die Trennlinie zwischen den Spaltenköpfen anklicken und verschieben. Die Reihenfolge der Spalten können Sie festlegen, indem Sie mit der Maus auf den Spaltenkopf klicken und die Spalte an die gewünschte Stelle ziehen.</li>
<li>Im <strong>Einstellungs</strong>-Dialog können Sie festlegen, ob die Tabelle an die Bildschirmgröße angepasst werden soll oder nicht. Aktivieren Sie diese Funktion, um sicherzustellen, dass Sie die gesamte Tabelle sehen können. Deaktivieren Sie diese Funktion, wenn mehr Informationen dargestellt werden sollen.</li>
<H2>Einen Eintrag bearbeiten</H2>
-Um den <a href="EntryEditorHelp.html">Eintrags-Editor</a> zur Bearbeitung eines existierenden Eintrags zu öffnen, klicken Sie einfach doppelt auf die linke Spalte der entsprechenden Zeile oder markieren den Eintrag und drücken auf ENTER.
-
-Falls "Bearbeiten in der Tabelle zulassen" nicht ausgewählt ist (im Dialog <strong>Optionen --> Einstellungen --> Allgemein</strong>), öffnet ein Doppelklick irgendwo in der zugehörigen Zeile den <a href="EntryEditorHelp.html">Eintrags-Editor</a>.
+Um den <a href="EntryEditorHelp.html">Eintrags-Editor</a> zur Bearbeitung eines existierenden Eintrags zu öffnen, klicken Sie einfach doppelt auf die Zeile des Eintrags oder markieren den Eintrag und drücken auf ENTER.
<H2>Einen <em>BibTeX</em> String in einem Feld verwenden</H2>
'#jan# 1997',<BR>
was interpretiert wird als String mit dem Namen 'jan' gefolgt von '1997'.
-<P>Vergleichen Sie dazu auch die Hilfeseite zum <a href="StringEditorHelp.html">String-Editor</a>.
+<P>Vergleichen Sie auch die Hilfeseite zum <a href="StringEditorHelp.html">String-Editor</a>.
</font>
</BODY>
<BODY text="#275856">
<basefont size="4" color="#2F4958" face="arial">
-<H1>Über <em>BibTeX</em></H1>
+<H1>Über <em>BibTeX</em></H1>
-JabRef hilft Ihnen bei der Arbeit mit Ihren <em>BibTeX</em>-Dateien, aber es müssen dennoch Regeln beachtet werden, wenn Sie Ihre Einträge bearbeiten. Nur so kann sichergestellt werden, dass <em>BibTeX</em> Ihre Datei richtig verarbeiten kann.
+JabRef hilft Ihnen bei der Arbeit mit Ihren <em>BibTeX</em>-Dateien, aber es müssen dennoch Regeln beachtet werden, wenn Sie Ihre Einträge bearbeiten. Nur so kann sichergestellt werden, dass <em>BibTeX</em> Ihre Datei richtig verarbeiten kann.
<H2><em>BibTeX</em> Felder</H2>
-Es gibt viele unterschiedliche Felder in <em>BibTeX</em> und einige zusätzliche Felder, die Sie in JabRef einsetzen können.
+Es gibt viele unterschiedliche Felder in <em>BibTeX</em> und einige zusätzliche Felder, die Sie in JabRef einsetzen können.
<P>
-Grundsätzlich können Sie LaTeX-Befehle in Feldern, die Text beinhalten, einsetzen. <em>BibTeX</em> wird Ihr Literaturverzeichnis automatisch formatieren und je nach <em>BibTeX</em> style (Stildatei .bst) Großbuchstaben verkleinern. Um sicherzustellen, dass einzelne Buchstaben groß bleiben, müssen Sie sie in Klammern einschließen, wie im Wort {B}elgien. <em>(Anm. d. Übers.: Die meisten deutschen <em>BibTeX</em>-Stile behalten die Großbuchstaben ohnehin bei.)</em>
+Grundsätzlich können Sie LaTeX-Befehle in Feldern, die Text beinhalten, einsetzen. <em>BibTeX</em> wird Ihr Literaturverzeichnis automatisch formatieren und je nach <em>BibTeX</em> style (Stildatei .bst) Großbuchstaben verkleinern. Um sicherzustellen, dass einzelne Buchstaben groß bleiben, müssen Sie sie in Klammern einschließen, wie im Wort {B}elgien. <em>(Anm. d. Übers.: Die meisten deutschen <em>BibTeX</em>-Stile behalten die Großbuchstaben ohnehin bei.)</em>
<P>
Hinweise zu einigen Feldtypen:
<ul>
-<li><em>Author:</em> Dieses Feld sollte alle Autoren Ihres Eintrags enthalten. Die Namen werden durch das Wort <em>and</em> getrennt, auch wenn es mehr als zwei Autoren gibt. Jeder Name kann in zwei gleichwertigen Formen notiert werden:<br>
- Donald E. Knuth <em>oder</em> Knuth, Donald E.<br>
- Eddie van Halen <em>oder</em> van Halen, Eddie<br>
+<li><strong style="font-style: italic;">Bibtexkey<br>
+</strong>Eine eindeutige Bezeichnung, um sich in LaTeX-Dokumenten auf den Eintrag beziehen zu können. Beachten Sie, dass der Bibtexkey genau mit dem Verweis im LaTeX-Dokument übereinstimmen muss (auch die Groß-/Kleinschreibung).<br>
+ <br>
+</li>
-Die zweite Form sollte für Autoren mit zwei oder mehr Nachnamen benutzt werden, um zwischen dem mittleren und dem Nachnamen zu unterscheiden.
+ <li><strong>address<br>
+ </strong>Der Ort des <em>Verlags</em> oder einer anderen Institution.
+ <p>
+ </p>
+ </li>
+ <li><strong>annote<br>
+ </strong>Eine Anmerkung.
+Dieses Feld wird von den Standard-Bibliographiestilen nicht verwendet, kann aber bei einigen Stilen benutzt werden, um eine kommentierte Literaturliste zu erstellen.
+ <p>
+ </p>
+ </li>
+ <li><strong>author<br>
+ </strong>Dieses Feld sollte alle Autoren Ihres Eintrags enthalten. Die Namen werden durch das Wort <tt>and</tt> getrennt, auch wenn es mehr als zwei Autoren gibt. Jeder Name kann in zwei gleichwertigen Formen notiert werden:
+<ul>
+<li>Donald E. Knuth <em>oder</em> Knuth, Donald E.</li>
+<li>Eddie van Halen <em>oder</em> van Halen, Eddie</li>
+</ul>
+Die zweite Form sollte für Autoren mit zwei oder mehr Nachnamen benutzt werden, um zwischen dem mittleren und dem Nachnamen zu unterscheiden.<br>
+ <br>
+ <span style="font-weight: bold;"></span></li>
+ <li><span style="font-weight: bold;"></span><strong>booktitle<br>
+ </strong>Der Titel eines Buches, aus dem ein Teil zitiert wird. Falls Sie ein Buch zitieren wollen, nehmen Sie für den Titel stattdessen das <tt>title</tt>-Feld.
+ <p>
+ </p>
+ </li>
+ <li><strong>chapter<br>
+ </strong>Eine Kapitelnummer (oder Abschnittsnummer oder was-auch-immer-Nummer).
+ <p>
+ </p>
+ </li>
+ <li><strong>crossref<br>
+ </strong>Der <tt>key</tt> eines Eintrags, auf den ein Querverweis gesetzt wird. Damit lassen sich beispielsweise die Daten eines Sammelbandes in einem Eintrag für einen Aufsatztitel wiederverwenden, ohne sie bei jedem Aufsatztitel explizit einzutragen. Die Funktionalität von <tt>crossref</tt> ist jedoch nicht in jedem Fall praktikabel.
+ <p>
+ </p>
+ </li>
+ <li><strong>edition<br>
+ </strong>Die Auflage eines Buch, z.B. ,,Zweite``. Die Ordnungszahl sollte mit einem Großbuchstaben beginnen; sie wird von den Standardstilen gegebenenfalls in Kleinbuchstaben umgewandelt. Manche Stile verlangen hier eine Ziffer.
+ <p>
+ </p>
+ </li>
+ <li><strong>editor<br>
+ </strong>Dieses Feld ist analog zu dem <em>author</em>-Feld.
+Falls zusätzlich ein <tt>author</tt>-Feld angegeben wird, bezeichnet das <tt>editor</tt>-Feld den Herausgeber des Buches oder des Sammelbandes, in dem die referenzierte Literatur erschienen ist.
+ <p>
+ </p>
+ </li>
+ <li><strong>howpublished<br>
+ </strong>Die Art, wie ein Werk veröffentlicht wurde (meist außerhalb eines Verlags). Das erste Wort sollte mit einem Großbuchstaben beginnen.
+ <p>
+ </p>
+ </li>
+ <li><strong>institution<br>
+ </strong>Die fördernde Institutions eines technischen Reports.
+ <p>
+ </p>
+ </li>
+ <li><strong>journal<br>
+ </strong>Ein Zeitschriftenname.
+Mit Hilfe von "Strings" können Zeitschriftennamen abgekürzt werden. Zum Erstellen eines solchen Strings können Sie den <a href="StringEditorHelp.html">String-Editor</a> benutzen oder die Funktionalität zur <a href="JournalAbbreviations.html">Abkürzung von Zeitschriftentiteln</a> verwenden.
+ <p>
+ </p>
+ </li>
+ <li><strong>key<br>
+ </strong>Dieses Feld wird zur Sortierung, zur Erstellung von Labels (falls kein <tt>author</tt> vorhanden ist) und für Querverweise (<tt>crossref</tt>) verwendet. Verwechseln Sie dieses Feld nicht mit dem <tt>Bibtexkey</tt>, der für die <code>\cite</code>-Kommandos gebraucht wird und am Anfang jedes Eintrags erscheint (im BibTeX-Quelltext).
+ <p>
+ </p>
+ </li>
+ <li><strong>month<br>
+ </strong>Der Monat, in dem ein Werk veröffentlicht oder geschrieben wurde. Benutzen Sie am besten die englischen Abkürzungen (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
+ <p>
+ </p>
+ </li>
+ <li><strong>note<br>
+ </strong>Zusätzliche Infromationen. Das erste Wort sollte mit einem Großbuchstaben beginnen.
+ <p>
+ </p>
+ </li>
+ <li><strong>number</strong><br>
+Die Nummer einer Zeitschrift, eines technischen Reports oder eines Bandes innerhalb einer Reihe (<tt>series</tt>). Zeitschriften haben oft eine Band- und Heftzählung, der Band entspricht dem <tt>volume</tt>-, das Heft dem <tt>number</tt>-Eintrag.
+ <p>
+ </p>
+ </li>
+ <li><strong>organization<br>
+ </strong>Die Organisation, die einen Konferenzband fördert.
+ <p>
+ </p>
+ </li>
+ <li><strong>pages<br>
+ </strong>Die Seitenzahl(en) oder der Seitenzahlbereich, z.B. <tt>42-111</tt> oder <tt>7,41,73-97</tt> or <tt>43+</tt> (das `<tt>+</tt>' deutet auf folgende Seiten, die nicht einen einfachen Bereich umfassen).
+Ein einfacher Bindestrich (wie in <tt>7-33</tt>) wird in einen doppelten Bindestrich (<tt>--</tt>) verwandelt, der in TeX den bis-Strich anzeigt (also 7–33).
+ <p>
+ </p>
+ </li>
+ <li><strong>publisher<br>
+ </strong>Der Name des Verlags.
+ <p>
+ </p>
+ </li>
+ <li><strong>school<br>
+ </strong>Der Name einer Universität, an der eine Abschlussarbeit - z.B. eine Dissertation (<tt>phdthesis</tt>) oder Magisterarbeit (<tt>mastersthesis</tt>) - geschrieben wurde.
+ <p>
+ </p>
+ </li>
+ <li><strong>series<br>
+ </strong>Der Name einer Reihe, in der ein Buch erschienen ist.
+Falls die Bücher einer Reihe nummeriert sind, wird die entsprechende Nummer im Feld <tt>number</tt> angegeben.
+ <p>
+ </p>
+ </li>
+ <li><strong>title<br>
+ </strong>Der Titel des Werkes. Die Groß- und Kleinschreibung kann von den Bibliographiestilen und der benutzten Sprache abhängig sein (wobei sie mit deutschen Bibliographiestilen beibehalten wird). Worte, die auch bei Verwendung englischer Bibliographiestile groß geschrieben werden sollen, müssen in geschweifte Klammern eingefasst werden (z.B. <tt>A {German} title</tt>).
+ <p>
+ </p>
+ </li>
+ <li><strong>type<br>
+ </strong>Der Typ eines technischen Reports, z.B. ``Research Note''. Bei <em>jurabib</em> wird dieses Feld auch für den Typ einer Abschlussarbeit verwendet.
+ <p>
+ </p>
+ </li>
+ <li><strong>volume<br>
+ </strong>Der Band (Jahrgang) einer Zeitschrift oder der Band eines Buches in einem mehrbändigen Werk. <p>
+ </p>
+ </li>
+ <li><strong>year<br>
+ </strong>Das Jahr der Veröffentlichung (oder bei einem unveröffentlichten Werk das Jahr, in dem es geschrieben wurde). Normalerweise sollte im <tt>year</tt>-Feld nur eine vierstellige Zahl stehen, z.B. <tt>1984</tt>. Die Standardstile können aber auch mit <tt>year</tt>-Einträgen umgehen, deren letzte vier Zeichen (ausgenommen Satzzeichen) Ziffern sind, beispielsweise <tt>(um 1984)</tt>.
+ Dieses Feld wird für die meisten Eintragstypen benötigt.</li>
+</ul>
+
+
+
+
+
+
+<br>
+
+
+<h2>Andere Felder</h2>
+
+
+Bibliographie-Stile für BibTeX wurden von vielen Leuten entwickelt,
+und einige haben weitere Felder erstellt. Es folgt eine kleine Auswahl.<br>
+<br>
+Feldnamen, die mit einem Stern* versehen sind, werden nicht direkt von JabRef unterstützt, können aber eingebunden werden (siehe <a href="CustomEntriesHelp.html">Eintragstypen anpassen</a>).
+
+<dl>
+
+
+</dl>
+
+<ul>
+
+ <li><strong><span style="font-weight: normal; font-style: italic;">affiliation*</span><br>
+ </strong>Die Zugehörigkeit eines Autors.<br>
+ <br>
+
+ </li>
+ <li><strong>abstract<br>
+ </strong>Die Zusammenfassung eines Werks.<br>
+ <br>
+
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">contents*</span><br>
+ </strong>Ein Inhaltsverzeichnis.<br>
+ <br>
-<li><em>Editor:</em> Dieses Feld ist analog zu dem <em>author</em>-Feld.
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">copyright*</span><br>
+ </strong>Copyright-Informationen.<br>
+ <br>
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">ISBN*</span><br>
+ </strong>Die Internationale Standardbuchnummer.<br>
+ <br>
-<li><em>Year:</em> Das Jahr der Publikation. Dieses Feld wird für die meisten Eintragstypen benötigt. JabRef akzeptiert in diesem Feld nur einen numerischen Wert.
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">ISSN*</span><br>
+ </strong>Die Internationale Standardseriennummer (für Zeitschriften).<br>
+ <br>
+
+ </li>
+ <li><strong>keywords<br>
+ </strong>Stichworte, können in JabRef gut zum Gruppieren verwendet werden.<br>
+ <br>
+
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">language*</span><br>
+ </strong>Die Sprache des Werks.<br>
+ <br>
+
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">location*</span><br>
+ </strong>Der Ort, der mit einem Werk in Verbindung steht, z.B. die Stadt, in der eine Konferenz stattgefunden hat.<br>
+ <br>
+
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">LCCN*</span><br>
+ </strong>Die <em>Library of Congress Call Number</em>. Manchmal heißt das Feld auch <tt>lib-congress</tt>.<br>
+ <br>
+
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">mrnumber*</span><br>
+ </strong>Die <i>Mathematical Reviews</i>-Nummer.<br>
+ <br>
+
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">price*</span><br>
+ </strong>Der Preis.<br>
+ <br>
+
+ </li>
+ <li><strong><span style="font-weight: normal; font-style: italic;">size*</span><br>
+ </strong>Die physische Größe eines Dokuments.<br>
+ <br>
+
+ </li>
+ <li><strong>url<br>
+ </strong>Der <em>Uniform Resource Locator</em> (URL, "einheitlicher Quellenanzeiger"), der auf eine Webseite im Internet verweist.<br><br>
+ </li>
+
+ <li><strong>urldate<br>
+ </strong>Das Datum, an dem eine Webseite zuletzt besucht wurde.</li>
-<li><em>Bibtexkey:</em> Eine eindeutige Bezeichnung,um sich in LaTeX-Dokumenten auf den Eintrag beziehen zu können. Beachten Sie, dass der Bibtexkey genau mit dem Verweis im LaTeX-Dokument übereinstimmen muss (auch die Groß-/Kleinschreibung).
</ul>
-</HTML>
+<br>
+
+<br>
+
+
+
+
+
+
+
+<br>
+
+
+
+</body>
+</HTML>
\ No newline at end of file
<H1>CiteSeer-Import</H1>
+CiteSeer ist eine digitale Bibliothek und Suchmaschine für wissenschaftliche Literatur, vornehmlich zu den Bereichen Computer und Informatik.
+
<H2>Importieren eines Eintrags von CiteSeer</H2>
JabRef kann Informationen über eine bestimmte Literaturangabe aus der CiteSeer-Datenbank
indem Sie <b>BibTeX -> Felder von CiteSeer importieren</b> auswählen. Achten Sie darauf, dass
Sie die Zeile(n) ausgewählt haben, die Sie aktualisieren wollen.
-<H2>Generating a Citation Database</H2>
-
-Hinweis des Übersetzers: Offen gesagt habe ich diesen Absatz nicht verstanden, was daran liegen mag,
-dass ich CiteSeer nicht kenne und deshalb auch die Funktionsweise nicht nachvollziehen kann.
-Für Hinweise, Erklärungen oder eine fertige Übersetzung wäre ich deshalb dankbar.
-Damit die Informationen für deutsche Benutzer nicht verloren gehen, habe ich Sie im Original belassen:
+<H2>Eine Datei mit zitierenden Literaturangaben erzeugen</H2>
-<blockquote>
-Given a set of references, you can generate a list of documents that cite the elements of this set.
-To facilitate this feature, each citation in a database must have a citeseerurl field with the format specified
-in <b>Importing An Entry From CiteSeer</b>. To use this feature, select <b>Tools -> Fetch Citations
-from CiteSeer</b>.
-</blockquote>
+Mit einem Satz von Literaturangaben können Sie eine Liste der Dokumente
+erzeugen, die die einzelnen Literaturangaben ihrerseits zitieren. Dazu
+muss jede Literaturangabe der entsprechenden Datenbank-Datei ein
+ausgefülltes citeseerurl-Feld besitzen, dessen Inhalt dem in <b>Importieren eines Eintrags von CiteSeer</b>
+beschriebenen Format entspricht. Sie können diese Funktion nutzen, indem
+Sie <b>Zitierende Literatur von CiteSeer abrufen</b> auswählen.
<H2>Benutzung eines Proxy-Servers</H2>
<p>
-</HTML>
+</HTML>
\ No newline at end of file
<BODY text="#275856">
<basefont size="4" color="#2F4958" face="arial">
-<H1>JabRef von der Kommandozeile</H1>
+<H1>Kommandozeilen-Optionen</H1>
Obwohl JabRef in erster Linie ein Programm mit grafischer Benutzeroberfläche ist, bietet es
einige nützliche Optionen für die Kommandozeile und kann sogar Dateikonvertierungen
und unterdrückt das Laden der grafischen Oberfläche. Das Word <em>true</em> verhindert, dass der
Dateiname als Argument der Option <code>-n</code> interpretiert wird.
-<H1>Kommandozeilen-Optionen</H2>
<H2>Hilfe: -h</H2>
Diese Option veranlasst JabRef, eine Zusammenfassung der Kommandozeilen-Optionen anzuzeigen und das
<a href="BibtexHelp.html"><em>BibTeX</em> Hilfe</a><br>
<a href="MarkingHelp.html">Einträge markieren</a><br>
<a href="CiteSeerHelp.html">Einträge von <em>CiteSeer</em> abrufen</a><br>
+<a href="IEEEXploreHelp.html">Einträge von <em>IEEExplore</em> abrufen</a><br>
<a href="MedlineHelp.html">Einträge von <em>Medline</em> abrufen</a><br>
<a href="EntryEditorHelp.html">Der Eintrags-Editor</a><br>
<a href="CustomEntriesHelp.html">Eintragstypen anpassen</a><br>
<a href="PreviewHelp.html">Eintragsvorschau anpassen</a><br>
<a href="CustomExports.html">Exportfilter anpassen</a><br>
-<a href="CustomImports.html">Externe Importfilter</a><br>
+<a href="RemoteHelp.html">Externer Zugriff</a><br>
<a href="EndNoteFilters.html">Die Exportfilter und Importfilter für EndNote</a><br>
<a href="BaseFrameHelp.html">Das Hauptfenster von JabRef</a><br>
<a href="GroupsHelp.html">Hilfe zu den <em>Gruppen</em></a><br>
+<a href="CustomImports.html">Importfilter anpassen</a><br>
<a href="ImportInspectionDialog.html">Import-Kontrollfenster</a><br>
<a href="OpenOfficeHelp.html">JabRef-Bibliographien in OpenOffice.org benutzen</a><br>
<a href="CommandLine.html">Kommandozeilen-Optionen</a><br>
<a href="StringEditorHelp.html">Der String-Editor</a><br>
<a href="SearchHelp.html">Die Suchfunktionen von JabRef</a><br>
<a href="ContentSelectorHelp.html">Wortauswahl verwalten</a><br>
+<a href="XMPHelp.html">XMP-Metadaten und JabRef</a><br>
+<a href="JournalAbbreviations.html">Zeitschriftentitel abkürzen</a><br>
<a href="TimeStampHelp.html">Zeitstempel</a><br>
</HTML>
\ No newline at end of file
<BODY text="#275856">
<basefont size="4" color="#2F4958" face="arial">
-<H1>Externe Importfilter</H1>
+<H1>Importfilter anpassen</H1>
-<p>JabRef bietet Ihnen die Möglichkeit, ganz ähnlich den Standard-Importern, eigene Importer
+<p>JabRef bietet Ihnen die Möglichkeit, ganz ähnlich den Standard-Importern, eigene Importer
zu definieren und zu benutzen. Man definiert einen Importer durch eine oder mehrere Java
<i>Klassen</i>, die Dateinhalte aus einem sogenannten <i>Input stream</i> lesen
-und daraus BibTex-Einträge erzeugen. Sie können vorkompilierte Importer einbinden, die Sie vielleicht
+und daraus BibTex-Einträge erzeugen. Sie können vorkompilierte Importer einbinden, die Sie vielleicht
von SourceForge erhalten haben (siehe "Ihre Arbeit anderen zur Verfügung stellen"). Sie können auch
-mit Grundkenntnissen der Java-Programmierung eigene Importer für für Sie wichtige Referenzquellen
+mit Grundkenntnissen der Java-Programmierung eigene Importer für für Sie wichtige Referenzquellen
erstellen oder neue, verbesserte Versionen existierender Importer einbinden, ohne JabRef neu zu
-kompilieren.</p>
+kompilieren.</p>
<p>Externe Importfilter haben Vorrang vor Standard-Importern. So können Sie mit Ihren Importern
die existierenden in der automatischen Formaterkennung und an der Kommandozeile in JabRef überschreiben.
<p>Stellen Sie sicher, dass Sie den Importer in kompilierter Form haben (eine oder mehrere
<code>.class</code> Dateien) und dass die Klassendateien
-in einer Verzeichnisstruktur entsprechend ihrer Package-Struktur liegen.
-Um einen neuen externen Importfilter hinzuzufügen, öffnen Sie den Dialog
+in einer Verzeichnisstruktur entsprechend ihrer Package-Struktur liegen.
+Um einen neuen externen Importfilter hinzuzufügen, öffnen Sie den Dialog
<b>Optionen -> Verwalte externe Importfilter</b>, und klicken Sie auf
-<b>Aus Klassenpfad hinzufügen</b>. Ein Dateiauswahl-Fenster erscheint,
+<b>Aus Klassenpfad hinzufügen</b>. Ein Dateiauswahl-Fenster erscheint,
mit dem Sie den Klassenpfad des Importers wählen, dass heißt den obersten Ordner,
in dem die Package-Struktur Ihres Importers beginnt. In einem zweiten Dateiauswahl-Fenster
wählen Sie die <i>.class</i>-Datei Ihres Importers, die von <code>ImportFormat</code> abgeleitet
ist. Wenn Sie <b>Klasse auswählen</b> klicken, erscheint Ihr neuer Importer
in der Liste der externen Importfilter. Alle externen Importfilter erscheinen in den
-JabRef-Submenüs <b>Datei -> Importieren -> Externe Importfilter</b> und
+JabRef-Submenüs <b>Datei -> Importieren -> Externe Importfilter</b> und
<b>Datei -> Importieren und Anhängen -> Externe Importfilter</b>.</p>
<p>Bitte beachten Sie: wenn Sie die Klassen in ein anderes Verzeichnis verschieben,
<H2>Einen Importfilter entwickeln</H2>
-Bitte schauen Sie auf unseren Download-Seiten nach Beispielen und nützliche Dateien zur
+Bitte schauen Sie auf unseren Download-Seiten nach Beispielen und nützliche Dateien zur
Entwicklung Ihres Importfilters.
<H3>Ein einfaches Beispiel</H3>
public boolean isRecognizedFormat(InputStream stream) throws IOException {
return true; // this is discouraged except for demonstration purposes
}
-
- public List importEntries(InputStream stream) throws IOException {
+
+ public List importEntries(InputStream stream) throws IOException {
ArrayList bibitems = new ArrayList();
BufferedReader in = new BufferedReader(ImportFormatReader.getReaderDefaultEncoding(stream));
-
+
String line = in.readLine();
while (line != null) {
if (!"".equals(line.trim())) {
be.setField("title", fields[2]);
bibitems.add(be);
line = in.readLine();
- }
+ }
}
- return bibitems;
+ return bibitems;
}
}
</pre></p>
<p>Beachten Sie, dass die Beispielklasse im Default-Package liegt. Angenommen, Sie haben
sie unter <code>/meinpfad/SimpleCsvImporter.java</code> gespeichert. Nehmen wir weiter an,
die Datei <i>JabRef-2.0.jar</i> ist im gleichen Verzeichnis wie
-<code>SimpleCsvImporter.java</code> und Java ist in Ihrem Kommandopfad.
-Kompilieren Sie die Klasse mit JSDK 1.4 zum Beispiel mit folgendem Kommandozeilen-Aufruf:
+<code>SimpleCsvImporter.java</code> und Java ist in Ihrem Kommandopfad.
+Kompilieren Sie die Klasse mit JSDK 1.4 zum Beispiel mit folgendem Kommandozeilen-Aufruf:
<pre>
javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
</pre>
Nun sollte dort auch eine Datei <code>/mypath/SimpleCsvImporter.class</code> liegen.</p>
<p>Öffnen Sie in JabRef <b>Optionen -> Verwaltung externer Importfilter</b> und klicken Sie
-auf <b>Aus Klassenpfad hinzufügen</b>. Navigieren Sie nach <code>/meinpfad</code> und
+auf <b>Aus Klassenpfad hinzufügen</b>. Navigieren Sie nach <code>/meinpfad</code> und
klicken Sie <b>Klassenpfad auswählen</b>. Wählen Sie dann <code>SimpleCsvImporter.class</code>
und klicken Sie <b>Klasse auswählen</b>. Ihr Importfilter sollte nun in der Liste der
externen Importfilter unter dem Namen "Simple CSV Importer" erscheinen, und,
-sobald Sie <b>Schließen</b> gewählt haben, auch in den Untermenüs <b>Datei -> Importieren ->
-Externe Importfilter</b> und <b>Datei -> Importieren und Anhängen -> Externe Importfilter</b>
+sobald Sie <b>Schließen</b> gewählt haben, auch in den Untermenüs <b>Datei -> Importieren ->
+Externe Importfilter</b> und <b>Datei -> Importieren und Anhängen -> Externe Importfilter</b>
des JabRef-Hauptfensters.</p>
-<H2>Ihre Arbeit anderen zur Verfügung stellen</H2>
+<H2>Teilen Sie Ihre Arbeit</H2>
Mit externen Importfiltern ist es recht einfach, Importfilter zwischen Nutzern auszutauschen und
-gemeinsam zu nutzen. Wenn Sie einen Importer für ein Format schreiben, das JabRef noch nicht unterstützt,
-oder einen Importer verbessern, bitten wir Sie, Ihre Ergebnisse auf unserer SourceForge.net
-Seite zu veröffentlichen. Wir bieten gerne eine Sammlung eingereichter Importfilter an oder
+gemeinsam zu nutzen. Wenn Sie einen Importer für ein Format schreiben, das JabRef noch nicht unterstützt,
+oder einen Importer verbessern, bitten wir Sie, Ihre Ergebnisse auf unserer SourceForge.net
+Seite zu veröffentlichen. Wir bieten gerne eine Sammlung eingereichter Importfilter an oder
fügen sie unserer Auswahl an Standard-Importfiltern hinzu.
-</HTML>
+</HTML>
\ No newline at end of file
<h2>Exportieren aus JabRef</h2>
JabRef kann Dateien so exportieren, dass EndNote sie lesen kann.
-Um diese Funktion zu nutzen, wählen Sie <b>Datei -> Exportieren -> Endnote</b>
+Um diese Funktion zu nutzen, wählen Sie <b>Extras -> Endnote</b>
und wählen dann den Namen der Export-Datei.
<h2>Importieren in EndNote</h2>
überhaupt zu benutzen. Der Nachteil ist in diesem Fall allerdings, dass das PDF-Icon in der Tabellenansicht
nicht angezeigt wird, solange das PDF-Feld leer bleibt.
+<H2>Dateispezifische PDF- und PS-Verzeichnisse</H2>
+<P>
+Sie können für jede Datei eigene PDF- und PS-Verzeichnisse angeben (<b>Datei -> Eigenschaften der Datei</b>). Diese Verzeichnisse ersetzen dann die Standardverzeichnisse.
+</P>
+
+<a name="RegularExpressionSearch">
+<H2>Die Suche mit regulären Ausdrücken für automatische Verknüpfungen nutzen</H2>
+</a>
+<p>
+Wenn Sie Dateinamen verwenden, die dem bibtexkey ergänzt um die Dateiendung entsprechen, findet JabRef diese Dateien automatisch.
+</p><p>
+Ab Version 2.2 ist mit Hilfe von regulären Ausdrücken eine größere Flexibilität beim Benennen der Dateien gewährleistet. In den meisten Fällen dürfte das Standardverhalten bereits ausreichend sein.
+</p><p>
+In den Einstellungen zu externen Programmen (<b>Optionen -> Einstellungen -> Externe Programme</b>) findet sich eine Option "Suche mit regulärem Ausdruck benutzen". Wenn Sie diese Option aktivieren, können Sie für die Suche in PDF-Verzeichnissen einen eigenen regulären Ausdruck angeben.
+</p><p>
+Die folgende Syntax wird verwendet:
+</p>
+<ul>
+ <li><code>*</code> - Suche in allen direkten Unterverzeichnissen, NICHT im aktuellen Verzeichnis und in Unterverzeichnissen zweiter oder tieferer Ebene.</li>
+ <li><code>**</code> - Rekursive Suche in allen Unterverzeichnissen UND im aktuellen Verzeichnis.</li>
+ <li><code>.</code> und <code>..</code> - Das aktuelle Verzeichnis und das Elternverzeichnis (eine Ebene höher).</li>
+ <li><code>[title]</code> - Alle Ausdrücke in eckigen Klammern werden durch den Inhalt des entsprechenden Felds ersetzt.</li>
+ <li><code>[extension]</code> - Wird durch die Dateiendung des Feldes, das Sie benutzen, ersetzt.</li>
+ <li>Anderer Text wird als regulärer Ausdruck interpretiert. Aber Vorsicht: <em>backslashes</em> müssen mit einem weiteren <em>backslash</em> <em>escaped</em> werden (<tt>\\</tt>), damit sie nicht mit Separatoren in Pfad-Angaben verwechselt werden.</li>
+</ul>
+<p>
+Der Standard ist <code>**/.*[bibtexkey].*\\.[extension]</code>. Damit wird in allen Unterverzeichnissen des Ordners der entsprechenden Dateiendung (z.B. das PDF-Verzeichnis) nach allen Dateien mit der richtigen Dateiendung gesucht, die den bibtexkey in ihrem Namen haben.
+</p>
+</body>
</HTML>
\ No newline at end of file
<h3>Hierarchischer Kontext</h3>
-<em>Hinweis des Übersetzers: weiter bin ich noch (03.11.2005) nicht gekommen.</em><br>
Standardmäßig ist eine Gruppe <b>unabhängig</b> von ihrer Position im Gruppenbaum. Ist eine Gruppe ausgewählt, wird nur der Inhalt dieser Gruppe angezeigt. Es ist jedoch -- besonders beim Verwenden dynamischer Gruppen -- oft nützlich, eine Untergruppe zu erstellen, die <b>ihre Obergruppe verfeinert</b>. Wenn diese Untergruppe ausgewählt wird, werden alle Einträge dieser Gruppe und ihrer Obergruppe angezeigt. Erstellen Sie z.B. eine Obergrupe, die Einträge mit dem Stichwort <tt>Verteilung</tt> enthält, sowie eine verfeinernde Untergruppe mit Einträgen, die das Stichwort <tt>Gauß</tt> enthalten. Wenn Sie nun die Untergruppe auswählen, werden alle Einträge angezeigt, die beiden Bedingungen entsprechen, also alle, die mit Gauß'scher Verteilung zu tun haben. Indem Sie nun eine weitere Untergruppe für <tt>Laplace</tt> anlegen, die dieselbe Obergruppe verfeinert, können Sie die Gruppierung einfach erweitern. Im Gruppenbaum haben solche Gruppen, die ihre Obergruppen verfeinern, ein spezielles Icon. (Dieses Verhalten kann in den Einstellungen abgestellt werden.)
<p>
Das logische Gegenstück zu einer solchen verfeinernden Untergruppe ist eine Gruppe, die <b>ihre Untergruppen berücksichtigt</b>. Wird sie ausgewählt, werden nicht nur die Einträge dieser Gruppe, sondern auch diejenigen aller Untergruppen angezeigt. Im Gruppenbaum hat auch diese Art von Gruppen ein spezielles Icon. (Dieses Verhalten kann in den Einstellungen abgestellt werden.)
--- /dev/null
+<HTML>
+
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+
+<H1>IEEEXplore durchsuchen</H1>
+
+IEEEXplore bietet Zugang zu Literatur in den Bereichen Elektrotechnik, Informatik und Elektronik.
+<p>
+JabRef kann Literaturangaben der IEEEXplore-Datenbank herunterladen.
+Um diese Funktion zu nutzen, wählen Sie <b>Internet -> IEEEXplore abfragen</b>
+und geben in dem Dialog, der im linken Bildschirmbereich erscheint, Ihre
+Suchausdrücke ein. Drücken Sie anschließend die
+<b>Enter</b>-Taste oder den <b>Abrufen</b>-Button.
+<p>
+Die Suche wird im Gäste-Modus durchgeführt, es werden also maximal 100 Ergebnisse
+angezeigt.
+<p>
+Sie können die <i>abstracts</i> zusammen mit den Literaturangaben herunterladen,
+indem Sie einen Haken bei <b>Abstracts berücksichtigen</b> setzen. Das verursacht
+eine deutlich höhere Anzahl von Netzwerk-Anfragen; um die Webseite von IEEEXplore
+nicht übermäßig zu belasten, lädt JabRef <i>abstracts</i> nur bei einer Suche,
+deren Ergebnis eine bestimmte Trefferanzahl nicht übersteigt.
+
+</HTML>
\ No newline at end of file
-This file was created with JabRef 1.8.1.
+This file was created with JabRef 2.2b2.
Encoding: ISO8859_1
+@ARTICLE{Fenn2006,
+ author = {Fenn, Jürgen},
+ title = {Managing Citations and Your Bibliography with \bibtex{}},
+ journal = {The Prac\TeX{} Journal},
+ year = {2006},
+ gender = {sm},
+ number = {4},
+ annote = {Kurze Einführung in die Verwaltung von Literaturdaten und die Benutzung
+ von \bibtex{}. Auch für Anfänger geeignet; englisch.},
+ timestamp = {2006-12-09},
+ url = {http://www.tug.org/pracjourn/2006-4/fenn},
+ urldate = {9.\,12.\,2006}
+}
+
@UNPUBLISHED{Markey2005,
author = {Markey, Nicolas},
title = {Tame the BeaST},
+ note = {\ctan{info\slash{}bibtex\slash{}tamethebeast\slash{}}},
month = {6.\,} # mar,
year = {2005},
- annote = {Ausführliches Tutorium rund um Bib\TeX{}, von der Erstellung von bib-Dateien
- über die Programmierung bis hin zu kleinen nützlichen Tipps und Tricks
- und dem "`Missbrauch"' von Bib\TeX{} als Adressbuch oder Glossar~\ldots{};
- englisch.},
+ annote = {Ausführliches Tutorium rund um Bib\TeX{}, von der Erstellung von
+ bib-Dateien über die Programmierung bis hin zu kleinen nützlichen
+ Tipps und Tricks und dem "`Missbrauch"' von Bib\TeX{} als Adressbuch
+ oder Glossar~\ldots{}; englisch.},
timestamp = {2005-11-15},
- titleaddon = {The B to X of Bib\TeX},
+ titleaddon = {The B to X of Bib\TeX}
}
@UNPUBLISHED{btxdoc,
author = {Oren Patashnik},
title = {Bib\TeX{}ing},
+ note = {\ctan{biblio\slash{}bibtex\slash{}distribs\slash{}doc\slash{}btxdoc.tex}},
month = {8.\,} # feb,
year = {1988},
abstract = {Documentation for general {\BibTeX} users},
annote = {Einführung in die Benutzung von Bib\TeX{}, vom Autor des Programms
- selbst; englisch.},
- timestamp = {2005-11-15},
- titleaddon = {Datei "`btxdoc"'},
+ selbst; englisch. Dokumentation von Bib\TeX{}, die bei jeder \LaTeX{}-Distribution
+ dabei sein sollte.},
+ timestamp = {2005-11-15}
}
@UNPUBLISHED{btxhak,
author = {Oren Patashnik},
title = {Designing Bib\TeX{} Styles},
+ note = {\ctan{biblio\slash{}bibtex\slash{}distribs\slash{}doc\slash{}btxhak.tex}},
month = {8.\,} # feb,
year = {1988},
abstract = {The part of \BibTeX's documentation that's not meant for general users},
annote = {Einführung in die Bib\TeX{}-Programmierung, vom Autor des Programms
- selbst; englisch.},
- timestamp = {2005-11-15},
- titleaddon = {Datei "`btxhak"'},
+ selbst; englisch. Dokumentation von Bib\TeX{}, die bei jeder \LaTeX{}-Distribution
+ dabei sein sollte. },
+ timestamp = {2005-11-15}
}
@UNPUBLISHED{Raichle2002,
author = {Raichle, Bernd},
title = {Tutorium: Einführung in die Bib\TeX{}-Programmierung},
+ note = {\href{http://www.dante.de/dante/events/dante2002/handouts/raichle-bibtexprog.pdf}{http://www.dante.de/dante/events/dante2002/handouts/raichle-bibtexprog.pdf}},
year = {2002},
address = {Erlangen},
annote = {Gibt eine kurze Einführung in den Aufbau einer Bib\TeX{}-Datei, hat
seinen Schwerpunkt aber vor allem auf der Erstellung eines Bib\TeX{}-Styles
(.bst). Erklärt auch die für Bib\TeX{} verwendete Programmiersprache
- UPN (Umgekehrt Polnische Notation); deutsch.},
- timestamp = {2005-11-15},
+ UPN (Umgekehrte Polnische Notation); deutsch.},
+ timestamp = {2005-11-15}
}
-% unter >>Erscheinungsbild<< noch die Punkte Tabellendarstellung,
-% Toolbar, Panels und Schriften erstellen (DW)
-%
-% FAQ ganz am Ende? (halte ich für nicht unbedingt nötig; eine Online-FAQ
-% wäre m.E. besser) (DW)
-
\documentclass[10pt,normalheadings]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
-\setcounter{secnumdepth}{1}
+\usepackage{textcomp}
+\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{4}
+%%% version date
+\newcommand{\versiondate}{in Bearb.}%19.\,12.\,2006
+
%%%%% Page Dimensions %%%%%
\usepackage{geometry}
\geometry{verbose,a5paper,tmargin=2cm,bmargin=2cm,lmargin=1cm,rmargin=1cm}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{amssymb}
+\usepackage{soul}
+\usepackage{hanging}
\makeatletter
%%%%% LyX command %%%%%
%%%%% Because html converters don't know tabularnewline %%%%%
\providecommand{\tabularnewline}{\\}
-%%%%% Environment "lyxcode" %%%%%
- \usepackage{verbatim}
- \newenvironment{lyxcode}
- {\begin{list}{}{
- \setlength{\rightmargin}{\leftmargin}
- \setlength{\listparindent}{0pt}% needed for AMS classes
- \raggedright
- \setlength{\itemsep}{0pt}
- \setlength{\parsep}{0pt}
- \normalfont\ttfamily}%
- \item[]}
- {\end{list}}
+%%%%% Listings %%%%%
+\usepackage{listings}
+\lstset{%
+ frame=none,
+ %backgroundcolor=\color{pyellow},
+ language=[LaTeX]TeX,
+ basicstyle=\ttfamily\small,
+ commentstyle=\color{red},
+ keywordstyle=, % LaTeX-Befehle werden nicht fett dargestellt
+ numbers=none,%left/right
+ %numberstyle=\tiny\lnstyle,
+ %numbersep=5pt,
+ %numberblanklines=false,
+ breaklines=true,
+ %caption=\lstname,
+ xleftmargin=25pt,
+ xrightmargin=20pt,
+ escapeinside={(*}{*)},
+ belowskip=\medskipamount,
+ prebreak=\mbox{$\hookleftarrow$}% "geklaut" vom scrguide (KOMA-Script)
+}
+
%%%%% Environment "revhist" (for revision history) %%%%%
-\newenvironment{revhist}
- {\list{--}{\setlength\itemsep{0pt}\setlength{\parsep}{0pt}}}
+\newenvironment{revhist}[1]
+ {\subsection*{#1}
+ \list{--}{\setlength\itemsep{0pt}\setlength{\parsep}{0pt}}}
{\endlist}
%%%%% PDF 1.2 for Acrobat 3 onwards %%%%%
}%
}
%%% version number
-\newcommand{\versionnr}{2.0} %
+\newcommand{\versionnr}{2.2} %
%%% JabRef logo with version nr
\newcommand{\jabrefversion}{\jabref{}~\versionnr}
+%%% BibTeX-shortcut
+\newcommand{\bibtex}{\texorpdfstring{Bib\kern-.125em\TeX}{BibTeX}}
%%% for Menu references
-\newcommand{\menu}[1]{{\color{dkred}\textit{#1}}}
+\newcommand{\menu}[1]{\texorpdfstring{{\color{dkred}\textit{#1}}}{#1}}
%%% Menu separator
\newcommand{\msep}{{\color{dkred}\textit{\guilsinglright}}}
%%% yellow box with dark blue text
\color{dkblue}\textit{#1}#2}}%
\end{center}%
}%
+%%% for the FAQ
+\newcounter{faq}
+\newcommand{\faq}[2]{\refstepcounter{faq}%
+ \medskip\noindent\colorbox{pyellow}{\parbox{0.9\textwidth}{%
+ \hangpara{0.11\textwidth}{1}%
+ \color{dkblue}Frage \thefaq: \textit{#1}}}\par\smallskip%
+ \begin{hangparas}{0.11\textwidth}{0}%
+ #2\par%
+ \end{hangparas}
+}%
+%\newcommand{\faq}[2]{%
+% \subsection{#1}
+% #2}%
%%% for CTAN references
\newcommand{\ctan}[1]{%
{CTAN: \color{dkblue}#1}%
%%%%% Headings %%%%%
\usepackage{scrpage2}
\pagestyle{scrheadings}
-\ihead{}
-\chead{\FileTitle{}}
-\ohead{}
+\ihead{\FileTitle{} (\versiondate{})}
+\chead{}
+\ohead{\headmark}
\ifoot{}
\cfoot{\pagemark}
\ofoot{}
+\automark[section]{section}
%%%%% Fonts %%%%%
\usepackage{charter}
\addtokomafont{sectioning}{\rmfamily} % Headings with serifs
+\usepackage[scaled=.83]{beramono}
%%%%% Other stuff %%%%%
\deffootnote{1.5em}{1em}{\makebox[1.5em][l]{\thefootnotemark}}
%%%%% Bibliography %%%%%
\usepackage{jurabib}
-\jurabibsetup{annote=true}
+\jurabibsetup{annote=true,authorformat=year}
\renewcommand{\bib@heading}{\addsec{Kommentiertes Literaturverzeichnis}}
%%%%% Hyperref %%%%%
\makeatother
\begin{document}
-\subject{\includegraphics[%
- scale=0.25]{../../images/JabRef-splash.png}}
+\subject{\includegraphics[scale=.5]{../../images/JabRef-icon-48.png}}
\title{\jabrefversion{}\\
\maketitle
\begin{abstract}
-\jabref{} ist eine grafische Java-Anwendung zur Bearbeitung von Bib\TeX{}-Dateien
+\jabref{} ist eine grafische Java-Anwendung zur Bearbeitung von \bibtex{}-Dateien
(.bib). Mit \jabref{} können Literaturangaben in Gruppen organisiert
und mit einem einfachen Klick die Ansicht auf eine einzelne Gruppe,
eine Schnittmenge von Gruppen oder die Gesamtmenge mehrerer Gruppen
eingegrenzt werden. \jabref{} kann Literaturangaben sortieren (für
-alle Standard-Bib\TeX{}-Felder) und automatisch Bib\TeX{}-Keys erzeugen.
+alle Standard-\bibtex{}-Felder) und automatisch \bibtex{}-Keys erzeugen.
Auch Links zu PDF-Dateien oder Webseiten können mit \jabref{} einfach
erstellt werden.
\begin{center}{\scriptsize Copyright \textcopyright{} 2005--2006, Dominik
Waßenhoven}
\end{center}
-{\scriptsize Dieser Inhalt ist unter einem Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Germany Lizenzvertrag lizenziert. Um die Lizenz anzusehen, gehen Sie bitte zu \href{http://creativecommons.org/licenses/by-nc-sa/2.0/de/}{http://creativecommons.org\slash{}licenses\slash{}by-nc-sa\slash{}2.0\slash{}de\slash{}} oder schicken Sie einen Brief an Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. \par}\end{spacing}
+{\scriptsize Der Inhalt dieses Handbuchs wird unter den Bedingungen der Creative Commons Public License ">Namensnennung"=NichtKommerziell"=Weitergabe unter gleichen Bedingungen 2.0 Deutschland"< zur Verfügung gestellt. Um den Lizenzvertrag anzusehen, gehen Sie bitte zu \href{http://creativecommons.org/licenses/by-nc-sa/2.0/de/}{http://creativecommons.org\slash{}licenses\slash{}by-nc-sa\slash{}2.0\slash{}de\slash{}} oder schicken einen Brief an Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. \par}\end{spacing}
\end{quote}
\thispagestyle{empty}
Auskunft.
-\subsection{Einführung in Bib\TeX{}}
+\subsection{Einführung in \bibtex{}}
\label{BibtexHelp}\tip[]{\jabref{} hilft Ihnen bei der Arbeit mit
-Ihren Bib\TeX{}-Dateien, aber es müssen dennoch Regeln beachtet werden,
+Ihren \bibtex{}-Dateien, aber es müssen dennoch Regeln beachtet werden,
wenn Sie Ihre Einträge bearbeiten. Nur so kann sichergestellt werden,
-dass Bib\TeX{} Ihre Datei richtig verarbeiten kann.}
+dass \bibtex{} Ihre Datei richtig verarbeiten kann.}
+\noindent Im Folgenden können nur einige allgemeine Hinweise gegeben werden. Ausführlichere Einführungen und weitere Erläuterungen zu \bibtex{} finden Sie bei \cite{Fenn2006,Markey2005,btxdoc,btxhak,Raichle2002}.
-\subsubsection{Bib\TeX{} Felder}
+\subsubsection{\bibtex{}-Felder}
-Es gibt viele unterschiedliche Felder in Bib\TeX{} und einige zusätzliche
-Felder, die Sie in \jabref{} einsetzen können. Grundsätzlich können
-Sie \LaTeX{}-Befehle in Feldern, die Text beinhalten, einsetzen. Bib\TeX{}
-wird Ihr Literaturverzeichnis je nach Bib\TeX{} style (Stildatei \texttt{.bst})
-automatisch formatieren und bei Stildateien für englische Texte Großbuchstaben
-verkleinern. Um sicherzustellen, dass einzelne Buchstaben groß bleiben,
-müssen Sie sie in Klammern einschließen, wie im Wort \{B\}elgien.
-Die meisten deutschen Bib\TeX{}-Stile%
-\footnote{Beispielsweise natdin, dinat, jurabib~\ldots{}%
-} behalten die Großbuchstaben ohnehin bei.
+Es gibt viele unterschiedliche Felder in \bibtex{} und einige zusätzliche Felder, die Sie in \jabref{} einsetzen können.
+Grundsätzlich können Sie \LaTeX{}-Befehle in Feldern, die Text beinhalten, einsetzen. \bibtex{} wird Ihr Literaturverzeichnis automatisch formatieren und je nach \bibtex{} style (Stildatei .bst) Großbuchstaben verkleinern. Um sicherzustellen, dass Anfangsbuchstaben groß bleiben, müssen Sie die Wörter in geschweifte Klammern einschließen, wie im Wort \{Belgien\}.\footnote{Die meisten deutschen \bibtex{}-Stile behalten die Großbuchstaben ohnehin bei.}
-Hier einige Hinweise zu den wichtigsten Feldtypen:
+Hinweise zu einigen Feldtypen:
+\begin{itemize}
+\item \emph{Bibtexkey}\\
+Eine eindeutige Bezeichnung, um sich in \LaTeX{}-Dokumenten auf den Eintrag beziehen zu können. Beachten Sie, dass der Bibtexkey genau mit dem Verweis im \LaTeX{}-Dokument übereinstimmen muss (auch die Groß-/Kleinschreibung).
+ \item \emph{address}\\
+ Der Ort des \emph{Verlags} oder einer anderen Institution.
+ \item \emph{annote}\\
+ Eine Anmerkung.
+Dieses Feld wird von den Standard-Bibliographiestilen nicht verwendet, kann aber bei einigen Stilen benutzt werden, um eine kommentierte Literaturliste zu erstellen.
+ \item \emph{author}\\
+ Dieses Feld sollte alle Autoren Ihres Eintrags enthalten. Die Namen werden durch das Wort \texttt{and} getrennt, auch wenn es mehr als zwei Autoren gibt. Jeder Name kann in zwei gleichwertigen Formen notiert werden:
+\begin{itemize}
+\item Donald E. Knuth \emph{oder} Knuth, Donald E.
+\item Eddie van Halen \emph{oder} van Halen, Eddie
+\end{itemize}
+Die zweite Form sollte für Autoren mit zwei oder mehr Nachnamen benutzt werden, um zwischen dem mittleren und dem Nachnamen zu unterscheiden.
+ \item \emph{booktitle}\\
+ Der Titel eines Buches, aus dem ein Teil zitiert wird. Falls Sie ein Buch zitieren wollen, nehmen Sie für den Titel stattdessen das \texttt{title}-Feld.
+ \item \emph{chapter}\\
+ Eine Kapitelnummer (oder Abschnittsnummer oder was-auch-immer-Nummer).
+ \item \emph{crossref}\\
+ Der \texttt{key} eines Eintrags, auf den ein Querverweis gesetzt wird. Damit lassen sich beispielsweise die Daten eines Sammelbandes in einem Eintrag für einen Aufsatztitel wiederverwenden, ohne sie bei jedem Aufsatztitel explizit einzutragen. Die Funktionalität von \texttt{crossref} ist jedoch nicht in jedem Fall praktikabel.
+ \item \emph{edition}\\
+ Die Auflage eines Buch, z.\,B. \texttt{Zweite}. Die Ordnungszahl sollte mit einem Großbuchstaben beginnen; sie wird von den Standardstilen gegebenenfalls in Kleinbuchstaben umgewandelt. Manche Stile verlangen hier eine Ziffer.
+ \item \emph{editor}\\
+ Dieses Feld ist analog zu dem \emph{author}-Feld.
+Falls zusätzlich ein \texttt{author}-Feld angegeben wird, bezeichnet das \texttt{editor}-Feld den Herausgeber des Buches oder des Sammelbandes, in dem die referenzierte Literatur erschienen ist.
+ \item \emph{howpublished}\\
+ Die Art, wie ein Werk veröffentlicht wurde (meist außerhalb eines Verlags). Das erste Wort sollte mit einem Großbuchstaben beginnen.
+ \item \emph{institution}\\
+ Die fördernde Institutions eines technischen Reports.
+ \item \emph{journal}\\
+ Ein Zeitschriftenname.
+Mit Hilfe von ">Strings"< können Zeitschriftennamen abgekürzt werden. Zum Erstellen eines solchen Strings können Sie den \nameref{StringEditorHelp} benutzen oder die Funktionalität zur \nameref{JournalAbbreviations} %Abkürzung von Zeitschriftentiteln
+verwenden.
+ \item \emph{key}\\
+ Dieses Feld wird zur Sortierung, zur Erstellung von Labels (falls kein \texttt{author} vorhanden ist) und für Querverweise (\texttt{crossref}) verwendet. Verwechseln Sie dieses Feld nicht mit dem \texttt{Bibtexkey}, der für die \texttt{\textbackslash cite}-Kommandos gebraucht wird und am Anfang jedes Eintrags erscheint (im \bibtex{}-Quelltext).
+ \item \emph{month}\\
+ Der Monat, in dem ein Werk veröffentlicht oder geschrieben wurde. Benutzen Sie am besten die englischen Abkürzungen (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
+ \item \emph{note}\\
+ Zusätzliche Infromationen. Das erste Wort sollte mit einem Großbuchstaben beginnen.
+ \item \emph{number}\\
+Die Nummer einer Zeitschrift, eines technischen Reports oder eines Bandes innerhalb einer Reihe (\texttt{series}). Zeitschriften haben oft eine Band- und Heftzählung, der Band entspricht dem \texttt{volume}-, das Heft dem \texttt{number}-Eintrag.
+ \item \emph{organization}\\
+ Die Organisation, die einen Konferenzband fördert.
+ \item \emph{pages}\\
+ Die Seitenzahl(en) oder der Seitenzahlbereich, z.\,B. \texttt{42-111} oder \texttt{7,41,73-97} or \texttt{43+} (das \texttt{+} deutet auf folgende Seiten, die nicht einen einfachen Bereich umfassen).
+Ein einfacher Bindestrich (wie in \texttt{7-33}) wird in einen doppelten Bindestrich (\texttt{-{-}}) verwandelt, der in TeX den bis-Strich anzeigt (also 7--33).
+ \item \emph{publisher}\\
+ Der Name des Verlags.
+ \item \emph{school}\\
+ Der Name einer Universität, an der eine Abschlussarbeit~-- z.\,B. eine Dissertation (\texttt{phdthesis}) oder Magisterarbeit (\texttt{mastersthesis})~-- geschrieben wurde.
+ \item \emph{series}\\
+ Der Name einer Reihe, in der ein Buch erschienen ist.
+Falls die Bücher einer Reihe nummeriert sind, wird die entsprechende Nummer im Feld \texttt{number} angegeben.
+ \item \emph{title}\\
+ Der Titel des Werkes. Die Groß- und Kleinschreibung kann von den Bibliographiestilen und der benutzten Sprache abhängig sein (wobei sie mit deutschen Bibliographiestilen beibehalten wird). Worte, die auch bei Verwendung englischer Bibliographiestile groß geschrieben werden sollen, müssen in geschweifte Klammern eingefasst werden (z.\,B. \texttt{A \{German\} title}).
+ \item \emph{type}\\
+ Der Typ eines technischen Reports, z.\,B. ">Research Note"<. Bei \emph{jurabib} wird dieses Feld auch für den Typ einer Abschlussarbeit verwendet.
+ \item \emph{volume}\\
+ Der Band (Jahrgang) einer Zeitschrift oder der Band eines Buches in einem mehrbändigen Werk.
+ \item \emph{year}\\
+ Das Jahr der Veröffentlichung (oder bei einem unveröffentlichten Werk das Jahr, in dem es geschrieben wurde). Normalerweise sollte im \texttt{year}-Feld nur eine vierstellige Zahl stehen, z.\,B. \texttt{1984}. Die Standardstile können aber auch mit \texttt{year}-Einträgen umgehen, deren letzte vier Zeichen (ausgenommen Satzzeichen) Ziffern sind, beispielsweise \texttt{(um 1984)}.
+ Dieses Feld wird für die meisten Eintragstypen benötigt.
+\end{itemize}
-\begin{labeling}{00.00.0000}
-\item [\emph{author}]Dieses Feld sollte alle Autoren Ihres Eintrags enthalten.
-Die Namen werden durch das Wort \emph{and} getrennt,%
-\footnote{Nicht durch Kommata, auch nicht durch >>und<<.%
-} auch wenn es mehr als zwei Autoren gibt. Jeder Name kann in zwei
-gleichwertigen Formen notiert werden:
+\subsubsection{Weitere Felder}
-\begin{quote}
-\texttt{Donald E. Knuth} \emph{oder} \texttt{Knuth, Donald E.}
+Bibliographie-Stile für \bibtex{} wurden von vielen Leuten entwickelt,
+und einige haben weitere Felder erstellt. Es folgt eine kleine Auswahl.
-\texttt{Eddie van Halen} \emph{oder} \texttt{van Halen, Eddie}
-\end{quote}
-Die zweite Form sollte für Autoren mit zwei oder mehr Nachnamen benutzt
-werden, um zwischen dem mittleren und dem Nachnamen zu unterscheiden.
-
-\item [\emph{editor}]Dieses Feld ist analog zum \emph{author}-Feld.
-\item [\emph{year}]Das Jahr der Publikation. Dieses Feld wird für die meisten
-Eintragstypen benötigt. \jabref{} akzeptiert in diesem Feld nur einen
-numerischen Wert.
-\item [\emph{bibtexkey}]Eine eindeutige Bezeichnung, um sich in \LaTeX{}-Dokumenten
-auf den Eintrag beziehen zu können. Beachten Sie, dass der Bib\TeX{}-Key
-genau mit dem Verweis im \LaTeX{}-Dokument übereinstimmen muss (auch
-die Groß"~\slash{}Kleinschreibung).
-\end{labeling}
-Für weitere Erläuterungen zu Bib\TeX{} wird verwiesen auf \cite{Markey2005,btxdoc,btxhak,Raichle2002}.
+Feldnamen, die mit einem Stern* versehen sind, werden nicht direkt von \jabref{} unterstützt, können aber eingebunden werden (siehe Abschnitt~\ref{CustomEntriesHelp} \nameref{CustomEntriesHelp}).
+
+\begin{itemize}
+ \item \emph{affiliation*}\\
+ Die Zugehörigkeit eines Autors.
+ \item \emph{abstract}\\
+ Die Zusammenfassung eines Werks.
+ \item \emph{contents*}\\
+ Ein Inhaltsverzeichnis.
+ \item \emph{copyright*}\\
+ Copyright-Informationen.
+ \item \emph{ISBN*}\\
+ Die Internationale Standardbuchnummer.
+ \item \emph{ISSN*}\\
+ Die Internationale Standardseriennummer (für Zeitschriften).
+ \item \emph{keywords}\\
+ Stichworte, können in \jabref{} gut zum Gruppieren verwendet werden.
+ \item \emph{language*}\\
+ Die Sprache des Werks.
+ \item \emph{location*}\\
+ Der Ort, der mit einem Werk in Verbindung steht, z.\,B. die Stadt, in der eine Konferenz stattgefunden hat.
+ \item \emph{LCCN*}\\
+ Die \emph{Library of Congress Call Number}. Manchmal heißt das Feld auch \texttt{lib-congress}.
+ \item \emph{mrnumber*}\\
+ Die \emph{Mathematical Reviews}-Nummer.
+ \item \emph{price*}\\
+ Der Preis.
+ \item \emph{size*}\\
+ Die physische Größe eines Dokuments.
+ \item \emph{url}\\
+ Der \emph{Uniform Resource Locator} (URL, "einheitlicher Quellenanzeiger"), der auf eine Webseite im Internet verweist.
+ \item \emph{urldate}\\
+ Das Datum, an dem eine Webseite zuletzt besucht wurde.
+\end{itemize}
-\clearpage
+\clearpage
\section{Installation}
\secttoc
\subsection{System-Voraussetzungen}
\jabref{} ist in Java programmiert und somit betriebssystemunabhängig,
-kann prinzipiell also unter Windows, Mac OS X, Linux und anderen UNIXen
+kann prinzipiell also unter Windows, Mac OS X, Linux und anderen UNIX-Systemen
betrieben werden. Voraussetzung ist allerdings, dass die \emph{Java
Virtual Machine} mindestens in der Version~1.4.2 installiert ist.
Sie ist kostenlos und kann unter \url{http://java.sun.com/} heruntergeladen
-werden. Im Normalfall sollte das \emph{Java Runtime Environment} ausreichen;
+werden. Im Normalfall sollte das \emph{Java Runtime Environment} (JRE) ausreichen;
nur wenn Sie \jabref{} kompilieren möchten, benötigen Sie das \emph{Java
-Development Kit}.
+Development Kit} (JDK).
\subsection{Windows}
abgelegt haben, eine Batch-Datei mit dem Namen \emph{jabref-start.bat}.
Diese Datei soll nur eine Zeile enthalten:
-\begin{lyxcode}
-start~javaw~-jar~JabRef.jar
-\end{lyxcode}
+\begin{lstlisting}
+start javaw -jar JabRef.jar
+\end{lstlisting}
Mit einem Doppelklick auf die Batch-Datei starten Sie \jabref{}.
(zum Kompilieren aus den \emph{sourcen}).
-\clearpage
+\clearpage
\section{Funktionen}
\secttoc
\bigskip
\noindent \label{JabRefHelp}\jabref{} ist ein Programm zur Verwaltung von
-Bib\TeX{}-Dateien. Es benutzt kein eigenes Dateiformat, d.\,h. dass
-Sie Ihre Dateien direkt im Bib\TeX{}-Format (Dateiendung \texttt{.bib})
+\bibtex{}-Dateien. Es benutzt kein eigenes Dateiformat, d.\,h. dass
+Sie Ihre Dateien direkt im \bibtex{}-Format (Dateiendung \texttt{.bib})
laden und speichern. Sie können aber auch bibliographische Datenbanken
in anderen Formaten in \jabref{} importieren.
\jabref{} unterstützt Sortier- und Suchfunktionen, um einen Überblick
über den Inhalt Ihrer Datei zu bekommen. Sie können der Datei ganz
einfach neue Einträge hinzufügen, ohne sich daran erinnern zu müssen,
-welche Informationen benötigt werden. Außerdem kann \jabref{} Bib\TeX{}-Keys
-automatisch generieren. \jabref{} ist sehr nützlich, wenn Sie Bib\TeX{}
+welche Informationen benötigt werden. Außerdem kann \jabref{} \bibtex{}-Keys
+automatisch generieren. \jabref{} ist sehr nützlich, wenn Sie \bibtex{}
oder CiteMaker benutzen, kann aber auch für diejenigen sinnvoll sein,
die andere Bibliographie-Systeme benutzen oder schlicht und einfach
ihre Literaturquellen organisieren wollen.
arbeiten, befindet sich unter der Menüleiste und der Werkzeugleiste
die Tableiste mit Tabs (Reitern) für jede Ihrer geöffneten Dateien.
Wenn Sie einen dieser Tabs anklicken, erscheint eine Tabelle, die
-alle Datensätze und einige der Datenfelder auf\textcompwordmark{}listet.
-
-Die Felder können direkt in der Tabelle bearbeitet werden, indem Sie
-einfach auf eine Zelle klicken und den Inhalt eingeben (nur möglich,
-wenn \menu{Bearbeiten in der Tabelle zulassen} im Dialog \menu{Optionen}
-\msep{} \menu{Einstellungen} \msep{} \menu{Allgemein} ausgewählt
-ist). Ein Doppelklick auf eine Zelle öffnet einen leistungsfähigeren
-Editor. Sie können mit den Pfeiltasten in der Tabelle navigieren.
-
-Die Sortierung der Tabelle erfolgt nach einem Feld Ihrer Wahl. Klicken
-Sie einfach auf die Kopfzeile einer Spalte, um die Einträge nach dem
-Feld dieser Spalte zu sortieren. Klicken Sie erneut auf den Spaltenkopf,
-um die Sortierrichtung umzukehren. Einträge mit gleichem Inhalt im
-ausgewählten Feld werden nach dem zweiten (und eventuell dem dritten)
-Kriterium sortiert. Diese Sortierkriterien können im \menu{Einstellungs}-Dialog
-festgelegt werden.
+alle Datensätze und einige der Datenfelder auf"|listet.
+
+Mit einem Doppelklick auf eine Tabellenzeile können Sie den Inhalt bearbeiten (der \nameref{EntryEditorHelp} wird geöffnet). Sie können mit den Pfeiltasten innerhalb der Tabelle navigieren. Wenn Sie einen Buchstaben drücken, springen Sie zu dem ersten Eintrag, der mit diesem Buchstaben beginnt (abhängig von der Spalte, nach der Sie die Tabelle sortiert haben).
+
+Die Sortierung der Tabelle erfolgt nach einem Feld Ihrer Wahl. Sie können das Standardverhalten unter \menu{Optionen \msep{} Einstellungen \msep{} Tabellenansicht} angeben. Um die Sortierreihenfolge schnell zu ändern, klicken Sie einfach auf die Kopfzeile einer Spalte; damit haben Sie das primäre Sortierkriterium definiert. Klicken Sie erneut auf den Spaltenkopf, um die Sortierrichtung umzukehren. Ein weiterer Klick sorgt dafür, dass die Spalte nicht mehr zur Sortierung herangezogen wird. Halten Sie die CTRL-Taste beim Klicken auf einen Spaltenknopf gedrückt, um eine zweite Spalte als sekundäres Sortierkriterium festzulegen. Sie können beliebig viele Spalten zur Sortierung heranziehen.
Welche Felder (Spalten) in der Tabelle angezeigt werden sollen, können
Sie im \menu{Einstellungs}-Dialog auswählen. Auch die Breite der
vollständig sind, indem sie die Zellen wie folgt darstellt:
\begin{itemize}
-\item Eine \textcolor{red}{rote} Zelle in der linken Spalte kennzeichnet
+\item Eine \colorbox{red}{\textcolor{white}{rote}} Zelle in der linken Spalte kennzeichnet
einen unvollständigen Eintrag.
-\item Eine \textcolor{yellow}{gelbe} Zelle in der linken Spalte kennzeichnet
+\item Eine \colorbox{yellow}{gelbe} Zelle in der linken Spalte kennzeichnet
einen Eintrag, der nicht alle benötigten Felder selbst enthält, der
aber einen Querverweis enthält.
-\item Eine \textcolor{blue}{blaue} Zelle kennzeichnet ein benötigtes Feld.
-\item Eine \textcolor{green}{grüne} Zelle kennzeichnet ein optionales Feld.
-\item Eine farblose (weiße) Zelle kennzeichnet ein Feld, das von Bib\TeX{}
+\item Eine \colorbox{blue}{\textcolor{white}{blaue}} Zelle kennzeichnet ein benötigtes Feld.
+\item Eine \colorbox{green}{grüne} Zelle kennzeichnet ein optionales Feld.
+\item Eine farblose (weiße) Zelle kennzeichnet ein Feld, das von \bibtex{}
für diesen Eintragstyp nicht benutzt wird. Das Feld kann selbstverständlich
in \jabref{} bearbeitet werden.
\end{itemize}
\subsubsection{Einen Eintrag bearbeiten}
-Um den Eintrags-Editor (siehe \ref{EntryEditorHelp}) zur Bearbeitung
+Um den \nameref{EntryEditorHelp} zur Bearbeitung
eines existierenden Eintrags zu öffnen, klicken Sie einfach doppelt
auf die linke Spalte der entsprechenden Zeile oder markieren den Eintrag
und drücken auf ENTER. Falls \menu{Bearbeiten in der Tabelle zulassen}
zugehörigen Zeile den Eintrags-Editor.
-\subsubsection{Einen Bib\TeX{}-String in einem Feld verwenden}
+\subsubsection{Einen \bibtex{}-String in einem Feld verwenden}
In \jabref{} schreiben Sie den Inhalt aller Felder so, wie Sie es
in einem Texteditor machen würden, mit einer Ausnahme: um einen String
(eine Art Abkürzung) zu verwenden, umschließen Sie den Namen des Strings
mit je einem \#, z.\,B.
-\begin{lyxcode}
-\#jan\#~1997
-\end{lyxcode}
+\begin{lstlisting}
+\#jan\# 1997
+\end{lstlisting}
was interpretiert wird als String mit dem Namen \texttt{jan} gefolgt
-von \texttt{1997}. Vergleichen Sie dazu auch die Hinweise zum String-Editor
-(\ref{StringEditorHelp}).
+von \texttt{1997}. Vergleichen Sie dazu auch die Hinweise zum \nameref{StringEditorHelp}.
\subsection{Eintrags-Editor}
\end{quote}
Im Eintrags-Editor können Sie alle relevanten Informationen eines
Eintrags festlegen. Der Editor überprüft den Eintragstyp und zeigt
-alle benötigten und optionalen Felder für den Gebrauch mit Bib\TeX{}
+alle benötigten und optionalen Felder für den Gebrauch mit \bibtex{}
an. Darüber hinaus gibt es einige Felder, die \emph{Allgemeine Felder}
genannt werden und für alle Eintragstypen gelten.
Der Eintrags-Editor besteht in der Standardeinstellung aus fünf Panels:
\emph{Benötigte Felder}, \emph{Optionale Felder}, \emph{General},
-\emph{Abstract} und \emph{Bib\TeX{}} \emph{Quelltext}, wobei \emph{General}
+\emph{Abstract} und \emph{\bibtex{}} \emph{Quelltext}, wobei \emph{General}
und \emph{Abstract} vom Benutzer angepasst werden können (siehe dazu
Abschnitt~\ref{GeneralFields}). In den ersten drei Panels können
Sie mit TAB und SHIFT-TAB zwischen den einzelnen Feldern hin- und
indem Sie >>STRG-SHIFT-$\downarrow$<< bzw. >>STRG-SHIFT-$\uparrow$<<
oder die Pfeil-Buttons in der linken Toolbar drücken.
-Das Panel \emph{Bib\TeX{} Quelltext} zeigt, wie der Eintrag aussehen
+Das Panel \emph{\bibtex{} Quelltext} zeigt, wie der Eintrag aussehen
wird, wenn die Datei im \texttt{bib}-Format gespeichert wird. Wenn
-Sie wollen, können Sie den Bib\TeX{} Quelltext direkt bearbeiten.
+Sie wollen, können Sie den \bibtex{} Quelltext direkt bearbeiten.
Sobald Sie zu einem anderen Panel wechseln, STRG-S drücken oder den
Eintrags-Editor schließen, wird \jabref{} versuchen, den Inhalt des
Quelltext-Panels zu analysieren. Falls dabei Probleme auftreten, werden
\subsubsection{Überprüfung der Feldkonsistenz}
Wenn der Inhalt eines Feldes geändert wird, überprüft \jabref{},
-ob der neue Inhalt akzeptiert werden kann. Bei Feldern, die von Bib\TeX{}
+ob der neue Inhalt akzeptiert werden kann. Bei Feldern, die von \bibtex{}
genutzt werden, wird der Inhalt zum einen auf die richtige Klammerung
mit geschweiften Klammern, aber auch auf die Benutzung des Zeichens
\texttt{\#} hin überprüft. Das >>hash<<-Symbol (im Deutschen oft
>>Doppelkreuz<< oder >>Raute<< genannt) darf \emph{nur} paarweise
-benutzt werden, um damit den Namen eines Bib\TeX{}-Strings einzuschließen.
+benutzt werden, um damit den Namen eines \bibtex{}-Strings einzuschließen.
Beachten Sie, dass \jabref{} nicht überprüft, ob der angeführte String
-tatsächlich vorhanden ist (der Bib\TeX{}-Stil, den Sie benutzen, kann
+tatsächlich vorhanden ist (der \bibtex{}-Stil, den Sie benutzen, kann
eine beliebige Anzahl von Strings definieren, die \jabref{} nicht
kennt).
und versucht Fehler aufzudecken. Mit dem \menu{Überprüfen}-Button
kann der Vorgang gestartet werden. Es wird eine Liste mit Hinweisen
(Info-Icon) und möglichen Fehlern (Ausrufezeichen-Icon) sowie dem
-entsprechenden Bib\TeX{}-Key erstellt. Wenn Sie einen Hinweis auswählen,
+entsprechenden \bibtex{}-Key erstellt. Wenn Sie einen Hinweis auswählen,
erscheint der Inhalt des Feldes, das beanstandet wird. Sie können
nun den Feldinhalt verändern und die Veränderungen mit Klick auf die
Schaltfläche \menu{Übernehmen} speichern.
-\subsection{Bib\TeX{}-Keys}
+\subsection{\bibtex{}-Keys}
Damit man sich in einem \LaTeX{}-Dokument auf einen Literaturverweis
-beziehen kann, braucht man einen eindeutigen Bib\TeX{}-Key. Eindeutig
+beziehen kann, braucht man einen eindeutigen \bibtex{}-Key. Eindeutig
heißt, dass er nur einmal vergeben sein darf. Es wird nach Groß"~
und Kleinschreibung unterschieden, \texttt{Yared1998} ist also nicht
identisch mit \texttt{yared1998}. \jabref{} bietet einige Möglichkeiten,
-um auch bei größeren Datenbanken den Überblick über die Bib\TeX{}-Keys
+um auch bei größeren Datenbanken den Überblick über die \bibtex{}-Keys
nicht zu verlieren.
-\tip{Falls Sie in einem \LaTeX{}-Dokument mehrere Bib\TeX{}-Dateien
+\tip{Falls Sie in einem \LaTeX{}-Dokument mehrere \bibtex{}-Dateien
einbinden, müssen Sie selbst darauf achten, dass in den unterschiedlichen
-Dateien nicht mehrmals derselbe Bib\TeX{}-Key vergeben ist. Nutzen
+Dateien nicht mehrmals derselbe \bibtex{}-Key vergeben ist. Nutzen
Sie deshalb am besten die Funktion \menu{Extras} \msep{} \menu{Neue Teildatei aus AUX-Datei}.}
-
-Der einfachste Weg, einen eindeutigen Bib\TeX{}-Key zu bekommen, ist
+Der einfachste Weg, einen eindeutigen \bibtex{}-Key zu bekommen, ist
das automatische Erzeugen, das Sie mit der Tastenkombination STRG-G
oder mit dem Zauberstab-Button im Eintrags-Editor veranlassen können.
Falls Sie sich nicht im Eintrags-Editor befinden, werden mit Hilfe
von STRG-G oder dem Zauberstab-Button aus der Menüleiste für alle
-Einträge der Datei Bib\TeX{}-Keys erzeugt. Falls dabei Keys überschrieben
+Einträge der Datei \bibtex{}-Keys erzeugt. Falls dabei Keys überschrieben
werden, gibt \jabref{} eine Warnmeldung aus.
-Wie die Bib\TeX{}-Keys aussehen, die \jabref{} automatisch generiert,
-und wie Sie dieses Aussehen verändern können, erfahren Sie unter Abschnitt~\ref{LabelPatterns}.
+Wie die \bibtex{}-Keys aussehen, die \jabref{} automatisch generiert,
+und wie Sie dieses Aussehen verändern können, erfahren Sie unter Abschnitt~\ref{LabelPatterns} \nameref{LabelPatterns}.
\subsection{Suchfunktionen}
+\label{SearchHelp}
\begin{quote}
-\label{SearchHelp}\emph{STRG-F öffnet oder aktiviert den Suchdialog.
+\emph{STRG-F öffnet oder aktiviert den Suchdialog.
Drückt man mehrmals auf STRG-F, so werden die verschiedenen Suchmodi
ausgewählt. Mit STRG-SHIFT-F öffnet oder aktiviert man den Suchdialog
und wählt gleichzeitig die direkte Suche aus. Bei der direkten Suche
springt man mit STRG-F oder STRG-SHIFT-F zum nächsten Treffer.}
\end{quote}
-Es gibt drei verschiedene Suchmethoden in \jabref{}: die direkte
-Suche, die Markier-Suche und die Sortier-Suche.
-
\subsubsection{Direkte Suche}
Sie ESC oder klicken Sie auf \menu{Zurücksetzen}.
-\subsubsection{Markier-Suche}
-
-Wenn Sie die Suchmethode \emph{Markieren} wählen, sucht das Programm
-in Ihrer Datei nach allen Vorkommen ihres Suchbegriffs, sobald Sie
-auf ENTER drücken. Die Treffer werden indirekt markiert, d.\,h. alle
-Nicht-Treffer werden grau hinterlegt. Haben Sie zusätzlich die Option
-\menu{Treffer auswählen} aktiviert (im \menu{Einstellungen}-Menü
-des Suchdialogs), dann werden die Treffer ausgewählt.
+\subsubsection{Normale Suche}
+Hierbei sucht das Programm nach allen Vorkommen der Wörter ihres Suchausdrucks, sobald Sie ENTER drücken. Nur Einträge, die alle Wörter enthalten, gelten als Treffer. Um nach festen Ausdrücken zu suchen, müssen Sie die Wörter in doppelte Anführungszeichen einfassen. Zum Beispiel findet die Suchanfrage \texttt{progress \textquotedbl marine acquaculture\textquotedbl} Einträge, die sowohl das wort ">progress"< als auch den Ausdruck ">marine acquaculture"< aufweisen. Alle Einträge, die keine Treffer sind, werden entweder ausgeblendet, so dass nur die Treffer sichtbar sind (Option \menu{Filter}), oder sie werden grau dargestellt, während die Treffer oben angezeigt werden (Option \menu{Oben einsortieren}). Um die Trefferanzeige zu beenden, drücken Sie ESC oder klicken auf die Schaltfläche \menu{Zurücksetzen} im Suchen-Dialog.
-\subsubsection{Sortier-Suche}
+\subsubsection{Suchoptionen}
-Die Suche mit der Methode \emph{Oben einsortieren} ist ähnlich wie
-die Suche mit Markierung, nur dass die Treffer automatisch an den
-Anfang der Tabelle sortiert werden. Einträge, die nicht mit dem Suchbegriff
-übereinstimmen, werden unter den Treffern aufgelistet und zusätzlich
-grau hinterlegt. Um die Anzeige der Suchergebnisse abzuschalten, drücken
-Sie ESC oder klicken auf \emph{Zurücksetzen}.
+Der \menu{Einstellungen}-Button im Suchdialog öffnet ein Menü, in
+dem man mehrere Optionen (de)aktivieren kann: das Beachten von Groß-
+und Kleinschreibung, das Nutzen regulärer Ausdrücke sowie das Auswählen
+der Suchergebnisse.
\tip{Suchen Sie mit der Option \menu{Treffer auswählen} und drücken
-anschließend STRG-M, so haben Sie alle Treffer markiert (vgl. Abschnitt~\ref{MarkingHelp}:
-Markieren von Einträgen) und können z.\,B. eine weitere Suche durchführen,
+anschließend STRG-M, so haben Sie alle Treffer markiert (vgl. Abschnitt ">\nameref{MarkingHelp}"<) und können z.\,B. eine weitere Suche durchführen,
ohne die bisherigen Ergebnisse zu >>verlieren<<.}
-
\subsubsection{Feldbezeichner und logische Operatoren}
\label{SearchHelp_advanced}Um nur einige bestimmte Felder zu durchsuchen
eine spezielle Syntax zur Verfügung gestellt. Um beispielsweise nach
Einträgen mit dem Autor >>Miller<< zu suchen, geben Sie
-\begin{lyxcode}
-author~=~miller
-\end{lyxcode}
+\begin{lstlisting}
+author = miller
+\end{lstlisting}
in das Suchfeld ein. \emph{(Achtung! Das funktioniert nicht bei der
direkten Suche!)} Falls der Suchbegriff Leerzeichen enthält, schließen
Sie ihn in Anführungszeichen ein. Benutzen Sie \emph{nie} Leerzeichen
voneinander getrennt. Um beispielsweise nach Einträgen über Karl den
Großen zu suchen, geben Sie folgendes ein:
-\begin{lyxcode}
-title|keywords~=~\char`\"{}Karl~der~Große\char`\"{}
-\end{lyxcode}
+\begin{lstlisting}
+title|keywords = "Karl der Große"
+\end{lstlisting}
Sie können die logischen Operatoren AND, OR und NOT sowie Klammern
verwenden:
-\begin{lyxcode}
-(author~=~miller~OR~title|keywords~=~\char`\"{}Karl~der~Große\char`\"{})~
-
-AND~NOT~author~=~brown
-\end{lyxcode}
+\begin{lstlisting}
+(author = miller OR title|keywords = "Karl der Große") AND NOT author = brown
+\end{lstlisting}
\ldots{} sucht beispielsweise nach Einträgen, in denen entweder der
Autor >>Miller<< heißt oder im \emph{title}- oder \emph{keywords}-Feld
der Begriff >>Karl der Große<< steht; gleichzeitig werden die Einträge
enthalten ist. Um nach Einträgen eines bestimmten Typs zu suchen,
gibt es ein Pseudofeld namens \emph{entrytype}:
-\begin{lyxcode}
-entrytype~=~thesis
-\end{lyxcode}
+\begin{lstlisting}
+entrytype = thesis
+\end{lstlisting}
\ldots{} findet Einträge, deren Typ (wie in der Spalte \emph{Entrytype}
dargestellt) das Wort >>thesis<< enthält (z.\,B. >>phdthesis<<
und >>mastersthesis<<). Ebenso erlaubt das Pseudofeld \emph{bibtexkey}
-die Suche nach Bib\TeX{}-Keys, z.\,B.:
-
-\begin{lyxcode}
-bibtexkey~=~miller2005
-\end{lyxcode}
-
-\subsubsection{Suchoptionen}
-
-Der \menu{Einstellungen}-Button im Suchdialog öffnet ein Menü, in
-dem man mehrere Optionen (de)aktivieren kann: das Beachten von Groß-
-und Kleinschreibung, das Nutzen regulärer Ausdrücke sowie das Auswählen
-der Suchergebnisse.
+die Suche nach \bibtex{}-Keys, z.\,B.:
+\begin{lstlisting}
+bibtexkey = miller2005
+\end{lstlisting}
\subsection{Gruppen}
-Mit Gruppen können Sie Ihre Bib\TeX{}-Datei in einer Baumstruktur
+Mit Gruppen können Sie Ihre \bibtex{}-Datei in einer Baumstruktur
anordnen, vergleichbar mit einer Dateistruktur in Ordnern und Unterordnern.
Die beiden Hauptunterschiede sind:
\subsubsection{Die Gruppenansicht}
-
-Die Gruppenansicht wird im linken Bereich des Bildschirms angezeigt.
+\begin{quote}
+\emph{Die Gruppenansicht wird im linken Bereich des Bildschirms angezeigt.
Sie kann mit der Tastenkombination STRG-SHIFT-G oder dem Gruppen-Button
in der Toolbar ein- und ausgeblendet werden. Die Gruppenansicht verfügt
über mehrere Schaltflächen, aber die meisten Funktionen werden über
das Kontextmenü angesteuert (also mit der rechten Maustaste). Drag\,\&\,Drop
-wird ebenfalls unterstützt.
+wird ebenfalls unterstützt.}
+\end{quote}
-\subsection{Einige kurze Beispiele}
+\subsubsection{Einige kurze Beispiele}
Sie möchten vielleicht~\ldots{}
\subsubsection{Arten von Gruppen}
-In \jabref{}~1.8 gibt es vier verschiedene Arten von Gruppen:
+In \jabrefversion{} gibt es vier verschiedene Arten von Gruppen:
\begin{enumerate}
\item Die Gruppe \emph{Alle Einträge}, die~-- wie der Name vermuten lässt~--
\item \emph{Statische Gruppen} verhalten sich wie Ordner auf einer Festplatte
und beinhalten nur die Einträge, die Sie ihnen explizit zuweisen.
\item \emph{Dynamische Gruppen basierend auf einem Stichwort} beinhalten
-Einträge, die in einem bestimmten Bib\TeX{}-Feld (z.\,B. \emph{keywords})
+Einträge, die in einem bestimmten \bibtex{}-Feld (z.\,B. \emph{keywords})
ein bestimmtes Stichwort (z.\,B. \emph{elektrisch}) aufweisen. Diese
Methode benötigt kein manuelles Zuweisen der Einträge, sondern nutzt
die bereits in der Datei vorhandenen Informationen. Wenn alle Einträge
wird dieselbe Syntax verwendet wie beim Suchen (siehe Abschnitt~\ref{SearchHelp}).
Diese Syntax (die auf S.\,\pageref{SearchHelp_advanced} genauer
beschrieben wird) unterstützt logische Operatoren (AND, OR, NOT) und
-erlaubt es, in einem oder mehreren Bib\TeX{}-Feldern zu suchen. Dadurch
+erlaubt es, in einem oder mehreren \bibtex{}-Feldern zu suchen. Dadurch
ist eine flexiblere Definition von Gruppen möglich als mit einer Stichwortsuche
(z.\,B. \texttt{author=smith AND title=elektrisch}).
\end{enumerate}
können keine weiteren Optionen angegeben werden.
Diese Methode des Gruppierens setzt voraus, dass alle Einträge einen
-eindeutigen Bib\TeX{}-Key haben. Im Falle von fehlenden oder doppelten
-Bib\TeX{}-Keys kann das Zuweisen der betreffenden Einträge in künftigen
+eindeutigen \bibtex{}-Key haben. Im Falle von fehlenden oder doppelten
+\bibtex{}-Keys kann das Zuweisen der betreffenden Einträge in künftigen
Sitzungen nicht korrekt wiederhergestellt werden.
\item Ein Feld nach einem Stichwort durchsuchen
-Diese Methode gruppiert Einträge, bei denen ein bestimmtes Bib\TeX{}-Feld
+Diese Methode gruppiert Einträge, bei denen ein bestimmtes \bibtex{}-Feld
(z.\,B. \emph{keywords}) einen bestimmten Suchausdruck (z.\,B. \emph{elektrisch})
enthält. Damit dies funktioniert, muss das Feld, nach dem sortiert
wird, natürlich in jedem Eintrag vorhanden und sein Inhalt fehlerfrei
im Gruppenbaum. Ist eine Gruppe ausgewählt, wird nur der Inhalt dieser
Gruppe angezeigt. Es ist jedoch~-- besonders beim Verwenden dynamischer
Gruppen~-- oft nützlich, eine Untergruppe zu erstellen, die \emph{ihre
-Obergruppe verfeinert}.%
-\footnote{In \jabref{}~1.8.1 sind die entsprechenden Optionen noch nicht ins
-Deutsche übersetzt. Gemeint sind hier \emph{refining (sub-)groups}.%
-} Wenn diese Untergruppe ausgewählt wird, werden alle Einträge dieser
+Obergruppe verfeinert}. Wenn diese Untergruppe ausgewählt wird, werden alle Einträge dieser
Gruppe und ihrer Obergruppe angezeigt. Erstellen Sie z.\,B. eine
Obergrupe, die Einträge mit dem Stichwort \emph{Verteilung} enthält,
-sowie eine verfeinernde Untergruppe mit Einträgen, die das Stichwort
+sowie eine einbeziehende Untergruppe mit Einträgen, die das Stichwort
\emph{Gauß} enthalten. Wenn Sie nun die Untergruppe auswählen, werden
alle Einträge angezeigt, die beiden Bedingungen entsprechen, also
alle, die mit Gauß'scher Verteilung zu tun haben. Indem Sie nun eine
weitere Untergruppe für \emph{Laplace} anlegen, die dieselbe Obergruppe
verfeinert, können Sie die Gruppierung einfach erweitern. Im Gruppenbaum
-haben solche Gruppen, die ihre Obergruppen verfeinern, ein spezielles
+haben solche Gruppen, die ihre Obergruppen einbeziehen, ein spezielles
Icon. (Dieses Verhalten kann in den Einstellungen abgestellt werden.)
-Das logische Gegenstück zu einer solchen verfeinernden Untergruppe
+Das logische Gegenstück zu einer solchen einbeziehenden Untergruppe
ist eine Gruppe, die \emph{ihre Untergruppen berücksichtigt}.%
\footnote{Im Englischen \emph{including (super-)groups}.%
} Wird sie ausgewählt, werden nicht nur die Einträge dieser Gruppe,
ist ein händisches Aktualisieren nötig.
-\paragraph{Verfeinernde Untergruppen und einbeziehende Obergruppen mischen%\protect%
-%\footnote{In \jabref{}~1.8.1 sind die entsprechenden Optionen noch nicht ins
-%Deutsche übersetzt. Gemeint sind hier \emph{refining (sub-)groups}
-%und \emph{including (super-)groups}.%
-%}
-}
+\paragraph{Einbeziehende Unter- und Obergruppen mischen}
-Wenn eine verfeinernde Gruppe die Untergruppe von einer Gruppe ist,
+Wenn eine einbeziehende Gruppe die Untergruppe von einer Gruppe ist,
die ihre Untergruppen berücksichtigt~-- also sozusagen die Geschwister
-der verfeinernden Gruppe~--, dann werden diese Geschwister ignoriert,
-sobald die verfeinernde Gruppe ausgewählt wird.
+der einbeziehenden Gruppe~--, dann werden diese Geschwister ignoriert,
+sobald die einbeziehende Gruppe ausgewählt wird.
\subsection{Markieren von Einträgen}
\subsection{String-Editor}
-
\label{StringEditorHelp}
\begin{quote}
\emph{Zugriff über das Menü \menu{BibTeX}} \msep{} \emph{\menu{Strings bearbeiten}
oder durch Klick auf die Schaltfläche \menu{Strings bearbeiten}.}
\end{quote}
-\emph{Strings} sind das Bib\TeX{}-Äquivalent zu Konstanten in einer
+\emph{Strings} sind das \bibtex{}-Äquivalent zu Konstanten in einer
Programmiersprache. Jeder String wird durch einen eindeutigen \emph{Namen}
und einen \emph{Inhalt} festgelegt. Der Name kann an anderer Stelle
in der Datei benutzt werden, um den Inhalt wiederzugeben.
Der Verweis auf einen String kann an jeder Stelle in einem beliebigen
Feld erscheinen, wobei der Name des Strings immer von einem Paar \texttt{\#}-Zeichen
eingeschlossen werden muss. Diese Syntax gilt nur für \jabref{} und
-weicht ein wenig von der Bib\TeX{}-Syntax ab, die erzeugt wird, wenn
+weicht ein wenig von der \bibtex{}-Syntax ab, die erzeugt wird, wenn
Sie Ihre Datei speichern.
In derselben Weise kann man auch im Inhalt eines Strings auf einen
anderen String verweisen, vorausgesetzt, dass der String, auf den
verwiesen wird, bereits \emph{vorher} definiert ist.
-Während die Reihenfolge der Strings in Ihrer Bib\TeX{}-Datei in einigen
+Während die Reihenfolge der Strings in Ihrer \bibtex{}-Datei in einigen
Fällen wichtig ist, brauchen Sie sich bei der Benutzung von \jabref{}
darüber keine Gedanken zu machen. Die Strings werden in alphabetischer
Reihenfolge im String-Editor aufgelistet und in derselben Reihenfolge
-gespeichert, außer wenn eine andere Reihenfolge von Bib\TeX{} verlangt
+gespeichert, außer wenn eine andere Reihenfolge von \bibtex{} verlangt
wird.
+\subsection{Abkürzung von Zeitschriftentiteln}
+\label{JournalAbbreviations}
+\begin{quote}
+\emph{Diese Funktion kann unter \menu{Optionen \msep{} Abkürzungen der Zeitschriften verwalten} eingestellt werden.}
+\end{quote}
+\jabref{} kann automatisch zwischen Zeitschriftentiteln in abgekürzter und ausführlicher Form hin- und herschalten, sofern die Titel in einer Ihrer Zeitschriftenlisten enthalten ist. Sie können mehrere dieser Listen benutzen, die Sie als externe Textdateien anlegen.
+
+\subsubsection{Benutzungshinweise}
+
+Die Abkürzung von Zeitschriftentiteln können Sie vom Eintragseditor oder vom Menü \menu{Extras} aus ein- und ausschalten. Im Eintragseditor benutzen Sie dazu den Button \menu{Abkürzung an-/abschalten} neben dem \emph{Journal}-Feld. Es wird zwischen drei Modi hin- und hergeschaltet:
+\begin{itemize}
+ \item Kompletter Name, z.\,B. ">Aquacultural Engineering"<
+ \item \caps{ISO}-Abkürzung, z.\,B. ">Aquacult. Eng."<
+ \item \caps{MEDLINE}-Abkürzung, z.\,B. ">Aquacult Eng"<
+\end{itemize}
+Falls der Zeitschriftenname sich nicht in Ihren Zeitschriftenlisten findet, wird das Feld nicht verändert.
+
+Um die Zeitschriftennamen mehrerer Einträge auf einmal zu konvertieren, können Sie eine beliebige Anzahl von Einträgen auswählen und im Menü \menu{Extras} einen der Einträge \menu{Zeitschriftennamen abkürzen (ISO)}, \menu{Zeitschriftennamen abkürzen (MEDLINE)} und \menu{Abkürzung der Zeitschriften aufheben} wählen.
+Diese drei Aktionen sorgen dafür, dass bei allen ausgewählten Einträgen die Zeitschriftennamen, die in den Zeitschriftenlisten gefunden werden konnten, abgekürzt oder komplett ausgeschrieben werden.
+
+\subsubsection{Zeitschriftenlisten verwalten}
+
+Sie können mehrere Zeitschriftenlisten als externe Textdateien benutzen, die mit \jabref{} verlinkt sind. Die primäre Liste kann in \jabref{} selbst verwaltet werden.
+
+\paragraph{Ihre persönliche Zeitschriften-Abkürzungsliste}
+
+Ihre persönliche Liste verwalten Sie im oberen Teil des \menu{Abkürzung der Zeitschriftennamen}-Dialogs.
+Wählen Sie \menu{Neue Datei} und geben einen Dateinamen ein oder klicken auf den \menu{Durchsuchen}-Button. Wenn Sie bereits eine Datei haben, die Sie als Grundlage nehmen wollen, wählen Sie stattdessen \menu{Bestehende Datei} und benutzen den \menu{Durchsuchen}-Button zum Auswählen dieser Datei. Die Tabelle zeigt dann den Inhalt der Liste, die Sie ausgewählt haben.
+
+Sie können mit Hilfe der \menu{+} und \menu{--} Buttons an der rechten Seite Einträge hinzufügen oder entfernen. Für jeden Eintrag müssen Sie den vollständigen Zeitschriftennamen und die ISO-Abkürzung angeben (z.\,B. ">Aquacultural Engineering"< und ">Aquacult. Eng."<). Mit einem Doppelklick auf die Tabellenzeile können Sie die Einträge bearbeiten.
+
+Sobald Sie auf \menu{OK} klicken (oder wenn Sie eine bestehende Datei ausgewält haben), enthält die Tabelle mindestens eine Zeile. Der Tabelleninhalt wird in die ausgewählte Datei geschrieben und die Zeitschriftenliste von \jabref{} wird aktualisiert.
+
+\paragraph{Externe Zeitschriftenlisten}
+
+Zusätzlich zu Ihrer persönlichen Liste können Sie mehrere externe Listen verlinken. Diese Verknüpfungen werden im unteren Teil des \menu{Abkürzung der Zeitschriftennamen}-Dialogs verwaltet. Externe Listen sind den persönlichen Listen ähnlich~-- der einzige Unterschied ist, dass Sie nicht mit \jabref{} selbst verwaltet werden können.
+
+Um eine externe Liste hinzuzufügen, klicken Sie zunächst auf den \menu{+} Knopf, falls nötig (das fügt eine weitere Zeile hinzu). Dann benutzen Sie entweder den \menu{Durchsuchen}- oder den \menu{Herunterladen}-Button.
+ \begin{itemize}
+ \item Mit dem \menu{Durchsuchen}-Knopf können Sie eine auf Ihrem Computer bestehende Datei auswählen.
+ \item Mit dem \menu{Herunterladen}-Knopf können Sie eine Liste aus dem Internet herunterladen, indem Sie eine \caps{URL} angeben. Die Datei wird auf Ihrem Computer gespeichert und mit \jabref{} verlinkt.
+ Die \caps{URL} ist standardmäßig die Adresse einer Zeitschriftenliste auf der \jabref{}-Homepage. Diese Liste ist unvollständig, wird in Zukunft aber ausgebaut.
+ \end{itemize}
+Jeder Eintrag in Ihrer persönlichen Liste überschreibt einen Eintrag mit demselben vollständigen Zeitschriftennamen in einer Ihrer externen Listen. In ähnlicher Weise werden die externen Listen in der Reihenfolge, wie sie aufgelistet werden, abgearbeitet.
\subsection{Wortauswahl verwalten}
\menu{Wortauswahl verwalten} hinzufügen.
Die Wortauswahl gilt nur für die jeweilige Datei und wird daher zusammen
-mit den Literaturangaben in der Bib\TeX{}-Datei gespeichert. Jedes
+mit den Literaturangaben in der \bibtex{}-Datei gespeichert. Jedes
Feld mit Wortauswahl erhält im Eintrags-Editor einen gesonderten Bereich
mit einer Auswahlliste und der Schaltfläche \menu{Verwalten}. Wenn
Sie die Auswahlliste mit der Maus anklicken, erscheint eine Liste
Im Kontrollfenster können Sie Einträge entfernen, die nicht übernommen
werden sollen, und einige einfache Arbeiten durchführen wie etwa das
-Generieren von Bib\TeX{}-Keys für die Einträge oder das Zuordnen von
+Generieren von \bibtex{}-Keys für die Einträge oder das Zuordnen von
Einträgen zu Gruppen. Wenn Sie in eine bestehende Datei importieren,
ist es oftmals leichter, diese Arbeiten durchzuführen, bevor die neuen
Einträge zwischen die bereits bestehenden sortiert wurden.
den Importvorgang zu starten.
\end{enumerate}
-Der EndNote Exportfilter ordnet Bib\TeX{}-Eintragstypen folgenden
+Der EndNote Exportfilter ordnet \bibtex{}-Eintragstypen folgenden
EndNote-Re\-fe\-renz\-ty\-pen zu:
\medskip{}
\begin{center}\begin{tabular}{ll}
-\textbf{Bib\TeX{}-Eintragstyp}&
+\textbf{\bibtex{}-Eintragstyp}&
\textbf{Endnote-Referenztyp}\tabularnewline
misc, other&
Generic\tabularnewline
\subsubsection{Erweiterte Benutzung: EndNote Extras}
-\label{EndNote_erweitert}Einige Felder, die von Bib\TeX{} genutzt
+\label{EndNote_erweitert}Einige Felder, die von \bibtex{} genutzt
werden, gehören nicht zu EndNotes vorgegebenen Referenztypen. Während
der Import in \jabref{} und der Export nach \jabref{} ohne ein Ändern
der Referenztypen funktioniert, werden die Feldnamen in EndNote nicht
\subsubsection[EndNote -> JabRef]{EndNote $\to$~\jabref{}}
-EndNote hat einen Export-Stil Bib\TeX{}, der allerdings nicht alle
-Eintragstypen und Felder von Bib\TeX{} und auch nicht die zusätzlich
+EndNote hat einen Export-Stil \bibtex{}, der allerdings nicht alle
+Eintragstypen und Felder von \bibtex{} und auch nicht die zusätzlich
von \jabref{} genutzten Allgemeinen Felder (\emph{pdf}, \emph{owner},
\emph{key} usw.) unterstützt. Falls Sie diese Felder nutzen wollen,
extrahieren Sie die EndNote Extras (\menu{Datei} \msep{} \menu{Exportieren}
\item Exportieren Sie Ihre Datei in das \texttt{.sxc}-Format.
\item Starten Sie OpenOffice.org.
\item Wählen Sie \menu{Extras} \msep{} \menu{Datenquellen}.
-\item Wählen Sie die \emph{Bibliography}-Datei und ändern ihren Namen z.B. in \emph{Bibliographie-alt}.
+\item Wählen Sie die \emph{Bibliography}-Datei und ändern ihren Namen z.\,B. in \emph{Bibliographie-alt}.
\item Drücken Sie \menu{Anwenden}.
\item Klicken Sie \menu{Neue Datenquelle}. Ein neuer Eintrag erscheint. Ändern Sie den Namen zu \emph{Bibliography}.
\item Ändern Sie den \menu{Dateityp} zu \menu{Tabelle}. Klicken Sie den \menu{\ldots}-Button in der Zeile \menu{Datenquellen URL}. Wählen Sie die \texttt{.sxc}-Datei, die Sie exportiert haben.
Bereits zugewiesene Textteile werden im Tab \menu{Importtext} blau
hervorgehoben. Um zu kontrollieren, welche Textbereiche Sie einem
-bestimmten Bib\TeX{}-Feld zugewiesen haben, wählen Sie das Feld im
+bestimmten \bibtex{}-Feld zugewiesen haben, wählen Sie das Feld im
rechten Bereich aus; der zugeordnete Text wird nun rot hervorgehoben.
Sie können sich das Ergebnis des Importvorgangs jederzeit im Tab \menu{BibTeX Quelltext}
und ein neuer Eintrag angelegt wurde. Auf mögliche Fehler werden Sie
im Tab \menu{Hinweise und Warnungen} aufmerksam gemacht.
-Haben Sie alle Textstellen den gewünschten Bib\TeX{}-Feldern zugewiesen,
+Haben Sie alle Textstellen den gewünschten \bibtex{}-Feldern zugewiesen,
klicken Sie auf die Schaltfläche \menu{Übernehmen}. Nun erstellt
-\jabref{} den neuen Eintrag, der allerdings noch keinen Bib\TeX{}-Key
+\jabref{} den neuen Eintrag, der allerdings noch keinen \bibtex{}-Key
hat.
oder mit mehreren Benutzern von verschiedenen Netzwerkarbeitsplätzen
aus an derselben Datei arbeiten können.
-Wenn Sie Ihren PDF-Dateien dann noch Namen geben, die mit dem Bib\TeX{}-Key
+Wenn Sie Ihren PDF-Dateien dann noch Namen geben, die mit dem \bibtex{}-Key
des entsprechenden Eintrags übereinstimmen (plus \texttt{.pdf} im
Dateinamen), sucht \jabref{} in Ihrem Standard-PDF-Ordner und dessen
Unterordnern nach der richtigen PDF-Datei. Sobald die korrekt benannte
in diesem Fall allerdings, dass das PDF-Icon in der Tabellenansicht
nicht angezeigt wird, solange das PDF-Feld leer bleibt.
+\subsubsection{Dateispezifische PDF- und PS-Verzeichnisse}
-\subsection[JabRef und Online-Datenbanken]{\jabref{} und Online-Datenbanken}
+Sie können für jede Datei eigene PDF- und PS-Verzeichnisse angeben (\menu{Datei \msep{} Eigenschaften der Datei}). Diese Verzeichnisse ersetzen dann die Standardverzeichnisse.
+
+\subsubsection{Die Suche mit regulären Ausdrücken für automatische Verknüpfungen nutzen}
+\label{RegularExpressionSearch}
+
+Wenn Sie Dateinamen verwenden, die dem bibtexkey ergänzt um die Dateiendung entsprechen, findet \jabref{} diese Dateien automatisch.
+
+Ab Version~2.2 ist mit Hilfe von regulären Ausdrücken eine größere Flexibilität beim Benennen der Dateien gewährleistet. In den meisten Fällen dürfte das Standardverhalten bereits ausreichend sein.
+
+In den Einstellungen zu externen Programmen (\menu{Optionen \msep{} Einstellungen \msep{} Externe Programme}) findet sich eine Option ">Suche mit regulärem Ausdruck benutzen"<. Wenn Sie diese Option aktivieren, können Sie für die Suche in PDF-Verzeichnissen einen eigenen regulären Ausdruck angeben.
+Die folgende Syntax wird verwendet:
+
+\begin{labeling}{MextensionM}
+ \item [\texttt{*}] Suche in allen direkten Unterverzeichnissen, NICHT im aktuellen Verzeichnis und in Unterverzeichnissen zweiter oder tieferer Ebene.
+ \item [\texttt{**}] Rekursive Suche in allen Unterverzeichnissen UND im aktuellen Verzeichnis.
+ \item [\texttt{.} und \texttt{..}] Das aktuelle Verzeichnis und das Elternverzeichnis (eine Ebene höher).
+ \item [\texttt{{[}title{]}}] Alle Ausdrücke in eckigen Klammern werden durch den Inhalt des entsprechenden Felds ersetzt.
+ \item [\texttt{{[}extension{]}}] Wird durch die Dateiendung des Feldes, das Sie benutzen, ersetzt.
+ \item Anderer Text wird als regulärer Ausdruck interpretiert. Aber Vorsicht: \emph{backslashes} müssen mit einem weiteren \emph{backslash} \emph{escaped} werden (\texttt{\textbackslash\textbackslash}), damit sie nicht mit Separatoren in Pfad-Angaben verwechselt werden.
+\end{labeling}
+Der Standard ist \lstinline{**/.*[bibtexkey].*\\.[extension]}. Damit wird in allen Unterverzeichnissen des Ordners der entsprechenden Dateiendung (z.\,B. das PDF-Verzeichnis) nach allen Dateien mit der richtigen Dateiendung gesucht, die den bibtexkey in ihrem Namen haben.
+
+\subsection{XMP-Metadaten}
+\label{XMPHelp}
+
+XMP ist ein Standard, der von Adobe Systems entwickelt wurde, um Metadaten (Daten, die Informationen über andere Daten enthalten) in Dateien zu speichern. Ein bekanntes Beispiel für Metadaten sind ID3-Tags, die zur Beschreibung von Künstlern, Albumtiteln und Liednamen einer MP3-Datei verwendet werden. Mit Hilfe von Metadaten können MP3-Dateien unabhängig von ihrem Dateinamen identifiziert und z.B. von MP3-Playern ausgelesen und angezeigt werden.
+
+Mit der XMP-Unterstützung versucht das \jabref{}-Team, die Vorteile von Metadaten in die Welt der Literaturmanager einzuführen. Sie können \menu{XMP schreiben} im \menu{Allgemein}-Tab des Eintragseditors wählen und damit alle \bibtex{}-Informationen in die verlinkte PDF-Datei schreiben. Wenn Sie diese PDF-Datei mit anderen austauschen, können diese die Datei in das \jabref{}-Fenster ziehen und haben damit alle Informationen zur Verfügung, die Sie eingegeben haben.
+
+\subsubsection{Benutzung}
+
+Um die XMP-Funktionen in \jabref{} zu nutzen, gehen Sie folgendermaßen vor:
+
+\begin{itemize}
+ \item Zum \emph{Importieren einer einzelnen PDF-Datei mit Metadaten} wählen Sie \menu{Datei \msep{} Importieren in {[}neue{|}aktuelle{]} Datenbank} und im anschließenden Dialog als Dateiformat \menu{PDF mit XMP-Anmerkungen} aus. Sie können die PDF-Datei stattdessen auch mit der Maus auf das Hauptfenster von \jabref{} ziehen.
+ \item Um \emph{bibliographische Informationen in eine verlinkte PDF-Datei zu schreiben}, klicken Sie auf \menu{XMP schreiben} im \menu{Allgemein}-Tab des Eintragseditors.
+ \item Wenn Sie \emph{alle PDFs einer Datei mit Metadaten versehen} wollen, wählen Sie \menu{Extras \msep{} XMP-Metadaten in PDFs schreiben}.
+ \item Um zu überprüfen, ob das Schreiben der Metadaten funktioniert hat, öffnen Sie die Datei in Adobe Acrobat und wählen \menu{Datei \msep{} Dokumenteigenschaften} und dann unter dem Reiter \menu{Beschreibung} die Schaltfläche \menu{Zusätzliche Metadaten}. Wenn Sie links ">Erweitert"< auswählen, sollten Sie im rechten Teil des Dialogs einen Eintrag \texttt{http://jabref.sourceforge.net/bibteXMP} sehen, der die entsprechenden Metadaten enthält. Dies geht nur mit dem Vollprogramm Adobe Acrobat, nicht mit dem Adobe Reader.
+ \item Wer kein Adobe Acrobat zur Verfügung hat, kann stattdessen das Programm ">pdfinfo"<\footnote{Dieses Programm ist Teil von \href{http://www.foolabs.com/xpdf/}{Xpdf} und \href{http://poppler.freedesktop.org/}{Poppler}.} verwenden, um die XMP-Metadaten zu überprüfen. Rufen Sie dazu auf der Kommandozeile einfach \lstinline{pdfinfo -meta <PDF-Datei>} auf, dann werden die entsprechenden Metadaten angezeigt.
+\end{itemize}
+
+\subsubsection{bibteXMP Dateiformat}
+
+XMP nutzt zum Speichern der Daten eine Teilmenge des \emph{Resource Description Framework} (RDF). Für \jabref{} wird ein neues Metadatenformat benutzt, das \bibtex{} sehr gut abbildet. Alle Felder und Werte werden in Knoten eines XML-Dokuments verwandelt. Nur Autoren und Herausgeber werden als \texttt{rdf:Seq}-Strukturen gespeichert, so dass die trennenden ">and"< weggelassen werden können. Alle Strings und crossrefs werden in den Metadaten aufgelöst.
+
+Das folgende einfache Minimal-Schema wird benutzt:
+\begin{itemize}
+ \item Der \bibtex{}-Key wird als \texttt{bibtexkey} gespeichert.
+ \item Der Eintragstyp wird als \texttt{entrytype} gespeichert.
+ \item \texttt{author} und \texttt{editor} sind kodiert als \texttt{rdf:Seq}, wobei die einzelnen Autoren und Herausgeber als \texttt{rdf:li}s dargestellt werden.
+ \item Alle anderen Felder werden unter ihrem Feld-Namen gespeichert.
+\end{itemize}
+
+Es folgt ein Beispiel:
+\begin{lstlisting}
+@INPROCEEDINGS{CroAnnHow05,
+ author = {Crowston, K. and Annabi, H. and Howison, J. and Masango, C.},
+ title = {Effective work practices for floss development: A model and propositions},
+ booktitle = {Hawaii International Conference On System Sciences (HICSS)},
+ year = {2005},
+ owner = {oezbek},
+ timestamp = {2006.05.29},
+ url = {http://james.howison.name/publications.html}
+}
+\end{lstlisting}
+
+wird umgewandelt in
+
+\begin{lstlisting}
+<rdf:Description xmlns:bibtex="http://jabref.sourceforge.net/bibteXMP/"
+ bibtex:bibtexkey="CroAnnHow05"
+ bibtex:year="2005"
+ bibtex:title="Effective work practices for floss development: A model and propositions"
+ bibtex:owner="oezbek"
+ bibtex:url="http://james.howison.name/publications.html"
+ bibtex:booktitle="Hawaii International Conference On System Sciences (HICSS)"
+ bibtex:timestamp="2006.05.29">
+ <bibtex:author>
+ <rdf:Seq>
+ <rdf:li>K. Crowston</rdf:li>
+ <rdf:li>H. Annabi</rdf:li>
+ <rdf:li>J. Howison</rdf:li>
+ <rdf:li>C. Masango</rdf:li>
+ </rdf:Seq>
+ </bibtex:author>
+ <bibtex:entrytype>Inproceedings</bibtex:entrytype>
+</rdf:Description>
+\end{lstlisting}
+
+Wenn Sie bibteXMP parsen möchten, beachten Sie, dass in RDF Attribut-Wert-Paare auch als Knoten wiedergegeben werden können und vice versa.
+
+\subsubsection{Weiterführende Links}
+
+Einige Links zu XMP und PDFs mit Anmerkungen (englisch):
+
+\begin{itemize}
+ \item James Howison's Blog \href{http://freelancepropaganda.com/themp/}{">Themp---Managing Academic Papers like MP3s"<}
+ \item \href{http://www.xml.com/pub/a/2004/09/22/xmp.html}{XML.com-Artikel} zu XMP
+ \item \href{http://jempbox.org}{JempBox} und \href{http://pdfbox.org}{PDFBox} von Ben Litchfield (Java libraries zum Zugriff auf die PDFs und die Metadaten)
+ \item Gute \href{http://episteme.arstechnica.com/eve/ubb.x/a/tpc/f/8300945231/m/377001889631}{Diskussion bei ArsTechnica} zum Management von PDFs.
+ \item \href{http://partners.adobe.com/public/developer/en/xmp/sdk/xmpspecification.pdf}{Adobe XMP Spezifikation}
+\end{itemize}
+
+\subsection[JabRef und Online-Datenbanken]{\jabref{} und Online-Datenbanken}
\subsubsection{CiteSeer}
-\label{CiteSeerHelp}\jabref{} kann Informationen über eine bestimmte
+\label{CiteSeerHelp}
+\begin{quote}
+CiteSeer ist eine digitale Bibliothek und Suchmaschine für wissenschaftliche Literatur, vornehmlich zu den Bereichen Computer und Informatik.
+\end{quote}
+\jabref{} kann Informationen über eine bestimmte
Literaturangabe aus der CiteSeer-Datenbank herunterladen. Um diesen
Vorgang zu starten, fügen Sie Ihrer Datei einen neuen Eintrag hinzu
und belegen das Feld \emph{citeseerurl} mit einem Link zur entsprechenden
Inhaltsseite auf CiteSeer. Das Feld \emph{citeseerurl} muss in einem
der folgenden Formate eingegeben werden:
-\begin{lyxcode}
-http://citeseer.ist.psu.edu/DDDDDD{[}.html{]}\textrm{,~oder}
-
-oai:CiteSeerPSU:DDDDDD\textrm{,~oder}
-
+\begin{lstlisting}
+http://citeseer.ist.psu.edu/DDDDDD[.html] % oder
+oai:CiteSeerPSU:DDDDDD % oder
DDDDDD
-\end{lyxcode}
+\end{lstlisting}
wobei DDDDDD eine Ziffernfolge darstellt. Um diese Ziffernfolge für
einen CiteSeer-Eintrag zu finden, gehen Sie auf die Dokumentseite
der Literaturangabe des Formats \texttt{http://citeseer.ist.psu.edu/}\texttt{\emph{nameYearTitle}}\texttt{.html}
ich deshalb dankbar.%
}
+\paragraph{Eine Datei mit zitierenden Literaturangaben erzeugen}
+
+Mit einem Satz von Literaturangaben können Sie eine Liste der Dokumente
+erzeugen, die die einzelnen Literaturangaben ihrerseits zitieren. Dazu
+muss jede Literaturangabe der entsprechenden Datenbank-Datei ein
+ausgefülltes citeseerurl-Feld besitzen, dessen Inhalt dem oben
+beschriebenen Format entspricht. Sie können diese Funktion nutzen, indem
+Sie \menu{Zitierende Literatur von CiteSeer abrufen} auswählen.
\subsubsection{Medline}
\begin{quote}
-\label{MedlineHelp}\jabref{} kann Literaturangaben von der Medline-Datenbank
+\label{MedlineHelp}\caps{MEDLINE} ist die wichtigste Datenbank der \emph{U.\,S. National Library of Medicine}. Sie enthält Literaturangaben von Zeitschriftenartikeln der Lebenswissenschaften, vornehmlich der Biomedizin.
+\jabref{} kann Literaturangaben von der Medline-Datenbank
herunterladen. Um diese Funktion zu nutzen, wählen Sie \menu{Extras}
\msep{} \menu{Medline abrufen}, so dass der Medline-Dialog im linken
Seitenfeld erscheint.
Die abgerufenen Einträge werden Ihrer zu diesem Zeitpunkt aktivierten
Datei zugeordnet.
+\subsubsection{IEEEXplore}
+\label{IEEEXploreHelp}
+
+\begin{quote}
+\emph{IEEEXplore bietet Zugang zu Literatur in den Bereichen Elektrotechnik, Informatik und Elektronik.}
+\end{quote}
+\jabref{} kann Literaturangaben der IEEEXplore-Datenbank herunterladen.
+Um diese Funktion zu nutzen, wählen Sie \menu{Internet \msep{} IEEEXplore abfragen}
+und geben in dem Dialog, der im linken Bildschirmbereich erscheint, Ihre
+Suchausdrücke ein. Drücken Sie anschließend die
+ENTER-Taste oder den \menu{Abrufen}-Button.
+
+Die Suche wird im Gäste-Modus durchgeführt, es werden also maximal 100 Ergebnisse
+angezeigt.
+
+Sie können die \emph{abstracts} zusammen mit den Literaturangaben herunterladen,
+indem Sie einen Haken bei \menu{Abstracts berücksichtigen} setzen. Das verursacht
+eine deutlich höhere Anzahl von Netzwerk-Anfragen; um die Webseite von IEEEXplore
+nicht übermäßig zu belasten, lädt \jabref{} \emph{abstracts} nur bei einer Suche,
+deren Ergebnis eine bestimmte Trefferanzahl nicht übersteigt.
\subsubsection{Benutzung eines Proxy-Servers}
Servernamen und die Portnummer an Java. Diese Umgebungseinstellungen
sind dokumentiert unter \url{http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html}
-\begin{lyxcode}
-java~-Dhttp.proxyHost=\char`\"{}hostname\char`\"{}
-
--Dhttp.proxyPort=\char`\"{}portnumber\char`\"{}
-\end{lyxcode}
+\begin{lstlisting}
+java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"
+\end{lstlisting}
\subsection[JabRef mit mehreren Benutzern verwenden]{\jabref{} mit mehreren Benutzern verwenden}
Optionen für die Kommandozeile und kann sogar Dateikonvertierungen
durchführen, ohne die grafische Benutzeroberfläche zu öffnen.
-Sie können eine oder mehrere Bib\TeX{}-Dateien laden, indem Sie auf
+Sie können eine oder mehrere \bibtex{}-Dateien laden, indem Sie auf
der Kommandozeile die entsprechenden Dateinamen auflisten. Achten
Sie darauf, alle gewünschten Optionen anzugeben, bevor Sie die Dateinamen
anfügen. Außerdem müssen Sie sich vergewissern, dass der erste Dateiname
einem Dateinamen steht, müssen Sie also \texttt{true} als Argument
angeben. Das Beispielkommando:
-\begin{lyxcode}
-jabref~-o~filetoexport.xml,docbook~-n~true~original.bib
-\end{lyxcode}
+\begin{lstlisting}
+jabref -o filetoexport.xml,docbook -n true original.bib
+\end{lstlisting}
lädt die Datei \texttt{original.bib}, exportiert sie in das Docbook-Format,
speichert sie unter dem Namen \texttt{filetoexport.xml} und unterdrückt
das Laden der grafischen Oberfläche. Das Word \emph{true} verhindert,
\begin{itemize}
\item Hilfe: \texttt{-h}
-
Diese Option veranlasst \jabref{}, eine Zusammenfassung der Kommandozeilen-Optionen
anzuzeigen und das Programm unmittelbar darauf zu schließen.
\item Kein GUI-Modus: \texttt{-n}
-
Diese Option unterdrückt sowohl das \jabref{}-Fenster als auch den
Eröffnungsbildschirm, der normalerweise beim Programmstart angezeigt
wird. Das Programm wird beendet, sobald die Kommandozeilen-Optionen
\item Sitzung laden: \texttt{-l}
-
Diese Option veranlasst \jabref{}, eine gespeicherte Sitzung zu laden,
sofern eine vorhanden ist, bevor sich das Hauptfenster öffnet.
\item Datei importieren: \texttt{-i Dateiname{[},Importformat{]}}
-
Bei dieser Option importiert oder lädt \jabref{} eine bestimmte Datei.
Wenn nur ein Dateiname angegeben wird oder ein Komma und ein {*}-Zeichen
hinter dem Dateinamen stehen, versucht \jabref{}, das Dateiformat
-automatisch zu erkennen. Das sollte bei allen Bib\TeX{}-Dateien ebenso
+automatisch zu erkennen. Das sollte bei allen \bibtex{}-Dateien ebenso
funktionieren wie bei Dateien, die in einem der von \jabref{} unterstützten
Importformate vorliegen. Wenn dem Dateinamen ein Komma und ein Importformat
folgen, wird der angegebene Importfilter benutzt. Mit der Option \texttt{-h}
\item Datei exportieren: \texttt{-o Dateiname{[},Exportformat{]}}
-
Diese Option veranlasst \jabref{}, eine Datei zu speichern oder zu
exportieren, die von derselben Kommandozeile geladen oder importiert
wurde. Wenn eine Datei mit der Option \texttt{-i} importiert wurde,
die \emph{zuletzt}~-- ohne die Option \texttt{-i}~-- angegeben (und
erfolgreich geladen) wurde.
-Wird nur ein Dateiname angegeben, so wird diese Datei im Bib\TeX{}-Format
+Wird nur ein Dateiname angegeben, so wird diese Datei im \bibtex{}-Format
gespeichert. Wenn dem Dateinamen ein Komma und ein Exportformat folgen,
wird der angegebene Exportfilter benutzt. Auf diese Weise wird auch
ein benutzerdefinierter Exportfilter angewendet; wenn der Name sowohl
\item Einstellungen exportieren: \texttt{-x Dateiname}
-
Mit dieser Option können Sie \jabref{} veranlassen, alle Benutzer-Einstellungen
in eine XML-Datei zu speichern. Nach dem Export startet \jabref{}
normal.
\item Einstellungen importieren: \texttt{-p Dateiname}
-
Mit dieser Option importiert \jabref{} Benutzer-Einstellungen, die
mit der Option \texttt{-x} exportiert wurden. Nach dem Import startet
\jabref{} normal.
\item Nur benutzte Einträge exportieren: \texttt{-a Dateiname{[}.aux{]},neueBibDatei{[}.bib{]}}
-
-Manchmal ist es nützlich, eine Bib\TeX{}-Datei zu haben, die nur die
+Manchmal ist es nützlich, eine \bibtex{}-Datei zu haben, die nur die
benutzten Einträge enthält. Eine Liste dieser benutzten Einträge findet
sich in einer .aux-Datei (sobald Sie \LaTeX{} aufgerufen haben). \jabref{}
-kann diese Datei analysieren, um eine neue Bib\TeX{}-Datei zu erstellen,
+kann diese Datei analysieren, um eine neue \bibtex{}-Datei zu erstellen,
die nur die bekannten und benutzten Einträge enthält. Das bedeutet,
-dass ein Eintrag, der in der Standard-Bib\TeX{}-Datei nicht definiert
+dass ein Eintrag, der in der Standard-\bibtex{}-Datei nicht definiert
ist, auch nicht in die neue Datei geschrieben werden kann.
\end{itemize}
-\clearpage
+\subsubsection{Externer Zugriff}
+\label{RemoteHelp}
+\begin{quote}
+\emph{Diese Funktion kann unter \menu{Einstellungen \msep{} Erweitert} eingestellt werden.}
+\end{quote}
+
+\tip[]{Beachten Sie, dass das Aktivieren dieser Funktion mit Windows XP SP2 (und möglicherweise auch mit anderen Konfigurationen) zu einer Meldung führen kann, die besagt, dass bestimmte Funktionen des Programms von der Windows-Firewall geblockt wurden. Sie können die Firewall anweisen, weiterhin zu blocken, denn die Firewall beeinträchtigt den Externen Zugriff von \jabref{} nicht.}
+Falls das Abhören von externen Zugriffen aktiviert ist, versucht \jabref{} beim Programmstart, den entsprechenden Port abzuhören. Das bedeutet, dass andere Anwendungen Informationen durch diesen Port an \jabref{} senden können. \jabref{} akzeptiert dabei nur lokale Verbindungen, um das Risiko eines Eingriffs von außerhalb auszuschließen.
+
+Mit dem externen Zugriff kann eine zweite Instanz von \jabref{} erkennen, dass eine erste Instanz bereits läuft. In diesem Fall leitet die zweite Instanz ihre Kommandozeilen-Optionen an die erste Instanz weiter und beendet sich selbst direkt im Anschluss~-- sofern die zweite Instanz nicht ausdrücklich instruiert wurde, im Stand-Alone-Modus (als selbständige Instanz) zu starten.
+
+Die erste \jabref{}-Instanz liest die Kommandozeilenoptionen und führt die erforderlichen Aktionen aus, z.\,B. das Lesen oder Importieren einer Datei oder das Anhängen einer Datei an die aktive Datenbank. Falls eine Datei mit der Option \texttt{-{-}importToOpen} importiert wird, werden die Einträge an die aktive Datei angehängt. Falls keine Datei geöffnet ist, wird eine neue Datei angelegt.
+
+\clearpage
\section{Anpassung}
\secttoc
Das Beispiel
-\begin{lyxcode}
-Allgemeine~Felder:url;keywords;doi;pdf
-
+\begin{lstlisting}
+Allgemeine Felder:url;keywords;doi;pdf
Zusammenfassung:abstract;annote
-\end{lyxcode}
+\end{lstlisting}
ergibt somit einen Tab mit dem Namen >>Allgemeine Felder<<, der
die Felder \emph{url}, \emph{keywords}, \emph{doi} und \emph{pdf}
enthält, sowie einen zweiten Tab namens >>Zusammenfassung<< mit
den Feldern \emph{abstract} und \emph{annote}.
-\subsection{Automatische Erstellung von Bib\TeX{}-Keys}
+\subsection{Automatische Erstellung von \bibtex{}-Keys}
\begin{quote}
\label{LabelPatterns}Im Tab \menu{Key-Muster} des Dialogs \menu{Einstellungen}
kann man die Felder bestimmen, die zur automatischen Generierung der
-Bib\TeX{}-Keys herangezogen werden.
+\bibtex{}-Keys herangezogen werden.
\end{quote}
Standardmäßig verwendet \jabref{} ein vorgegebenes Muster (default
-pattern) zur Generierung von Bib\TeX{}-Keys, das Keys wie z.\,B.
-\texttt{Yared1998} erzeugt. Falls der Bib\TeX{}-Key in der geöffneten
+pattern) zur Generierung von \bibtex{}-Keys, das Keys wie z.\,B.
+\texttt{Yared1998} erzeugt. Falls der \bibtex{}-Key in der geöffneten
Datei nicht eindeutig sein sollte, wird einer der Buchstaben a-z angefügt,
bis ein eindeutiger Key gefunden ist. Dementsprechend könnten die
Labels wie folgt aussehen:
-\begin{lyxcode}
+\begin{lstlisting}
Yared1998
-
Yared1998a
-
Yared1998b
-
-\textrm{\ldots{}}
-
-\end{lyxcode}
-\jabref{} verwendet Feldmarken, um das Aussehen der Bib\TeX{}-Keys
+(*\ldots*)
+\end{lstlisting}
+\jabref{} verwendet Feldmarken, um das Aussehen der \bibtex{}-Keys
zu bestimmen. Das Key-Muster kann für jeden der vorgegebenen Eintragstypen
bestimmt werden. Es kann beliebigen Text enthalten, unabhängig von
und zusätzlich zu den Feldmarken, die angeben, dass ein bestimmtes
drei Autoren gibt.
\end{labeling}
-\tip[Anmerkung:]{Falls es keinen Autor gibt (z.B. bei einem Buch mit Herausgeber), benutzen die genannten \texttt{{[}auth...{]}}-Feldmarken den oder die Herausgeber, die im editor-Feld angegeben wurden. Also werden die Herausgeber eines Buches ohne Autor für die Label-Erstellung wie Autoren behandelt. Falls Sie dieses Verhalten nicht wünschen und die Feldmarke stattdessen bei einem leeren author-Feld zu nichts expandieren soll, müssen Sie stattdessen >>pureauth<< verwenden, z.B.: \texttt{{[}pureauth{]}} oder \texttt{{[}pureauthors3{]}.}
+\tip[Anmerkung:]{Falls es keinen Autor gibt (z.\,B. bei einem Buch mit Herausgeber), benutzen die genannten \texttt{{[}auth...{]}}-Feldmarken den oder die Herausgeber, die im editor-Feld angegeben wurden. Also werden die Herausgeber eines Buches ohne Autor für die Label-Erstellung wie Autoren behandelt. Falls Sie dieses Verhalten nicht wünschen und die Feldmarke stattdessen bei einem leeren author-Feld zu nichts expandieren soll, müssen Sie stattdessen >>pureauth<< verwenden, z.\,B.: \texttt{{[}pureauth{]}} oder \texttt{{[}pureauthors3{]}.}}
\begin{labeling}{veryveryveryshorttitle}
\item [\texttt{{[}edtr{]}}]Der Nachname des ersten Herausgebers.
Kleinbuchstaben. So wird beispielsweise bei \texttt{{[}auth:lower{]}}
der Nachname des ersten Autors in Kleinbuchstaben ausgegeben.
\end{labeling}
-Das Standard-Key-Muster, das Bib\TeX{}-Keys wie \texttt{Yared1998}
+Das Standard-Key-Muster, das \bibtex{}-Keys wie \texttt{Yared1998}
erzeugt, ist \texttt{{[}auth{]}{[}year{]}}. Wenn Sie keine Key-Muster
für einen bestimmten Eintragstyp angeben, wird dieses vorgegebene
Muster verwendet. Sie können das vorgegebene Muster natürlich ebenfalls
im Tab \menu{Key-Muster} des Dialogs \menu{Einstellungen}.
Beachten Sie, dass \jabref{} Umlaute und Buchstaben mit Akzenten
-sowie das ß beim Erstellen von Bib\TeX{}-Keys verändert, um möglichen
+sowie das ß beim Erstellen von \bibtex{}-Keys verändert, um möglichen
Problemen vorzubeugen. Hierzu einige Beispiele:
-\begin{lyxcode}
-DÃaz~Ibañez~$\to$~DiazIbanez
-
-Strömbäck~$\to$~Stroembaeck
-
-Waßenhoven~$\to$~Wassenhoven
-
-\textrm{usw.}
-\end{lyxcode}
-
-\subsubsection*{Ersetzen eines Regulären Ausdrucks}
-
-Nachdem das Key-Muster angewendet wurde, um einen Bib\TeX{}-Key zu erstellen, können Sie den Key-Generator nach einem bestimmten Regulären Ausdruck suchen und ihn durch eine Zeichenfolge ersetzen lassen. Der Reguläre Ausdruck und die Zeichenfolge, die ihn ersetzen soll, werden in den Textfeldern unter der Liste der Key-Muster eingegeben. Falls das Feld zur Ersetzung des Regulären Ausdrucks leer ist, werden die mit der Suche übereinstimmenden Regulären Ausdrücke einfach gelöscht.
+\begin{lstlisting}
+DÃaz Ibañez (*$\to$*) DiazIbanez
+Strömbäck (*$\to$*) Stroembaeck
+Waßenhoven (*$\to$*) Wassenhoven
+\end{lstlisting}
-\subsection{Erscheinungsbild}
+\subsubsection{Ersetzen eines regulären Ausdrucks}
-\begin{comment}
-fehlende Punkte:
--- Tabellendarstellung
--- Toolbar
--- Panels
-\end{comment}
-\tip[Hinweis: ]{Dieser Abschnitt ist noch vorläufig. Es sind Beschreibungen zur Tabellendarstellung, zur Toolbar, den Panels und der Verwendung von Schriften geplant.}
+Nachdem das Key-Muster angewendet wurde, um einen \bibtex{}-Key zu erstellen, können Sie den Key-Generator nach einem bestimmten regulären Ausdruck suchen und ihn durch eine Zeichenfolge ersetzen lassen. Der reguläre Ausdruck und die Zeichenfolge, die ihn ersetzen soll, werden in den Textfeldern unter der Liste der Key-Muster eingegeben. Falls das Feld zur Ersetzung des regulären Ausdrucks leer ist, werden die mit der Suche übereinstimmenden regulären Ausdrücke einfach gelöscht.
-
-\subsubsection{Eintragsvorschau}
+\subsection{Eintragsvorschau}
\label{PreviewHelp}Die Eintragsvorschau wird mit denselben Mechanismen
erstellt, die auch bei den Exportfiltern angewendet werden. Bei der
werden, die für die Anpassung der Exportfilter verwendet wird (siehe
Abschnitt~\ref{CustomExports}).
-\begin{comment}
-fehlende Punkte:
--- Schriften
-\label{sub:Erscheinungsbild_Schriften}
-\end{comment}
-
\subsection{Exportfilter}
\label{CustomExports}Mit \jabref{} können Sie Ihre eigenen Exportfilter
\noindent In unserem Beispiel-Exportfilter könnten diese Dateien folgendermaßen
aussehen:
-\begin{lyxcode}
-\textrm{html.begin.layout:}
-
+\begin{lstlisting}[title=html.begin.layout]
<HTML>
-
-<BODY~text=\char`\"{}\#275856\char`\"{}>
-
-<basefont~size=\char`\"{}4\char`\"{}~color=\char`\"{}\#2F4958\char`\"{}~face=\char`\"{}arial\char`\"{}>
-
-~
-
-\textrm{html.end.layout:}
-
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+\end{lstlisting}
+\begin{lstlisting}[title=html.end.layout]
</BODY>
-
</HTML>
-\end{lyxcode}
+\end{lstlisting}
Die Datei \texttt{html.layout} stellt die \emph{Standard}-Formatvorlage
für den Export eines einzelnen Eintrags bereit. Falls Sie unterschiedliche
Formatvorlagen für verschiedene Eintragstypen anwenden wollen, müssen
gefolgt vom Namen des Formatierers in eckigen Klammern und dem Feldnamen
in geschweiften Klammern einfügt, z.\,B.:
-\begin{lyxcode}
-\textbackslash{}format{[}ToLowerCase{]}\{\textbackslash{}author\}
-\end{lyxcode}
+\begin{lstlisting}
+\format[ToLowerCase]{\author}
+\end{lstlisting}
Sie können auch mehrere Formatierer angeben, getrennt durch Kommas.
Diese werden nacheinander aufgerufen, und zwar von links nach rechts.
Das Kommando
-\begin{lyxcode}
-\textbackslash{}format{[}ToLowerCase,HTMLChars{]}\{\textbackslash{}author\}
-\end{lyxcode}
+\begin{lstlisting}
+\format[ToLowerCase,HTMLChars]{\author}
+\end{lstlisting}
ruft z.\,B. zunächst den Formatierer \emph{ToLowerCase} auf, \emph{HTMLChars}
formatiert anschließend das Ergebnis. Auf diese Weise können Sie eine
beliebige Anzahl an Formatierern auflisten.
nicht leer ist. Wenn wir z.\,B. hinter den Namen der Editoren den
Text \texttt{(Hrsg.)} haben wollen, brauchen wir Folgendes:
-\begin{lyxcode}
-\textbackslash{}format{[}HTMLChars,AuthorFirstFirst{]}\{\textbackslash{}editor\}~(Hrsg.)
-\end{lyxcode}
+\begin{lstlisting}
+\format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)
+\end{lstlisting}
Wenn nun aber das \emph{editor}-Feld leer ist~-- möglicherweise ist
es für den Eintrag, der exportiert werden soll, nicht erforderlich~--,
dann würde das \texttt{(Hrsg.)} dennoch erscheinen. Das kann man mit
den Kommandos \texttt{\textbackslash{}begin} und \texttt{\textbackslash{}end}
verhindern:
-\begin{lyxcode}
-\textbackslash{}begin\{editor\}
-
-\textbackslash{}format{[}HTMLChars,AuthorFirstFirst{]}\{\textbackslash{}editor\}~(Hrsg.)
-
-\textbackslash{}end\{editor\}
-\end{lyxcode}
+\begin{lstlisting}
+\begin{editor}
+\format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)
+\end{editor}
+\end{lstlisting}
Die Kommandos \texttt{\textbackslash{}begin} und \texttt{\textbackslash{}end}
sorgen dafür, dass der Text, den sie einschließen, nur dann ausgegeben
wird, falls das Feld, auf das in den geschweiften Klammern verwiesen
die Einträge nach dem \emph{keyword} sortiert worden sein. Dann benutzen
Sie die folgenden Kommandos, um nach \emph{keyword} zu gruppieren:
-\begin{lyxcode}
-\textbackslash{}begingroup\{keywords\}
-
-New~Category:~\textbackslash{}format{[}HTMLChars{]}\{\textbackslash{}keywords\}
-
-\textbackslash{}endgroup\{keywords\}
-\end{lyxcode}
-
-\subsubsection{Teilen Sie Ihre Arbeit mit anderen}
-
-Mit externen Layout-Dateien ist es einfach, Ihre eigenen Export-Formate
-mit anderen Anwendern gemeinsam zu benutzen. Falls Sie einen Exportfilter
-für ein Format erstellen, das nicht von \jabref{} unterstützt wird,
-oder falls Sie einen bestehenden Exportfilter verbessern, möchten
-wir Sie ermutigen, Ihre Arbeit auf der SourceForge.net-Seite bereitzustellen.
-Dasselbe gilt für Formatierklassen, die Sie schreiben. Wir würden
-uns freuen, eine Sammlung von bereitgestellten Layout-Dateien verteilen
-zu können oder die Standard-Export-Filter und Standard-Formatierer
-zu erweitern.
-
+\begin{lstlisting}
+\begingroup{keywords}
+New Category: \format[HTMLChars]{\keywords}
+\endgroup{keywords}
+\end{lstlisting}
-\clearpage
-\section{Externe Importfilter}
-\secttoc
-\bigskip
+\subsection{Importfilter}
-\noindent \jabref{} bietet Ihnen die Möglichkeit, ganz ähnlich den Standard-Importern, eigene Importer
+\noindent \jabref{} bietet Ihnen die Möglichkeit, ganz ähnlich den Standard-Importern, eigene Importer
zu definieren und zu benutzen. Man definiert einen Importer durch eine oder mehrere Java
\emph{Klassen}, die Dateiinhalte aus einem sogenannten \emph{Input stream} lesen
-und daraus Bib\TeX{}-Einträge erzeugen. Sie können vorkompilierte Importer einbinden, die Sie vielleicht
-von SourceForge erhalten haben (siehe Abschnitt >>Ihre Arbeit anderen zur Verfügung stellen<<,
+und daraus \bibtex{}-Einträge erzeugen. Sie können vorkompilierte Importer einbinden, die Sie vielleicht
+von SourceForge erhalten haben (siehe Abschnitt >>Ihre Arbeit anderen zur Verfügung stellen<<,
S.\,\pageref{subsec:Ihre-Arbeit}). Sie können auch
-mit Grundkenntnissen der Java-Programmierung eigene Importer für für Sie wichtige Referenzquellen
+mit Grundkenntnissen der Java-Programmierung eigene Importer für für Sie wichtige Referenzquellen
erstellen oder neue, verbesserte Versionen existierender Importer einbinden, ohne \jabref{} neu zu
kompilieren.
die existierenden in der automatischen Formaterkennung und an der Kommandozeile in \jabref{} überschreiben.
Externe Importfilter selbst sind dann nach Namen sortiert.
-\subsection{Einen externen Importfilter hinzufügen}
+\subsubsection{Einen externen Importfilter hinzufügen}
Stellen Sie sicher, dass Sie den Importer in kompilierter Form haben (eine oder mehrere
\texttt{.class} Dateien) und dass die Klassendateien
-in einer Verzeichnisstruktur entsprechend ihrer Package-Struktur liegen.
-Um einen neuen externen Importfilter hinzuzufügen, öffnen Sie den Dialog
+in einer Verzeichnisstruktur entsprechend ihrer Package-Struktur liegen.
+Um einen neuen externen Importfilter hinzuzufügen, öffnen Sie den Dialog
\menu{Optionen} \msep{} \menu{Verwalte externe Importfilter}, und klicken Sie auf
-\menu{Aus Klassenpfad hinzufügen}. Ein Dateiauswahl-Fenster erscheint,
+\menu{Aus Klassenpfad hinzufügen}. Ein Dateiauswahl-Fenster erscheint,
mit dem Sie den Klassenpfad des Importers wählen, dass heißt den obersten Ordner,
in dem die Package-Struktur Ihres Importers beginnt. In einem zweiten Dateiauswahl-Fenster
wählen Sie die \emph{.class}-Datei Ihres Importers, die von \texttt{\textbackslash{}ImportFormat} abgeleitet
ist. Wenn Sie \menu{Klasse auswählen} klicken, erscheint Ihr neuer Importer
in der Liste der externen Importfilter. Alle externen Importfilter erscheinen in den
-\jabref{}-Untermenüs \menu{Datei} \msep{} \menu{Importieren} \msep{} \menu{Externe Importfilter} und
+\jabref{}-Untermenüs \menu{Datei} \msep{} \menu{Importieren} \msep{} \menu{Externe Importfilter} und
\menu{Datei} \msep{} \menu{Importieren und Anhängen} \msep{} \menu{Externe Importfilter}.
\tip[Bitte beachten Sie: ]{Wenn Sie die Klassen in ein anderes Verzeichnis verschieben,
\emph{\menu{Aus Archiv-Datei hinzufügen}}, dann das ZIP- oder JAR-Archiv und dann den Eintrag
(Klassendatei), der den neuen Importer darstellt.}
-\subsection{Einen Importfilter entwickeln}
+\subsubsection{Einen Importfilter entwickeln}
-Bitte schauen Sie auf unseren Download-Seiten nach Beispielen und nützlichen Dateien zur
+Bitte schauen Sie auf unseren Download-Seiten nach Beispielen und nützlichen Dateien zur
Entwicklung Ihres Importfilters.
-\subsubsection{Ein einfaches Beispiel}
+\paragraph{Ein einfaches Beispiel}
Angenommen, wir wollen Dateien der folgenden Form importieren:
-\begin{lyxcode}
+\begin{lstlisting}
1936;John Maynard Keynes;The General Theory of Employment, Interest and Money
-
-2003;Boldrin \& Levine;Case Against Intellectual Monopoly
-
+2003;Boldrin & Levine;Case Against Intellectual Monopoly
2004;ROBERT HUNT AND JAMES BESSEN;The Software Patent Experiment
-\end{lyxcode}
+\end{lstlisting}
-\paragraph{SimpleCsvImporter Erstellen}
+\subparagraph{SimpleCsvImporter Erstellen}
Erzeugen Sie in einem Text-Editor eine von \texttt{ImportFormat} abgeleitete Klasse,
-die die Methoden \texttt{getFormatName()},
+die die Methoden \texttt{getFormatName()},
\texttt{isRecognizedFormat()}
und \texttt{importEntries()} implementiert. Hier ein Beispiel:
-\begin{lyxcode}
+\begin{lstlisting}
import java.io.*;
-
import java.util.*;
-
import net.sf.jabref.*;
-
import net.sf.jabref.imports.ImportFormat;
-
import net.sf.jabref.imports.ImportFormatReader;
-~
-
public class SimpleCsvImporter extends ImportFormat {
-~
-
public String getFormatName() {
-
- return "{}Simple CSV Importer";
-
+ return "Simple CSV Importer";
}
-~
-
public boolean isRecognizedFormat(InputStream stream) throws IOException {
-
return true; // this is discouraged except for demonstration purposes
-
}
-~
-
public List importEntries(InputStream stream) throws IOException {
-
ArrayList bibitems = new ArrayList();
-
BufferedReader in = new BufferedReader(ImportFormatReader.getReaderDefaultEncoding(stream));
-~
-
String line = in.readLine();
-
while (line != null) {
-
- if (!"{}"{}.equals(line.trim())) {
-
+ if (!"".equals(line.trim())) {
String[] fields = line.split(";");
-
BibtexEntry be = new BibtexEntry(Util.createNeutralId());
-
be.setType(BibtexEntryType.getType("techreport"));
-
be.setField("year", fields[0]);
-
- be.setField("{}author", fields[1]);
-
+ be.setField("author", fields[1]);
be.setField("title", fields[2]);
-
bibitems.add(be);
-
line = in.readLine();
-
}
-
}
-
- return bibitems;
-
+ return bibitems;
}
-
}
-\end{lyxcode}
+\end{lstlisting}
-\paragraph{SimpleCsvImporter übersetzen}
+\subparagraph{SimpleCsvImporter übersetzen}
Beachten Sie, dass die Beispielklasse im Default"=Package liegt. Angenommen, Sie haben
sie unter \texttt{/meinpfad/SimpleCsvImporter.java} gespeichert. Nehmen wir weiter an,
die Datei \texttt{JabRef-2.0.jar} ist im gleichen Verzeichnis wie
-\texttt{SimpleCsvImporter.java} und Java ist in Ihrem Kommandopfad.
-Kompilieren Sie die Klasse mit JSDK 1.4 zum Beispiel mit folgendem Kommandozeilen"=Aufruf:
-\begin{lyxcode}
+\texttt{SimpleCsvImporter.java} und Java ist in Ihrem Kommandopfad.
+Kompilieren Sie die Klasse mit JSDK 1.4 zum Beispiel mit folgendem Kommandozeilen"=Aufruf:
+\begin{lstlisting}
javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
-\end{lyxcode}
+\end{lstlisting}
Nun sollte dort auch eine Datei \texttt{/mypath/SimpleCsvImporter.class} liegen.
-\paragraph{SimpleCsvImporter registrieren}
+\subparagraph{SimpleCsvImporter registrieren}
Öffnen Sie in \jabref{} \menu{Optionen} \msep{} \menu{Verwaltung externer Importfilter} und klicken Sie
-auf \menu{Aus Klassenpfad hinzufügen}. Navigieren Sie nach \texttt{/meinpfad} und
+auf \menu{Aus Klassenpfad hinzufügen}. Navigieren Sie nach \texttt{/meinpfad} und
klicken Sie \menu{Klassenpfad auswählen}. Wählen Sie dann die Datei \texttt{SimpleCsvImporter.class}
und klicken Sie \menu{Klasse auswählen}. Ihr Importfilter sollte nun in der Liste der
externen Importfilter unter dem Namen >>Simple CSV Importer<< erscheinen und,
-sobald Sie \menu{Schließen} gewählt haben, auch in den Untermenüs \menu{Datei} \msep{} \menu{Importieren} \msep{}
-\menu{Externe Importfilter} und \menu{Datei} \msep{} \menu{Importieren und Anhängen} \msep{} \menu{Externe Importfilter}
+sobald Sie \menu{Schließen} gewählt haben, auch in den Untermenüs \menu{Datei} \msep{} \menu{Importieren} \msep{}
+\menu{Externe Importfilter} und \menu{Datei} \msep{} \menu{Importieren und Anhängen} \msep{} \menu{Externe Importfilter}
des \jabref{}-Hauptfensters auftauchen.
-\subsection{Ihre Arbeit anderen zur Verfügung stellen}
+\subsection{Teilen Sie Ihre Arbeit mit anderen}
\label{subsec:Ihre-Arbeit}
-Mit externen Importfiltern ist es recht einfach, Importfilter zwischen Nutzern auszutauschen und
-gemeinsam zu nutzen. Wenn Sie einen Importer für ein Format schreiben, das \jabref{} noch nicht unterstützt,
-oder einen Importer verbessern, bitten wir Sie, Ihre Ergebnisse auf unserer SourceForge.net
-Seite zu veröffentlichen. Wir bieten gerne eine Sammlung eingereichter Importfilter an oder
-fügen sie unserer Auswahl an Standard-Importfiltern hinzu.
-
+Mit externen Layout-Dateien und Importfiltern ist es einfach, Ihre eigenen Export-Formate und Importfilter
+mit anderen Anwendern gemeinsam zu benutzen. Falls Sie einen Exportfilter oder einen Importfilter
+für ein Format erstellt haben, das noch nicht von \jabref{} unterstützt wird,
+oder falls Sie einen bestehenden Exportfilter oder Importfilter verbessern, möchten
+wir Sie ermutigen, Ihre Arbeit auf der \href{http://sourceforge.net/projects/jabref/}{SourceForge.net-Seite} bereitzustellen.
+Dasselbe gilt für Formatierklassen, die Sie schreiben. Wir würden
+uns freuen, eine Sammlung von bereitgestellten Layout-Dateien verteilen
+zu können oder die Standard-Export-Filter, -Formatierer und -Importfilter
+zu erweitern.
-\clearpage
+\clearpage
\section{Tastenkürzel}
Die Menüs können alle über Tastenkürzel angesteuert werden, die meisten
STRG-SHIFT-N\tabularnewline
Eintrag bearbeiten&
STRG-E\tabularnewline
-Bib\TeX{}-Keys generieren&
+\bibtex{}-Keys generieren&
STRG-G\tabularnewline
Rückgängig&
STRG-Y\tabularnewline
F1\tabularnewline
\end{longtable}
+\clearpage
+\section{Häufige Fragen und Antworten}\label{sec:faq}
+%\secttoc
+
+Die folgenden Fragen und Antworten sind der \href{http://jabref.sourceforge.net/faq.php}{\jabref{}-Homepage} entnommen. Falls Sie darüber hinaus Fragen haben, die das Handbuch nicht beantworten konnte, haben Sie folgende Möglichkeiten, zu einer Antwort zu kommen:
+\begin{enumerate}
+ \item Durchsuchen Sie die \href{http://sourceforge.net/forum/?group_id=92314}{Foren} auf der Projektseite bei Sourceforge.
+ \item Stellen Sie Ihre Frage in der \href{http://sourceforge.net/mail/?group_id=92314}{\jabref{}-Mailingliste}.
+\end{enumerate}
+
+\faq{Läuft \jabref{} unter freiem Java (Classpath, Kaffee GCJ etc.)?}{Am 13.~November~2006 hat Sun sein Java unter die GNU General Public License (Version~2) gestellt, so dass die Antwort ">Ja"< lautet. Ansonsten ist zu sagen, dass eine unserer Abhängigkeiten derzeit zu einem Absturz führt, wenn mit einer anderen Java API als der von Sun gearbeitet wird. Das gilt für Version 0.92 von Classpath.}
-\clearpage
+\faq{\label{faq-linux}\jabref{} startet nicht unter Linux. Was kann ich tun?}{\jabref{} läuft unter Linux, wenn Sie eine Java Runtime Environment (JRE) von Sun in der Version~1.4.2 oder einer neueren Version verwenden. Falls \jabref{} dennoch nicht starten sollte, können Sie folgende Fehlersuche durchführen:
+Starten Sie \texttt{java -{-}version} von der Kommandozeile. Falls dabei kein Produkt von Sun Microsystems verwendet wird (sondern beispielsweise angezeigt wird, dass Sie GCJ VM verwenden), selbst wenn Sie die JRE von Sun installiert haben, müssen Sie Ihr Setup anpassen. Da das Vorgehen dafür sehr von Ihrer Linux-Distribution abhängt, können wir keine Hinweise für jede mögliche Konstellation geben.
+Unter Debian/Ubuntu können Sie die Einstellungen anpassen, indem Sie \texttt{sudo update-alternatives -{-}config java} aufrufen (dazu brauchen Sie admin-Rechte). In dem Dialog, der daraufhin erscheint, wählen Sie die Sun JDK oder JRE. Alternativ können Sie auch nach der Java-Programmdatei suchen und diese direkt ausführen. In Ubuntu findet man Java gewöhnlich unter \texttt{/usr\slash{}lib\slash{}jvm\slash{}java-1.5.0-sun\slash{}jre\slash{}bin\slash{}java}.
+Wenn Sie keine admin-Rechte auf dem Computer haben, können Sie die Sun JRE in ihrem Home-Verzeichnis installieren. Sie müssen dann darauf achten, dass Sie die richtige Programmdatei aufrufen. Wenn Sie die JRE z.\,B. in einen Ordner namens ">java"< in ihrem Home-Verzeichnis installiert haben, geben Sie \texttt{\texttildelow{}/java/jre/bin/java -jar JabRef-2.1.jar} (bzw. die entsprechende Versionsnummer) in der Kommandozeile ein.}
+
+\clearpage\faq{Ich arbeite unter Ubuntu und \jabref{} startet, wenn ich auf das Icon klicke, aber nicht von der Kommandozeile. Wo liegt das Problem?}{Sie haben mehrere Java Virtual Machines installiert und von der Kommandozeile wird die falsche gewählt. Schauen Sie unter Frage \ref{faq-linux} nach, wie Sie die Einstellungen ändern können.}
+
+\clearpage
\section{Entwicklung}
\secttoc
\bigskip
\subsection{Beschränkungen und bekannte Probleme (Bugs)}
\begin{quote}
-\emph{Dieses Handbuch befindet sich noch in der Entstehungsphase.
-Bitte sehen Sie auf der} \emph{\href{http://sourceforge.net/projects/jabref/}{Projektseite bei Sourceforge}
-nach, welche bekannten Probleme bei \jabref{} auftreten könnten.}
+\emph{Da sich die Software schneller entwickelt als dieses Handbuch, muss an dieser Stelle auf die \href{http://sourceforge.net/projects/jabref/}{Projektseite bei Sourceforge} verwiesen werden.}
\end{quote}
-\subsection[Die Zukunft von JabRef]{Die Zukunft von \jabref{}}
-
-Hier sollen einige Punkte aufgeführt werden, die in einer der nächsten
-Versionen von \jabref{} verwirklicht werden könnten, z.\,B. die
-\emph{Anpassung der Tastenkürzel}.
-
-
\subsection{Danksagung}
-Neben den Entwicklern, die die Hilfe-Seiten des Programms geschrieben
-haben, möchte ich Thomas Fritz für seine hilfreichen Tipps und
-Anregungen zum Handbuch danken.
-
-Seit den Anfängen als \emph{BibKeeper} und \emph{JBibtexManager} haben
-zahlreiche Personen dazu beigetragen, das \jabrefversion{} zu dem
-geworden ist, was es ist. Erster Dank gebührt natürlich den Initiatoren
-Morten O. Alver und Nizar N. Batada. Das Entwicklerteam (Michel Baylac,
-Guillaume Gardey, Cyrille d'Haese, Raik Nagel, Ellen Reitmayr, Michael
-Spiegel, Ulrik Stervbo, Dominik Waßenhoven, Joerg K. Wegner, Michael
-Wrighton, Egon Willighagen und Jörg Zieren) dankt auch den Beiträgen
-von Kolja Brix, Frédéric Darboux, Fabrice Dessaint, Nathan Dunn, Alexis
-Gallagher, Sascha Hunold, Bernd Kalbfuss, Martin Kähmer, Jeffrey Kuhn,
-Alex Montgomery, John Relph, Moritz Ringler, Rudolf Seemann, Mike
-Smoot, Martin Stolle, David Weitzman und Seb Wills. Weiterer Dank
-geht an Samin Muhammad Ridwanul Karim und Stefan Robert.
+Neben den Entwicklern, die die Hilfe-Seiten des Programms geschrieben haben, möchte ich Thomas Fritz, Axel Junge und Tobias Wolf für ihre hilfreichen Tipps und Anmerkungen zum Handbuch danken.
+Seit den Anfängen als \emph{BibKeeper} (von Morten O.~Alver) und \emph{JBibtexManager} (von Nizar N.~Batada) haben
+zahlreiche Personen dazu beigetragen, dass \jabrefversion{} zu dem
+geworden ist, was es ist. Wer zum Entwicklerteam gehört und wer alles zum Programm beigetragen hat, können Sie im Programm unter \menu{Hilfe \msep{} Über JabRef} nachsehen.
\subsection{Lizenz}
-\jabref{} ist frei verfügbar unter den Bedingungen der \href{http://www.gnu.org/copyleft/gpl.html}{GNU Public License}.
-
-
-\subsubsection{Benutzte Fremdsoftware}
-
-\jabref{} benutzt JGoodies Looks 1.2.2 und JGoodiesForms 1.0.4, das
-von \href{http://www.jgoodies.com}{JGoodies} unter den Bedingungen
-der \href{http://www.opensource.org/licenses/bsd-license.html}{BSD License}
-vertrieben wird. Außerdem werden zwei zustätzliche Klassen (SimpleInternalFrame and UIFSplitPane) von Karsten Lentzsch benutzt. Kommandozeilenbefehle werden geparst mit \href{http://ritopt.sourceforge.net}{RitOpt},
-das unter den Bedingungen der GNU Public License (Version 2) verfügbar
-ist. \jabref{} verwendet für die Suche den ANTLR Parser Generator.
-ANTLR ist \emph{public domain software}~-- siehe \href{http://www.antlr.org/license.html}{http://www.antlr.org/license.html}
-für die Lizenzbedingungen. Für die Darstellung und Filterung der Tabelle benutzt \jabref{} die \href{http://publicobject.com/glazedlists}{Glazed Lists library}, die unter den Bedingungen der \href{http://www.opensource.org/licenses/lgpl-license.php}{LGPL}
-(Lesser GNU Public License) vertrieben wird. \jabref{} benutzt darüber hinaus die \emph{threading
-library} Spin 1.3.1, die unter den Bedingungen der \href{http://www.opensource.org/licenses/lgpl-license.php}{LGPL} vertrieben wird. Das hier beschriebene
-Produkt beinhaltet Software, die von der \href{http://www.apache.org}{Apache Software Foundation}
-entwickelt wurde. Die Bibliotheken \emph{Commons Logging} und \emph{Commons
-HTTP Client} werden von \href{http://jakarta.apache.org}{The Jakarta Project}
-unter der \href{http://opensource.org/licenses/apachepl.php}{Apache Software Lizenz}
-(Version 1.1) vertrieben.
-
-Einige Icons sind von uns, aber die meisten stammen vom \href{http://www.eclipse.org}{Eclipse Projekt},
-das unter den Bedingungen der \href{http://www.opensource.org/licenses/cpl.php}{Common Public License}
-vertrieben wird, sowie vom \href{http://qt.osdn.org.ua}{QIcons Paket},
-das unter den Bedingungen der \href{http://www.gnu.org/copyleft/gpl.html}{GNU Public License}
-vertrieben wird.
-
-\begin{comment}
-Möglicherweise ans Ende eine FAQ anschließen
--- Ich kann nicht programmieren, kann ich trotzdem zum Projekt beitragen?
--- Wie installiere ich neue Schriften?
- Siehe \ref{sub:Erscheinungsbild_Schriften}.
-\end{comment}
+\jabref{} ist frei verfügbar unter den Bedingungen der \href{http://www.gnu.org/copyleft/gpl.html}{GNU General Public License}. Es gibt unterschiedliche Softwarepakete, die von \jabref{} genutzt werden. Wenn Sie sich über die Lizenzbestimmungen dieser Fremdsoftware informieren wollen, schauen Sie bitte unter \menu{Hilfe \msep{} Über JabRef} nach.
+
\appendix
\newpage
\bibliographystyle{jurabib}
\label{RevisionHistory}
-\subsection*{(in Arbeit))}
-\begin{revhist}
+%\begin{revhist}{\versiondate}%Datum}
+%\item Änderung
+%\end{revhist}
+
+\begin{revhist}{\versiondate}%Datum}
+\item Grafik auf Titelseite ausgetauscht
+\item Ein paar kleinere Änderungen
+\end{revhist}
+
+\begin{revhist}{10.\,12.\,2006}
+\item Abschnitt ">XMP-Metadaten"< leicht verbessert
+\item FAQ zu freien Java-APIs aktualisiert (Suns Java ist jetzt selbst frei)
+\item Wie immer: kleinere Änderungen
+\end{revhist}
+
+\begin{revhist}{9.\,12.\,2006}
+\item Abschnitte ">Weitere Hilfen"< in ">Häufige Fragen und Antworten (FAQ)"< umbenannt
+\item FAQs von der Homepage übersetzt und integriert
+\item Literaturverzeichnis um Eintrag von \cite{Fenn2006} ergänzt
+\item Ein paar kleinere Änderungen
\end{revhist}
-\subsection*{30.\,1.\,2006)}
-\begin{revhist}
+\begin{revhist}{30.\,11.\,2006}
+\item Abschnitte ">Weitere Hilfen"< hinzugefügt
+\end{revhist}
+
+\begin{revhist}{28.\,11.\,2006}
+\item Abschnitte ">Abkürzung von Zeitschriftentiteln"<, ">XMP-Metadaten"<, ">IEEExplore"< und ">Externer Zugriff"< hinzugefügt
+\item Abschnitte ">Einführung in \bibtex{}"<, ">Das Hauptfenster"<, ">Links zu externen Dateien"< und ">Jabref und Online-Datenbanken"< erweitert
+\item Abschnitt ">Suchfunktionen"< aktualisiert
+\item Abschnitt ">Entwicklung"< gekürzt
+\item Paket ">listings"< eingebunden (ersetzt Umgebung ">lyxcode"<)
+\item Typewriter-Schrift \texttt{beramono} eingesetzt
+\item Einige kleinere Änderungen
+\end{revhist}
+
+\begin{revhist}{30.\,1.\,2006}
\item Abschnitt >>\jabref{}-Bibliographien in OpenOffice.org benutzen<< aktualisiert
-\item Abschnitt zur Erzeugung der Bib\TeX{}-Keys aktualisiert
+\item Abschnitt zur Erzeugung der \bibtex{}-Keys aktualisiert
\item Neues Kapitel (>>Externe Importfilter<<), geschrieben von Andreas Rudert
\item Einige kleinere Änderungen
\end{revhist}
-\subsection*{6.\,12.\,2005}
-%\renewcommand{\labelitemi}{}
-
-\begin{revhist}
+\begin{revhist}{6.\,12.\,2005}
\item Lizenzbedingungen für das Handbuch hinzugefügt
\item von PDF~1.4 auf PDF~1.2 umgestellt
\item mehrere kleinere Änderungen
\end{revhist}
-\subsection*{16.\,11.\,2005}
-\begin{revhist}
+\begin{revhist}{16.\,11.\,2005}
\item Erstentwurf von Dominik Waßenhoven, basierend
auf dem unveröffentlichten englischen \emph{Initial Draft} von Nizar Batada (20.\,2.\,2004)
und den Hilfeseiten des Programms
--- /dev/null
+<HTML>
+
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+
+<H1>Zeitschriftentitel abkürzen</H1>
+
+Diese Funktion kann unter <b>Optionen -> Abkürzungen der Zeitschriften verwalten</b> eingestellt werden.
+
+<p>JabRef kann automatisch zwischen Zeitschriftentiteln in abgekürzter und ausführlicher Form hin- und herschalten, sofern die Titel in einer Ihrer Zeitschriftenlisten enthalten ist. Sie können mehrere dieser Listen benutzen, die Sie als externe Textdateien anlegen.
+
+<H2>Benutzungshinweise</H2>
+<p>
+Die Abkürzung von Zeitschriftentiteln können Sie von Eintragseditor oder vom Menü <b>Extras</b> aus ein- und ausschalten. Im Eintragseditor benutzen Sie dazu den Button <b>Abkürzung an-/abschalten</b> neben dem <b>Journal</b>-Feld. Es wird zwischen drei Modi hin- und hergeschaltet:
+<ul>
+ <li>Kompletter Name, z.B. "Aquacultural Engineering"</li>
+ <li>ISO-Abkürzung, z.B. "Aquacult. Eng."</li>
+ <li>MEDLINE-Abkürzung, z.B. "Aquacult Eng"</li>
+</ul>
+Falls der Zeitschriftenname sich nicht in Ihren Zeitschriftenlisten findet, wird das Feld nicht verändert.
+
+<p>
+Um die Zeitschriftennamen mehrerer Einträge auf einmal zu konvertieren, können Sie eine beliebige Anzahl von Einträgen auswählen und im Menü <b>Extras</b> einen der Einträge <b>Zeitschriftennamen abkürzen (ISO)</b>, <b>Zeitschriftennamen abkürzen (MEDLINE)</b> und <b>Abkürzung der Zeitschriften aufheben</b> wählen.
+Diese drei Aktionen sorgen dafür, dass bei allen ausgewählten Einträgen die Zeitschriftennamen, die in den Zeitschriftenlisten gefunden werden konnten, abgekürzt oder komplett ausgeschrieben werden.
+
+<h2>Zeitschriftenlisten verwalten</h2>
+
+Sie können mehrere Zeitschriftenlisten als externe Textdateien benutzen, die mit JabRef verlinkt sind. Die primäre Liste kann in JabRef selbst verwaltet werden.
+
+<H3>Ihre persönliche Zeitschriften-Abkürzungsliste</H3>
+
+Ihre persönliche Liste verwalten Sie im oberen Teil des <b>Abkürzung der Zeitschriftennamen</b>-Dialogs.
+Wählen Sie <b>Neue Datei</b> und geben einen Dateinamen ein oder klicken auf den <b>Durchsuchen</b>-Button. Wenn Sie bereits eine Datei haben, die Sie als Grundlage nehmen wollen, wählen Sie stattdessen <b>Bestehende Datei</b> und benutzen den <b>Durchsuchen</b>-Button zum Auswählen dieser Datei. Die Tabelle zeigt dann den Inhalt der Liste, die Sie ausgewählt haben.
+
+<p>Sie können mit Hilfe der <b>+</b> und <b>-</b> Buttons an der rechten Seite Einträge hinzufügen oder entfernen. Für jeden Eintrag müssen Sie den vollständigen Zeitschriftennamen und die ISO-Abkürzung angeben (z.B. "Aquacultural Engineering" und "Aquacult. Eng."). Mit einem Doppelklick auf die Tabellenzeile können Sie die Einträge bearbeiten.
+
+<p>Sobald Sie auf <b>OK</b> klicken (oder wenn Sie eine bestehende Datei ausgewält haben), enthält die Tabelle mindestens eine Zeile. Der Tabelleninhalt wird in die ausgewählte Datei geschrieben und die Zeitschriftenliste von JabRef wird aktualisiert.
+
+<h3>Externe Zeitschriftenlisten</h3>
+
+Zusätzlich zu Ihrer persönlichen Liste können Sie mehrere externe Listen verlinken. Diese Verknüpfungen werden im unteren Teil des <b>Abkürzung der Zeitschriftennamen</b>-Dialogs verwaltet. Externe Listen sind den persönlichen Listen ähnlich - der einzige Unterschied ist, dass Sie nicht mit JabRef selbst verwaltet werden können.
+<p>
+Um eine externe Liste hinzuzufügen, klicken Sie zunächst auf den <b>+</b> Knopf, falls nötig (das fügt eine weitere Zeile hinzu). Dann benutzen Sie entweder den <b>Durchsuchen</b>- oder den <b>Herunterladen</b>-Button.
+ <ul>
+ <li>Mit dem <b>Durchsuchen</b>-Knopf können Sie eine auf Ihrem Computer bestehende Datei auswählen.</li>
+ <li>Mit dem <b>Herunterladen</b>-Knopf können Sie eine Liste aus dem Internet herunterladen, indem Sie eine URL angeben. Die Datei wird auf Ihrem Computer gespeichert und mit JabRef verlinkt.
+ Die URL ist standardmäßig die Adresse einer Zeitschriftenliste auf der JabRef-Homepage. Diese Liste ist unvollständig, wird in Zukunft aber ausgebaut.</li>
+ </ul>
+
+Jeder Eintrag in Ihrer persönlichen Liste überschreibt einen Eintrag mit demselben vollständigen Zeitschriftennamen in einer Ihrer externen Listen. In ähnlicher Weise werden die externen Listen in der Reihenfolge, wie sie aufgelistet werden, abgearbeitet.
+
+</BODY>
+</HTML>
\ No newline at end of file
<ul>
<li><b>:abbr</b>: Kürzt den Text, der von einem Feldnamen oder speziellen Feldmarken gebildet wird. Nur der erste Buchstabe und weitere Buchstaben, die auf ein Leerzeichen folgen, werden berücksichtigt. Zum Beispiel würde <b>[journal:abbr]</b> die Zeitschrift "Jorunal of Fish Biology" zu "JoFB" wandeln.<br>
<li><b>:lower</b>: Wandelt den von der Feldmarke eingefügten Text in Kleinbuchstaben. So wird beispielsweise bei <b>[auth:lower]</b> der Nachname des ersten Autors in Kleinbuchstaben ausgegeben.
+</ul>
<P>
Wenn Sie keine Key-Muster für einen bestimmten Eintragstyp angeben, wird das vorgegebene
Muster (default pattern) verwendet. Sie können das vorgegebene Muster natürlich ebenfalls
<blockquote> <code>Yared1998</code><BR> <code>Yared1998a</code><BR>
<code>Yared1998b</code> </blockquote>
-<h2>Ersetzen eines Regulären Ausdrucks</h2>
+<h2>Ersetzen eines regulären Ausdrucks</h2>
-Nachdem das Key-Muster angewendet wurde, um einen BibTeX-Key zu erstellen, können Sie den Key-Generator nach einem bestimmten Regulären Ausdruck suchen und ihn durch eine Zeichenfolge ersetzen lassen. Der Reguläre Ausdruck und die Zeichenfolge, die ihn ersetzen soll, werden in den Textfeldern unter der Liste der Key-Muster eingegeben.
+Nachdem das Key-Muster angewendet wurde, um einen BibTeX-Key zu erstellen, können Sie den Key-Generator nach einem bestimmten regulären Ausdruck suchen und ihn durch eine Zeichenfolge ersetzen lassen. Der reguläre Ausdruck und die Zeichenfolge, die ihn ersetzen soll, werden in den Textfeldern unter der Liste der Key-Muster eingegeben.
-Falls das Feld zur Ersetzung des Regulären Ausdrucks leer ist, werden die mit der Suche übereinstimmenden Regulären Ausdrücke einfach gelöscht.
+Falls das Feld zur Ersetzung des regulären Ausdrucks leer ist, werden die mit der Suche übereinstimmenden regulären Ausdrücke einfach gelöscht.
</font>
</BODY>
<H1>Einträge von Medline abrufen</H1>
+MEDLINE ist die wichtigste Datenbank der <em>U.S. National Library of Medicine</em>. Sie enthält Literaturangaben von Zeitschriftenartikeln der Lebenswissenschaften, vornehmlich der Biomedizin.
+<p>
JabRef kann Literaturangaben von der Medline-Datenbank herunterladen. Um diese Funktion
zu nutzen, wählen Sie <b>Extras -> Medline abrufen</b>, so dass der Medline-Dialog
im linken Seitenfeld erscheint.
<p><code>java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"</code>
-</HTML>
+</HTML>
\ No newline at end of file
Anschließend wählen Sie <b>Extras -> Literaturdatenbank</b>.
Ihre Datenbank sollte nun angezeigt werden.
-<h2>Die exportierte Datei als Bibliographiedatenbank in OpenOffice 2.0 (oder neuer) benutzen</h2>
-Gehen Sie folgendermaßen vor, um eine Tabelle, die von JabRef exportiert wurde, als Bibliographiedatenbank in OpenOffice.org zu benutzen:
-
-<ul>
- <li>Exportieren Sie Ihre Datenbank in das <b>.ods</b> -Format</li>
- <li>Starten Sie OpenOffice.org</li>
- <li>Wählen Sie <b>Extras -> Optionen -> OpenOffice.org Base -> Datenbanken</b></li>
- <li>Bearbeiten Sie die <i>Bibliography</i>-Datenbank und ändern ihren Namen z.B. in <i>Bibliographie-alt</i></li>
- <li>Schließen Sie das Fenster <b>Optionen</b> und gehen Sie zu <b>Datei -> Neu -> Datenbank</b></li>
- <li>Wählen Sie <b>Verbindung zu einer bestehenden Datenbank herstellen</b>, wählen <b>Tabellendokument</b> als
- Datenbanktyp und wählen die <b>.ods</b>-Datei, die Sie exportiert haben</li>
- <li>Klicken Sie auf <b>Fertig stellen</b> und wählen den Namen <i>Bibliography</i> im Speicherdialog</li>
-</ul>
-Anschließend wählen Sie <b>Extras -> Literaturdatenbank</b>. Ihre Datenbank sollte nun angezeigt werden.
-<p>
-
-<h2>Eine exportierte Datei als Datenbank in OpenOffice 1.1.x benutzen</h2>
-
- <ul>
- <li>Exportieren Sie Ihre Datei in das <b>.sxc</b>-Format</li>
- <li>Starten Sie OpenOffice.org</li>
- <li>Wählen Sie <b>Extras -> Datenquellen</b></li>
- <li>Wählen Sie die <i>Bibliography</i>-Datei und ändern ihren Namen z.B. in <i>Bibliographie-alt</i></li>. Drücken Sie <b>Anwenden</b>.
- <li>Klicken Sie <b>Neue Datenquelle</b>. Ein neuer Eintrag erscheint. Ändern Sie den Namen zu
- <i>Bibliography</i>.</li>
- <li>Ändern Sie den <b>Dateityp</b> zu <b>Tabelle</b>. Klicken Sie den <b>...</b>-Button
- in der Zeile <b>Datenquellen URL</b>. Wählen Sie die <b>.sxc</b>-Datei, die Sie exportiert haben.</li>
- <li>Klicken Sie auf <b>OK</b>, um das Fenster <b>Datenquellen</b> zu schließen.</li>
-</ul>
-Anschließend wählen Sie <b>Extras -> Literaturdatenbank</b>.
-Ihre Datenbank sollte nun angezeigt werden.
-
-</HTML>
+</HTML>
\ No newline at end of file
--- /dev/null
+<HTML>
+
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+
+<H1>Externer Zugriff</H1>
+
+Diese Funktion kann unter <b>Einstellungen -> Erweitert</b> eingestellt werden.
+
+<p><i>Beachten Sie, dass das Aktivieren dieser Funktion mit Windows XP SP2 (und möglicherweise auch mit anderen Konfigurationen) zu einer Meldung führen kann, die besagt, dass bestimmte Funktionen des Programms von der Windows-Firewall geblockt wurden. Sie können die Firewall anweisen, weiterhin zu blocken, denn die Firewall beeinträchtigt den Externen Zugriff von JabRef nicht.</i>
+
+<p>Falls das Abhören von externen Zugriffen aktiviert ist, versucht JabRef beim Programmstart, den entsprechenden Port abzuhören. Das bedeutet, dass andere Anwendungen Informationen durch diesen Port an JabRef senden können. JabRef akzeptiert dabei nur lokale Verbindungen, um das Risiko eines Eingriffs von außerhalb auszuschließen.
+
+<p>
+Mit dem externen Zugriff kann eine zweite Instanz von JabRef erkennen, dass eine erste Instanz bereits läuft. In diesem Fall leitet die zweite Instanz ihre Kommandozeilen-Optionen an die erste Instanz weiter und beendet sich selbst direkt im Anschluss - sofern die zweite Instanz nicht ausdrücklich instruiert wurde, im Stand-Alone-Modus (als selbständige Instanz) zu starten.
+
+<p>Die erste JabRef-Instanz liest die Kommandozeilenoptionen und führt die erforderlichen Aktionen aus, z.B. das Lesen oder Importieren einer Datei oder das Anhängen einer Datei an die aktive Datenbank. Falls eine Datei mit der Option <code>--importToOpen</code> importiert wird, werden die Einträge an die aktive Datei angehängt. Falls keine Datei geöffnet ist, wird eine neue Datei angelegt.
+
+
+
+</BODY>
+</HTML>
\ No newline at end of file
<H1>Suchfunktionen</H1>
-Es gibt drei verschiedene Suchmethoden in JabRef.
+<!--Es gibt drei verschiedene Suchmethoden in JabRef.-->
<p>
<em>STRG-F</em> öffnet oder aktiviert den Suchdialog. Drückt man mehrmals auf <em>STRG-F</em>, so werden die verschiedenen Suchmodi ausgewählt. Bei der direkten Suche springt man mit <em>STRG-F</em> zum nächsten Treffer.
Bei der direkten Suche sucht das Programm sofort, sobald Sie einen Buchstaben eingeben. Die Statuszeile informiert Sie über den Sucherfolg. Mit den Tastaturkürzeln wird das Programm dazu veranlasst, nach dem nächsten Vorkommen des aktuellen Suchbegriffs zu suchen. Falls es keine weiteren Vorkommen gibt, informiert die Statuszeile sie darüber. Bei erneuter Wiederholung startet die Suche vom Anfang der Datei. Die Suchreihenfolge richtet sich nach der aktuellen Sortierung Ihrer Datei. Um die direkte Suche zu verlassen, drücken Sie ESC oder klicken Sie auf "Zurücksetzen".
-<H2>Suche mit Markierung</H2>
+<H2>Normale Suche</H2>
-Wenn Sie die Suchoption "Markieren" wählen, sucht das Programm in Ihrer Datei nach allen Vorkommen ihres Suchbegriffs, sobald Sie auf ENTER drücken. Alle Treffer werden ausgewählt.
-
-<H2>Float-Suche</H2>
-
-Die Suche mit der Option "Float" ist ähnlich wie die Suche mit Markierung, nur dass die Treffer nicht ausgewählt, sondern an den Anfang der Tabelle sortiert werden. Einträge, die nicht mit dem Suchbegriff übereinstimmen, werden unter den Treffern aufgelistet und zusätzlich grau hinterlegt. Um die Anzeige der Suchergebnisse abzuschalten, drücken Sie ESC oder klicken auf "Zurücksetzen".
+Hierbei sucht das Programm nach allen Vorkommen der Wörter ihres Suchausdrucks, sobald Sie ENTER drücken. Nur Einträge, die alle Wörter enthalten, gelten als Treffer. Um nach festen Ausdrücken zu suchen, müssen Sie die Wörter in doppelte Anführungszeichen einfassen. Zum Beispiel findet die Suchanfrage <b>progress "marine acquaculture"</b> Einträge, die sowohl das wort "progress" als auch den Ausdruck "marine acquaculture" aufweisen. Alle Einträge, die keine Treffer sind, werden entweder ausgeblendet, so dass nur die Treffer sichtbar sind (Option <b>Filter</b>), oder sie werden grau dargestellt, während die Treffer oben angezeigt werden (Option <b>Oben einsortieren</b>). Um die Trefferanzeige zu beenden, drücken Sie ESC oder klicken auf die Schaltfläche <b>Zurücksetzen</b> im Suchen-Dialog.
<a name="advanced"><H2>Feldbezeichner und logische Operatoren</H2></a>
<p>
entrytype = thesis
<p>
-… findet z.B. Einträge, deren Typ (wie in der Spalte "Entrytype" dargestellt) das Wort "thesis" enthält (z.B. "phdthesis" und "mastersthesis"). Ebenso erlaubt das Pseudofeld "bibtexkey" die Suche nach BibTeX keys, z.B.:
+… findet z.B. Einträge, deren Typ (wie in der Spalte "Entrytype" dargestellt) das Wort "thesis" enthält (z.B. "phdthesis" und "mastersthesis"). Ebenso erlaubt das Pseudofeld "bibtexkey" die Suche nach BibTeX-Keys, z.B.:
<p>
bibtexkey = miller2005
--- /dev/null
+<HTML>
+
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+
+<H1>Unterstützung von XMP-Metadaten in JabRef</H1>
+<p>
+XMP ist ein Standard, der von Adobe Systems entwickelt wurde, um Metadaten (Daten, die Informationen über andere Daten enthalten) in Dateien zu speichern. Ein bekanntes Beispiel für Metadaten sind ID3-Tags, die zur Beschreibung von Künstlern, Albumtiteln und Liednamen einer MP3-Datei verwendet werden. Mit Hilfe von Metadaten können MP3-Dateien unabhängig von ihrem Dateinamen identifiziert und z.B. von MP3-Playern ausgelesen und angezeigt werden.
+</p>
+<p>
+Mit der XMP-Unterstützung versucht das JabRef-Team, die Vorteile von Metadaten in die Welt der Literaturmanager einzuführen.
+Sie können <b>XMP schreiben</b> im <b>Allgemein</b>-Tab des Eintragseditors wählen und damit alle BibTeX-Informationen in die verlinkte PDF-Datei schreiben. Wenn Sie diese PDF-Datei mit anderen austauschen, können diese die Datei in das JabRef-Fenster ziehen und haben damit alle Informationen zur Verfügung, die Sie eingegeben haben.
+</p>
+
+<H2>Benutzung</H2>
+
+Um die XMP-Funktionen in JabRef zu nutzen, gehen Sie folgendermaßen vor:
+
+<ul>
+ <li>Zum <i>Importieren einer einzelnen PDF-Datei mit Metadaten</i> wählen Sie <b>Datei -> Importieren in [neue|aktuelle] Datenbank</b> und im anschließenden Dialog als Dateiformat <b>PDF mit XMP-Anmerkungen</b> aus. Sie können die PDF-Datei stattdessen auch mit der Maus auf das Hauptfenster von JabRef ziehen.
+</li>
+ <li>Um <i>bibliographische Informationen in eine verlinkte PDF-Datei zu schreiben</i>, klicken Sie auf <b>XMP schreiben</b> im <b>Allgemein</b>-Tab des Eintragseditors.</li>
+ <li>Wenn Sie <i>alle PDFs einer Datei mit Metadaten versehen</i> wollen, wählen Sie <b>Extras -> XMP-Metadaten in PDFs schreiben</b>.</li>
+ <li>Um zu überprüfen, ob das Schreiben der Metadaten funktioniert hat, öffnen Sie die Datei in Adobe Acrobat und wählen <b>Datei -> Dokumenteigenschaften</b> und dann unter dem Reiter <b>Beschreibung</b> die Schaltfläche <b>Zusätzliche Metadaten</b>. Wenn Sie links "Erweitert" auswählen, sollten Sie im rechten Teil des Dialogs einen Eintrag "http://jabref.sourceforge.net/bibteXMP" sehen, der die entsprechenden Metadaten enthält. Dies geht nur mit dem Vollprogramm Adobe Acrobat, nicht mit dem Adobe Reader.</li>
+ <li>Wer kein Adobe Acrobat zur Verfügung hat, kann stattdessen das Programm <i>pdfinfo</i> verwenden, um die XMP-Metadaten zu überprüfen. <i>pdfinfo</i> ist Teil von Xpdf (<code>www.foolabs.com/xpdf</code>) und Poppler (<code>http://poppler.freedesktop.org</code>).</li>
+</ul>
+
+<h2>BibteXmp Dateiformat</h2>
+
+<p>
+XMP nutzt zum Speichern der Daten eine Teilmenge des <i>Resource Description Framework</i> (RDF). Für JabRef wird ein neues Metadatenformat benutzt, das BibTeX sehr gut abbildet. Alle Felder und Werte werden in Knoten eines XML-Dokuments verwandelt. Nur Autoren und Herausgeber werden als rdf:Seq-Strukturen gespeichert, so dass die trennenden 'and's weggelassen werden können. Alle Strings und crossrefs werden in den Metadaten aufgelöst.
+</p>
+<p>
+Das folgende einfache Minimal-Schema wird benutzt:
+</p>
+<p>
+<ul>
+ <li>Der BibTeX-Key wird als <code>bibtexkey</code> gespeichert.</li>
+ <li>Der Eintragstyp wird als <code>entrytype</code> gespeichert.</li>
+ <li><code>author</code> und <code>editor</code> sind kodiert als <code>rdf:Seq</code>s, wobei die einzelnen Autoren und Herausgeber als <code>rdf:li</code>s dargestellt werden.</li>
+ <li>Alle anderen Felder werden unter ihrem Feld-Namen gespeichert.</li>
+</ul>
+</p>
+<p>
+Es folgt ein Beispiel:
+</p>
+<pre>
+@INPROCEEDINGS{CroAnnHow05,
+ author = {Crowston, K. and Annabi, H. and Howison, J. and Masango, C.},
+ title = {Effective work practices for floss development: A model and propositions},
+ booktitle = {Hawaii International Conference On System Sciences (HICSS)},
+ year = {2005},
+ owner = {oezbek},
+ timestamp = {2006.05.29},
+ url = {http://james.howison.name/publications.html}
+}
+</pre>
+
+wird umgewandelt in
+
+<pre>
+<rdf:Description xmlns:bibtex="http://jabref.sourceforge.net/bibteXMP/"
+ bibtex:bibtexkey="CroAnnHow05"
+ bibtex:year="2005"
+ bibtex:title="Effective work practices for floss development: A model and propositions"
+ bibtex:owner="oezbek"
+ bibtex:url="http://james.howison.name/publications.html"
+ bibtex:booktitle="Hawaii International Conference On System Sciences (HICSS)"
+ bibtex:timestamp="2006.05.29">
+ <bibtex:author>
+ <rdf:Seq>
+ <rdf:li>K. Crowston</rdf:li>
+ <rdf:li>H. Annabi</rdf:li>
+ <rdf:li>J. Howison</rdf:li>
+ <rdf:li>C. Masango</rdf:li>
+ </rdf:Seq>
+ </bibtex:author>
+ <bibtex:entrytype>Inproceedings</bibtex:entrytype>
+</rdf:Description>
+</pre></td></tr>
+</table>
+
+<p>
+Beachten Sie die folgenden Warnungen, wenn Sie bibteXMP parsen möchten:
+</p>
+<p>
+<ul>
+ <li>In RDF können Attribut-Wert-Paare auch als Knoten wiedergegeben werden und vice versa.</li>
+</ul>
+</p>
+<H2>Weiterführende Links</H2>
+<p>
+Einige Links zu XMP und PDFs mit Anmerkungen (englisch):
+</p>
+<p>
+<ul>
+ <li><a href="http://freelancepropaganda.com/themp/">James Howison's Blog "Themp---Managing Academic Papers like MP3s"</a></li>
+ <li><a href="http://www.xml.com/pub/a/2004/09/22/xmp.html">XML.com-Artikel zu XMP</a></li>
+ <li><a href="http://jempbox.org">JempBox</a> und <a href="http://pdfbox.org">PDFBox</a> von Ben Litchfield (Java libraries zum Zugriff auf die PDFs und die Metadaten)</a></li>
+ <li><a href="http://episteme.arstechnica.com/eve/ubb.x/a/tpc/f/8300945231/m/377001889631">Gute Diskussion bei ArsTechnica zum Management von PDFs.</a></li>
+ <li><a href="http://partners.adobe.com/public/developer/en/xmp/sdk/xmpspecification.pdf">Adobe XMP Spezifikation</a></li>
+</ul>
+</p>
+</body>
+</HTML>
\ No newline at end of file
<CENTER>
<H1>JabRef version @version@</H1>
-(c) 2006
+(c) 2007
<p>
<img src="/images/JabRef-icon-48.png"></img>
Guillaume Gardey,
Cyrille d'Haese,
Raik Nagel,
+Christopher Oezbek,
Ellen Reitmayr,
Gert Renckens,
Andreas Rudert,
Jörg Zieren
<H2>Contributions de :</H2>
+Michael Beckmann,
+Oliver Böckmann,
Kolja Brix,
Frédéric Darboux,
Fabrice Dessaint,
Martin Kähmer,
Ervin Kolenovic,
Krzysztof A. Kościuszkiewicz,
+Christian Kopf,
Jeffrey Kuhn,
Alex Montgomery,
-Christopher Oezbek,
+Ambrogio Oliva,
John Relph,
+Hannes Restel,
Moritz Ringler,
+Andreas Rudert,
Mark Schenk,
Rudolf Seemann,
Toralf Senger,
+Manuel Siebeneicher
Mike Smoot,
+Ulrich Stärk,
Martin Stolle,
David Weitzman,
Seb Wills,
(<code>http://www.everaldo.com</code>), qui est distribuée sous les termes de la
Lesser General Public License.
+<P>
+JabRef utilise les bibliothèques JempBox et PDFBox pour gérer manipuler les PDF, les deux étant
+ées sous une licence de style BSD.
+
</CENTER>
</BODY>
</HTML>
JabRef peut exporter des bases de données dans des fichiers
lisibles par EndNote. Pour utiliser cette fonction,
-choisissez <b>Fichier -> Exporter -> EndNote</b>, et
+choisissez <b>Outils -> EndNote</b>, et
spécifiez le nom du fichier d'exportation.
<h2>Importer dans EndNote</h2>
la fenêtre principale, allez dans l'onglet "General" et cliquer sur "Ecrire XMP".</li>
<li>Si vous voulez <b>annoter tous les PDFs dans une base de données déterminée</b> vous pouvez sélectionner "Outils -> Ecrire XMP pour la base de données"</li>
<li>Pour vérifier si cela a fonctionné, vous pouvez ouvrir le PDF dans Adobe Acrobat et sélectionner
- "Fichier -> Propriétés du Document -> Métadonnées additionnelles -> Avancé". Dans l'arborescence sur la droite vous devriez voir une entrée nommée "http://purl.org/net/bibteXMP".
+ "Fichier -> Propriétés du Document -> Métadonnées additionnelles -> Avancé".
+ Dans l'arborescence sur la droite vous devriez voir une entrée nommée "http://purl.org/net/bibteXMP".
+ Cela fonctionne uniquement avec Adobe Acrobat, et pas avec Adobe Reader.</li>
+ <li>Si vous n'avez pas Adobe Acrobat, vous pouvez utiliser <i>pdfinfo</i> à la place afin de voir les métadonnées XMP. <i>pdfinfo</i> fait partie de Xpdf (<code>www.foolabs.com/xpdf</code>) et Poppler (<code>http://poppler.freedesktop.org</code>).</li>
+
+
+
+
+
</ul>
<h2>Format de fichier BibteXmp</h2>
</table>
<p>
-Faites attention aux pièges suivants si vous essayer de traiter les métadonnées bibtexXMP :
+Faites attention aux pièges suivants si vous essayez de traiter les métadonnées bibtexXMP :
</p>
<p>
<ul>
public boolean readyToClose() {
try {
- int size = Integer.parseInt(remoteServerPort.getText());
+ Integer.parseInt(remoteServerPort.getText());
return true; // Ok, the number was legal.
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog
}
+ public String getTabName() {
+ return Globals.lang("Advanced");
+ }
+
}
package net.sf.jabref;
-import java.util.Vector;
-import javax.swing.*;
-import javax.swing.table.*;
-import java.awt.*;
-import java.awt.event.*;
-import com.jgoodies.forms.layout.*;
-import com.jgoodies.forms.factories.*;
-import com.jgoodies.forms.builder.*;
+import java.awt.BorderLayout;
+import java.awt.Font;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
import net.sf.jabref.gui.ColorSetupPanel;
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
+
class AppearancePrefsTab extends JPanel implements PrefsTab {
JabRefPreferences _prefs;
public boolean readyToClose() {
try {
// Test if font size is a number:
- int size = Integer.parseInt(fontSize.getText());
-
+ Integer.parseInt(fontSize.getText());
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog
(null, Globals.lang("You must enter an integer value in the text field for") + " '" +
}
+ public String getTabName() {
+ return Globals.lang("Appearance");
+ }
}
});
- actions.put("exportToClipboard", new AbstractWorker() {
- String message = null;
- public void run() {
- if (mainTable.getSelected().size() == 0) {
- message = Globals.lang("No entries selected")+".";
- getCallBack().update();
- return;
- }
-
- // Make a list of possible formats:
- Map formats = new HashMap();
- formats.put("BibTeXML", "bibtexml");
- formats.put("DocBook", "docbook");
- formats.put("HTML", "html");
- formats.put("RTF (Harvard)", "harvard/harvard");
- formats.put("Simple HTML", "simplehtml");
- for (int i = 0; i < Globals.prefs.customExports.size(); i++) {
- Object o = (Globals.prefs.customExports.getElementAt(i))[0];
- formats.put(o, o);
- }
- Object[] array = formats.keySet().toArray();
- Arrays.sort(array);
- JList list = new JList(array);
- list.setBorder(BorderFactory.createEtchedBorder());
- list.setSelectionInterval(0,0);
- list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- int answer =
- JOptionPane.showOptionDialog(frame, list, Globals.lang("Select format"),
- JOptionPane.YES_NO_OPTION,
- JOptionPane.QUESTION_MESSAGE, null,
- new String[] {Globals.lang("Ok"), Globals.lang("Cancel")},
- Globals.lang("Ok"));
-
- if (answer == JOptionPane.NO_OPTION)
- return;
-
- String lfName = (String)(formats.get(list.getSelectedValue()));
- final boolean custom = (list.getSelectedIndex() >= Globals.STANDARD_EXPORT_COUNT);
- String dir = null;
- if (custom) {
- int index = list.getSelectedIndex()-Globals.STANDARD_EXPORT_COUNT;
- dir = (String)(Globals.prefs.customExports.getElementAt(index)[1]);
- File f = new File(dir);
- lfName = f.getName();
- lfName = lfName.substring(0, lfName.indexOf("."));
- // Remove file name - we want the directory only.
- dir = f.getParent()+System.getProperty("file.separator");
- }
- final String format = lfName,
- directory = dir;
-
- try {
- BibtexEntry[] bes = mainTable.getSelectedEntries();
- StringWriter sw = new StringWriter();
- System.out.println("actual export to clipboard not implemented...");
- //FileActions.exportEntries(database, bes, format, custom, directory, sw);
- ClipboardOwner owner = new ClipboardOwner() {
- public void lostOwnership(Clipboard clipboard, Transferable content) {}
- };
- //StringSelection ss = new StringSelection(sw.toString());
- RtfSelection rs = new RtfSelection(sw.toString());
- Toolkit.getDefaultToolkit().getSystemClipboard()
- .setContents(rs, owner);
- message = Globals.lang("Entries exported to clipboard")+": "+bes.length;
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
- public void update() {
- output(message);
- }
-
- });
-
+ actions.put("exportToClipboard", new ExportToClipboardAction(frame, database()));
+
actions.put("writeXMP", new WriteXMPAction(this));
actions.put("abbreviateIso", new AbbreviateAction(this, true));
//Util.pr("File '"+file.getPath()+"' has been modified.");
updatedExternally = true;
+ final ChangeScanner scanner = new ChangeScanner(frame, BasePanel.this);
+
// Adding the sidepane component is Swing work, so we must do this in the Swing
// thread:
Thread t = new Thread() {
- public void run() {
- // Test: running scan automatically in background
- ChangeScanner scanner = new ChangeScanner(frame, BasePanel.this);
- scanner.changeScan(BasePanel.this.getFile());
- try {
- scanner.join();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- if (scanner.changesFound()) {
- FileUpdatePanel pan = new FileUpdatePanel(frame, BasePanel.this,
- sidePaneManager, getFile(), scanner);
- sidePaneManager.register("fileUpdate", pan);
- sidePaneManager.show("fileUpdate");
- setUpdatedExternally(false);
- //scanner.displayResult();
- } else {
- setUpdatedExternally(false);
- //System.out.println("No changes found.");
- }
-
- }
- };
- SwingUtilities.invokeLater(t);
+ public void run() {
+
+ // Check if there is already a notification about external
+ // changes:
+ boolean hasAlready = sidePaneManager.hasComponent(FileUpdatePanel.NAME);
+ if (hasAlready) {
+ sidePaneManager.hideComponent(FileUpdatePanel.NAME);
+ sidePaneManager.unregisterComponent(FileUpdatePanel.NAME);
+ }
+ FileUpdatePanel pan = new FileUpdatePanel(frame, BasePanel.this,
+ sidePaneManager, getFile(), scanner);
+ sidePaneManager.register(FileUpdatePanel.NAME, pan);
+ sidePaneManager.show(FileUpdatePanel.NAME);
+ setUpdatedExternally(false);
+ //scanner.displayResult();
+ }
+ };
+
+ // Test: running scan automatically in background
+ scanner.changeScan(BasePanel.this.getFile());
+ try {
+ scanner.join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if (scanner.changesFound()) {
+ SwingUtilities.invokeLater(t);
+ } else {
+ setUpdatedExternally(false);
+ //System.out.println("No changes found.");
+ }
}
public void fileRemoved() {
return frame.groupSelector;
}
-}
\ No newline at end of file
+}
// Search and grouping status is stored in boolean fields for quick reference:
private boolean searchHit, groupHit;
+ public BibtexEntry(){
+ this(Util.createNeutralId());
+ }
+
public BibtexEntry(String id)
{
this(id, BibtexEntryType.OTHER);
source.setText(srcString);
lastSourceStringAccepted = srcString;
} catch (IOException ex) {
- source.setText("Error: " + ex.getMessage() + "\n\n" + "Correct the entry, and "
- + "reopen editor to display/edit source.");
+ source.setText(ex.getMessage() + "\n\n" +
+ Globals.lang("Correct the entry, and "
+ + "reopen editor to display/edit source."));
source.setEditable(false);
}
import java.awt.event.*;
import java.io.File;
+/**
+ *
+ *
+ * @version $Revision: 1.6 $ ($Date: 2007/01/22 23:00:47 $)
+ * @deprecated Use ExternalTab instead.
+ */
class ExternalProgramsTab extends JPanel implements PrefsTab {
JabRefPreferences _prefs;
return true;
}
+ public String getTabName() {
+ return Globals.lang("External programs");
+ }
}
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
-import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
JabRefFrame _frame;
- // private JComboBox language = new
- // JComboBox(GUIGlobals.LANGUAGES.keySet().toArray());
JTextField pdfDir, regExpTextField, psDir, pdf, ps, html, lyx, winEdt, citeCommand;
ItemListener regExpListener;
return true;
}
+ public String getTabName() {
+ return Globals.lang("External programs");
+ }
}
* Current Version:
*
* @author $Author: coezbek $
- * @version $Revision: 1.5 $ ($Date: 2006/09/02 00:03:48 $)
+ * @version $Revision: 1.6 $ ($Date: 2006/12/17 23:50:07 $)
*
* TODO: Testcases
*
f2 = e2.getField(field);
}
+ /*
+ * [ 1598777 ] Month sorting
+ *
+ * http://sourceforge.net/tracker/index.php?func=detail&aid=1598777&group_id=92314&atid=600306
+ */
+ int localMultiplier = multiplier;
+ if (isMonthField)
+ localMultiplier = -localMultiplier;
+
// Catch all cases involving null:
if (f1 == null)
- return f2 == null ? 0 : multiplier;
+ return f2 == null ? 0 : localMultiplier;
if (f2 == null)
- return -multiplier;
+ return -localMultiplier;
// Now we now that both f1 and f2 are != null
if (isNameField) {
*/
f1 = new Integer(Util.getMonthNumber((String)f1));
f2 = new Integer(Util.getMonthNumber((String)f2));
- // Somehow this is twisted
- multiplier = -multiplier;
}
int result = 0;
result = ours.compareTo(theirs);
}
- return result * multiplier;
+ return result * localMultiplier;
}
/**
return true;
}
+ public String getTabName() {
+ return Globals.lang("General");
+ }
}
public static SidePaneManager sidePaneManager;
public static final String NEWLINE = System.getProperty("line.separator");
+ public static final int NEWLINE_LENGTH = System.getProperty("line.separator").length();
/**
* true if we have unix newlines
translation = key;
// Thread.dumpStack(); // For debugging
- logger("Warning: could not get translation for \"" + key + "\"");
+ //logger("Warning: could not get translation for \"" + key + "\"");
}
if ((translation != null) && (translation.length() != 0)) {
translation = translation.replaceAll("_", " ");
// According to ISO 8859-1 the "\times" symbol should be placed here
// (#215).
// Omitting this, because it is a mathematical symbol.
- HTMLCHARS.put("O", "&OSlash;"); // #216
+ HTMLCHARS.put("O", "Ø"); // #216
HTMLCHARS.put("`U", "Ù"); // #217
HTMLCHARS.put("'U", "Ú"); // #218
HTMLCHARS.put("^U", "Û"); // #219
// According to ISO 8859-1 the "\times" symbol should be placed here
// (#215).
// Omitting this, because it is a mathematical symbol.
- RTFCHARS.put("O", "\\u216O"); // "OSlash"
+ RTFCHARS.put("O", "\\u216O"); // "Oslash"
// RTFCHARS.put("`U", "\\u217"); // "Ugrave" exists in standard
// codepage
RTFCHARS.put("'U", "\\u218U"); // "Uacute"
public JabRef(String[] args) {
- ths = this;
+ ths = this;
+
+ // The following two lines signal that the system proxy settings should be used:
+ System.setProperty("java.net.useSystemProxies", "true");
+ System.getProperties().put( "proxySet", "true" );
+
JabRefPreferences prefs = JabRefPreferences.getInstance();
Globals.prefs = prefs;
Globals.setLanguage(prefs.get("language"), "");
JLabel statusLine = new JLabel("", SwingConstants.LEFT), statusLabel = new JLabel(Globals
.lang("Status")
+ ":", SwingConstants.LEFT);
+ JProgressBar progressBar = new JProgressBar();
// SearchManager searchManager = new SearchManager(ths, prefs);
public void run() {
output(Globals.lang("Opening preferences..."));
if (prefsDialog == null) {
- prefsDialog = new PrefsDialog3(ths, prefs);
- Util.placeDialog(prefsDialog, ths);
+ prefsDialog = new PrefsDialog3(JabRefFrame.this);
+ Util.placeDialog(prefsDialog, JabRefFrame.this);
}
else
prefsDialog.setValues();
}
}
if (baseAt(i).getFile() != null) {
- filenames.add(baseAt(i).getFile().getPath());
+ filenames.add(baseAt(i).getFile().getAbsolutePath());
}
}
}
prefs.putInt("sizeX", ths.getSize().width);
prefs.putInt("sizeY", ths.getSize().height);
prefs.putBoolean("searchPanelVisible", sidePaneManager.isComponentVisible("search"));
-
+ // Store divider location for side pane:
+ int width = contentPane.getDividerLocation();
+ if (width > 0)
+ prefs.putInt("sidePaneWidth", width);
if (prefs.getBoolean("openLastEdited")) {
// Here we store the names of allcurrent filea. If
// there is no current file, we remove any
}
}
+
private void initLayout() {
tabbedPane.putClientProperty(Options.NO_CONTENT_BORDER_KEY, Boolean.TRUE);
+ setProgressBarVisible(false);
+
pushExternalButton = new PushToApplicationButton(this,
PushToApplicationButton.applications);
fillMenu();
status.add(statusLabel);
con.weightx = 1;
con.insets = new Insets(0, 4, 0, 0);
- con.gridwidth = GridBagConstraints.REMAINDER;
+ con.gridwidth = 1;
gbl.setConstraints(statusLine, con);
status.add(statusLine);
+ con.weightx = 0;
+ con.gridwidth = GridBagConstraints.REMAINDER;
+ gbl.setConstraints(progressBar, con);
+ status.add(progressBar);
+ con.weightx = 1;
con.gridwidth = GridBagConstraints.REMAINDER;
statusLabel.setForeground(GUIGlobals.validFieldColor.darker());
con.insets = new Insets(0, 0, 0, 0);
tools.add(abbreviateMedline);
tools.add(unabbreviate);
+ // TODO: Temporary for 2.2 release: we should perhaps find a better solution:
+ tools.addSeparator();
+ tools.add(new ExpandEndnoteFilters(ths));
+
mb.add(tools);
web.add(fetchMedline);
}
+ /** Set the visibility of the progress bar in the right end of the
+ * status line at the bottom of the frame.
+ *
+ * If not called on the event dispatch thread, this method uses
+ * SwingUtilities.invokeLater() to do the actual operation on the EDT.
+ */
+ public void setProgressBarVisible(final boolean visible) {
+ if (SwingUtilities.isEventDispatchThread())
+ progressBar.setVisible(visible);
+ else SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ progressBar.setVisible(visible);
+ }
+ });
+ }
+
+
+ /**
+ * Sets the current value of the progress bar.
+ *
+ * If not called on the event dispatch thread, this method uses
+ * SwingUtilities.invokeLater() to do the actual operation on the EDT.
+ */
+ public void setProgressBarValue(final int value) {
+ if (SwingUtilities.isEventDispatchThread())
+ progressBar.setValue(value);
+ else SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ progressBar.setValue(value);
+ }
+ });
+
+ }
+
+ /**
+ * Sets the maximum value of the progress bar. Always call this method
+ * before using the progress bar, to set a maximum value appropriate to
+ * the task at hand.
+ *
+ * If not called on the event dispatch thread, this method uses
+ * SwingUtilities.invokeLater() to do the actual operation on the EDT.
+ */
+ public void setProgressBarMaximum(final int value) {
+ if (SwingUtilities.isEventDispatchThread())
+ progressBar.setMaximum(value);
+ else SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ progressBar.setMaximum(value);
+ }
+ });
+
+
+ }
class SaveSessionAction
extends MnemonicAwareAction {
// Override isOpaque() to prevent the glasspane from hiding the window contents:
public boolean isOpaque() { return false; }
}
-}
\ No newline at end of file
+}
defaults.put("terDescending", Boolean.FALSE);
defaults.put("columnNames", "entrytype;author;title;year;journal;owner;timestamp;bibtexkey");
defaults.put("columnWidths","75;280;400;60;100;100;100;100");
+ defaults.put("xmpPrivacyFilters", "pdf;timestamp;keywords;owner;note;review");
+ defaults.put("useXmpPrivacyFilter", Boolean.FALSE);
defaults.put("numberColWidth",new Integer(GUIGlobals.NUMBER_COL_LENGTH));
defaults.put("workingDirectory", System.getProperty("user.home"));
defaults.put("exportWorkingDirectory", System.getProperty("user.home"));
defaults.put("useNativeFileDialogOnMac", Boolean.TRUE);
defaults.put("lastUsedExport", null);
+ defaults.put("sidePaneWidth", new Integer(-1));
+
//defaults.put("tempDir", System.getProperty("java.io.tmpdir"));
//Util.pr(System.getProperty("java.io.tempdir"));
defKeyBinds.put("Abbreviate", "ctrl alt A");
defKeyBinds.put("Unabbreviate", "ctrl alt shift A");
defKeyBinds.put("Search IEEXplore", "F8");
+ defKeyBinds.put("Fetch ArXiv.org", "shift F8");
defKeyBinds.put("Write XMP", "ctrl F4");
//defKeyBinds.put("Select value", "ctrl B");
}
private void wrapStringBuffer(StringBuffer sb, int lineLength) {
- for (int i=lineLength; i<sb.length(); i+=lineLength+1) {
+ for (int i=lineLength; i<sb.length(); i+=lineLength+Globals.NEWLINE_LENGTH) {
sb.insert(i, Globals.NEWLINE);
}
}
tlb.add(new AddRowAction());
tlb.add(new DeleteRowAction());
tlb.add(new HelpAction(helpDialog, GUIGlobals.nameFormatterHelp,
- Globals.lang("Help on Name Formatting"), GUIGlobals.getIconUrl("helpSmall")));
+ "Help on Name Formatting", GUIGlobals.getIconUrl("helpSmall")));
tabPanel.add(tlb, BorderLayout.EAST);
public boolean readyToClose() {
return true;
}
+
+ public String getTabName() {
+ return Globals.lang("Name formatter");
+ }
}
import javax.swing.*;
import javax.swing.table.*;
+
/**
* Preferences dialog. Contains a TabbedPane, and tabs will be defined
* in separate classes. Tabs MUST implement the PrefsTab interface,
/*
-Copyright (C) 2003 JabRef project
+ Copyright (C) 2003 JabRef project
-All programs in this directory and
-subdirectories are published under the GNU General Public License as
-described below.
+ All programs in this directory and
+ subdirectories are published under the GNU General Public License as
+ described below.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
-your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or (at
+ your option) any later version.
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-USA
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA
-Further information about the GNU GPL is available at:
-http://www.gnu.org/copyleft/gpl.ja.html
+ Further information about the GNU GPL is available at:
+ http://www.gnu.org/copyleft/gpl.ja.html
-*/
+ */
package net.sf.jabref;
import net.sf.jabref.groups.GroupsPrefsTab;
import net.sf.jabref.gui.MainTable;
+
import com.jgoodies.forms.builder.ButtonBarBuilder;
/**
- * Preferences dialog. Contains a TabbedPane, and tabs will be defined
- * in separate classes. Tabs MUST implement the PrefsTab interface,
- * since this dialog will call the storeSettings() method of all tabs
- * when the user presses ok.
- *
+ * Preferences dialog. Contains a TabbedPane, and tabs will be defined in
+ * separate classes. Tabs MUST implement the PrefsTab interface, since this
+ * dialog will call the storeSettings() method of all tabs when the user presses
+ * ok.
+ *
* With this design, it should be very easy to add new tabs later.
- *
+ *
*/
public class PrefsDialog3 extends JDialog {
- private JabRefPreferences _prefs;
- JPanel upper = new JPanel(),
- lower = new JPanel(),
- main = new JPanel();/* {
- public void add(Component c, Object o) {
- super.add(c, o);
- System.out.println(o+" "+c.getPreferredSize());
- }
- };*/
- JList chooser;
- JButton importPrefs = new JButton(Globals.lang("Import preferences")),
- exportPrefs = new JButton(Globals.lang("Export preferences"));
- CardLayout cardLayout = new CardLayout();
- HashMap panels = new HashMap();
- JabRefFrame frame;
- PrefsDialog3 ths = this;
-
- public PrefsDialog3(JabRefFrame parent, JabRefPreferences prefs) {
- super(parent, Globals.lang("JabRef preferences"), false);
- _prefs = prefs;
- frame = parent;
- getContentPane().setLayout(new BorderLayout());
- getContentPane().add(upper, BorderLayout.CENTER);
- getContentPane().add(lower, BorderLayout.SOUTH);
-
- // ----------------------------------------------------------------
- // Add tabs to tabbed here. Remember, tabs must implement PrefsTab.
- // ----------------------------------------------------------------
- String
- GEN = Globals.lang("General"),
- APP = Globals.lang("Appearance"),
- GRP = Globals.lang("Groups"), // JZTODO lyrics
- EXT = Globals.lang("External programs"),
- TAB = Globals.lang("Entry table"),
- COL = Globals.lang("Entry table columns"),
- KEY = Globals.lang("Key pattern"),
- PRE = Globals.lang("Entry preview"),
- //JOU = Globals.lang("Journal names"),
- ADV = Globals.lang("Advanced"),
- NAM = Globals.lang("Name formatter");
-
- ArrayList al = new ArrayList();
- al.add(GEN);
- al.add(APP);
- al.add(GRP);
- al.add(EXT);
- al.add(TAB);
- al.add(COL);
- al.add(KEY);
- //al.add(JOU);
- al.add(PRE);
- al.add(ADV);
- al.add(NAM);
-
- main.setLayout(cardLayout);
-
- main.add(new GeneralTab(frame, _prefs), GEN);
- main.add(new AdvancedTab(_prefs, parent.helpDiag), ADV);
- main.add(new GroupsPrefsTab(_prefs), GRP);
- main.add(new AppearancePrefsTab(_prefs), APP);
- main.add(new ExternalTab(frame, _prefs, parent.helpDiag), EXT);
- main.add(new TablePrefsTab(_prefs, parent), TAB);
- main.add(new TableColumnsTab(_prefs, parent), COL);
- main.add(new TabLabelPattern(_prefs, parent.helpDiag), KEY);
- main.add(new PreviewPrefsTab(_prefs), PRE);
- main.add(new NameFormatterTab(parent.helpDiag), NAM);
-
- //main.add(new ManageJournalsPanel(frame), JOU);
-
- upper.setBorder(BorderFactory.createEtchedBorder());
-
- chooser = new JList(al.toArray());
- chooser.setBorder(BorderFactory.createEtchedBorder());
- // Set a prototype value to control the width of the list:
- chooser.setPrototypeCellValue("This should be wide enough");
- chooser.setSelectedIndex(0);
- chooser.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-
- // Add the selection listener that will show the correct panel when selection changes:
- chooser.addListSelectionListener(new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
- if (e.getValueIsAdjusting())
- return;
- String o = (String)chooser.getSelectedValue();
- cardLayout.show(main, o);
- }
- });
-
- JPanel one = new JPanel(), two = new JPanel();
- one.setLayout(new BorderLayout());
- two.setLayout(new BorderLayout());
- one.add(chooser, BorderLayout.CENTER);
- one.add(importPrefs, BorderLayout.SOUTH);
- two.add(one, BorderLayout.CENTER);
- two.add(exportPrefs, BorderLayout.SOUTH);
- upper.setLayout(new BorderLayout());
- upper.add(two, BorderLayout.WEST);
- upper.add(main, BorderLayout.CENTER);
-
-
- JButton
- ok = new JButton(Globals.lang("Ok")),
- cancel = new JButton(Globals.lang("Cancel"));
- ok.addActionListener(new OkAction());
- CancelAction cancelAction = new CancelAction();
- cancel.addActionListener(cancelAction);
- lower.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
- ButtonBarBuilder bb = new ButtonBarBuilder(lower);
- bb.addGlue();
- bb.addGridded(ok);
- bb.addGridded(cancel);
- bb.addGlue();
- //lower.add(ok);
- //lower.add(cancel);
-
- // Key bindings:
- ActionMap am = chooser.getActionMap();
- InputMap im = chooser.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
- im.put(frame.prefs().getKey("Close dialog"), "close");
- am.put("close", cancelAction);
-
- // Import and export actions:
- exportPrefs.setToolTipText(Globals.lang("Export preferences to file"));
- importPrefs.setToolTipText(Globals.lang("Import preferences from file"));
- exportPrefs.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String filename = Globals.getNewFile
- (frame, new File(System.getProperty("user.home")),
- ".xml", JFileChooser.SAVE_DIALOG, false);
- if (filename == null)
- return;
- File file = new File(filename);
- if (!file.exists() ||
- (JOptionPane.showConfirmDialog
- (ths, "'"+file.getName()+"' "+Globals.lang("exists. Overwrite file?"),
- Globals.lang("Export preferences"), JOptionPane.OK_CANCEL_OPTION)
- == JOptionPane.OK_OPTION)) {
-
- try {
- _prefs.exportPreferences(filename);
- } catch (IOException ex) {
- JOptionPane.showMessageDialog
- (ths, Globals.lang("Could not export preferences")+": "+ex.getMessage(), Globals.lang("Export preferences"), JOptionPane.ERROR_MESSAGE);
- //ex.printStackTrace();
- }
- }
-
- }
- });
-
- importPrefs.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String filename = Globals.getNewFile
- (frame, new File(System.getProperty("user.home")),
- ".xml", JFileChooser.OPEN_DIALOG, false);
- if (filename == null)
- return;
-
- try {
- _prefs.importPreferences(filename);
- setValues();
- BibtexEntryType.loadCustomEntryTypes(_prefs);
- frame.removeCachedEntryEditors();
- } catch (IOException ex) {
- JOptionPane.showMessageDialog
- (ths, Globals.lang("Could not import preferences")+": "+ex.getMessage(), Globals.lang("Import preferences"), JOptionPane.ERROR_MESSAGE);
- //ex.printStackTrace();
- }
- }
-
-
- });
-
- setValues();
-
- pack(); //setSize(440, 500);
- }
-
- class OkAction extends AbstractAction {
- public OkAction() {
- super("Ok");
- }
- public void actionPerformed(ActionEvent e) {
-
- AbstractWorker worker = new AbstractWorker() {
- boolean ready = true;
- public void run() {
- // First check that all tabs are ready to close:
- int count = main.getComponentCount();
- Component[] comps = main.getComponents();
- for (int i = 0; i < count; i++) {
- if (!((PrefsTab)comps[i]).readyToClose()) {
- ready = false;
- return; // If not, break off.
- }
- }
- // Then store settings and close:
- for (int i = 0; i < count; i++) {
- ( (PrefsTab)comps[i]).storeSettings();
- }
- Globals.prefs.flush();
- //try { Thread.sleep(3000); } catch (InterruptedException ex) {}
- }
- public void update() {
- if (!ready)
- return;
- setVisible(false);
- MainTable.updateRenderers();
- frame.setupAllTables();
- frame.groupSelector.revalidateGroups(); // icons may have changed
- frame.output(Globals.lang("Preferences recorded."));
- }
- };
- worker.getWorker().run();
- worker.getCallBack().update();
-
- }
- }
-
- public void setValues() {
- // Update all field values in the tabs:
- int count = main.getComponentCount();
- Component[] comps = main.getComponents();
- for (int i = 0; i < count; i++) {
- ((PrefsTab)comps[i]).setValues();
- }
- }
-
- class CancelAction extends AbstractAction {
- public CancelAction() {
- super("Cancel");
-
- }
- public void actionPerformed(ActionEvent e) {
- setVisible(false);
- // Just close dialog without recording changes.
- /*(new Thread() {
- public void run() {
-
- }
- }).start();*/
- }
- }
+ JPanel main;
+
+ JabRefFrame frame;
+
+ public PrefsDialog3(JabRefFrame parent) {
+ super(parent, Globals.lang("JabRef preferences"), false);
+ final JabRefPreferences prefs = JabRefPreferences.getInstance();
+ frame = parent;
+
+ final JList chooser;
+
+ JButton importPrefs = new JButton(Globals.lang("Import preferences"));
+ JButton exportPrefs = new JButton(Globals.lang("Export preferences"));
+
+ main = new JPanel();
+ JPanel upper = new JPanel();
+ JPanel lower = new JPanel();
+
+ getContentPane().setLayout(new BorderLayout());
+ getContentPane().add(upper, BorderLayout.CENTER);
+ getContentPane().add(lower, BorderLayout.SOUTH);
+
+ final CardLayout cardLayout = new CardLayout();
+ main.setLayout(cardLayout);
+
+ // ----------------------------------------------------------------
+ // Add tabs to tabbed here. Remember, tabs must implement PrefsTab.
+ // ----------------------------------------------------------------
+ ArrayList tabs = new ArrayList();
+ tabs.add(new GeneralTab(frame, prefs));
+ tabs.add(new GroupsPrefsTab(prefs));
+ tabs.add(new AppearancePrefsTab(prefs));
+ tabs.add(new ExternalTab(frame, prefs, parent.helpDiag));
+ tabs.add(new TablePrefsTab(prefs, parent));
+ tabs.add(new TableColumnsTab(prefs, parent));
+ tabs.add(new TabLabelPattern(prefs, parent.helpDiag));
+ tabs.add(new PreviewPrefsTab(prefs));
+ tabs.add(new NameFormatterTab(parent.helpDiag));
+ tabs.add(new XmpPrefsTab());
+ tabs.add(new AdvancedTab(prefs, parent.helpDiag));
+
+ Iterator it = tabs.iterator();
+ String[] names = new String[tabs.size()];
+ int i = 0;
+ while (it.hasNext()) {
+ PrefsTab tab = (PrefsTab) it.next();
+ names[i++] = tab.getTabName();
+ main.add((Component) tab, tab.getTabName());
+ }
+
+ upper.setBorder(BorderFactory.createEtchedBorder());
+
+ chooser = new JList(names);
+ chooser.setBorder(BorderFactory.createEtchedBorder());
+ // Set a prototype value to control the width of the list:
+ chooser.setPrototypeCellValue("This should be wide enough");
+ chooser.setSelectedIndex(0);
+ chooser.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+
+ // Add the selection listener that will show the correct panel when
+ // selection changes:
+ chooser.addListSelectionListener(new ListSelectionListener() {
+ public void valueChanged(ListSelectionEvent e) {
+ if (e.getValueIsAdjusting())
+ return;
+ String o = (String) chooser.getSelectedValue();
+ cardLayout.show(main, o);
+ }
+ });
+
+ JPanel one = new JPanel(), two = new JPanel();
+ one.setLayout(new BorderLayout());
+ two.setLayout(new BorderLayout());
+ one.add(chooser, BorderLayout.CENTER);
+ one.add(importPrefs, BorderLayout.SOUTH);
+ two.add(one, BorderLayout.CENTER);
+ two.add(exportPrefs, BorderLayout.SOUTH);
+ upper.setLayout(new BorderLayout());
+ upper.add(two, BorderLayout.WEST);
+ upper.add(main, BorderLayout.CENTER);
+
+ JButton ok = new JButton(Globals.lang("Ok")), cancel = new JButton(Globals.lang("Cancel"));
+ ok.addActionListener(new OkAction());
+ CancelAction cancelAction = new CancelAction();
+ cancel.addActionListener(cancelAction);
+ lower.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
+ ButtonBarBuilder bb = new ButtonBarBuilder(lower);
+ bb.addGlue();
+ bb.addGridded(ok);
+ bb.addGridded(cancel);
+ bb.addGlue();
+ // lower.add(ok);
+ // lower.add(cancel);
+
+ // Key bindings:
+ ActionMap am = chooser.getActionMap();
+ InputMap im = chooser.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ im.put(frame.prefs().getKey("Close dialog"), "close");
+ am.put("close", cancelAction);
+
+ // Import and export actions:
+ exportPrefs.setToolTipText(Globals.lang("Export preferences to file"));
+ importPrefs.setToolTipText(Globals.lang("Import preferences from file"));
+ exportPrefs.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ String filename = Globals.getNewFile(frame, new File(System
+ .getProperty("user.home")), ".xml", JFileChooser.SAVE_DIALOG, false);
+ if (filename == null)
+ return;
+ File file = new File(filename);
+ if (!file.exists()
+ || (JOptionPane.showConfirmDialog(PrefsDialog3.this, "'" + file.getName()
+ + "' " + Globals.lang("exists. Overwrite file?"), Globals
+ .lang("Export preferences"), JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION)) {
+
+ try {
+ prefs.exportPreferences(filename);
+ } catch (IOException ex) {
+ JOptionPane.showMessageDialog(PrefsDialog3.this, Globals
+ .lang("Could not export preferences")
+ + ": " + ex.getMessage(), Globals.lang("Export preferences"),
+ JOptionPane.ERROR_MESSAGE);
+ // ex.printStackTrace();
+ }
+ }
+
+ }
+ });
+
+ importPrefs.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ String filename = Globals.getNewFile(frame, new File(System
+ .getProperty("user.home")), ".xml", JFileChooser.OPEN_DIALOG, false);
+ if (filename == null)
+ return;
+
+ try {
+ prefs.importPreferences(filename);
+ setValues();
+ BibtexEntryType.loadCustomEntryTypes(prefs);
+ frame.removeCachedEntryEditors();
+ } catch (IOException ex) {
+ JOptionPane.showMessageDialog(PrefsDialog3.this, Globals
+ .lang("Could not import preferences")
+ + ": " + ex.getMessage(), Globals.lang("Import preferences"),
+ JOptionPane.ERROR_MESSAGE);
+ // ex.printStackTrace();
+ }
+ }
+
+ });
+
+ setValues();
+
+ pack(); // setSize(440, 500);
+ }
+
+ class OkAction extends AbstractAction {
+ public OkAction() {
+ super("Ok");
+ }
+
+ public void actionPerformed(ActionEvent e) {
+
+ AbstractWorker worker = new AbstractWorker() {
+ boolean ready = true;
+
+ public void run() {
+ // First check that all tabs are ready to close:
+ int count = main.getComponentCount();
+ Component[] comps = main.getComponents();
+ for (int i = 0; i < count; i++) {
+ if (!((PrefsTab) comps[i]).readyToClose()) {
+ ready = false;
+ return; // If not, break off.
+ }
+ }
+ // Then store settings and close:
+ for (int i = 0; i < count; i++) {
+ ((PrefsTab) comps[i]).storeSettings();
+ }
+ Globals.prefs.flush();
+ // try { Thread.sleep(3000); } catch (InterruptedException
+ // ex) {}
+ }
+
+ public void update() {
+ if (!ready)
+ return;
+ setVisible(false);
+ MainTable.updateRenderers();
+ frame.setupAllTables();
+ frame.groupSelector.revalidateGroups(); // icons may have
+ // changed
+ frame.output(Globals.lang("Preferences recorded."));
+ }
+ };
+ worker.getWorker().run();
+ worker.getCallBack().update();
+
+ }
+ }
+
+ public void setValues() {
+ // Update all field values in the tabs:
+ int count = main.getComponentCount();
+ Component[] comps = main.getComponents();
+ for (int i = 0; i < count; i++) {
+ ((PrefsTab) comps[i]).setValues();
+ }
+ }
+
+ class CancelAction extends AbstractAction {
+ public CancelAction() {
+ super("Cancel");
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ setVisible(false);
+ }
+ }
}
package net.sf.jabref;
-
+/**
+ * A prefsTab is a component displayed in the PreferenceDialog.
+ *
+ * It needs to extend from Component.
+ *
+ * @author $Author: coezbek $
+ * @version $Revision: 1.5 $ ($Date: 2007/01/22 23:00:47 $)
+ *
+ */
public interface PrefsTab {
/**
*/
public boolean readyToClose();
+ /**
+ * Should return the localized identifier to use for the tab.
+ *
+ * @return Identifier for the tab (for instance "General", "Appearance" or "External Files").
+ */
+ public String getTabName();
}
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.RenderingHints.Key;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyVetoException;
+import java.beans.VetoableChangeListener;
import java.io.IOException;
import java.io.StringReader;
* @version $Revision: 1.15 $ ($Date: 2006/09/03 19:09:59 $)
*
*/
-public class PreviewPanel extends JEditorPane {
+public class PreviewPanel extends JEditorPane implements VetoableChangeListener {
public String CONTENT_TYPE = "text/html";
public PreviewPanel(BibtexDatabase database, MetaData metaData, BibtexEntry entry, String layoutFile) {
this(metaData, layoutFile);
this.database = database;
- this.entry = entry;
+ setEntry(entry);
try {
readLayout();
}
public void setEntry(BibtexEntry newEntry) {
- entry = newEntry;
- try {
- readLayout();
- update();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
+ if (newEntry != entry) {
+ if (entry != null)
+ entry.removePropertyChangeListener(this);
+ newEntry.addPropertyChangeListener(this);
+ }
+ entry = newEntry;
+ try {
+ readLayout();
+ update();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
}
public void update() {
super.paintComponent(g2);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, hint);
}
+
+ /**
+ * The PreviewPanel has registered itself as an event listener with the currently displayed
+ * BibtexEntry. If the entry changes, an event is received here, and we can update the
+ * preview immediately.
+ */
+ public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException {
+ /*if (entry != null)
+ System.out.println("Updating: "+entry.getCiteKey());*/
+
+ update();
+ }
}
return true;
}
+ public String getTabName() {
+ return Globals.lang("Entry preview");
+ }
+
}
pan.add(help);
main.add(pan);
main.setBorder(BorderFactory.createEmptyBorder(1,1,1,1));
- add(main, BorderLayout.CENTER);
+
+ setContent(main);
searchField.getInputMap().put(Globals.prefs.getKey("Repeat incremental search"),
"repeat");
* Manages visibility of SideShowComponents in a given newly constructed
* sidePane.
*
- * @version $Revision: 1.20 $ ($Date: 2006/08/30 00:04:12 $)
+ * @version $Revision: 1.22 $ ($Date: 2007/01/25 17:46:57 $)
*
*/
public class SidePaneManager {
}
});
sidep = new SidePane();
+ sidep.setVisible(false);
}
public SidePane getPanel() {
}
public synchronized boolean hasComponent(String name) {
- return (components.get("name") != null);
+ return (components.get(name) != null);
}
public boolean isComponentVisible(String name) {
}
}
+ public synchronized void hideComponent(String name) {
+ SidePaneComponent comp = (SidePaneComponent)components.get(name);
+ if (comp == null)
+ return;
+ if (visible.contains(comp)) {
+ comp.componentClosing();
+ visible.remove(comp);
+ updateView();
+ }
+ }
+
+ public synchronized void unregisterComponent(String name) {
+ components.remove(name);
+ }
+
+
+
/**
* Update all side pane components to show information from the given
* BasePanel.
if (visible.size() > 0) {
boolean wasVisible = sidep.isVisible();
sidep.setVisible(true);
- if (!wasVisible)
- frame.contentPane.setDividerLocation(getPanel().getPreferredSize().width);
- } else
- sidep.setVisible(false);
+ if (!wasVisible) {
+ int width = Globals.prefs.getInt("sidePaneWidth");
+ if (width > 0)
+ frame.contentPane.setDividerLocation(width);
+ else
+ frame.contentPane.setDividerLocation(getPanel().getPreferredSize().width);
+ }
+ } else {
+ if (sidep.isVisible())
+ Globals.prefs.putInt("sidePaneWidth", frame.contentPane.getDividerLocation());
+ sidep.setVisible(false);
+
+ }
}
public void revalidate() {
private JCheckBox dontOverwrite = new JCheckBox(Globals.lang("Do not overwrite existing keys")),
warnBeforeOverwriting = new JCheckBox(Globals.lang("Warn before overwriting existing keys")),
- generateOnSave = new JCheckBox(Globals.lang("Generate keys before saving (for entries without a key)"));
+ generateOnSave = new JCheckBox(Globals.lang("Generate keys before saving (for entries without a key)")),
+ autoGenerateOnImport = new JCheckBox(Globals.lang("Generate keys for imported entries"));
private JLabel lblEntryType, lblKeyPattern;
//Globals.prefs.put("basenamePatternReplacement", basenamePatternReplacement.getText());
Globals.prefs.put("KeyPatternRegex", KeyPatternRegex.getText());
Globals.prefs.put("KeyPatternReplacement", KeyPatternReplacement.getText());
+ Globals.prefs.putBoolean("generateKeysAfterInspection", autoGenerateOnImport.isSelected());
Globals.prefs.putBoolean("generateKeysBeforeSaving", generateOnSave.isSelected());
LabelPatternUtil.updateDefaultPattern();
DefaultFormBuilder builder = new DefaultFormBuilder(layout);
builder.appendSeparator(Globals.lang("Key generator settings"));
+ builder.nextLine();
+ builder.append(pan);
+ builder.append(autoGenerateOnImport);
builder.nextLine();
builder.append(pan);
builder.append(warnBeforeOverwriting);
defaultPat.setText(Globals.prefs.get("defaultLabelPattern"));
dontOverwrite.setSelected(Globals.prefs.getBoolean("avoidOverwritingKey"));
generateOnSave.setSelected(Globals.prefs.getBoolean("generateKeysBeforeSaving"));
+ autoGenerateOnImport.setSelected(Globals.prefs.getBoolean("generateKeysAfterInspection"));
warnBeforeOverwriting.setSelected(Globals.prefs.getBoolean("warnBeforeOverwritingKey"));
// Warning before overwriting is only relevant if overwriting can happen:
warnBeforeOverwriting.setEnabled(!dontOverwrite.isSelected());
//basenamePatternRegex.setText(Globals.prefs.get("basenamePatternRegex"));
//basenamePatternReplacement.setText(Globals.prefs.get("basenamePatternReplacement"));
}
+
+ public String getTabName() {
+ return Globals.lang("Key pattern");
+ }
}
package net.sf.jabref;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
import java.util.Vector;
-import javax.swing.*;
-import javax.swing.table.*;
-import java.awt.*;
-import java.awt.event.*;
-import com.jgoodies.forms.layout.*;
-import com.jgoodies.forms.factories.*;
-import com.jgoodies.forms.builder.*;
+
+import javax.swing.AbstractAction;
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JToolBar;
+import javax.swing.SwingConstants;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.TableColumnModel;
+import javax.swing.table.TableModel;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
class TableColumnsTab extends JPanel implements PrefsTab {
JabRefPreferences _prefs;
- private String[] _choices;
private boolean tableChanged = false;
private JTable colSetup;
private int rowCount = -1, ncWidth = -1;
private Vector tableRows = new Vector(10);
- private Font font = GUIGlobals.CURRENTFONT, menuFont;
private JabRefFrame frame;
- private int oldMenuFontSize;
class TableRow {
String name;
("1dlu, 8dlu, left:pref, 4dlu, fill:pref",//, 4dlu, fill:60dlu, 4dlu, fill:pref",
"");
DefaultFormBuilder builder = new DefaultFormBuilder(layout);
- JLabel lab;
JPanel pan = new JPanel();
-
-
JPanel tabPanel = new JPanel();
tabPanel.setLayout(new BorderLayout());
JScrollPane sp = new JScrollPane
return true;
}
-}
-
- /*
- Boolean[] sel = new Boolean[GUIGlobals.ALL_FIELDS.length];
- boolean found;
- _choices = GUIGlobals.ALL_FIELDS;
- _sel = sel;
- String[] columns = prefs.getStringArray("columnNames");
- for (int i=0; i<_choices.length; i++) {
- found = false;
- for (int j=0; j<columns.length; j++)
- if (columns[j].equals(_choices[i]))
- found = true;
- if (found)
- sel[i] = new Boolean(true);
- else
- sel[i] = new Boolean(false);
- }
-
- TableModel tm = new AbstractTableModel() {
- public int getRowCount() { return (_choices.length-1)/2; }
- public int getColumnCount() { return 4; }
- public Object getValueAt(int row, int column) {
- switch (column) {
- case 0:
- return _choices[row];
- case 1:
- return _sel[row];
- case 2:
- return _choices[getRowCount()+row];
- case 3:
- return _sel[getRowCount()+row];
- }
- return null; // Unreachable.
- }
- public Class getColumnClass(int column) {
- if ((column == 0) || (column == 2)) return String.class;
- else return Boolean.class;
- }
- public boolean isCellEditable(int row, int col) {
- if ((col == 1) || (col == 3)) return true;
- else return false;
- }
- public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
- if (columnIndex == 1)
- _sel[rowIndex] = (Boolean)aValue;
- if (columnIndex == 3)
- _sel[getRowCount()+rowIndex] = (Boolean)aValue;
- }
-
- };
-
- JTable table = new JTable(tm);
- table.setRowSelectionAllowed(false);
- table.setColumnSelectionAllowed(false);
- //table.getInputMap().put(GUIGlobals.exitDialog, "close");
- //table.getActionMap().put("close", new CancelAction());
- JPanel
- tablePanel = new JPanel(),
- innerTablePanel = new JPanel();
-
- table.setShowVerticalLines(false);
- innerTablePanel.setBorder(BorderFactory.createEtchedBorder());
- //innerTablePanel.setBorder(BorderFactory.createLoweredBevelBorder());
- innerTablePanel.add(table);
- tablePanel.add(innerTablePanel);
-
-
- TableColumnModel cm = table.getColumnModel();
- cm.getColumn(0).setPreferredWidth(90);
- cm.getColumn(1).setPreferredWidth(25);
- cm.getColumn(2).setPreferredWidth(90);
- cm.getColumn(3).setPreferredWidth(25);
- */
+ public String getTabName() {
+ return Globals.lang("Entry table columns");
+ }
+}
\ No newline at end of file
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
+
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;
return true;
}
-}
-
-/*
- * Boolean[] sel = new Boolean[GUIGlobals.ALL_FIELDS.length]; boolean found;
- * _choices = GUIGlobals.ALL_FIELDS; _sel = sel; String[] columns =
- * prefs.getStringArray("columnNames"); for (int i=0; i<_choices.length; i++) {
- * found = false; for (int j=0; j<columns.length; j++) if
- * (columns[j].equals(_choices[i])) found = true; if (found) sel[i] = new
- * Boolean(true); else sel[i] = new Boolean(false); }
- *
- * TableModel tm = new AbstractTableModel() { public int getRowCount() { return
- * (_choices.length-1)/2; } public int getColumnCount() { return 4; } public
- * Object getValueAt(int row, int column) { switch (column) { case 0: return
- * _choices[row]; case 1: return _sel[row]; case 2: return
- * _choices[getRowCount()+row]; case 3: return _sel[getRowCount()+row]; } return
- * null; // Unreachable. } public Class getColumnClass(int column) { if ((column ==
- * 0) || (column == 2)) return String.class; else return Boolean.class; } public
- * boolean isCellEditable(int row, int col) { if ((col == 1) || (col == 3))
- * return true; else return false; } public void setValueAt(Object aValue, int
- * rowIndex, int columnIndex) { if (columnIndex == 1) _sel[rowIndex] =
- * (Boolean)aValue; if (columnIndex == 3) _sel[getRowCount()+rowIndex] =
- * (Boolean)aValue; } };
- *
- * JTable table = new JTable(tm); table.setRowSelectionAllowed(false);
- * table.setColumnSelectionAllowed(false);
- * //table.getInputMap().put(GUIGlobals.exitDialog, "close");
- * //table.getActionMap().put("close", new CancelAction()); JPanel tablePanel =
- * new JPanel(), innerTablePanel = new JPanel();
- *
- * table.setShowVerticalLines(false);
- * innerTablePanel.setBorder(BorderFactory.createEtchedBorder());
- * //innerTablePanel.setBorder(BorderFactory.createLoweredBevelBorder());
- * innerTablePanel.add(table); tablePanel.add(innerTablePanel);
- *
- *
- * TableColumnModel cm = table.getColumnModel();
- * cm.getColumn(0).setPreferredWidth(90); cm.getColumn(1).setPreferredWidth(25);
- * cm.getColumn(2).setPreferredWidth(90); cm.getColumn(3).setPreferredWidth(25);
- */
+ public String getTabName() {
+ return Globals.lang("Entry table");
+ }
+}
\ No newline at end of file
// modified : - r.nagel 20.04.2006
// make the DateFormatter abstract and splitt the easyDate methode
// (now we cannot change the dateformat dynamicly, sorry)
-
package net.sf.jabref;
import java.awt.BorderLayout;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
import java.util.SortedSet;
import java.util.StringTokenizer;
import java.util.TreeSet;
* @version 1.0
*/
public class Util {
- // A static Object for date formatting. Please do not create the object
- // here,
- // because there are some references from the Globals class.....
+
+ /**
+ * A static Object for date formatting. Please do not create the object
+ * here, because there are some references from the Globals class.....
+ *
+ */
private static SimpleDateFormat dateFormatter = null;
- // Colors are defined here.
+ /*
+ * Colors are defined here.
+ *
+ */
public static Color fieldsCol = new Color(180, 180, 200);
- // Integer values for indicating result of duplicate check (for entries):
+ /*
+ * Integer values for indicating result of duplicate check (for entries):
+ *
+ */
final static int TYPE_MISMATCH = -1, NOT_EQUAL = 0, EQUAL = 1, EMPTY_IN_ONE = 2,
EMPTY_IN_TWO = 3;
public synchronized static String createNeutralId() {
return idFormat.format(idCounter++);
- // return String.valueOf(idCounter++);
}
/**
* references are enclosed in a pair of '#' characters.
*/
public static String parseField(String content) {
+
if (content.length() == 0)
return content;
- String toSet = "";
- boolean string;
- // Keeps track of whether the next item is
- // a reference to a string, or normal content. First we must
- // check which we begin with. We simply check if we can find
- // a '#' before either '"' or '{'.
- int hash = content.indexOf('#'), wr1 = content.indexOf('"'), wr2 = content.indexOf('{'), end = content
- .length();
- if (hash == -1)
- hash = end;
- if (wr1 == -1)
- wr1 = end;
- if (wr2 == -1)
- wr2 = end;
- string = ((wr1 == end) && (wr2 == end)) || (hash < Math.min(wr1, wr2));
-
- // System.out.println("FileLoader: "+content+" "+string+" "+hash+"
- // "+wr1+" "+wr2);
- StringTokenizer tok = new StringTokenizer(content, "#", true);
- // 'tok' splits at the '#' sign, and keeps delimiters
-
- while (tok.hasMoreTokens()) {
- String str = tok.nextToken();
- if (str.equals("#"))
- string = !string;
- else {
- if (string) {
- // This part should normally be a string, but if it's
+
+ String[] strings = content.split("#");
+ StringBuffer result = new StringBuffer();
+ for (int i = 0; i < strings.length; i++){
+ String s = strings[i].trim();
+ if (s.length() > 0){
+ char c = s.charAt(0);
+ // String reference or not?
+ if (c == '{' || c == '"'){
+ result.append(shaveString(strings[i]));
+ } else {
+ // This part should normally be a string reference, but if it's
// a pure number, it is not.
- String s = shaveString(str);
+ String s2 = shaveString(s);
try {
- Integer.parseInt(s);
+ Integer.parseInt(s2);
// If there's no exception, it's a number.
- toSet = toSet + s;
+ result.append(s2);
} catch (NumberFormatException ex) {
- toSet = toSet + "#" + shaveString(str) + "#";
+ // otherwise append with hashes...
+ result.append("#").append(s2).append("#");
}
+ }
+ }
+ }
+ return result.toString();
+ }
- } else
- toSet = toSet + shaveString(str);
+ /**
+ * Will return the publication date of the given bibtex entry in conformance
+ * to ISO 8601, i.e. either YYYY or YYYY-MM.
+ *
+ * @param entry
+ * @return will return the publication date of the entry or null if no year
+ * was found.
+ */
+ public static String getPublicationDate(BibtexEntry entry) {
+
+ Object o = entry.getField("year");
+ if (o == null)
+ return null;
+
+ String year = toFourDigitYear(o.toString());
+
+ o = entry.getField("month");
+ if (o != null) {
+ int month = Util.getMonthNumber(o.toString());
+ if (month != -1) {
+ return year + "-" + (month + 1 < 10 ? "0" : "") + (month + 1);
}
}
- return toSet;
+ return year;
}
public static String shaveString(String s) {
}
}
s = s.substring(beg, end);
- // Util.pr(s);
return s;
}
// Find the default directory for this field type:
String dir = metaData.getFileDirectory(fieldName);
-
- File file = expandFilename(link, new String[]{dir, "."});
+
+ File file = expandFilename(link, new String[] { dir, "." });
// Check that the file exists:
if ((file == null) || !file.exists()) {
} catch (IOException e) {
System.err.println("An error occured on the command: "
+ Globals.prefs.get("htmlviewer") + " " + link);
- } catch (URISyntaxException e2) {
- e2.printStackTrace();
}
} else if (fieldName.equals("ps")) {
try {
* String[] spl = link.split("\\\\"); StringBuffer sb = new
* StringBuffer(); for (int i = 0; i < spl.length; i++) { if
* (i > 0) sb.append("\\"); if (spl[i].indexOf(" ") >= 0)
- * spl[i] = "\"" + spl[i] + "\""; sb.append(spl[i]);
- * } //pr(sb.toString()); link = sb.toString();
+ * spl[i] = "\"" + spl[i] + "\""; sb.append(spl[i]); }
+ * //pr(sb.toString()); link = sb.toString();
*
* String cmd = "cmd.exe /c start " + link;
*
// Find the default directory for this field type, if any:
String dir = metaData.getFileDirectory(extension);
if (dir != null) {
- File tmp = expandFilename(link, new String[]{dir, "."});
+ File tmp = expandFilename(link, new String[] { dir, "." });
if (tmp != null)
file = tmp;
}
if (link.startsWith("doi:"))
link = Globals.DOI_LOOKUP_PREFIX + link;
- try {
- link = sanitizeUrl(link);
- } catch (URISyntaxException ex) {
- ex.printStackTrace();
- }
+ link = sanitizeUrl(link);
if (Globals.ON_MAC) {
String[] cmd = { "/usr/bin/open", "-a", Globals.prefs.get("htmlviewer"), link };
* Make sure an URL is "portable", in that it doesn't contain bad characters
* that break the open command in some OSes.
*
+ * Old Version can be found in CVS version 114 of Util.java.
+ *
* @param link
* The URL to sanitize.
* @return Sanitized URL
*/
- public static String sanitizeUrl(String link) throws URISyntaxException {
- String scheme = "http";
- String ssp;
- if (link.indexOf("//") > 0)
- ssp = "//" + link.substring(2 + link.indexOf("//"));
- else
- ssp = "//" + link;
+ public static String sanitizeUrl(String link) {
+
+ link = link.replaceAll("\\+", "%2B");
- // The following is an ugly hack to fix the problem where a %20 in the
- // original string (correct encoding of a space) gets returned as %2520
- // because the URI constructor doesn't recognize that the % is the start of
- // a sequence. The problem is that other such sequences will meet the same fate.
- // If we need to take care of all these up front, we might as well not use URI
- // at all.
- // Another option is to do two times, hiding the %xx sequences in one of them,
- // and see if one of the URLs looks good...
- ssp = ssp.replaceAll("%20", " ");
+ try {
+ link = URLDecoder.decode(link, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ }
- URI uri = new URI(scheme, ssp, null);
- return uri.toASCIIString();
+ /**
+ * Fix for: [ 1574773 ] sanitizeUrl() breaks ftp:// and file:///
+ *
+ * http://sourceforge.net/tracker/index.php?func=detail&aid=1574773&group_id=92314&atid=600306
+ */
+ try {
+ return new URI(null, link, null).toASCIIString();
+ } catch (URISyntaxException e) {
+ return link;
+ }
}
/**
*
* The search pattern will be read from the preferences.
*
- * The [extension]-tags in this pattern will be replace by the given extension parameter.
+ * The [extension]-tags in this pattern will be replace by the given
+ * extension parameter.
*
*/
public static String findPdf(BibtexEntry entry, String extension, String directory) {
- return findPdf(entry, extension, new String[]{directory});
+ return findPdf(entry, extension, new String[] { directory });
}
/**
public static String findPdf(BibtexEntry entry, String extension, String[] directories) {
String regularExpression;
- if (Globals.prefs.getBoolean(JabRefPreferences.USE_REG_EXP_SEARCH_KEY)){
+ if (Globals.prefs.getBoolean(JabRefPreferences.USE_REG_EXP_SEARCH_KEY)) {
regularExpression = Globals.prefs.get(JabRefPreferences.REG_EXP_SEARCH_EXPRESSION_KEY);
} else {
- regularExpression = Globals.prefs.get(JabRefPreferences.DEFAULT_REG_EXP_SEARCH_EXPRESSION_KEY);
+ regularExpression = Globals.prefs
+ .get(JabRefPreferences.DEFAULT_REG_EXP_SEARCH_EXPRESSION_KEY);
}
regularExpression = regularExpression.replaceAll("\\[extension\\]", extension);
-
+
return findFile(entry, null, directories, regularExpression, true);
}
-
-
+
/**
* Searches the given directory and file name pattern for a file for the
* bibtexentry.
* http://sourceforge.net/tracker/index.php?func=detail&aid=1503410&group_id=92314&atid=600309
*
* Requirements:
- *
* - Be able to find the associated PDF in a set of given directories.
- *
- * - Be able to return a relative path or absolute path.
- *
+ * - Be able to return a relative path or absolute path.
* - Be fast.
- *
* - Allow for flexible naming schemes in the PDFs.
*
* Syntax scheme for file:
* <ul>
- * <li>* Any subDir</li>
- * <li>** Any subDir (recursiv)</li>
- * <li>[key] Key from bibtex file and database</li>
- * <li>.* Anything else is taken to be a Regular expression.</li>
+ * <li>* Any subDir</li>
+ * <li>** Any subDir (recursiv)</li>
+ * <li>[key] Key from bibtex file and database</li>
+ * <li>.* Anything else is taken to be a Regular expression.</li>
* </ul>
*
* @param entry
* @param database
* non-null
* @param directory
- * A set of root directories to start the search from.
- * Paths are returned relative to these directories if
- * relative is set to true. These directories will not
- * be expanded or anything. Use the file attribute for
- * this.
+ * A set of root directories to start the search from. Paths are
+ * returned relative to these directories if relative is set to
+ * true. These directories will not be expanded or anything. Use
+ * the file attribute for this.
* @param file
* non-null
- *
+ *
* @param relative
* whether to return relative file paths or absolute ones
*
public static String findFile(BibtexEntry entry, BibtexDatabase database, String[] directory,
String file, boolean relative) {
- for (int i = 0; i < directory.length; i++){
-
+ for (int i = 0; i < directory.length; i++) {
+
String result = findFile(entry, database, directory[i], file, relative);
- if (result != null){
+ if (result != null) {
return result;
}
}
}
public static ArrayList parseMethodsCalls(String calls) throws RuntimeException {
-
+
ArrayList result = new ArrayList();
-
+
char[] c = calls.toCharArray();
-
+
int i = 0;
-
- while (i < c.length){
-
+
+ while (i < c.length) {
+
int start = i;
- if (Character.isJavaIdentifierStart(c[i])){
+ if (Character.isJavaIdentifierStart(c[i])) {
i++;
- while (i < c.length && (Character.isJavaIdentifierPart(c[i]) || c[i] == '.')){
+ while (i < c.length && (Character.isJavaIdentifierPart(c[i]) || c[i] == '.')) {
i++;
}
- if (i < c.length && c[i] == '('){
-
+ if (i < c.length && c[i] == '(') {
+
String method = calls.substring(start, i);
-
- i++; i++;
-
+
+ i++;
+ i++;
+
int startParam = i;
i++;
-
- while (i + 1 < c.length && !(c[i] == '"' && c[i+1] == ')')){
+
+ while (i + 1 < c.length && !(c[i] == '"' && c[i + 1] == ')')) {
i++;
}
-
+
String param = calls.substring(startParam, i);
-
- result.add(new String[]{method, param});
+
+ result.add(new String[] { method, param });
} else {
String method = calls.substring(start, i);
- result.add(new String[]{method});
+ result.add(new String[] { method });
}
}
i++;
}
-
+
return result;
}
-
-
+
/**
- * Accepts a string like [author:toLowerCase("escapedstring"),toUpperCase], whereas the first
- * string signifies the bibtex-field to get while the others are the names
- * of layouters that will be applied.
+ * Accepts a string like [author:toLowerCase("escapedstring"),toUpperCase],
+ * whereas the first string signifies the bibtex-field to get while the
+ * others are the names of layouters that will be applied.
*
* @param fieldAndFormat
* @param entry
fieldAndFormat = stripBrackets(fieldAndFormat);
int colon = fieldAndFormat.indexOf(':');
-
+
String beforeColon, afterColon;
- if (colon == -1){
+ if (colon == -1) {
beforeColon = fieldAndFormat;
afterColon = null;
} else {
beforeColon = fieldAndFormat.substring(0, colon);
- afterColon = fieldAndFormat.substring(colon+1);
+ afterColon = fieldAndFormat.substring(colon + 1);
}
beforeColon = beforeColon.trim();
-
- if (beforeColon.length() == 0){
+
+ if (beforeColon.length() == 0) {
return null;
}
-
+
String fieldValue = getField(beforeColon, entry, database);
if (fieldValue == null)
/**
* Convenience function for absolute search.
- *
- * Uses findFile(BibtexEntry, BibtexDatabase, (String)null, String, false).
+ *
+ * Uses findFile(BibtexEntry, BibtexDatabase, (String)null, String, false).
*/
- public static String findFile(BibtexEntry entry, BibtexDatabase database, String file){
- return findFile(entry, database, (String)null, file, false);
- }
-
+ public static String findFile(BibtexEntry entry, BibtexDatabase database, String file) {
+ return findFile(entry, database, (String) null, file, false);
+ }
+
/**
* Internal Version of findFile, which also accepts a current directory to
* base the search on.
*
*/
- public static String findFile(BibtexEntry entry,
- BibtexDatabase database, String directory, String file, boolean relative) {
+ public static String findFile(BibtexEntry entry, BibtexDatabase database, String directory,
+ String file, boolean relative) {
File root;
- if (directory == null){
+ if (directory == null) {
root = new File(".");
} else {
root = new File(directory);
}
if (!root.exists())
return null;
-
+
String found = findFile(entry, database, root, file);
-
- if (directory == null || !relative){
+
+ if (directory == null || !relative) {
return found;
}
-
- if (found != null){
+
+ if (found != null) {
try {
/**
* [ 1601651 ] PDF subdirectory - missing first character
*
* http://sourceforge.net/tracker/index.php?func=detail&aid=1601651&group_id=92314&atid=600306
*/
- return found.substring(root.getCanonicalPath().length());
+ // Changed by M. Alver 2007.01.04:
+ // Remove first character if it is a directory separator character:
+ String tmp = found.substring(root.getCanonicalPath().length());
+ if ((tmp.length() > 1) && (tmp.charAt(0) == File.separatorChar))
+ tmp = tmp.substring(1);
+ return tmp;
+ //return found.substring(root.getCanonicalPath().length());
} catch (IOException e) {
return null;
}
}
return null;
}
-
+
/**
- * The actual work-horse. Will find absolute filepaths starting from the given directory using the given regular expression string for search.
+ * The actual work-horse. Will find absolute filepaths starting from the
+ * given directory using the given regular expression string for search.
*/
- protected static String findFile(BibtexEntry entry,
- BibtexDatabase database, File directory, String file) {
+ protected static String findFile(BibtexEntry entry, BibtexDatabase database, File directory,
+ String file) {
- if (file.startsWith("/")){
+ if (file.startsWith("/")) {
directory = new File(".");
file = file.substring(1);
}
-
+
// Escape handling...
Matcher m = Pattern.compile("([^\\\\])\\\\([^\\\\])").matcher(file);
StringBuffer s = new StringBuffer();
m.appendTail(s);
file = s.toString();
String[] fileParts = file.split("/");
-
+
if (fileParts.length == 0)
return null;
-
- if (fileParts.length > 1){
+
+ if (fileParts.length > 1) {
for (int i = 0; i < fileParts.length - 1; i++) {
- String dirToProcess = fileParts[i];
-
+ String dirToProcess = fileParts[i];
+
dirToProcess = expandBrackets(dirToProcess, entry, database);
if (dirToProcess.matches("^.:$")) { // Windows Drive Letter
for (int sub = 0; sub < subDirs.length; sub++) {
if (subDirs[sub].isDirectory()) {
- String result = findFile(entry, database,
- subDirs[sub], restOfFileString);
+ String result = findFile(entry, database, subDirs[sub],
+ restOfFileString);
if (result != null)
return result;
}
return null;
}
- final Pattern toMatch = Pattern.compile(dirToProcess.replaceAll("\\\\\\\\", "\\\\"));
+ final Pattern toMatch = Pattern
+ .compile(dirToProcess.replaceAll("\\\\\\\\", "\\\\"));
File[] matches = directory.listFiles(new FilenameFilter() {
public boolean accept(File arg0, String arg1) {
// Last step check if the given file can be found in this directory
String filenameToLookFor = expandBrackets(fileParts[fileParts.length - 1], entry, database);
- final Pattern toMatch = Pattern.compile("^" + filenameToLookFor.replaceAll("\\\\\\\\", "\\\\") + "$");
+ final Pattern toMatch = Pattern.compile("^"
+ + filenameToLookFor.replaceAll("\\\\\\\\", "\\\\") + "$");
File[] matches = directory.listFiles(new FilenameFilter() {
public boolean accept(File arg0, String arg1) {
* Converts a relative filename to an absolute one, if necessary. Returns
* null if the file does not exist.
*
- * Will look in each of the given dirs starting from the beginning and returning the first found file to match if any.
+ * Will look in each of the given dirs starting from the beginning and
+ * returning the first found file to match if any.
*/
public static File expandFilename(String name, String[] dir) {
-
+
for (int i = 0; i < dir.length; i++) {
File result = expandFilename(name, dir[i]);
- if (result != null){
+ if (result != null) {
return result;
}
}
-
+
return null;
}
-
+
/**
* Converts a relative filename to an absolute one, if necessary. Returns
* null if the file does not exist.
return (s.equals("0") || (s.indexOf(Globals.prefs.WRAPPED_USERNAME) >= 0));
}
- /**
- * Set a given field to a given value for all entries in a Collection.
- * This method DOES NOT update any UndoManager, but returns a relevant
- * CompoundEdit that should be registered by the caller.
- *
- * @param entries The entries to set the field for.
- * @param field The name of the field to set.
- * @param text The value to set. This value can be null, indicating that the
- * field should be cleared.
- * @param overwriteValues Indicate whether the value should be set even if
- * an entry already has the field set.
- * @return A CompoundEdit for the entire operation.
- */
- public static UndoableEdit massSetField(Collection entries,
- String field, String text,
- boolean overwriteValues) {
-
- NamedCompound ce = new NamedCompound(Globals.lang("Set field"));
- for (Iterator i = entries.iterator(); i.hasNext();) {
- BibtexEntry entry = (BibtexEntry) i.next();
- Object oldVal = entry.getField(field);
- // If we are not allowed to overwrite values, check if there is a nonempty
- // value already for this entry:
- if (!overwriteValues && (oldVal != null) && (((String)oldVal).length() > 0))
- continue;
- if (text != null)
- entry.setField(field, text);
- else
- entry.clearField(field);
- ce.addEdit(new UndoableFieldChange(entry, field, oldVal, text));
- }
- ce.end();
- return ce;
- }
-
- /**
+ /**
+ * Set a given field to a given value for all entries in a Collection. This
+ * method DOES NOT update any UndoManager, but returns a relevant
+ * CompoundEdit that should be registered by the caller.
+ *
+ * @param entries
+ * The entries to set the field for.
+ * @param field
+ * The name of the field to set.
+ * @param text
+ * The value to set. This value can be null, indicating that the
+ * field should be cleared.
+ * @param overwriteValues
+ * Indicate whether the value should be set even if an entry
+ * already has the field set.
+ * @return A CompoundEdit for the entire operation.
+ */
+ public static UndoableEdit massSetField(Collection entries, String field, String text,
+ boolean overwriteValues) {
+
+ NamedCompound ce = new NamedCompound(Globals.lang("Set field"));
+ for (Iterator i = entries.iterator(); i.hasNext();) {
+ BibtexEntry entry = (BibtexEntry) i.next();
+ Object oldVal = entry.getField(field);
+ // If we are not allowed to overwrite values, check if there is a
+ // nonempty
+ // value already for this entry:
+ if (!overwriteValues && (oldVal != null) && (((String) oldVal).length() > 0))
+ continue;
+ if (text != null)
+ entry.setField(field, text);
+ else
+ entry.clearField(field);
+ ce.addEdit(new UndoableFieldChange(entry, field, oldVal, text));
+ }
+ ce.end();
+ return ce;
+ }
+
+ /**
* Make a list of supported character encodings that can encode all
* characters in the given String.
*
}
return encodings;
}
-
/**
* Will convert a two digit year using the following scheme (describe at
* @return
*/
public static String toFourDigitYear(String year) {
- if (thisYear == 0){
+ if (thisYear == 0) {
thisYear = Calendar.getInstance().get(Calendar.YEAR);
}
return toFourDigitYear(year, thisYear);
}
-
+
public static int thisYear;
-
+
/**
* Will convert a two digit year using the following scheme (describe at
* http://www.filemaker.com/help/02-Adding%20and%20view18.html):
if (yearNumber == thisYearTwoDigits) {
return String.valueOf(thisYear);
- }
+ }
// 20 , 90
// 99 > 30
if ((yearNumber + 100 - thisYearTwoDigits) % 100 > 30) {
return year;
}
}
-
+
/**
* Will return an integer indicating the month of the entry from 0 to 11.
*
* -1 signals a unknown month string.
*
* This method accepts three types of months given:
- *
- * - Single and Double Digit months from 1 to 12 (01 to 12)
- *
- * - 3 Digit BibTex strings (jan
- *
- * - Full English Month identifiers.
+ * - Single and Double Digit months from 1 to 12 (01 to 12)
+ * - 3 Digit BibTex strings (jan, feb, mar...)
+ * - Full English Month identifiers.
*
* @param month
* @return
*/
- public static int getMonthNumber(String month){
-
- month = month.toLowerCase();
-
- for (int i = 0; i < Globals.MONTHS.length; i++){
- if (month.startsWith(Globals.MONTHS[i])){
+ public static int getMonthNumber(String month) {
+
+ month = month.replaceAll("#", "").toLowerCase();
+
+ for (int i = 0; i < Globals.MONTHS.length; i++) {
+ if (month.startsWith(Globals.MONTHS[i])) {
return i;
}
}
-
+
try {
return Integer.parseInt(month) - 1;
- } catch (NumberFormatException e){
+ } catch (NumberFormatException e) {
}
return -1;
}
--- /dev/null
+package net.sf.jabref;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.util.Vector;
+
+import javax.swing.AbstractAction;
+import javax.swing.BorderFactory;
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JToolBar;
+import javax.swing.SwingConstants;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.TableColumnModel;
+import javax.swing.table.TableModel;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
+
+/**
+ * Preference Tab for XMP.
+ *
+ * Allows the user to enable and configure the XMP privacy filter.
+ *
+ * @author $Author: coezbek $
+ * @version $Revision: 1.1 $ ($Date: 2007/01/22 23:00:47 $)
+ *
+ */
+class XmpPrefsTab extends JPanel implements PrefsTab {
+
+ boolean tableChanged = false;
+
+ int rowCount;
+
+ JTable table;
+
+ JCheckBox privacyFilterCheckBox = new JCheckBox(Globals
+ .lang("Do not write the following fields to XMP Metadata:"));
+
+ Vector tableRows = new Vector(10);
+
+ /**
+ * Customization of external program paths.
+ */
+ public XmpPrefsTab() {
+ setLayout(new BorderLayout());
+
+ TableModel tm = new AbstractTableModel() {
+ public int getRowCount() {
+ return rowCount;
+ }
+
+ public int getColumnCount() {
+ return 1;
+ }
+
+ public Object getValueAt(int row, int column) {
+ if (row >= tableRows.size())
+ return "";
+ Object rowContent = tableRows.elementAt(row);
+ if (rowContent == null)
+ return "";
+ return rowContent;
+ }
+
+ public String getColumnName(int col) {
+ return Globals.lang("Field to filter");
+ }
+
+ public Class getColumnClass(int column) {
+ return String.class;
+ }
+
+ public boolean isCellEditable(int row, int col) {
+ return true;
+ }
+
+ public void setValueAt(Object value, int row, int col) {
+ tableChanged = true;
+
+ if (tableRows.size() <= row) {
+ tableRows.setSize(row + 1);
+ }
+
+ tableRows.setElementAt(value, row);
+ }
+
+ };
+
+ table = new JTable(tm);
+ TableColumnModel cm = table.getColumnModel();
+ cm.getColumn(0).setPreferredWidth(140);
+
+ FormLayout layout = new FormLayout("1dlu, 8dlu, left:pref, 4dlu, fill:pref", "");
+ DefaultFormBuilder builder = new DefaultFormBuilder(layout);
+ JPanel pan = new JPanel();
+
+ JPanel tablePanel = new JPanel();
+ tablePanel.setLayout(new BorderLayout());
+ JScrollPane scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ table.setPreferredScrollableViewportSize(new Dimension(250, 200));
+ scrollPane.setMinimumSize(new Dimension(250, 300));
+ tablePanel.add(scrollPane, BorderLayout.CENTER);
+
+ JToolBar toolbar = new JToolBar(SwingConstants.VERTICAL);
+ toolbar.setFloatable(false);
+ toolbar.setBorder(null);
+ toolbar.add(new AddRowAction());
+ toolbar.add(new DeleteRowAction());
+
+ tablePanel.add(toolbar, BorderLayout.EAST);
+
+ // Build Prefs Tabs
+ builder.appendSeparator(Globals.lang("XMP Export Privacy Settings"));
+ builder.nextLine();
+
+ builder.append(pan);
+ builder.append(privacyFilterCheckBox);
+ builder.nextLine();
+
+ builder.append(pan);
+ builder.append(tablePanel);
+ builder.nextLine();
+
+ pan = builder.getPanel();
+ pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+ add(pan, BorderLayout.CENTER);
+ }
+
+ class DeleteRowAction extends AbstractAction {
+ public DeleteRowAction() {
+ super("Delete row", GUIGlobals.getImage("remove"));
+ putValue(SHORT_DESCRIPTION, Globals.lang("Delete rows"));
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ int[] rows = table.getSelectedRows();
+ if (rows.length == 0)
+ return;
+
+ for (int i = rows.length - 1; i >= 0; i--) {
+ if (rows[i] < tableRows.size()) {
+ tableRows.remove(rows[i]);
+ }
+ }
+ rowCount -= rows.length;
+ if (rows.length > 1)
+ table.clearSelection();
+ table.revalidate();
+ table.repaint();
+ tableChanged = true;
+ }
+ }
+
+ class AddRowAction extends AbstractAction {
+ public AddRowAction() {
+ super("Add row", GUIGlobals.getImage("add"));
+ putValue(SHORT_DESCRIPTION, Globals.lang("Insert rows"));
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ int[] rows = table.getSelectedRows();
+ if (rows.length == 0) {
+ // No rows selected, so we just add one at the end.
+ rowCount++;
+ table.revalidate();
+ table.repaint();
+ return;
+ }
+ for (int i = 0; i < rows.length; i++) {
+ if (rows[i] + i < tableRows.size())
+ tableRows.add(rows[i] + i, "");
+ }
+ rowCount += rows.length;
+ if (rows.length > 1)
+ table.clearSelection();
+ table.revalidate();
+ table.repaint();
+ tableChanged = true;
+ }
+ }
+
+ /**
+ * Load settings from the preferences and initialize the table.
+ */
+ public void setValues() {
+ tableRows.clear();
+ String[] names = JabRefPreferences.getInstance().getStringArray("xmpPrivacyFilters");
+ for (int i = 0; i < names.length; i++) {
+ tableRows.add(names[i]);
+ }
+ rowCount = tableRows.size() + 5;
+
+ privacyFilterCheckBox.setSelected(JabRefPreferences.getInstance().getBoolean(
+ "useXmpPrivacyFilter"));
+ }
+
+ /**
+ * Store changes to table preferences. This method is called when the user
+ * clicks Ok.
+ *
+ */
+ public void storeSettings() {
+
+ if (table.isEditing()) {
+ int col = table.getEditingColumn();
+ int row = table.getEditingRow();
+ table.getCellEditor(row, col).stopCellEditing();
+ }
+
+ // Now we need to make sense of the contents the user has made to the
+ // table setup table.
+ if (tableChanged) {
+
+ // First we remove all rows with empty names.
+ for (int i = tableRows.size() - 1; i >= 0; i--) {
+ if (tableRows.elementAt(i).equals(""))
+ tableRows.removeElementAt(i);
+ }
+
+ // Finally, we store the new preferences.
+ JabRefPreferences.getInstance().putStringArray("xmpPrivacyFilters",
+ (String[]) tableRows.toArray(new String[tableRows.size()]));
+ }
+
+ JabRefPreferences.getInstance().putBoolean("useXmpPrivacyFilter", privacyFilterCheckBox.isSelected());
+ }
+
+ public boolean readyToClose() {
+ return true;
+ }
+
+ public String getTabName() {
+ return Globals.lang("XMP metadata");
+ }
+}
+++ /dev/null
-package net.sf.jabref.bst;
-// $ANTLR 3.0b4 bst.g 2006-09-17 01:45:41
-
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-
-
-import org.antlr.runtime.tree.*;
-
-public class Bst extends Parser {
- public static final String[] tokenNames = new String[] {
- "<invalid>", "<EOR>", "<DOWN>", "<UP>", "IDLIST", "STACK", "ENTRY", "COMMANDS", "STRINGS", "INTEGERS", "FUNCTION", "MACRO", "STRING", "READ", "EXECUTE", "ITERATE", "REVERSE", "SORT", "IDENTIFIER", "INTEGER", "QUOTED", "LETTER", "NUMERAL", "WS", "LINE_COMMENT", "'{'", "'}'", "'<'", "'>'", "'='", "'+'", "'-'", "':='", "'*'", "'add.period$'", "'call.type$'", "'change.case$'", "'chr.to.int$'", "'cite$'", "'duplicat$'", "'empty$'", "'format.name$'", "'if$'", "'int.to.chr$'", "'int.to.str$'", "'missing$'", "'newline$'", "'num.names$'", "'pop$'", "'preamble$'", "'purify$'", "'quote$'", "'skip$'", "'stack$'", "'substring$'", "'swap$'", "'text.length$'", "'text.prefix$'", "'top$'", "'type$'", "'warning$'", "'while$'", "'width$'", "'write$'"
- };
- public static final int LETTER=21;
- public static final int ENTRY=6;
- public static final int INTEGERS=9;
- public static final int WS=23;
- public static final int COMMANDS=7;
- public static final int STRING=12;
- public static final int EXECUTE=14;
- public static final int LINE_COMMENT=24;
- public static final int SORT=17;
- public static final int STACK=5;
- public static final int REVERSE=16;
- public static final int QUOTED=20;
- public static final int INTEGER=19;
- public static final int ITERATE=15;
- public static final int FUNCTION=10;
- public static final int EOF=-1;
- public static final int STRINGS=8;
- public static final int IDENTIFIER=18;
- public static final int MACRO=11;
- public static final int IDLIST=4;
- public static final int NUMERAL=22;
- public static final int READ=13;
-
- public Bst(TokenStream input) {
- super(input);
- }
-
- protected TreeAdaptor adaptor = new CommonTreeAdaptor();
-
- public void setTreeAdaptor(TreeAdaptor adaptor) {
- this.adaptor = adaptor;
- }
- public TreeAdaptor getTreeAdaptor() {
- return adaptor;
- }
-
- public String[] getTokenNames() { return tokenNames; }
- public String getGrammarFileName() { return "bst.g"; }
-
-
- public static class program_return extends ParserRuleReturnScope {
- Object tree;
- public Object getTree() { return tree; }
- };
-
- // $ANTLR start program
- // bst.g:14:1: program : ( commands )+ -> ^( COMMANDS ( commands )+ ) ;
- public program_return program() throws RecognitionException {
- program_return retval = new program_return();
- retval.start = input.LT(1);
-
- Object root_0 = null;
-
- commands_return commands1 = null;
-
- List list_commands=new ArrayList();
-
- try {
- // bst.g:14:11: ( ( commands )+ -> ^( COMMANDS ( commands )+ ) )
- // bst.g:14:11: ( commands )+
- {
- // bst.g:14:11: ( commands )+
- int cnt1=0;
- loop1:
- do {
- int alt1=2;
- int LA1_0 = input.LA(1);
- if ( (LA1_0==ENTRY||(LA1_0>=STRINGS && LA1_0<=MACRO)||(LA1_0>=READ && LA1_0<=SORT)) ) {
- alt1=1;
- }
-
-
- switch (alt1) {
- case 1 :
- // bst.g:14:11: commands
- {
- pushFollow(FOLLOW_commands_in_program45);
- commands1=commands();
- _fsp--;
-
- list_commands.add(commands1.tree);
-
- }
- break;
-
- default :
- if ( cnt1 >= 1 ) break loop1;
- EarlyExitException eee =
- new EarlyExitException(1, input);
- throw eee;
- }
- cnt1++;
- } while (true);
-
-
- // AST REWRITE
- int i_0 = 0;
- retval.tree = root_0;
- root_0 = (Object)adaptor.nil();
- // 14:21: -> ^( COMMANDS ( commands )+ )
- {
- // bst.g:14:24: ^( COMMANDS ( commands )+ )
- {
- Object root_1 = (Object)adaptor.nil();
- root_1 = (Object)adaptor.becomeRoot(adaptor.create(COMMANDS, "COMMANDS"), root_1);
-
- // bst.g:14:35: ( commands )+
- {
- int n_1 = list_commands == null ? 0 : list_commands.size();
-
-
-
- if ( n_1==0 ) throw new RuntimeException("Must have more than one element for (...)+ loops");
- for (int i_1=0; i_1<n_1; i_1++) {
- adaptor.addChild(root_1, list_commands.get(i_1));
-
- }
- }
-
- adaptor.addChild(root_0, root_1);
- }
-
- }
-
-
-
- }
-
- }
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- }
- finally {
- retval.stop = input.LT(-1);
-
- retval.tree = (Object)adaptor.rulePostProcessing(root_0);
- adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
-
- }
- return retval;
- }
- // $ANTLR end program
-
- public static class commands_return extends ParserRuleReturnScope {
- Object tree;
- public Object getTree() { return tree; }
- };
-
- // $ANTLR start commands
- // bst.g:16:1: commands : ( STRINGS^^ idList | INTEGERS^^ idList | FUNCTION^^ id stack | MACRO^^ id '{'! STRING '}'! | READ^^ | EXECUTE^^ '{'! function '}'! | ITERATE^^ '{'! function '}'! | REVERSE^^ '{'! function '}'! | ENTRY^^ idList0 idList0 idList0 | SORT^^ );
- public commands_return commands() throws RecognitionException {
- commands_return retval = new commands_return();
- retval.start = input.LT(1);
-
- Object root_0 = null;
-
- Token STRINGS2=null;
- Token INTEGERS4=null;
- Token FUNCTION6=null;
- Token MACRO9=null;
- Token char_literal11=null;
- Token STRING12=null;
- Token char_literal13=null;
- Token READ14=null;
- Token EXECUTE15=null;
- Token char_literal16=null;
- Token char_literal18=null;
- Token ITERATE19=null;
- Token char_literal20=null;
- Token char_literal22=null;
- Token REVERSE23=null;
- Token char_literal24=null;
- Token char_literal26=null;
- Token ENTRY27=null;
- Token SORT31=null;
- idList_return idList3 = null;
-
- idList_return idList5 = null;
-
- id_return id7 = null;
-
- stack_return stack8 = null;
-
- id_return id10 = null;
-
- function_return function17 = null;
-
- function_return function21 = null;
-
- function_return function25 = null;
-
- idList0_return idList028 = null;
-
- idList0_return idList029 = null;
-
- idList0_return idList030 = null;
-
-
- Object STRINGS2_tree=null;
- Object INTEGERS4_tree=null;
- Object FUNCTION6_tree=null;
- Object MACRO9_tree=null;
- Object char_literal11_tree=null;
- Object STRING12_tree=null;
- Object char_literal13_tree=null;
- Object READ14_tree=null;
- Object EXECUTE15_tree=null;
- Object char_literal16_tree=null;
- Object char_literal18_tree=null;
- Object ITERATE19_tree=null;
- Object char_literal20_tree=null;
- Object char_literal22_tree=null;
- Object REVERSE23_tree=null;
- Object char_literal24_tree=null;
- Object char_literal26_tree=null;
- Object ENTRY27_tree=null;
- Object SORT31_tree=null;
-
- try {
- // bst.g:17:4: ( STRINGS^^ idList | INTEGERS^^ idList | FUNCTION^^ id stack | MACRO^^ id '{'! STRING '}'! | READ^^ | EXECUTE^^ '{'! function '}'! | ITERATE^^ '{'! function '}'! | REVERSE^^ '{'! function '}'! | ENTRY^^ idList0 idList0 idList0 | SORT^^ )
- int alt2=10;
- switch ( input.LA(1) ) {
- case STRINGS:
- alt2=1;
- break;
- case INTEGERS:
- alt2=2;
- break;
- case FUNCTION:
- alt2=3;
- break;
- case MACRO:
- alt2=4;
- break;
- case READ:
- alt2=5;
- break;
- case EXECUTE:
- alt2=6;
- break;
- case ITERATE:
- alt2=7;
- break;
- case REVERSE:
- alt2=8;
- break;
- case ENTRY:
- alt2=9;
- break;
- case SORT:
- alt2=10;
- break;
- default:
- NoViableAltException nvae =
- new NoViableAltException("16:1: commands : ( STRINGS^^ idList | INTEGERS^^ idList | FUNCTION^^ id stack | MACRO^^ id '{'! STRING '}'! | READ^^ | EXECUTE^^ '{'! function '}'! | ITERATE^^ '{'! function '}'! | REVERSE^^ '{'! function '}'! | ENTRY^^ idList0 idList0 idList0 | SORT^^ );", 2, 0, input);
-
- throw nvae;
- }
-
- switch (alt2) {
- case 1 :
- // bst.g:17:4: STRINGS^^ idList
- {
- root_0 = (Object)adaptor.nil();
-
- STRINGS2=(Token)input.LT(1);
- match(input,STRINGS,FOLLOW_STRINGS_in_commands65);
- STRINGS2_tree = (Object)adaptor.create(STRINGS2);
- root_0 = (Object)adaptor.becomeRoot(STRINGS2_tree, root_0);
-
- pushFollow(FOLLOW_idList_in_commands68);
- idList3=idList();
- _fsp--;
-
- adaptor.addChild(root_0, idList3.tree);
-
- }
- break;
- case 2 :
- // bst.g:18:4: INTEGERS^^ idList
- {
- root_0 = (Object)adaptor.nil();
-
- INTEGERS4=(Token)input.LT(1);
- match(input,INTEGERS,FOLLOW_INTEGERS_in_commands73);
- INTEGERS4_tree = (Object)adaptor.create(INTEGERS4);
- root_0 = (Object)adaptor.becomeRoot(INTEGERS4_tree, root_0);
-
- pushFollow(FOLLOW_idList_in_commands76);
- idList5=idList();
- _fsp--;
-
- adaptor.addChild(root_0, idList5.tree);
-
- }
- break;
- case 3 :
- // bst.g:19:4: FUNCTION^^ id stack
- {
- root_0 = (Object)adaptor.nil();
-
- FUNCTION6=(Token)input.LT(1);
- match(input,FUNCTION,FOLLOW_FUNCTION_in_commands81);
-