[svn-upgrade] Integrating new upstream version, jabref (2.2) upstream/2.2
authorgregor herrmann <gregoa@debian.org>
Fri, 2 Feb 2007 13:49:30 +0000 (13:49 -0000)
committergregor herrmann <gregoa@debian.org>
Fri, 2 Feb 2007 13:49:30 +0000 (13:49 -0000)
121 files changed:
build.number
build.xml
lib/JempBox-0.1.0-dev.jar
src/help/About.html
src/help/Contents.html
src/help/EndNoteFilters.html
src/help/XMPHelp.html
src/help/de/About.html
src/help/de/BaseFrameHelp.html
src/help/de/BibtexHelp.html
src/help/de/CiteSeerHelp.html
src/help/de/CommandLine.html
src/help/de/Contents.html
src/help/de/CustomImports.html
src/help/de/EndNoteFilters.html
src/help/de/ExternalFiles.html
src/help/de/GroupsHelp.html
src/help/de/IEEEXploreHelp.html [new file with mode: 0644]
src/help/de/JabRef-UserManual_de.bib
src/help/de/JabRef-UserManual_de.tex
src/help/de/JournalAbbreviations.html [new file with mode: 0644]
src/help/de/LabelPatterns.html
src/help/de/MedlineHelp.html
src/help/de/OpenOfficeHelp.html
src/help/de/RemoteHelp.html [new file with mode: 0644]
src/help/de/SearchHelp.html
src/help/de/XMPHelp.html [new file with mode: 0644]
src/help/fr/About.html
src/help/fr/EndNoteFilters.html
src/help/fr/XMPHelp.html
src/images/font/ACTIVA.TTF [new file with mode: 0644]
src/images/font/ASTROLYT.TTF [new file with mode: 0644]
src/images/font/AUGIE.TTF [new file with mode: 0644]
src/images/splash.png
src/java/net/sf/jabref/AdvancedTab.java
src/java/net/sf/jabref/AppearancePrefsTab.java
src/java/net/sf/jabref/BasePanel.java
src/java/net/sf/jabref/BibtexEntry.java
src/java/net/sf/jabref/EntryEditor.java
src/java/net/sf/jabref/ExternalProgramsTab.java
src/java/net/sf/jabref/ExternalTab.java
src/java/net/sf/jabref/FieldComparator.java
src/java/net/sf/jabref/GeneralTab.java
src/java/net/sf/jabref/Globals.java
src/java/net/sf/jabref/JabRef.java
src/java/net/sf/jabref/JabRefFrame.java
src/java/net/sf/jabref/JabRefPreferences.java
src/java/net/sf/jabref/MetaData.java
src/java/net/sf/jabref/NameFormatterTab.java
src/java/net/sf/jabref/PrefsDialog2.java
src/java/net/sf/jabref/PrefsDialog3.java
src/java/net/sf/jabref/PrefsTab.java
src/java/net/sf/jabref/PreviewPanel.java
src/java/net/sf/jabref/PreviewPrefsTab.java
src/java/net/sf/jabref/SearchManager2.java
src/java/net/sf/jabref/SidePaneManager.java
src/java/net/sf/jabref/TabLabelPattern.java
src/java/net/sf/jabref/TableColumnsTab.java
src/java/net/sf/jabref/TablePrefsTab.java
src/java/net/sf/jabref/Util.java
src/java/net/sf/jabref/XmpPrefsTab.java [new file with mode: 0644]
src/java/net/sf/jabref/bst/Bst.java [deleted file]
src/java/net/sf/jabref/collab/FileUpdatePanel.java
src/java/net/sf/jabref/collab/GroupChange.java
src/java/net/sf/jabref/export/ExportFormats.java
src/java/net/sf/jabref/export/ExportToClipboardAction.java [new file with mode: 0644]
src/java/net/sf/jabref/export/layout/Layout.java
src/java/net/sf/jabref/export/layout/LayoutEntry.java
src/java/net/sf/jabref/export/layout/format/HTMLChars.java
src/java/net/sf/jabref/export/layout/format/RTFChars.java
src/java/net/sf/jabref/external/AutoSetExternalFileForEntries.java
src/java/net/sf/jabref/external/ExternalFilePanel.java
src/java/net/sf/jabref/external/PushToEmacs.java
src/java/net/sf/jabref/groups/AbstractGroup.java
src/java/net/sf/jabref/groups/ExplicitGroup.java
src/java/net/sf/jabref/groups/GroupTreeNode.java
src/java/net/sf/jabref/groups/GroupsPrefsTab.java
src/java/net/sf/jabref/gui/AttachFileDialog.java
src/java/net/sf/jabref/gui/ImportInspectionDialog.java
src/java/net/sf/jabref/gui/MainTableFormat.java
src/java/net/sf/jabref/gui/MainTableSelectionListener.java
src/java/net/sf/jabref/imports/BibtexParser.java
src/java/net/sf/jabref/imports/CiteSeerFetcherPanel.java
src/java/net/sf/jabref/imports/FieldContentParser.java
src/java/net/sf/jabref/imports/GeneralFetcher.java
src/java/net/sf/jabref/imports/ImportFormats.java
src/java/net/sf/jabref/imports/ImportMenuItem.java
src/java/net/sf/jabref/imports/MedlineFetcher.java
src/java/net/sf/jabref/imports/OAI2Fetcher.java
src/java/net/sf/jabref/imports/OAI2Handler.java
src/java/net/sf/jabref/imports/SilverPlatterImporter.java
src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java
src/java/net/sf/jabref/util/XMPSchemaBibtex.java
src/java/net/sf/jabref/util/XMPUtil.java
src/java/tests/net/sf/jabref/UtilFindFileTest.java
src/java/tests/net/sf/jabref/UtilTest.java
src/java/tests/net/sf/jabref/export/layout/AllTests.java
src/java/tests/net/sf/jabref/export/layout/HTMLCharsTest.java [new file with mode: 0644]
src/java/tests/net/sf/jabref/export/layout/LayoutTest.java
src/java/tests/net/sf/jabref/export/layout/RTFCharsTest.java
src/java/tests/net/sf/jabref/imports/AllTests.java
src/java/tests/net/sf/jabref/imports/AutoImportTest.java [deleted file]
src/java/tests/net/sf/jabref/imports/BibtexParserTest.java
src/java/tests/net/sf/jabref/imports/OAI2ImportTest.java
src/java/tests/net/sf/jabref/util/XMPSchemaBibtexTest.java
src/java/tests/net/sf/jabref/util/XMPUtilTest.java
src/resource/JabRef_de.properties
src/resource/JabRef_du.properties
src/resource/JabRef_en.properties
src/resource/JabRef_fr.properties
src/resource/JabRef_it.properties
src/resource/JabRef_no.properties
src/resource/Menu_de.properties
src/resource/Menu_du.properties
src/resource/Menu_en.properties
src/resource/Menu_fr.properties
src/resource/Menu_it.properties
src/resource/Menu_no.properties
src/resource/build.properties
src/txt/README
src/windows/nsis/setup.nsi

index 135abb0d166a6484c76020130854edacbb603fa8..8111c580cb13c58be22d15232344c856df0af883 100644 (file)
@@ -1,3 +1,3 @@
 #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
index 0b8e3a2b97b0d96b060a5673667462b8203e2b7f..2c8a2aea81425da1262c9c9fdc6ab177c00d6209 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -22,8 +22,8 @@
    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}" />
@@ -362,16 +364,16 @@ version=${jabref.version}</echo>
                <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>
 
 
@@ -386,11 +388,18 @@ version=${jabref.version}</echo>
                <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" />
@@ -398,15 +407,13 @@ version=${jabref.version}</echo>
                                <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>
@@ -517,8 +524,8 @@ Number (CCN)           maintenance
                                        <include name="**/*Test.class" />
                                </fileset>
                        </batchtest>
-                       <classpath refid="classpath"/>
+                       <classpath refid="classpath" />
                </junit>
        </target>
+
 </project>
index 735639d220e735f089d9af444053d9ac058e4bdd..9ede3a83b52963dc271258091bc38f88519f84cc 100644 (file)
Binary files a/lib/JempBox-0.1.0-dev.jar and b/lib/JempBox-0.1.0-dev.jar differ
index 67e2be5f2b72b9ddb0fb96e97b9ba3f992691d65..2726ab490480c418a467109b32467c119265761d 100755 (executable)
@@ -5,7 +5,7 @@
 <CENTER>
 <H1>JabRef version @version@ </H1>
 
-(c) 2006
+(c) 2007
 <p>
 <img src="/images/JabRef-icon-48.png"></img>
 
@@ -34,6 +34,9 @@ Egon Willighagen,
 J&ouml;rg Zieren
 
 <H2>Contributions from:</H2>
+
+Michael Beckmann,
+Oliver Böckmann, 
 Kolja Brix,
 Fr&eacute;d&eacute;ric Darboux,
 Fabrice Dessaint,
@@ -48,12 +51,15 @@ Krzysztof A. Ko&#347;ciuszkiewicz,
 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&auml;rk,
 Martin Stolle,
@@ -98,6 +104,12 @@ 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.
 
+<P>
+JabRef uses the JempBox and PDFBox libraries for PDF handling, both of which are
+distributed under a BSD style license.
+
+
+
 </CENTER>
 </BODY>
 </HTML>
index e2ae5b812f678d35368feac789fb23cceeae1561..dbaa42291e209b5df3297c793b67621d56b6f9e7 100755 (executable)
@@ -35,4 +35,4 @@
     <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
index 446dd1bb4b10894e7f050fc28f9e66e4145943b3..75ff8e1d4a158d25304c01a997d7b5a1702f6a3b 100644 (file)
@@ -8,7 +8,7 @@
 <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>
index d8d937f5ca2bda9869b1c76115ccee839de036cb..aeff8177f038973dc40ef90a758182e9cb42eaae 100644 (file)
@@ -26,7 +26,8 @@ To use the XMP-feature in JabRef you can do the following:
   <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>
index 0f2f79ad37b56c1b29a6fe26dd3b42d65ae4adbe..44c95acfe22bf1456adee3c9069d8ab7f89fc33c 100644 (file)
@@ -6,7 +6,7 @@
 <center>
 <h1>JabRef Version @version@</h1>
 
-(c) 2006
+(c) 2007
 <p>
 <img src="/images/JabRef-icon-48.png"></img>
 
@@ -22,6 +22,7 @@ Michel Baylac,
 Guillaume Gardey,
 Cyrille d'Haese,
 Raik Nagel,
+Christopher Oezbek,
 Ellen Reitmayr,
 Gert Renckens,
 Andreas Rudert,
@@ -34,37 +35,44 @@ Egon Willighagen,
 J&ouml;rg Zieren
 
 <h2>Beitr&auml;ge von:</h2>
+Michael Beckmann,
+Oliver B&ouml;ckmann,
 Kolja Brix,
 Fr&eacute;d&eacute;ric Darboux,
 Fabrice Dessaint,
 Nathan Dunn,
-Brian van Essen,
+Brian Van Essen,
 Alexis Gallagher,
 Sascha Hunold,
 Bernd Kalbfuss,
 Martin K&auml;hmer,
 Ervin Kolenovic,
 Krzysztof A. Ko&#347;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&auml;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&uuml;r n&auml;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&uuml;r n&auml;here Einzelheiten dieser Lizenz).
 <p>
 Au&szlig;erdem werden zwei zust&auml;tzliche Klassen
 (SimpleInternalFrame and UIFSplitPane) von Karsten Lentzsch benutzt,
@@ -78,18 +86,22 @@ F&uuml;r die Darstellung und Filterung der Tabelle benutzt JabRef die Glazed Lis
     (<code>http://publicobject.com/glazedlists</code>), die unter den Bedingungen der Lesser General Public License vertrieben wird.
 </p><p>
 JabRef benutzt dar&uuml;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&uuml;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&uuml;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&uuml;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
index cefe2e1899fdbe91c545c439dd3fcbfeadd864d0..9515441c069da552933ebcc503a3d55d9ab43bb5 100644 (file)
@@ -14,11 +14,11 @@ Dies ist das Hauptfenster, in dem Sie mit Ihrer Datei arbeiten. Unter der Men&uu
 <ul>
 <li>Die Auswahl der entsprechenden Felder k&ouml;nnen Sie im <strong>Einstellungs</strong>-Dialog vornehmen.</li>
 
-<li>Die Felder k&ouml;nnen direkt in der Tabelle bearbeitet werden, indem Sie einfach auf eine Zelle klicken und den Inhalt eingeben (nur m&ouml;glich, wenn "Bearbeiten in der Tabelle zulassen" im Dialog <strong>Optionen --> Einstellungen --> Allgemein</strong> ausgew&auml;hlt ist). Ein Doppelklick auf eine Zelle &ouml;ffnet einen leistungsf&auml;higeren Editor. Sie k&ouml;nnen mit den Pfeiltasten in der Tabelle navigieren.</li>
+<li>Mit einem Doppelklick auf eine Tabellenzeile k&ouml;nnen Sie den Inhalt bearbeiten (der <a href="EntryEditorHelp.html">Eintragseditor</a> wird ge&ouml;ffnet). Sie k&ouml;nnen mit den Pfeiltasten innerhalb der Tabelle navigieren. Wenn Sie einen Buchstaben dr&uuml;cken, springen Sie zu dem ersten Eintrag, der mit diesem Buchstaben beginnt (abh&auml;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&auml;ge nach dem Feld dieser Spalte zu sortieren. Klicken Sie erneut auf den Spaltenkopf, um die Sortierrichtung umzukehren. Eintr&auml;ge mit gleichem Inhalt im ausgew&auml;hlten Feld werden nach dem zweiten (und eventuell dem dritten) Kriterium sortiert. Diese Sortierkriterien k&ouml;nnen im <strong>Einstellungs</strong>-Dialog festgelegt werden.</li>
+<li>Die Tabelle wird nach einem Feld Ihrer Wahl sortiert. Sie k&ouml;nnen das Standardverhalten unter <strong>Optionen -> Einstellungen -> Tabellenansicht</strong> angeben. Um die Sortierreihenfolge schnell zu &auml;ndern, klicken Sie einfach auf die Kopfzeile einer Spalte; damit haben Sie das prim&auml;re Sortierkriterium definiert. Klicken Sie erneut auf den Spaltenkopf, um die Sortierrichtung umzukehren. Ein weiterer Klick sorgt daf&uuml;r, dass die Spalte nicht mehr zur Sortierung herangezogen wird. Halten Sie die CONTROL-Taste beim Klicken auf einen Spaltenknopf gedr&uuml;ckt, um eine zweite Spalte als sekund&auml;res Sortierkriterium festzulegen. Sie k&ouml;nnen beliebig viele Spalten zur Sortierung heranziehen.</li>
 
-<li>Sie k&ouml;nnen die Breite der Tabellenspalten einstellen, indem Sie die Trennlinie zwischen den Spaltenk&ouml;pfen anklicken und verschieben.</li>
+<li>Sie k&ouml;nnen die Breite der Tabellenspalten einstellen, indem Sie die Trennlinie zwischen den Spaltenk&ouml;pfen anklicken und verschieben. Die Reihenfolge der Spalten k&ouml;nnen Sie festlegen, indem Sie mit der Maus auf den Spaltenkopf klicken und die Spalte an die gew&uuml;nschte Stelle ziehen.</li>
 
 <li>Im <strong>Einstellungs</strong>-Dialog k&ouml;nnen Sie festlegen, ob die Tabelle an die Bildschirmgr&ouml;&szlig;e angepasst werden soll oder nicht. Aktivieren Sie diese Funktion, um sicherzustellen, dass Sie die gesamte Tabelle sehen k&ouml;nnen. Deaktivieren Sie diese Funktion, wenn mehr Informationen dargestellt werden sollen.</li>
 
@@ -44,9 +44,7 @@ Es gibt verschiedene M&ouml;glichkeiten, einen neuen Eintrag hinzuzuf&uuml;gen.
 
 <H2>Einen Eintrag bearbeiten</H2>
 
-Um den <a href="EntryEditorHelp.html">Eintrags-Editor</a> zur Bearbeitung eines existierenden Eintrags zu &ouml;ffnen, klicken Sie einfach doppelt auf die linke Spalte der entsprechenden Zeile oder markieren den Eintrag und dr&uuml;cken auf ENTER.
-
-Falls "Bearbeiten in der Tabelle zulassen" nicht ausgew&auml;hlt ist (im Dialog <strong>Optionen --> Einstellungen --> Allgemein</strong>), &ouml;ffnet ein Doppelklick irgendwo in der zugeh&ouml;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 &ouml;ffnen, klicken Sie einfach doppelt auf die Zeile des Eintrags oder markieren den Eintrag und dr&uuml;cken auf ENTER.
 
 <H2>Einen <em>BibTeX</em> String in einem Feld verwenden</H2>
 
@@ -54,7 +52,7 @@ In JabRef schreiben Sie den Inhalt aller Felder so, wie Sie es in einem Textedit
 &nbsp;&nbsp;'#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>
index d4eaf405d9c230adf7e78c06e36a1cbdb1de342e..28d27cf638130bcf5e7138a4406421c5cd303d70 100644 (file)
 <BODY text="#275856">
 <basefont size="4" color="#2F4958" face="arial">
 
-<H1>Über <em>BibTeX</em></H1>
+<H1>&Uuml;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&uuml;ssen dennoch Regeln beachtet werden, wenn Sie Ihre Eintr&auml;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&auml;tzliche Felder, die Sie in JabRef einsetzen k&ouml;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&auml;tzlich k&ouml;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&szlig;buchstaben verkleinern. Um sicherzustellen, dass einzelne Buchstaben gro&szlig; bleiben, m&uuml;ssen Sie sie in Klammern einschlie&szlig;en, wie im Wort {B}elgien. <em>(Anm. d. &Uuml;bers.: Die meisten deutschen <em>BibTeX</em>-Stile behalten die Gro&szlig;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&ouml;nnen. Beachten Sie, dass der Bibtexkey genau mit dem Verweis im LaTeX-Dokument &uuml;bereinstimmen muss (auch die Gro&szlig;-/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&uuml;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&uuml;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&uuml;r einen Aufsatztitel wiederverwenden, ohne sie bei jedem Aufsatztitel explizit einzutragen. Die Funktionalit&auml;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&szlig;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&auml;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&ouml;ffentlicht wurde (meist au&szlig;erhalb eines Verlags). Das erste Wort sollte mit einem Gro&szlig;buchstaben beginnen.
+    <p>
+    </p>
+  </li>
+  <li><strong>institution<br>
+    </strong>Die f&ouml;rdernde Institutions eines technischen Reports.
+    <p>
+    </p>
+  </li>
+  <li><strong>journal<br>
+    </strong>Ein Zeitschriftenname.
+Mit Hilfe von "Strings" k&ouml;nnen Zeitschriftennamen abgek&uuml;rzt werden. Zum Erstellen eines solchen Strings k&ouml;nnen Sie den <a href="StringEditorHelp.html">String-Editor</a> benutzen oder die Funktionalit&auml;t zur <a href="JournalAbbreviations.html">Abk&uuml;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&uuml;r Querverweise (<tt>crossref</tt>) verwendet. Verwechseln Sie dieses Feld nicht mit dem <tt>Bibtexkey</tt>, der f&uuml;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&ouml;ffentlicht oder geschrieben wurde. Benutzen Sie am besten die englischen Abk&uuml;rzungen (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
+    <p>
+    </p>
+  </li>
+  <li><strong>note<br>
+    </strong>Zus&auml;tzliche Infromationen. Das erste Wort sollte mit einem Gro&szlig;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&auml;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&ouml;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&ndash;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&auml;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&uuml;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&szlig;- und Kleinschreibung kann von den Bibliographiestilen und der benutzten Sprache abh&auml;ngig sein (wobei sie mit deutschen Bibliographiestilen beibehalten wird). Worte, die auch bei Verwendung englischer Bibliographiestile gro&szlig; geschrieben werden sollen, m&uuml;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&uuml;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&auml;ndigen Werk.    <p>
+    </p>
+  </li>
+  <li><strong>year<br>
+    </strong>Das Jahr der Ver&ouml;ffentlichung (oder bei einem unver&ouml;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&ouml;nnen aber auch mit <tt>year</tt>-Eintr&auml;gen umgehen, deren letzte vier Zeichen (ausgenommen Satzzeichen) Ziffern sind, beispielsweise <tt>(um 1984)</tt>.
+    Dieses Feld wird f&uuml;r die meisten Eintragstypen ben&ouml;tigt.</li>
+</ul>
+
+
+
+
+
+
+<br>
+
+
+<h2>Andere Felder</h2>
+
+
+Bibliographie-Stile f&uuml;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&uuml;tzt, k&ouml;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&ouml;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&uuml;r Zeitschriften).<br>
+    <br>
+
+  </li>
+  <li><strong>keywords<br>
+    </strong>Stichworte, k&ouml;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&szlig;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&ouml;&szlig;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
index 81e5b37bc289a6ab981469977fae09497e904593..57073132c424710c965e61e3bfc579f30a5c0ce9 100644 (file)
@@ -5,6 +5,8 @@
 
 <H1>CiteSeer-Import</H1>
 
+CiteSeer ist eine digitale Bibliothek und Suchmaschine f&uuml;r wissenschaftliche Literatur, vornehmlich zu den Bereichen Computer und Informatik.
+
 <H2>Importieren eines Eintrags von CiteSeer</H2>
 
 JabRef kann Informationen &uuml;ber eine bestimmte Literaturangabe aus der CiteSeer-Datenbank
@@ -26,19 +28,14 @@ Literaturangabe.
 indem Sie <b>BibTeX -> Felder von CiteSeer importieren</b> ausw&auml;hlen. Achten Sie darauf, dass
 Sie die Zeile(n) ausgew&auml;hlt haben, die Sie aktualisieren wollen.
 
-<H2>Generating a Citation Database</H2>
-
-Hinweis des &Uuml;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&uuml;r Hinweise, Erkl&auml;rungen oder eine fertige &Uuml;bersetzung w&auml;re ich deshalb dankbar.
-Damit die Informationen f&uuml;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&ouml;nnen Sie eine Liste der Dokumente
+erzeugen, die die einzelnen Literaturangaben ihrerseits zitieren. Dazu
+muss jede Literaturangabe der entsprechenden Datenbank-Datei ein
+ausgef&uuml;lltes citeseerurl-Feld besitzen, dessen Inhalt dem in <b>Importieren eines Eintrags von CiteSeer</b>
+beschriebenen Format entspricht. Sie k&ouml;nnen diese Funktion nutzen, indem
+Sie <b>Zitierende Literatur von CiteSeer abrufen</b> ausw&auml;hlen.
 
 <H2>Benutzung eines Proxy-Servers</H2>
 
@@ -50,4 +47,4 @@ an Java. Diese Umgebungseinstellungen sind dokumentiert unter
 
 <p>&nbsp;
 
-</HTML>
+</HTML>
\ No newline at end of file
index 1c9a78b631d5e1335d4b64f356e398a1592a2dec..ad9834bc8a956ff7d6cf103720efa3580869f72c 100644 (file)
@@ -3,7 +3,7 @@
 <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&auml;che ist, bietet es
 einige n&uuml;tzliche Optionen f&uuml;r die Kommandozeile und kann sogar Dateikonvertierungen
@@ -21,7 +21,6 @@ unter dem Namen <code>filetoexport.xml</code>
 und unterdr&uuml;ckt das Laden der grafischen Oberfl&auml;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
index 8e2b2aafb5b50f81e7e9de1f1500b4db2b4f968e..1fd0a95cc3e765b0116d3a671518114ad9ace931 100644 (file)
 <a href="BibtexHelp.html"><em>BibTeX</em> Hilfe</a><br>
 <a href="MarkingHelp.html">Eintr&auml;ge markieren</a><br>
 <a href="CiteSeerHelp.html">Eintr&auml;ge von <em>CiteSeer</em> abrufen</a><br>
+<a href="IEEEXploreHelp.html">Eintr&auml;ge von <em>IEEExplore</em> abrufen</a><br>
 <a href="MedlineHelp.html">Eintr&auml;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&uuml;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>
@@ -30,6 +32,8 @@
 <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&uuml;rzen</a><br>
 <a href="TimeStampHelp.html">Zeitstempel</a><br>
 
 </HTML>
\ No newline at end of file
index 59a5b6eb7bab853d177503e19d69c2890b87584b..da78dced10814e028d02e5bf8247f3518ae9782a 100644 (file)
@@ -3,16 +3,16 @@
 <BODY text="#275856">
 <basefont size="4" color="#2F4958" face="arial">
 
-<H1>Externe Importfilter</H1>
+<H1>Importfilter anpassen</H1>
 
-<p>JabRef bietet Ihnen die M&ouml;glichkeit, ganz &auml;hnlich den Standard-Importern, eigene Importer 
+<p>JabRef bietet Ihnen die M&ouml;glichkeit, ganz &auml;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&auml;ge erzeugen. Sie k&ouml;nnen vorkompilierte Importer einbinden, die Sie vielleicht 
+und daraus BibTex-Eintr&auml;ge erzeugen. Sie k&ouml;nnen vorkompilierte Importer einbinden, die Sie vielleicht
 von SourceForge erhalten haben (siehe "Ihre Arbeit anderen zur Verf&uuml;gung stellen"). Sie k&ouml;nnen auch
-mit Grundkenntnissen der Java-Programmierung eigene Importer f&uuml;r f&uuml;r Sie wichtige Referenzquellen 
+mit Grundkenntnissen der Java-Programmierung eigene Importer f&uuml;r f&uuml;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&ouml;nnen Sie mit Ihren Importern
 die existierenden in der automatischen Formaterkennung und an der Kommandozeile in JabRef &uuml;berschreiben.
@@ -22,16 +22,16 @@ Externe Importfilter selbst sind dann nach Namen sortiert.</p>
 
 <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&uuml;gen, &ouml;ffnen Sie den Dialog 
+in einer Verzeichnisstruktur entsprechend ihrer Package-Struktur liegen.
+Um einen neuen externen Importfilter hinzuzuf&uuml;gen, &ouml;ffnen Sie den Dialog
 <b>Optionen -> Verwalte externe Importfilter</b>, und klicken Sie auf
-<b>Aus Klassenpfad hinzuf&uuml;gen</b>. Ein Dateiauswahl-Fenster erscheint, 
+<b>Aus Klassenpfad hinzuf&uuml;gen</b>. Ein Dateiauswahl-Fenster erscheint,
 mit dem Sie den Klassenpfad des Importers w&auml;hlen, dass hei&szlig;t den obersten Ordner,
 in dem die Package-Struktur Ihres Importers beginnt. In einem zweiten Dateiauswahl-Fenster
 w&auml;hlen Sie die <i>.class</i>-Datei Ihres Importers, die von <code>ImportFormat</code> abgeleitet
 ist. Wenn Sie <b>Klasse ausw&auml;hlen</b> klicken, erscheint Ihr neuer Importer
 in der Liste der externen Importfilter. Alle externen Importfilter erscheinen in den
-JabRef-Submen&uuml;s <b>Datei -> Importieren -> Externe Importfilter</b> und 
+JabRef-Submen&uuml;s <b>Datei -> Importieren -> Externe Importfilter</b> und
 <b>Datei -> Importieren und Anh&auml;ngen -> Externe Importfilter</b>.</p>
 
 <p>Bitte beachten Sie: wenn Sie die Klassen in ein anderes Verzeichnis verschieben,
@@ -47,7 +47,7 @@ Sie k&ouml;nnen auch Importer aus ZIP- oder JAR-Archiven registrieren, w&auml;hl
 
 <H2>Einen Importfilter entwickeln</H2>
 
-Bitte schauen Sie auf unseren Download-Seiten nach Beispielen und n&uuml;tzliche Dateien zur 
+Bitte schauen Sie auf unseren Download-Seiten nach Beispielen und n&uuml;tzliche Dateien zur
 Entwicklung Ihres Importfilters.
 
 <H3>Ein einfaches Beispiel</H3>
@@ -78,11 +78,11 @@ public class SimpleCsvImporter extends ImportFormat {
   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())) {
@@ -94,9 +94,9 @@ public class SimpleCsvImporter extends ImportFormat {
         be.setField("title", fields[2]);
         bibitems.add(be);
         line = in.readLine();
-      }     
+      }
     }
-    return bibitems;           
+    return bibitems;
   }
 }
 </pre></p>
@@ -104,28 +104,28 @@ public class SimpleCsvImporter extends ImportFormat {
 <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>&Ouml;ffnen Sie in JabRef <b>Optionen -> Verwaltung externer Importfilter</b> und klicken Sie
-auf <b>Aus Klassenpfad hinzuf&uuml;gen</b>. Navigieren Sie nach <code>/meinpfad</code> und 
+auf <b>Aus Klassenpfad hinzuf&uuml;gen</b>. Navigieren Sie nach <code>/meinpfad</code> und
 klicken Sie <b>Klassenpfad ausw&auml;hlen</b>. W&auml;hlen Sie dann <code>SimpleCsvImporter.class</code>
 und klicken Sie <b>Klasse ausw&auml;hlen</b>. Ihr Importfilter sollte nun in der Liste der
 externen Importfilter unter dem Namen "Simple CSV Importer" erscheinen, und,
-sobald Sie <b>Schlie&szlig;en</b> gew&auml;hlt haben, auch in den Untermen&uuml;s <b>Datei -> Importieren -> 
-Externe Importfilter</b> und <b>Datei -> Importieren und Anh&auml;ngen -> Externe Importfilter</b> 
+sobald Sie <b>Schlie&szlig;en</b> gew&auml;hlt haben, auch in den Untermen&uuml;s <b>Datei -> Importieren ->
+Externe Importfilter</b> und <b>Datei -> Importieren und Anh&auml;ngen -> Externe Importfilter</b>
 des JabRef-Hauptfensters.</p>
 
-<H2>Ihre Arbeit anderen zur Verf&uuml;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&uuml;r ein  Format schreiben, das JabRef noch nicht unterst&uuml;tzt, 
-oder einen Importer verbessern, bitten wir Sie, Ihre Ergebnisse auf unserer SourceForge.net 
-Seite zu ver&ouml;ffentlichen. Wir bieten gerne eine Sammlung eingereichter Importfilter an oder 
+gemeinsam zu nutzen. Wenn Sie einen Importer f&uuml;r ein  Format schreiben, das JabRef noch nicht unterst&uuml;tzt,
+oder einen Importer verbessern, bitten wir Sie, Ihre Ergebnisse auf unserer SourceForge.net
+Seite zu ver&ouml;ffentlichen. Wir bieten gerne eine Sammlung eingereichter Importfilter an oder
 f&uuml;gen sie unserer Auswahl an Standard-Importfiltern hinzu.
 
-</HTML>
+</HTML>
\ No newline at end of file
index 3f484ab0fc2a75db0e893ecae93b5dc8e91e83bc..7201c0e1bd4fee58e0a315b33526a853facd3d3b 100644 (file)
@@ -8,7 +8,7 @@
 <h2>Exportieren aus JabRef</h2>
 
 JabRef kann Dateien so exportieren, dass EndNote sie lesen kann.
-Um diese Funktion zu nutzen, w&auml;hlen Sie <b>Datei -> Exportieren -> Endnote</b>
+Um diese Funktion zu nutzen, w&auml;hlen Sie <b>Extras -> Endnote</b>
 und w&auml;hlen dann den Namen der Export-Datei.
 
 <h2>Importieren in EndNote</h2>
index 8d65acb2581fca982d8dacd8f88612caf1f2a094..f40ead6aa10d0f579fed397aecb4e9f83372c1a9 100644 (file)
@@ -54,4 +54,33 @@ wird das Feld entsprechend gesetzt.
 &uuml;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&ouml;nnen f&uuml;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&auml;ren Ausdr&uuml;cken f&uuml;r automatische Verkn&uuml;pfungen nutzen</H2>
+</a>
+<p>
+Wenn Sie Dateinamen verwenden, die dem bibtexkey erg&auml;nzt um die Dateiendung entsprechen, findet JabRef diese Dateien automatisch.
+</p><p>
+Ab Version 2.2 ist mit Hilfe von regul&auml;ren Ausdr&uuml;cken eine gr&ouml;&szlig;ere Flexibilit&auml;t beim Benennen der Dateien gew&auml;hrleistet. In den meisten F&auml;llen d&uuml;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&auml;rem Ausdruck benutzen". Wenn Sie diese Option aktivieren, k&ouml;nnen Sie f&uuml;r die Suche in PDF-Verzeichnissen einen eigenen regul&auml;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&ouml;her).</li>
+  <li><code>[title]</code> - Alle Ausdr&uuml;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&auml;rer Ausdruck interpretiert. Aber Vorsicht: <em>backslashes</em> m&uuml;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
index 601876a951945c22ca8a35faa79b0547183dd25e..c9b9164da9bc446e40a018094bb461c4905605d9 100644 (file)
@@ -96,7 +96,6 @@ In der Gruppenansicht werden dynamische Gruppen standardm&auml;&szlig;ig <i>kurs
 
 <h3>Hierarchischer Kontext</h3>
 
-<em>Hinweis des &Uuml;bersetzers: weiter bin ich noch (03.11.2005) nicht gekommen.</em><br>
 Standardm&auml;&szlig;ig ist eine Gruppe <b>unabh&auml;ngig</b> von ihrer Position im Gruppenbaum. Ist eine Gruppe ausgew&auml;hlt, wird nur der Inhalt dieser Gruppe angezeigt. Es ist jedoch -- besonders beim Verwenden dynamischer Gruppen -- oft n&uuml;tzlich, eine Untergruppe zu erstellen, die <b>ihre Obergruppe verfeinert</b>. Wenn diese Untergruppe ausgew&auml;hlt wird, werden alle Eintr&auml;ge dieser Gruppe und ihrer Obergruppe angezeigt. Erstellen Sie z.B. eine Obergrupe, die Eintr&auml;ge mit dem Stichwort <tt>Verteilung</tt> enth&auml;lt, sowie eine verfeinernde Untergruppe mit Eintr&auml;gen, die das Stichwort <tt>Gau&szlig;</tt> enthalten. Wenn Sie nun die Untergruppe ausw&auml;hlen, werden alle Eintr&auml;ge angezeigt, die beiden Bedingungen entsprechen, also alle, die mit Gau&szlig;'scher Verteilung zu tun haben. Indem Sie nun eine weitere Untergruppe f&uuml;r <tt>Laplace</tt> anlegen, die dieselbe Obergruppe verfeinert, k&ouml;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&uuml;ck zu einer solchen verfeinernden Untergruppe ist eine Gruppe, die <b>ihre Untergruppen ber&uuml;cksichtigt</b>. Wird sie ausgew&auml;hlt, werden nicht nur die Eintr&auml;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.)
diff --git a/src/help/de/IEEEXploreHelp.html b/src/help/de/IEEEXploreHelp.html
new file mode 100644 (file)
index 0000000..39eed80
--- /dev/null
@@ -0,0 +1,25 @@
+<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&auml;hlen Sie <b>Internet -> IEEEXplore abfragen</b>
+und geben in dem Dialog, der im linken Bildschirmbereich erscheint, Ihre
+Suchausdr&uuml;cke ein. Dr&uuml;cken Sie anschlie&szlig;end die
+<b>Enter</b>-Taste oder den <b>Abrufen</b>-Button.
+<p>
+Die Suche wird im G&auml;ste-Modus durchgef&uuml;hrt, es werden also maximal 100 Ergebnisse
+angezeigt.
+<p>
+Sie k&ouml;nnen die <i>abstracts</i> zusammen mit den Literaturangaben herunterladen,
+indem Sie einen Haken bei <b>Abstracts ber&uuml;cksichtigen</b> setzen. Das verursacht
+eine deutlich h&ouml;here Anzahl von Netzwerk-Anfragen; um die Webseite von IEEEXplore
+nicht &uuml;berm&auml;&szlig;ig zu belasten, l&auml;dt JabRef <i>abstracts</i> nur bei einer Suche,
+deren Ergebnis eine bestimmte Trefferanzahl nicht &uuml;bersteigt.
+
+</HTML>
\ No newline at end of file
index 65f6c52fb78d1cc6d9bb0a533e95dae97ffeaf62..7dcf67212232f93c4e37af9fbcd0cbd963e25cd7 100644 (file)
@@ -1,52 +1,70 @@
-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}
 }
 
index 4fdef1434ec31cfde2369b3fbb93f14fa6ca9331..1a22acd5fe67a5906a6520530ae243b8e6de3dd4 100644 (file)
@@ -1,15 +1,13 @@
-% 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}
@@ -21,6 +19,8 @@
 \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}}
@@ -127,7 +155,7 @@ Me-n
 
 %%%%% Bibliography %%%%%
 \usepackage{jurabib}
-\jurabibsetup{annote=true}
+\jurabibsetup{annote=true,authorformat=year}
 \renewcommand{\bib@heading}{\addsec{Kommentiertes Literaturverzeichnis}}
 
 %%%%% Hyperref %%%%%
@@ -150,8 +178,7 @@ bookmarksopenlevel=1,%
 \makeatother
 \begin{document}
 
-\subject{\includegraphics[%
-  scale=0.25]{../../images/JabRef-splash.png}}
+\subject{\includegraphics[scale=.5]{../../images/JabRef-icon-48.png}}
 
 
 \title{\jabrefversion{}\\
@@ -166,12 +193,12 @@ Benutzerhandbuch}
 
 \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.
 
@@ -186,7 +213,7 @@ zu starten.
 \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}
@@ -230,70 +257,141 @@ Abschnitt >>Versionsgeschichte<< (S.\,\pageref{RevisionHistory})
 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}
@@ -325,9 +423,9 @@ Erstellen Sie in dem Ordner, in dem Sie die Datei \emph{JabRef.jar}
 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{}.
 
 
@@ -365,22 +463,22 @@ unter \url{http://jabref.sourceforge.net} und in der Datei INSTALL
 (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.
@@ -396,22 +494,11 @@ aufgerufen werden.}
 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
@@ -428,14 +515,14 @@ und ausgeschaltet werden. Die Farbanzeige illustriert, ob Ihre Daten
 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}
@@ -459,7 +546,7 @@ f
 
 \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}
@@ -468,19 +555,18 @@ nicht ausgew
 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}
@@ -498,7 +584,7 @@ auf ESC dr
 \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.
 
@@ -512,7 +598,7 @@ Sie mehr Informationen dar
 
 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
@@ -529,9 +615,9 @@ Au
 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
@@ -553,14 +639,14 @@ Drag \& Drop. Sie k
 \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).
 
@@ -578,51 +664,48 @@ Mit dieser Funktion 
 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}
 
@@ -636,31 +719,21 @@ Sortierung Ihrer Datei. Um die direkte Suche zu verlassen, dr
 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
@@ -668,9 +741,9 @@ und\slash{}oder logische Operatoren im Suchbegriff zu benutzen, wird
 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
@@ -678,17 +751,15 @@ in dem Feldbezeichner. Mehrere Feldbezeichner werden durch >>|<<
 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
@@ -701,29 +772,21 @@ man \texttt{==} oder \texttt{matches} (>>
 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:
 
@@ -751,16 +814,17 @@ benutzerabh
 
 
 \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{}
 
@@ -833,7 +897,7 @@ anderen Gruppen sollten nun markiert sein.
 
 \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~--
@@ -842,7 +906,7 @@ noch gel
 \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
@@ -853,7 +917,7 @@ Eintr
 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}
@@ -893,8 +957,8 @@ w
 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.
 
 
@@ -910,7 +974,7 @@ Datei vornehmen. Es gibt zwei m
 \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
@@ -947,22 +1011,19 @@ Standardm
 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}
@@ -1085,14 +1141,13 @@ einmal genauer ansehen m
 
 
 \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.
@@ -1109,20 +1164,64 @@ ausgegeben wird.
 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}
 
@@ -1134,7 +1233,7 @@ indem Sie diese Felder im oberen Teil des Dialogs \menu{Extras} \msep{}
 \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
@@ -1159,7 +1258,7 @@ Datei hinzugef
 
 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.
@@ -1211,12 +1310,12 @@ installiert.) Klicken Sie schlie
 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
@@ -1251,7 +1350,7 @@ und demzufolge unpassend formatiert.
 
 \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
@@ -1270,8 +1369,8 @@ Sie den Angaben in der Datei \texttt{readme.txt}.
 
 \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}
@@ -1308,7 +1407,7 @@ Anschlie
 \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.
@@ -1342,7 +1441,7 @@ wird bei jedem neuen Zuweisen von Textbereichen das Feld 
 
 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}
@@ -1351,9 +1450,9 @@ werden; das ist erst m
 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.
 
 
@@ -1413,7 +1512,7 @@ referenziert, so dass Sie problemlos PDF-Verzeichnisse verschieben
 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
@@ -1426,26 +1525,132 @@ Wenn Sie eine PDF-Datei wie beschrieben benennen, k
 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}
+&lt;rdf:Description xmlns:bibtex=&quot;http://jabref.sourceforge.net/bibteXMP/&quot;
+    bibtex:bibtexkey=&quot;CroAnnHow05&quot;
+    bibtex:year=&quot;2005&quot;
+    bibtex:title=&quot;Effective work practices for floss development: A model and propositions&quot;
+    bibtex:owner=&quot;oezbek&quot;
+    bibtex:url=&quot;http://james.howison.name/publications.html&quot;
+    bibtex:booktitle=&quot;Hawaii International Conference On System Sciences (HICSS)&quot;
+    bibtex:timestamp=&quot;2006.05.29&quot;&gt;
+        &lt;bibtex:author&gt;
+            &lt;rdf:Seq&gt;
+                &lt;rdf:li&gt;K. Crowston&lt;/rdf:li&gt;
+                &lt;rdf:li&gt;H. Annabi&lt;/rdf:li&gt;
+                &lt;rdf:li&gt;J. Howison&lt;/rdf:li&gt;
+                &lt;rdf:li&gt;C. Masango&lt;/rdf:li&gt;
+            &lt;/rdf:Seq&gt;
+        &lt;/bibtex:author&gt;
+    &lt;bibtex:entrytype&gt;Inproceedings&lt;/bibtex:entrytype&gt;
+&lt;/rdf:Description&gt;
+\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}
@@ -1468,11 +1673,20 @@ kann. F
 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.
@@ -1495,6 +1709,26 @@ m
 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}
 
@@ -1502,11 +1736,9 @@ Wenn Sie einen HTTP-Proxy-Server benutzen m
 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}
 
@@ -1569,7 +1801,7 @@ mit grafischer Benutzeroberfl
 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
@@ -1578,9 +1810,9 @@ eine Bool'sche Option wie \texttt{-n} oder \texttt{-l} direkt vor
 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,
@@ -1596,13 +1828,11 @@ vorgestellt.
 \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
@@ -1613,17 +1843,15 @@ oder mit Hilfe eines Scripts durchzuf
 
 \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}
@@ -1641,7 +1869,6 @@ als Argument maximal eine Datei.
 
 \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,
@@ -1649,7 +1876,7 @@ wird diese Datei exportiert. Ansonsten wird die Datei exportiert,
 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
@@ -1668,32 +1895,42 @@ als Argument maximal eine Datei.
 
 \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
 
@@ -1786,42 +2023,37 @@ sie jeweils durch ein Semikolon.
 
 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
@@ -1858,7 +2090,7 @@ Autor vorhanden ist. Ein Plus (+) wird angeh
 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.
@@ -1901,7 +2133,7 @@ w
 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
@@ -1909,35 +2141,20 @@ anpassen~-- seine Einstellung befindet sich 
 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
@@ -1949,12 +2166,6 @@ Aussehen und Inhalt der Vorschau k
 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
@@ -2002,23 +2213,15 @@ bzw. \texttt{.end} enthalten m
 \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
@@ -2061,16 +2264,16 @@ Ein Formatierer wird angewendet, indem man das Kommando \texttt{\textbackslash{}
 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.
@@ -2126,22 +2329,20 @@ Manche statische Ausgabe macht nur Sinn, wenn ein bestimmtes Feld
 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
@@ -2167,39 +2368,21 @@ Nehmen wir zum Beispiel an, dass wir die Ausgabe nach dem \emph{keyword}
 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.
 
@@ -2209,20 +2392,20 @@ Externe Importfilter haben Vorrang vor Standard-Importern. So k
 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,
@@ -2236,135 +2419,101 @@ Sie k
 \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
@@ -2424,7 +2573,7 @@ Neuer Eintrag aus Klartext&
 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
@@ -2515,8 +2664,26 @@ Hilfe&
 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
@@ -2538,73 +2705,21 @@ der dann f
 \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
diff --git a/src/help/de/JournalAbbreviations.html b/src/help/de/JournalAbbreviations.html
new file mode 100644 (file)
index 0000000..5d9028e
--- /dev/null
@@ -0,0 +1,53 @@
+<HTML>
+
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+
+<H1>Zeitschriftentitel abk&uuml;rzen</H1>
+
+Diese Funktion kann unter <b>Optionen -> Abk&uuml;rzungen der Zeitschriften verwalten</b> eingestellt werden.
+
+<p>JabRef kann automatisch zwischen Zeitschriftentiteln in abgek&uuml;rzter und ausf&uuml;hrlicher Form hin- und herschalten, sofern die Titel in einer Ihrer Zeitschriftenlisten enthalten ist. Sie k&ouml;nnen mehrere dieser Listen benutzen, die Sie als externe Textdateien anlegen.
+
+<H2>Benutzungshinweise</H2>
+<p>
+Die Abk&uuml;rzung von Zeitschriftentiteln k&ouml;nnen Sie von Eintragseditor oder vom Men&uuml; <b>Extras</b> aus ein- und ausschalten. Im Eintragseditor benutzen Sie dazu den Button <b>Abk&uuml;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&uuml;rzung, z.B. "Aquacult. Eng."</li>
+    <li>MEDLINE-Abk&uuml;rzung, z.B. "Aquacult Eng"</li>
+</ul>
+Falls der Zeitschriftenname sich nicht in Ihren Zeitschriftenlisten findet, wird das Feld nicht ver&auml;ndert.
+
+<p>
+Um die Zeitschriftennamen mehrerer Eintr&auml;ge auf einmal zu konvertieren, k&ouml;nnen Sie eine beliebige Anzahl von Eintr&auml;gen ausw&auml;hlen und im Men&uuml; <b>Extras</b> einen der Eintr&auml;ge <b>Zeitschriftennamen abk&uuml;rzen (ISO)</b>, <b>Zeitschriftennamen abk&uuml;rzen (MEDLINE)</b> und <b>Abk&uuml;rzung der Zeitschriften aufheben</b> w&auml;hlen.
+Diese drei Aktionen sorgen daf&uuml;r, dass bei allen ausgew&auml;hlten Eintr&auml;gen die Zeitschriftennamen, die in den Zeitschriftenlisten gefunden werden konnten, abgek&uuml;rzt oder komplett ausgeschrieben werden.
+
+<h2>Zeitschriftenlisten verwalten</h2>
+
+Sie k&ouml;nnen mehrere Zeitschriftenlisten als externe Textdateien benutzen, die mit JabRef verlinkt sind. Die prim&auml;re Liste kann in JabRef selbst verwaltet werden.
+
+<H3>Ihre pers&ouml;nliche Zeitschriften-Abk&uuml;rzungsliste</H3>
+
+Ihre pers&ouml;nliche Liste verwalten Sie im oberen Teil des <b>Abk&uuml;rzung der Zeitschriftennamen</b>-Dialogs.
+W&auml;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&auml;hlen Sie stattdessen <b>Bestehende Datei</b> und benutzen den <b>Durchsuchen</b>-Button zum Ausw&auml;hlen dieser Datei. Die Tabelle zeigt dann den Inhalt der Liste, die Sie ausgew&auml;hlt haben.
+
+<p>Sie k&ouml;nnen mit Hilfe der <b>+</b> und <b>-</b> Buttons an der rechten Seite Eintr&auml;ge hinzuf&uuml;gen oder entfernen. F&uuml;r jeden Eintrag m&uuml;ssen Sie den vollst&auml;ndigen Zeitschriftennamen und die ISO-Abk&uuml;rzung angeben (z.B. "Aquacultural Engineering" und "Aquacult. Eng."). Mit einem Doppelklick auf die Tabellenzeile k&ouml;nnen Sie die Eintr&auml;ge bearbeiten.
+
+<p>Sobald Sie auf <b>OK</b> klicken (oder wenn Sie eine bestehende Datei ausgew&auml;lt haben), enth&auml;lt die Tabelle mindestens eine Zeile. Der Tabelleninhalt wird in die ausgew&auml;hlte Datei geschrieben und die Zeitschriftenliste von JabRef wird aktualisiert.
+
+<h3>Externe Zeitschriftenlisten</h3>
+
+Zus&auml;tzlich zu Ihrer pers&ouml;nlichen Liste k&ouml;nnen Sie mehrere externe Listen verlinken. Diese Verkn&uuml;pfungen werden im unteren Teil des <b>Abk&uuml;rzung der Zeitschriftennamen</b>-Dialogs verwaltet. Externe Listen sind den pers&ouml;nlichen Listen &auml;hnlich - der einzige Unterschied ist, dass Sie nicht mit JabRef selbst verwaltet werden k&ouml;nnen.
+<p>
+Um eine externe Liste hinzuzuf&uuml;gen, klicken Sie zun&auml;chst auf den <b>+</b> Knopf, falls n&ouml;tig (das f&uuml;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&ouml;nnen Sie eine auf Ihrem Computer bestehende Datei ausw&auml;hlen.</li>
+    <li>Mit dem <b>Herunterladen</b>-Knopf k&ouml;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&auml;&szlig;ig die Adresse einer Zeitschriftenliste auf der JabRef-Homepage. Diese Liste ist unvollst&auml;ndig, wird in Zukunft aber ausgebaut.</li>
+    </ul>
+
+Jeder Eintrag in Ihrer pers&ouml;nlichen Liste &uuml;berschreibt einen Eintrag mit demselben vollst&auml;ndigen Zeitschriftennamen in einer Ihrer externen Listen. In &auml;hnlicher Weise werden die externen Listen in der Reihenfolge, wie sie aufgelistet werden, abgearbeitet.
+
+</BODY>
+</HTML>
\ No newline at end of file
index 886cd2238f93de3211c6414bbf560ca292f06e2a..8ac7418f89d383234666bb22b66f8f33e28d201c 100644 (file)
@@ -63,6 +63,7 @@ Modifikator stehen. Modifikatoren werden in der Reihenfolge angewendet, in der s
 <ul>
 <li><b>:abbr</b>: K&uuml;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&uuml;cksichtigt. Zum Beispiel w&uuml;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&uuml;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&uuml;r einen bestimmten Eintragstyp angeben, wird das vorgegebene
 Muster (default pattern) verwendet. Sie k&ouml;nnen das vorgegebene Muster nat&uuml;rlich ebenfalls
@@ -78,11 +79,11 @@ wie folgt aussehen:
 <blockquote> <code>Yared1998</code><BR> <code>Yared1998a</code><BR>
 <code>Yared1998b</code> </blockquote>
 
-<h2>Ersetzen eines Regul&auml;ren Ausdrucks</h2>
+<h2>Ersetzen eines regul&auml;ren Ausdrucks</h2>
 
-Nachdem das Key-Muster angewendet wurde, um einen BibTeX-Key zu erstellen, k&ouml;nnen Sie den Key-Generator nach einem bestimmten Regul&auml;ren Ausdruck suchen und ihn durch eine Zeichenfolge ersetzen lassen. Der Regul&auml;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&ouml;nnen Sie den Key-Generator nach einem bestimmten regul&auml;ren Ausdruck suchen und ihn durch eine Zeichenfolge ersetzen lassen. Der regul&auml;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&auml;ren Ausdrucks leer ist, werden die mit der Suche &uuml;bereinstimmenden Regul&auml;ren Ausdr&uuml;cke einfach gel&ouml;scht.
+Falls das Feld zur Ersetzung des regul&auml;ren Ausdrucks leer ist, werden die mit der Suche &uuml;bereinstimmenden regul&auml;ren Ausdr&uuml;cke einfach gel&ouml;scht.
 
 </font>
 </BODY>
index a2997586d8ba1862249a6569915a1cfeb76b6ec0..914fb2a866557c1ec5db570e9fa6406f5e1648a0 100644 (file)
@@ -5,6 +5,8 @@
 
 <H1>Eintr&auml;ge von Medline abrufen</H1>
 
+MEDLINE ist die wichtigste Datenbank der <em>U.S. National Library of Medicine</em>. Sie enth&auml;lt Literaturangaben von Zeitschriftenartikeln der Lebenswissenschaften, vornehmlich der Biomedizin.
+<p>
 JabRef kann Literaturangaben von der Medline-Datenbank herunterladen. Um diese Funktion
 zu nutzen, w&auml;hlen Sie <b>Extras -> Medline abrufen</b>, so dass der Medline-Dialog
 im linken Seitenfeld erscheint.
@@ -31,4 +33,4 @@ an Java. Diese Umgebungseinstellungen sind dokumentiert unter
 
 <p><code>java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"</code>
 
-</HTML>
+</HTML>
\ No newline at end of file
index efbca982960e9633d76258f57fd3203138ea7b24..93aefe70f7b24d90fce72b63f1e4e28a02eef225 100644 (file)
@@ -44,36 +44,4 @@ Anschlie&szlig;end w&auml;hlen Sie <b>Extras -> Literaturdatenbank</b>. Ihre Dat
 Anschlie&szlig;end w&auml;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&szlig;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&auml;hlen Sie <b>Extras -> Optionen -> OpenOffice.org Base -> Datenbanken</b></li>
-    <li>Bearbeiten Sie die <i>Bibliography</i>-Datenbank und &auml;ndern ihren Namen z.B. in <i>Bibliographie-alt</i></li>
-    <li>Schlie&szlig;en Sie das Fenster <b>Optionen</b> und gehen Sie zu <b>Datei -> Neu -> Datenbank</b></li>
-    <li>W&auml;hlen Sie <b>Verbindung zu einer bestehenden Datenbank herstellen</b>, w&auml;hlen <b>Tabellendokument</b> als
-    Datenbanktyp und w&auml;hlen die <b>.ods</b>-Datei, die Sie exportiert haben</li>
-    <li>Klicken Sie auf <b>Fertig stellen</b> und w&auml;hlen den Namen <i>Bibliography</i> im Speicherdialog</li>
-</ul>
-Anschlie&szlig;end w&auml;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&auml;hlen Sie <b>Extras -> Datenquellen</b></li>
-    <li>W&auml;hlen Sie die <i>Bibliography</i>-Datei und &auml;ndern ihren Namen z.B. in <i>Bibliographie-alt</i></li>. Dr&uuml;cken Sie <b>Anwenden</b>.
-    <li>Klicken Sie <b>Neue Datenquelle</b>. Ein neuer Eintrag erscheint. &Auml;ndern Sie den Namen zu
-        <i>Bibliography</i>.</li>
-     <li>&Auml;ndern Sie den <b>Dateityp</b> zu <b>Tabelle</b>. Klicken Sie den <b>...</b>-Button
-     in der Zeile <b>Datenquellen URL</b>. W&auml;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&szlig;en.</li>
-</ul>
-Anschlie&szlig;end w&auml;hlen Sie <b>Extras -> Literaturdatenbank</b>.
-Ihre Datenbank sollte nun angezeigt werden.
-
-</HTML>
+</HTML>
\ No newline at end of file
diff --git a/src/help/de/RemoteHelp.html b/src/help/de/RemoteHelp.html
new file mode 100644 (file)
index 0000000..f31127e
--- /dev/null
@@ -0,0 +1,22 @@
+<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&ouml;glicherweise auch mit anderen Konfigurationen) zu einer Meldung f&uuml;hren kann, die besagt, dass bestimmte Funktionen des Programms von der Windows-Firewall geblockt wurden. Sie k&ouml;nnen die Firewall anweisen, weiterhin zu blocken, denn die Firewall beeintr&auml;chtigt den Externen Zugriff von JabRef nicht.</i>
+
+<p>Falls das Abh&ouml;ren von externen Zugriffen aktiviert ist, versucht JabRef beim Programmstart, den entsprechenden Port abzuh&ouml;ren. Das bedeutet, dass andere Anwendungen Informationen durch diesen Port an JabRef senden k&ouml;nnen. JabRef akzeptiert dabei nur lokale Verbindungen, um das Risiko eines Eingriffs von au&szlig;erhalb auszuschlie&szlig;en.
+
+<p>
+Mit dem externen Zugriff kann eine zweite Instanz von JabRef erkennen, dass eine erste Instanz bereits l&auml;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&uuml;cklich instruiert wurde, im Stand-Alone-Modus (als selbst&auml;ndige Instanz) zu starten.
+
+<p>Die erste JabRef-Instanz liest die Kommandozeilenoptionen und f&uuml;hrt die erforderlichen Aktionen aus, z.B. das Lesen oder Importieren einer Datei oder das Anh&auml;ngen einer Datei an die aktive Datenbank. Falls eine Datei mit der Option <code>--importToOpen</code> importiert wird, werden die Eintr&auml;ge an die aktive Datei angeh&auml;ngt. Falls keine Datei ge&ouml;ffnet ist, wird eine neue Datei angelegt.
+
+
+
+</BODY>
+</HTML>
\ No newline at end of file
index e83cb3657cb6c35f686dbc284782b929f9b586d8..678def5b9f651a5b505874500fbab40d708c184c 100644 (file)
@@ -5,7 +5,7 @@
 
 <H1>Suchfunktionen</H1>
 
-Es gibt drei verschiedene Suchmethoden in JabRef.
+<!--Es gibt drei verschiedene Suchmethoden in JabRef.-->
 
 <p>
 <em>STRG-F</em> &ouml;ffnet oder aktiviert den Suchdialog. Dr&uuml;ckt man mehrmals auf <em>STRG-F</em>, so werden die verschiedenen Suchmodi ausgew&auml;hlt. Bei der direkten Suche springt man mit <em>STRG-F</em> zum n&auml;chsten Treffer.
@@ -16,13 +16,9 @@ Es gibt drei verschiedene Suchmethoden in JabRef.
 
 Bei der direkten Suche sucht das Programm sofort, sobald Sie einen Buchstaben eingeben. Die Statuszeile informiert Sie &uuml;ber den Sucherfolg. Mit den Tastaturk&uuml;rzeln wird das Programm dazu veranlasst, nach dem n&auml;chsten Vorkommen des aktuellen Suchbegriffs zu suchen. Falls es keine weiteren Vorkommen gibt, informiert die Statuszeile sie dar&uuml;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&uuml;cken Sie ESC oder klicken Sie auf "Zur&uuml;cksetzen".
 
-<H2>Suche mit Markierung</H2>
+<H2>Normale Suche</H2>
 
-Wenn Sie die Suchoption "Markieren" w&auml;hlen, sucht das Programm in Ihrer Datei nach allen Vorkommen ihres Suchbegriffs, sobald Sie auf ENTER dr&uuml;cken. Alle Treffer werden ausgew&auml;hlt.
-
-<H2>Float-Suche</H2>
-
-Die Suche mit der Option "Float" ist &auml;hnlich wie die Suche mit Markierung, nur dass die Treffer nicht ausgew&auml;hlt, sondern an den Anfang der Tabelle sortiert werden. Eintr&auml;ge, die nicht mit dem Suchbegriff &uuml;bereinstimmen, werden unter den Treffern aufgelistet und zus&auml;tzlich grau hinterlegt. Um die Anzeige der Suchergebnisse abzuschalten, dr&uuml;cken Sie ESC oder klicken auf "Zur&uuml;cksetzen".
+Hierbei sucht das Programm nach allen Vorkommen der W&ouml;rter ihres Suchausdrucks, sobald Sie ENTER dr&uuml;cken. Nur Eintr&auml;ge, die alle W&ouml;rter enthalten, gelten als Treffer. Um nach festen Ausdr&uuml;cken zu suchen, m&uuml;ssen Sie die W&ouml;rter in doppelte Anf&uuml;hrungszeichen einfassen. Zum Beispiel findet die Suchanfrage <b>progress "marine acquaculture"</b> Eintr&auml;ge, die sowohl das wort "progress" als auch den Ausdruck "marine acquaculture" aufweisen. Alle Eintr&auml;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&auml;hrend die Treffer oben angezeigt werden (Option <b>Oben einsortieren</b>). Um die Trefferanzeige zu beenden, dr&uuml;cken Sie ESC oder klicken auf die Schaltfl&auml;che <b>Zur&uuml;cksetzen</b> im Suchen-Dialog.
 
 <a name="advanced"><H2>Feldbezeichner und logische Operatoren</H2></a>
 
@@ -44,7 +40,7 @@ Das "="-Zeichen ist eigentlich eine Abk&uuml;rzung f&uuml;r "enth&auml;lt" ("con
 <p>
 entrytype = thesis
 <p>
-&hellip; findet z.B. Eintr&auml;ge, deren Typ (wie in der Spalte "Entrytype" dargestellt) das Wort "thesis" enth&auml;lt (z.B. "phdthesis" und "mastersthesis"). Ebenso erlaubt das Pseudofeld "bibtexkey" die Suche nach BibTeX keys, z.B.:
+&hellip; findet z.B. Eintr&auml;ge, deren Typ (wie in der Spalte "Entrytype" dargestellt) das Wort "thesis" enth&auml;lt (z.B. "phdthesis" und "mastersthesis"). Ebenso erlaubt das Pseudofeld "bibtexkey" die Suche nach BibTeX-Keys, z.B.:
 <p>
 bibtexkey = miller2005
 
diff --git a/src/help/de/XMPHelp.html b/src/help/de/XMPHelp.html
new file mode 100644 (file)
index 0000000..c75510c
--- /dev/null
@@ -0,0 +1,105 @@
+<HTML>
+
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+
+<H1>Unterst&uuml;tzung von XMP-Metadaten in JabRef</H1>
+<p>
+XMP ist ein Standard, der von Adobe Systems entwickelt wurde, um Metadaten (Daten, die Informationen &uuml;ber andere Daten enthalten) in Dateien zu speichern. Ein bekanntes Beispiel f&uuml;r Metadaten sind ID3-Tags, die zur Beschreibung von K&uuml;nstlern, Albumtiteln und Liednamen einer MP3-Datei verwendet werden. Mit Hilfe von Metadaten k&ouml;nnen MP3-Dateien unabh&auml;ngig von ihrem Dateinamen identifiziert und z.B. von MP3-Playern ausgelesen und angezeigt werden.
+</p>
+<p>
+Mit der XMP-Unterst&uuml;tzung versucht das JabRef-Team, die Vorteile von Metadaten in die Welt der Literaturmanager einzuf&uuml;hren.
+Sie k&ouml;nnen <b>XMP schreiben</b> im <b>Allgemein</b>-Tab des Eintragseditors w&auml;hlen und damit alle BibTeX-Informationen in die verlinkte PDF-Datei schreiben. Wenn Sie diese PDF-Datei mit anderen austauschen, k&ouml;nnen diese die Datei in das JabRef-Fenster ziehen und haben damit alle Informationen zur Verf&uuml;gung, die Sie eingegeben haben.
+</p>
+
+<H2>Benutzung</H2>
+
+Um die XMP-Funktionen in JabRef zu nutzen, gehen Sie folgenderma&szlig;en vor:
+
+<ul>
+  <li>Zum <i>Importieren einer einzelnen PDF-Datei mit Metadaten</i> w&auml;hlen Sie <b>Datei -> Importieren in [neue|aktuelle] Datenbank</b> und im anschlie&szlig;enden Dialog als Dateiformat <b>PDF mit XMP-Anmerkungen</b> aus. Sie k&ouml;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&auml;hlen Sie <b>Extras -> XMP-Metadaten in PDFs schreiben</b>.</li>
+  <li>Um zu &uuml;berpr&uuml;fen, ob das Schreiben der Metadaten funktioniert hat, &ouml;ffnen Sie die Datei in Adobe Acrobat und w&auml;hlen <b>Datei -> Dokumenteigenschaften</b> und dann unter dem Reiter <b>Beschreibung</b> die Schaltfl&auml;che <b>Zus&auml;tzliche Metadaten</b>. Wenn Sie links "Erweitert" ausw&auml;hlen, sollten Sie im rechten Teil des Dialogs einen Eintrag "http://jabref.sourceforge.net/bibteXMP" sehen, der die entsprechenden Metadaten enth&auml;lt. Dies geht nur mit dem Vollprogramm Adobe Acrobat, nicht mit dem Adobe Reader.</li>
+  <li>Wer kein Adobe Acrobat zur Verf&uuml;gung hat, kann stattdessen das Programm <i>pdfinfo</i> verwenden, um die XMP-Metadaten zu &uuml;berpr&uuml;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&uuml;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&ouml;nnen. Alle Strings und crossrefs werden in den Metadaten aufgel&ouml;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>
+&lt;rdf:Description xmlns:bibtex=&quot;http://jabref.sourceforge.net/bibteXMP/&quot;
+    bibtex:bibtexkey=&quot;CroAnnHow05&quot;
+    bibtex:year=&quot;2005&quot;
+    bibtex:title=&quot;Effective work practices for floss development: A model and propositions&quot;
+    bibtex:owner=&quot;oezbek&quot;
+    bibtex:url=&quot;http://james.howison.name/publications.html&quot;
+    bibtex:booktitle=&quot;Hawaii International Conference On System Sciences (HICSS)&quot;
+    bibtex:timestamp=&quot;2006.05.29&quot;&gt;
+        &lt;bibtex:author&gt;
+            &lt;rdf:Seq&gt;
+                &lt;rdf:li&gt;K. Crowston&lt;/rdf:li&gt;
+                &lt;rdf:li&gt;H. Annabi&lt;/rdf:li&gt;
+                &lt;rdf:li&gt;J. Howison&lt;/rdf:li&gt;
+                &lt;rdf:li&gt;C. Masango&lt;/rdf:li&gt;
+            &lt;/rdf:Seq&gt;
+        &lt;/bibtex:author&gt;
+    &lt;bibtex:entrytype&gt;Inproceedings&lt;/bibtex:entrytype&gt;
+&lt;/rdf:Description&gt;
+</pre></td></tr>
+</table>
+
+<p>
+Beachten Sie die folgenden Warnungen, wenn Sie bibteXMP parsen m&ouml;chten:
+</p>
+<p>
+<ul>
+  <li>In RDF k&ouml;nnen Attribut-Wert-Paare auch als Knoten wiedergegeben werden und vice versa.</li>
+</ul>
+</p>
+<H2>Weiterf&uuml;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
index 6479a3cf488d8c97f9edd3fee10374f40a7625b5..7d12cb28d7b3d670d8fdf19a131e52d9ae00c988 100644 (file)
@@ -5,7 +5,7 @@
 <CENTER>
 <H1>JabRef version @version@</H1>
 
-(c) 2006
+(c) 2007
 <p>
 <img src="/images/JabRef-icon-48.png"></img>
 
@@ -21,6 +21,7 @@ Michel Baylac,
 Guillaume Gardey,
 Cyrille d'Haese,
 Raik Nagel,
+Christopher Oezbek,
 Ellen Reitmayr,
 Gert Renckens,
 Andreas Rudert,
@@ -33,6 +34,8 @@ Egon Willighagen,
 J&ouml;rg Zieren
 
 <H2>Contributions de&nbsp;:</H2>
+Michael Beckmann,
+Oliver Böckmann,
 Kolja Brix,
 Fr&eacute;d&eacute;ric Darboux,
 Fabrice Dessaint,
@@ -44,15 +47,20 @@ Bernd Kalbfuss,
 Martin K&auml;hmer,
 Ervin Kolenovic,
 Krzysztof A. Ko&#347;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&auml;rk,
 Martin Stolle,
 David Weitzman,
 Seb Wills,
@@ -91,6 +99,10 @@ La majorit
 (<code>http://www.everaldo.com</code>), qui est distribuée sous les termes de la
 Lesser General Public License.
 
+<P>
+JabRef utilise les biblioth&egrave;ques JempBox et PDFBox pour g&eacute;rer manipuler les PDF, les deux &eacute;tant 
+&eacute;es sous une licence de style BSD.
+
 </CENTER>
 </BODY>
 </HTML>
index 2a595004e2e1dd7c958099572839493e15d93a32..5d59364ea38eeaf171a7c8cc72363552de6beab4 100644 (file)
@@ -9,7 +9,7 @@
 
 JabRef peut exporter des bases de donn&eacute;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&eacute;cifiez le nom du fichier d'exportation.
 
 <h2>Importer dans EndNote</h2>
index e5bf6c1a46c0fdbd1bb3d9f7eccdf07ed8d06cc5..15f3ae47b76024b4f4b1960c0f9beebab7b78482 100644 (file)
@@ -28,7 +28,15 @@ Pour utiliser la fonction XMP dans JabRef, vous pouvez faire les choses suivante
   la fen&ecirc;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&eacute;es d&eacute;termin&eacute;e</b> vous pouvez s&eacute;lectionner "Outils -> Ecrire XMP pour la base de donn&eacute;es"</li>
   <li>Pour v&eacute;rifier si cela a fonctionn&eacute;, vous pouvez ouvrir le PDF dans Adobe Acrobat et s&eacute;lectionner
-  "Fichier -> Propri&eacute;t&eacute;s du Document -> M&eacute;tadonn&eacute;es additionnelles -> Avanc&eacute;". Dans l'arborescence sur la droite vous devriez voir une entr&eacute;e nomm&eacute;e "http://purl.org/net/bibteXMP".
+  "Fichier -> Propri&eacute;t&eacute;s du Document -> M&eacute;tadonn&eacute;es additionnelles -> Avanc&eacute;". 
+ Dans l'arborescence sur la droite vous devriez voir une entr&eacute;e nomm&eacute;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> &agrave;  la place afin de voir les m&eacute;tadonn&eacute;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>
@@ -89,7 +97,7 @@ sera transform&eacute; en
 </table>
 
 <p>
-Faites attention aux pièges suivants si vous essayer de traiter les métadonnées bibtexXMP&nbsp;:
+Faites attention aux pièges suivants si vous essayez de traiter les métadonnées bibtexXMP&nbsp;:
 </p>
 <p>
 <ul>
diff --git a/src/images/font/ACTIVA.TTF b/src/images/font/ACTIVA.TTF
new file mode 100644 (file)
index 0000000..c973b2c
Binary files /dev/null and b/src/images/font/ACTIVA.TTF differ
diff --git a/src/images/font/ASTROLYT.TTF b/src/images/font/ASTROLYT.TTF
new file mode 100644 (file)
index 0000000..9a92497
Binary files /dev/null and b/src/images/font/ASTROLYT.TTF differ
diff --git a/src/images/font/AUGIE.TTF b/src/images/font/AUGIE.TTF
new file mode 100644 (file)
index 0000000..175d7ce
Binary files /dev/null and b/src/images/font/AUGIE.TTF differ
index 55bce92efb30596aa67c47286298ce38119bbb69..56addd6f0c33d6e8321353223632080540690eee 100644 (file)
Binary files a/src/images/splash.png and b/src/images/splash.png differ
index 0a686c1fb5e0fb79c7f80d59e8507a6858251cf4..02279a5f64e0c86d3eb464dc5fe9ea81f7cbc53c 100644 (file)
@@ -157,7 +157,7 @@ public class AdvancedTab extends JPanel implements PrefsTab {
     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
@@ -169,4 +169,8 @@ public class AdvancedTab extends JPanel implements PrefsTab {
 
     }
 
+       public String getTabName() {
+               return Globals.lang("Advanced");
+       }
+
 }
index 3b4e6a2cfc94d2f9dcce47fa4bd7288f82f12bd6..dbc140f6a8f00edaf29baf60cdf32a61d7d0e962 100644 (file)
@@ -1,15 +1,24 @@
 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;
@@ -169,8 +178,7 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
     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") + " '" +
@@ -182,4 +190,7 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
 
     }
 
+       public String getTabName() {
+           return Globals.lang("Appearance");
+       }  
 }
index 3acf1c69009bae7731c9b85209aace06166a2492..76bfc095a033d2c18b68b1794c31a68a47658bcc 100644 (file)
@@ -1328,81 +1328,8 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                   });
 
 
-              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));
@@ -2415,35 +2342,43 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
       //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() {
@@ -2509,4 +2444,4 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         return frame.groupSelector;
     }
 
-}
\ No newline at end of file
+}
index 950fad45cca94c7710caff30acd1014562ee165f..3833e174d60b91372f3c7aad2e7c324c309c3b4e 100644 (file)
@@ -51,6 +51,10 @@ public class BibtexEntry
     // 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);
index ce1d53de8346d9f000e15a2f502070f5e503fd64..6f9503872e9f3cccea6ca82c7580758f850083f5 100644 (file)
@@ -480,8 +480,9 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
                                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);
                        }
 
index bd932b3c630103272b1619e56931702190cf285b..7d8b4d9fd42abc11a24e095fc2575efbdd0a1013 100644 (file)
@@ -6,6 +6,12 @@ import java.awt.*;
 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;
@@ -128,6 +134,9 @@ class ExternalProgramsTab extends JPanel implements PrefsTab {
        return true;
     }
 
+       public String getTabName() {
+               return Globals.lang("External programs");
+       }
 }
 
 
index 04f35de3b069d30a58b0b794479629f9fbe66dea..b8e58ca2fbd1a18d2b78119fa112bfe78547cc6d 100644 (file)
@@ -4,7 +4,6 @@ import java.awt.BorderLayout;
 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;
@@ -21,8 +20,6 @@ public class ExternalTab extends JPanel implements PrefsTab {
 
        JabRefFrame _frame;
 
-       // private JComboBox language = new
-       // JComboBox(GUIGlobals.LANGUAGES.keySet().toArray());
        JTextField pdfDir, regExpTextField, psDir, pdf, ps, html, lyx, winEdt, citeCommand;
 
        ItemListener regExpListener;
@@ -200,4 +197,7 @@ public class ExternalTab extends JPanel implements PrefsTab {
                return true;
        }
 
+       public String getTabName() {
+               return Globals.lang("External programs");
+       }
 }
index 77e58ea04bf4f0bc1b59d401a161c0e5f2be89a9..f1b465a3450dd367b48f3f4b5997aa0ef8c6cd97 100644 (file)
@@ -14,7 +14,7 @@ import java.util.Comparator;
  * 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
  * 
@@ -58,12 +58,21 @@ public class FieldComparator implements Comparator {
                        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) {
@@ -87,8 +96,6 @@ public class FieldComparator implements Comparator {
                         */
                        f1 = new Integer(Util.getMonthNumber((String)f1));                      
                        f2 = new Integer(Util.getMonthNumber((String)f2));
-                       // Somehow this is twisted
-                       multiplier = -multiplier;
                }
 
                int result = 0;
@@ -105,7 +112,7 @@ public class FieldComparator implements Comparator {
                        result = ours.compareTo(theirs);
                }
 
-               return result * multiplier;
+               return result * localMultiplier;
        }
 
        /**
index 978b56d99d5531b62364e5b8e905768859337bcd..a88f35edab5b11f34cf39b48e14c1c8a3811faba 100644 (file)
@@ -311,4 +311,7 @@ public class GeneralTab extends JPanel implements PrefsTab {
         return true;
     }
 
+       public String getTabName() {
+               return Globals.lang("General");
+       }
 }
index d138361a23f1f02fa520c6057d2ec5ed31ffacc3..d8486b04c515cad4afb5390be8250cdd0d9b9d38 100644 (file)
@@ -150,6 +150,7 @@ public class Globals {
        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
@@ -214,7 +215,7 @@ public class Globals {
                        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("_", " ");
@@ -657,7 +658,7 @@ public class Globals {
                // 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", "&Oslash;"); // #216
                HTMLCHARS.put("`U", "&Ugrave;"); // #217
                HTMLCHARS.put("'U", "&Uacute;"); // #218
                HTMLCHARS.put("^U", "&Ucirc;"); // #219
@@ -1117,7 +1118,7 @@ public class Globals {
                // 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"
index c3448da41dcd29be888b390287de7e6dce7f9299..bb872846b25e70ad5e324bec10f5d918c8ce6c39 100644 (file)
@@ -79,7 +79,12 @@ public class JabRef {
 
     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"), "");
index 010ef497ed8b0fefd3baea4103c8eaa0d8e27b0b..932ea7f60f5a4901dfc5a4e8da8ced0b615a52b4 100644 (file)
@@ -102,6 +102,7 @@ public class JabRefFrame extends JFrame {
        JLabel statusLine = new JLabel("", SwingConstants.LEFT), statusLabel = new JLabel(Globals
                .lang("Status")
                + ":", SwingConstants.LEFT);
+    JProgressBar progressBar = new JProgressBar();
 
        // SearchManager searchManager = new SearchManager(ths, prefs);
 
@@ -489,8 +490,8 @@ AboutAction aboutAction = new AboutAction();
               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();
@@ -546,7 +547,7 @@ public JabRefPreferences prefs() {
           }
         }
         if (baseAt(i).getFile() != null) {
-          filenames.add(baseAt(i).getFile().getPath());
+          filenames.add(baseAt(i).getFile().getAbsolutePath());
         }
       }
     }
@@ -558,7 +559,10 @@ public JabRefPreferences prefs() {
       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
@@ -639,9 +643,12 @@ public JabRefPreferences prefs() {
     }
   }
 
+
   private void initLayout() {
     tabbedPane.putClientProperty(Options.NO_CONTENT_BORDER_KEY, Boolean.TRUE);
 
+    setProgressBarVisible(false);
+
       pushExternalButton = new PushToApplicationButton(this,
               PushToApplicationButton.applications);
     fillMenu();
@@ -706,9 +713,14 @@ public JabRefPreferences prefs() {
     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);
@@ -1115,6 +1127,10 @@ public JabRefPreferences prefs() {
       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);
@@ -2075,6 +2091,59 @@ class FetchCiteSeerAction
     }
 
 
+    /** 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 {
@@ -2341,4 +2410,4 @@ class SaveSessionAction
       // Override isOpaque() to prevent the glasspane from hiding the window contents:
       public boolean isOpaque() { return false; }
   }
-}
\ No newline at end of file
+}
index 4ea8085a56f0c3c64fa550dd7195e126e669db02..df377dbe84707043509ed561d0b18335b818895d 100644 (file)
@@ -129,6 +129,8 @@ public class JabRefPreferences {
         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"));
@@ -301,6 +303,8 @@ public class JabRefPreferences {
         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"));
 
@@ -737,6 +741,7 @@ public class JabRefPreferences {
         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");
index d40c5ba8a1a0c4bce3cdea64669ce0834fca958f..2acdc977d2ee15ec343a9786e876ecf875fad8e3 100644 (file)
@@ -239,7 +239,7 @@ public class MetaData {
     }
 
     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);
         }
     }
index 40038686e03383392a8ca5462ced1007df9cf79b..82fd516554241f540b8f112c00efc75b320c5904 100644 (file)
@@ -168,7 +168,7 @@ public class NameFormatterTab extends JPanel implements PrefsTab {
                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);
 
@@ -304,4 +304,8 @@ public class NameFormatterTab extends JPanel implements PrefsTab {
        public boolean readyToClose() {
                return true;
        }
+
+       public String getTabName() {
+        return Globals.lang("Name formatter");
+       }
 }
index 706466356319081b63b0f143d2c57cbc68f1309b..c05f0804542f8043a57bfebe2fa8d7294b8e4f9d 100644 (file)
@@ -32,6 +32,7 @@ import java.awt.event.*;
 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,
index 27ce8b6da60efd0fae4b49c53fb0eb0ccbeba547..dc81b837e0c25acecc167ec35b9e0ac23283dc6a 100644 (file)
@@ -1,29 +1,29 @@
 /*
-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;
 
@@ -37,261 +37,240 @@ import javax.swing.event.*;
 
 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);
+               }
+       }
 
 }
index 28311314e4da18c2e8f04ac291ae7abff915b98f..0d8947e29b0ccc6b436485405245789ccd3349f3 100644 (file)
@@ -1,7 +1,15 @@
 
 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 {
 
     /**
@@ -31,4 +39,10 @@ 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();  
 }
index 37dd412d28f496215d1cea472f9be7407f8f41bd..ae6283b6e676bf188593a013553d6649a9a37405 100644 (file)
@@ -5,6 +5,9 @@ import java.awt.Graphics;
 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;
 
@@ -25,7 +28,7 @@ import net.sf.jabref.export.layout.LayoutHelper;
  * @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";
 
@@ -53,7 +56,7 @@ public class PreviewPanel extends JEditorPane {
        public PreviewPanel(BibtexDatabase database, MetaData metaData, BibtexEntry entry, String layoutFile) {
                this(metaData, layoutFile);
                this.database = database;
-               this.entry = entry;
+               setEntry(entry);
 
                try {
                        readLayout();
@@ -116,13 +119,18 @@ public class PreviewPanel extends JEditorPane {
        }
 
        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() {
@@ -158,4 +166,16 @@ public class PreviewPanel extends JEditorPane {
                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();
+    }
 }
index e5cb9b3ef674282b1486dca3087ca2a733fd2419..1c1c1775fc20c8ebde293a7f613ff7eaf650198c 100644 (file)
@@ -215,4 +215,8 @@ public class PreviewPrefsTab extends JPanel implements PrefsTab {
                return true;
        }
 
+       public String getTabName() {
+               return Globals.lang("Entry preview");
+       }
+
 }
index 1d953d56a85f9886541640d842c0b39678a7f446..d146fbedef1ccaa7cd6dce8a21e37fced8094fcd 100644 (file)
@@ -247,7 +247,8 @@ settings.add(select);
         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");
index 34b2ad68519d5a11e39d0f60837efcf3866cf6bc..2d13d7231cc320f48f1bc9f459f505c57a5e8f33 100644 (file)
@@ -40,7 +40,7 @@ import javax.swing.event.ChangeListener;
  * 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 {
@@ -73,6 +73,7 @@ public class SidePaneManager {
                        }
                });
                sidep = new SidePane();
+                sidep.setVisible(false);
        }
 
        public SidePane getPanel() {
@@ -80,7 +81,7 @@ public class SidePaneManager {
        }
 
        public synchronized boolean hasComponent(String name) {
-               return (components.get("name") != null);
+               return (components.get(name) != null);
        }
 
        public boolean isComponentVisible(String name) {
@@ -142,6 +143,23 @@ public class SidePaneManager {
                }
        }
 
+    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.
@@ -160,10 +178,19 @@ public class SidePaneManager {
                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() {
index 2a2bb5d7618ffc308a6ed4fba47dc5bff52770d6..435a331530fc126d7be1669ed4b5398627259cda 100644 (file)
@@ -38,7 +38,8 @@ public class TabLabelPattern extends JPanel implements PrefsTab{
        
     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;
@@ -84,6 +85,7 @@ public class TabLabelPattern extends JPanel implements PrefsTab{
          //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();
 
@@ -266,6 +268,9 @@ public class TabLabelPattern extends JPanel implements PrefsTab{
            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);
@@ -388,6 +393,7 @@ public class TabLabelPattern extends JPanel implements PrefsTab{
         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());
@@ -403,4 +409,8 @@ public class TabLabelPattern extends JPanel implements PrefsTab{
            //basenamePatternRegex.setText(Globals.prefs.get("basenamePatternRegex"));
            //basenamePatternReplacement.setText(Globals.prefs.get("basenamePatternReplacement"));
     }
+
+       public String getTabName() {
+           return Globals.lang("Key pattern");
+       }
 }
index 7cb8951e051e07470142bf5a55bd102d9eccf17c..a1900393f42417816dd5c67f0063bf728825f61c 100644 (file)
@@ -1,25 +1,34 @@
 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;
@@ -116,10 +125,7 @@ class TableColumnsTab extends JPanel implements PrefsTab {
             ("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
@@ -319,77 +325,7 @@ class TableColumnsTab extends JPanel implements PrefsTab {
         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
index 6e55c0efe978c4b76d36be66df2b79227c398dd0..1d1a2a8e9baabe67c6fd9d28254039a330b9b601 100644 (file)
@@ -19,6 +19,7 @@ import javax.swing.JTextField;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
+
 import com.jgoodies.forms.builder.DefaultFormBuilder;
 import com.jgoodies.forms.layout.FormLayout;
 
@@ -286,42 +287,7 @@ class TablePrefsTab extends JPanel implements PrefsTab {
                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
index 5f7e58278c31532f12c923e0a83fe7c30c771491..6ef39aa178099536ff02cd31a4e809db80d83c47 100644 (file)
@@ -33,7 +33,6 @@
 // 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;
@@ -54,8 +53,10 @@ import java.io.FilenameFilter;
 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;
@@ -65,11 +66,11 @@ import java.util.Arrays;
 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;
@@ -106,15 +107,24 @@ import com.jgoodies.forms.layout.FormLayout;
  * @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;
 
@@ -163,7 +173,6 @@ public class Util {
 
        public synchronized static String createNeutralId() {
                return idFormat.format(idCounter++);
-               // return String.valueOf(idCounter++);
        }
 
        /**
@@ -186,51 +195,61 @@ public class Util {
         * 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) {
@@ -274,7 +293,6 @@ public class Util {
                        }
                }
                s = s.substring(beg, end);
-               // Util.pr(s);
                return s;
        }
 
@@ -474,8 +492,8 @@ public class Util {
 
                        // 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()) {
@@ -538,8 +556,6 @@ public class Util {
                        } 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 {
@@ -573,8 +589,8 @@ public class Util {
                                         * 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;
                                         * 
@@ -660,7 +676,7 @@ public class Util {
                // 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;
                }
@@ -697,11 +713,7 @@ public class Util {
                        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 };
@@ -720,30 +732,31 @@ public class Util {
         * 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;
+               }
        }
 
        /**
@@ -776,11 +789,12 @@ public class Util {
         * 
         * 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 });
        }
 
        /**
@@ -789,17 +803,17 @@ public class Util {
        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.
@@ -809,21 +823,17 @@ public class Util {
         * 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
@@ -831,14 +841,13 @@ public class Util {
         * @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
         * 
@@ -848,10 +857,10 @@ public class Util {
        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;
                        }
                }
@@ -871,53 +880,53 @@ public class Util {
        }
 
        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
@@ -930,21 +939,21 @@ public class Util {
                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)
@@ -980,62 +989,69 @@ public class Util {
 
        /**
         * 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();
@@ -1045,16 +1061,16 @@ public class Util {
                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
@@ -1078,8 +1094,8 @@ public class Util {
 
                                        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;
                                                }
@@ -1120,7 +1136,8 @@ public class Util {
                                        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) {
@@ -1140,7 +1157,8 @@ public class Util {
                // 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) {
@@ -1216,20 +1234,21 @@ public class Util {
         * 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.
@@ -2119,42 +2138,46 @@ public class Util {
                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.
         * 
@@ -2172,7 +2195,6 @@ public class Util {
                }
                return encodings;
        }
-       
 
        /**
         * Will convert a two digit year using the following scheme (describe at
@@ -2189,14 +2211,14 @@ public class Util {
         * @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):
@@ -2222,7 +2244,7 @@ public class Util {
 
                        if (yearNumber == thisYearTwoDigits) {
                                return String.valueOf(thisYear);
-                       } 
+                       }
                        // 20 , 90
                        // 99 > 30
                        if ((yearNumber + 100 - thisYearTwoDigits) % 100 > 30) {
@@ -2242,36 +2264,33 @@ public class Util {
                        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;
        }
diff --git a/src/java/net/sf/jabref/XmpPrefsTab.java b/src/java/net/sf/jabref/XmpPrefsTab.java
new file mode 100644 (file)
index 0000000..6450b5d
--- /dev/null
@@ -0,0 +1,240 @@
+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");
+       }
+}
diff --git a/src/java/net/sf/jabref/bst/Bst.java b/src/java/net/sf/jabref/bst/Bst.java
deleted file mode 100644 (file)
index 708a0c1..0000000
+++ /dev/null
@@ -1,1943 +0,0 @@
-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); 
-