[jabref] 84/459: [svn-upgrade] Integrating new upstream version, jabref (2.3~beta2)

gregor herrmann gregoa at debian.org
Thu Sep 15 20:39:50 UTC 2016


This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to branch master
in repository jabref.

commit 1b8dce0b94f3f917ec700f7870cc9ea40dfdcd17
Author: gregor herrmann <gregoa at debian.org>
Date:   Wed Aug 29 20:33:26 2007 +0000

    [svn-upgrade] Integrating new upstream version, jabref (2.3~beta2)
---
 PrepRelease.class                                  |  Bin 0 -> 1583 bytes
 PrepRelease.java                                   |   44 +
 build.number                                       |    4 +-
 build.xml                                          |    8 +-
 jabref.log                                         |   15 +
 lib/forms-1.0.5.jar                                |  Bin 85502 -> 0 bytes
 lib/log4j-1.2.6.jar                                |  Bin 350525 -> 0 bytes
 lib/log4j-1.2.9.jar                                |  Bin 352291 -> 0 bytes
 src/help/About.html                                |  249 +--
 src/help/BaseFrameHelp.html                        |  203 ++-
 src/help/BibtexHelp.html                           |  651 +++----
 src/help/CiteSeerHelp.html                         |  110 +-
 src/help/CommandLine.html                          |  202 ++-
 src/help/ContentSelectorHelp.html                  |   49 +-
 src/help/Contents.html                             |   86 +-
 src/help/CustomEntriesHelp.html                    |  144 +-
 src/help/CustomExports.html                        |  693 +++++---
 src/help/CustomImports.html                        |  211 ++-
 src/help/EndNoteFilters.html                       |  215 +--
 src/help/EntryEditorHelp.html                      |  225 +--
 src/help/ExternalFiles.html                        |  223 ++-
 src/help/FileLinks.html                            |  121 +-
 src/help/GeneralFields.html                        |   46 +-
 src/help/GroupsHelp.html                           |  473 +++--
 src/help/HelpHelp.html                             |   62 +-
 src/help/IEEEXploreHelp.html                       |   50 +-
 src/help/ImportInspectionDialog.html               |   46 +-
 src/help/JabRefHelp.html                           |   68 +-
 src/help/JournalAbbreviations.html                 |  177 +-
 src/help/LabelPatterns.html                        |  279 +--
 src/help/LabelPatterns.txt                         |   33 -
 src/help/MarkingHelp.html                          |   37 +-
 src/help/MedlineHelp.html                          |   65 +-
 src/help/OpenOfficeHelp.html                       |  133 +-
 src/help/OwnerHelp.html                            |   27 +-
 src/help/PreviewHelp.html                          |   32 +-
 src/help/RemoteHelp.html                           |   76 +-
 src/help/SearchHelp.html                           |  172 +-
 src/help/ShortAuxImport.html                       |   13 +-
 src/help/ShortIntegrityCheck.html                  |   16 +-
 src/help/ShortPlainImport.html                     |   16 +-
 src/help/StringEditorHelp.html                     |   97 +-
 src/help/TimeStampHelp.html                        |   69 +-
 src/help/XMPHelp.html                              |  245 ++-
 src/help/de/About.html                             |  237 +--
 src/help/de/BaseFrameHelp.html                     |  199 ++-
 src/help/de/BibtexHelp.html                        |  581 ++++---
 src/help/de/CiteSeerHelp.html                      |   91 +-
 src/help/de/CommandLine.html                       |  234 ++-
 src/help/de/ContentSelectorHelp.html               |   65 +-
 src/help/de/Contents.html                          |   92 +-
 src/help/de/CustomEntriesHelp.html                 |  166 +-
 src/help/de/CustomExports.html                     |  631 ++++---
 src/help/de/CustomImports.html                     |  220 ++-
 src/help/de/EndNoteFilters.html                    |  230 +--
 src/help/de/EntryEditorHelp.html                   |  248 +--
 src/help/de/ExternalFiles.html                     |  241 ++-
 src/help/de/FileLinks.html                         |   93 +-
 src/help/de/GeneralFields.html                     |   56 +-
 src/help/de/GroupsHelp.html                        |  548 ++++--
 src/help/de/HelpHelp.html                          |   53 +-
 src/help/de/IEEEXploreHelp.html                    |   51 +-
 src/help/de/ImportInspectionDialog.html            |   44 +-
 src/help/de/JabRef-UserManual_de.tex               |  118 +-
 src/help/de/JabRefHelp.html                        |   61 +-
 src/help/de/JournalAbbreviations.html              |  153 +-
 src/help/de/LabelPatterns.html                     |  279 ++-
 src/help/de/MarkingHelp.html                       |   50 +-
 src/help/de/MedlineHelp.html                       |   71 +-
 src/help/de/OpenOfficeHelp.html                    |  134 +-
 src/help/de/OwnerHelp.html                         |   30 +-
 src/help/de/PreviewHelp.html                       |   26 +-
 src/help/de/RemoteHelp.html                        |   68 +-
 src/help/de/SearchHelp.html                        |  140 +-
 src/help/de/ShortAuxImport.html                    |   15 +-
 src/help/de/ShortIntegrityCheck.html               |   19 +-
 src/help/de/ShortPlainImport.html                  |   19 +-
 src/help/de/StringEditorHelp.html                  |  102 +-
 src/help/de/TimeStampHelp.html                     |   70 +-
 src/help/de/XMPHelp.html                           |  240 ++-
 src/help/fr/About.html                             |  251 +--
 src/help/fr/BaseFrameHelp.html                     |  239 ++-
 src/help/fr/BibtexHelp.html                        |  664 ++++---
 src/help/fr/CiteSeerHelp.html                      |  118 +-
 src/help/fr/CommandLine.html                       |  262 +--
 src/help/fr/ContentSelectorHelp.html               |   42 +-
 src/help/fr/Contents.html                          |  107 +-
 src/help/fr/CustomEntriesHelp.html                 |  172 +-
 src/help/fr/CustomExports.html                     |  664 +++++--
 src/help/fr/CustomImports.html                     |  205 ++-
 src/help/fr/EndNoteFilters.html                    |  270 +--
 src/help/fr/EntryEditorHelp.html                   |  265 +--
 src/help/fr/ExternalFiles.html                     |  298 ++--
 src/help/fr/FileLinks.html                         |  104 ++
 src/help/fr/GeneralFields.html                     |   48 +-
 src/help/fr/GroupsHelp.html                        |  562 ++++--
 src/help/fr/HelpHelp.html                          |   70 +-
 src/help/fr/IEEEXploreHelp.html                    |   55 +-
 src/help/fr/ImportInspectionDialog.html            |   50 +-
 src/help/fr/JabRefHelp.html                        |   78 +-
 src/help/fr/JournalAbbreviations.html              |  164 +-
 src/help/fr/LabelPatterns.html                     |  294 +++-
 src/help/fr/MarkingHelp.html                       |   52 +-
 src/help/fr/MedlineHelp.html                       |  105 +-
 src/help/fr/OpenOfficeHelp.html                    |  137 +-
 src/help/fr/OwnerHelp.html                         |   33 +-
 src/help/fr/PreviewHelp.html                       |   36 +-
 src/help/fr/RemoteHelp.html                        |   86 +-
 src/help/fr/SearchHelp.html                        |  201 ++-
 src/help/fr/ShortAuxImport.html                    |   14 +-
 src/help/fr/ShortIntegrityCheck.html               |   18 +-
 src/help/fr/ShortPlainImport.html                  |   19 +-
 src/help/fr/StringEditorHelp.html                  |  112 +-
 src/help/fr/TimeStampHelp.html                     |   73 +-
 src/help/fr/XMPHelp.html                           |  268 +--
 src/help/jgoodies.html                             |   66 +-
 src/images/splash.png                              |  Bin 175120 -> 175224 bytes
 .../jgoodies/uif_lite/component/UIFSplitPane.java  |  538 +++---
 .../uif_lite/panel/SimpleInternalFrame.java        |  948 +++++-----
 src/java/gnu/dtools/ritopt/ArrayOption.java        |  164 +-
 src/java/gnu/dtools/ritopt/BooleanOption.java      |    2 +-
 src/java/gnu/dtools/ritopt/ByteOption.java         |    2 +-
 src/java/gnu/dtools/ritopt/CharOption.java         |    2 +-
 src/java/gnu/dtools/ritopt/DoubleOption.java       |    2 +-
 src/java/gnu/dtools/ritopt/FloatOption.java        |    2 +-
 src/java/gnu/dtools/ritopt/IntOption.java          |    2 +-
 src/java/gnu/dtools/ritopt/LongOption.java         |    2 +-
 src/java/gnu/dtools/ritopt/NotifyOption.java       |  636 +++----
 src/java/gnu/dtools/ritopt/Option.java             | 1826 ++++++++++----------
 src/java/gnu/dtools/ritopt/OptionArrayable.java    |  130 +-
 src/java/gnu/dtools/ritopt/OptionEvent.java        |  390 ++---
 src/java/gnu/dtools/ritopt/OptionException.java    |   96 +-
 src/java/gnu/dtools/ritopt/OptionListener.java     |  108 +-
 src/java/gnu/dtools/ritopt/OptionMenu.java         |  542 +++---
 src/java/gnu/dtools/ritopt/OptionModifiable.java   |   96 +-
 .../dtools/ritopt/OptionModificationException.java |   98 +-
 src/java/gnu/dtools/ritopt/OptionModule.java       |  900 +++++-----
 .../gnu/dtools/ritopt/OptionModuleRegistrar.java   |  124 +-
 src/java/gnu/dtools/ritopt/OptionNotifier.java     |  114 +-
 .../dtools/ritopt/OptionProcessingException.java   |   98 +-
 src/java/gnu/dtools/ritopt/OptionRegistrar.java    |  196 +--
 .../dtools/ritopt/OptionRegistrationException.java |  156 +-
 src/java/gnu/dtools/ritopt/Options.java            | 1744 +++++++++----------
 src/java/gnu/dtools/ritopt/ShortOption.java        |    2 +-
 src/java/gnu/dtools/ritopt/SimpleProcess.java      |  434 ++---
 src/java/gnu/dtools/ritopt/Stoppable.java          |   92 +-
 src/java/gnu/dtools/ritopt/StreamPrinter.java      |  382 ++--
 src/java/gnu/dtools/ritopt/StringOption.java       |  368 ++--
 src/java/gnu/dtools/ritopt/Utility.java            |  678 ++++----
 src/java/jalopy.format.convention.xml              |  812 ++++-----
 src/java/net/sf/jabref/AppearancePrefsTab.java     |   14 +-
 src/java/net/sf/jabref/BasePanel.java              |  201 +--
 src/java/net/sf/jabref/BibtexEntry.java            |   16 +-
 src/java/net/sf/jabref/BibtexFields.java           |    1 +
 src/java/net/sf/jabref/EntryEditor.java            |   39 +-
 src/java/net/sf/jabref/EntryEditorTab.java         |    2 +-
 src/java/net/sf/jabref/FieldComparator.java        |    6 +-
 src/java/net/sf/jabref/FieldContentSelector.java   |  108 +-
 src/java/net/sf/jabref/FieldEditor.java            |    2 +-
 src/java/net/sf/jabref/FieldTextArea.java          |    6 +-
 src/java/net/sf/jabref/FieldTextField.java         |    4 +-
 src/java/net/sf/jabref/FontSelectorDialog.java     |    4 +-
 src/java/net/sf/jabref/GUIGlobals.java             |   10 +-
 src/java/net/sf/jabref/GeneralRenderer.java        |   18 +-
 src/java/net/sf/jabref/GeneralTab.java             |   26 +-
 src/java/net/sf/jabref/Globals.java                |   22 +-
 src/java/net/sf/jabref/HelpContent.java            |    4 +-
 src/java/net/sf/jabref/HelpDialog.java             |    2 +-
 src/java/net/sf/jabref/JabRef.java                 |    4 +-
 src/java/net/sf/jabref/JabRefFrame.java            |   23 +-
 src/java/net/sf/jabref/JabRefPreferences.java      |    7 +-
 src/java/net/sf/jabref/PrefsDialog3.java           |    3 +-
 src/java/net/sf/jabref/PrefsTab.java               |    2 +-
 src/java/net/sf/jabref/PreviewPanel.java           |    6 +-
 src/java/net/sf/jabref/SidePane.java               |    2 +-
 src/java/net/sf/jabref/SidePaneManager.java        |    2 +-
 src/java/net/sf/jabref/Util.java                   |  142 +-
 src/java/net/sf/jabref/XmpPrefsTab.java            |    2 +-
 src/java/net/sf/jabref/bst/BibtexPurify.java       |    4 +-
 src/java/net/sf/jabref/bst/BibtexTextPrefix.java   |    4 +-
 src/java/net/sf/jabref/bst/BibtexWidth.java        |    4 +-
 src/java/net/sf/jabref/bst/PurifyFunction.java     |    2 +-
 src/java/net/sf/jabref/bst/TextPrefixFunction.java |    2 +-
 src/java/net/sf/jabref/bst/VM.java                 |    2 +-
 src/java/net/sf/jabref/bst/WidthFunction.java      |    2 +-
 src/java/net/sf/jabref/export/ExportFormat.java    |    8 +-
 src/java/net/sf/jabref/export/ExportFormats.java   |  116 +-
 src/java/net/sf/jabref/export/FieldFormatter.java  |    2 +-
 src/java/net/sf/jabref/export/FileActions.java     |    4 +-
 .../net/sf/jabref/export/SaveDatabaseAction.java   |  302 ++++
 .../layout/AbstractParamLayoutFormatter.java       |   40 +
 .../net/sf/jabref/export/layout/EntryLayout.java   |    2 +-
 .../net/sf/jabref/export/layout/FieldLayout.java   |    2 +-
 .../jabref/export/layout/FieldLayoutFormatter.java |    2 +-
 src/java/net/sf/jabref/export/layout/Layout.java   |   13 +-
 .../net/sf/jabref/export/layout/LayoutEntry.java   |   31 +-
 .../net/sf/jabref/export/layout/LayoutHelper.java  |   17 +-
 .../jabref/export/layout/ParamLayoutFormatter.java |   22 +
 .../export/layout/format/AuthorFirstFirst.java     |    2 +-
 .../export/layout/format/AuthorLastFirst.java      |    4 +-
 .../jabref/export/layout/format/AuthorOrgSci.java  |    2 +-
 .../export/layout/format/CompositeFormat.java      |    2 +-
 .../export/layout/format/CreateDocBookAuthors.java |    8 +-
 .../export/layout/format/CreateDocBookEditors.java |    8 +-
 .../jabref/export/layout/format/CurrentDate.java   |    2 +-
 .../sf/jabref/export/layout/format/DOICheck.java   |    2 +-
 .../sf/jabref/export/layout/format/FileLink.java   |   77 +
 .../export/layout/format/GetOpenOfficeType.java    |    8 +-
 .../sf/jabref/export/layout/format/HTMLChars.java  |   42 +-
 .../export/layout/format/HTMLParagraphs.java       |    2 +-
 .../sf/jabref/export/layout/format/NameFormat.java |    2 +-
 .../layout/format/NoSpaceBetweenAbbreviations.java |    2 +-
 .../sf/jabref/export/layout/format/RTFChars.java   |    2 +-
 .../export/layout/format/RemoveBrackets.java       |    8 +-
 .../layout/format/RemoveBracketsAddComma.java      |  128 +-
 .../jabref/export/layout/format/RemoveTilde.java   |    8 +-
 .../export/layout/format/RemoveWhitespace.java     |    8 +-
 .../sf/jabref/export/layout/format/Replace.java    |   55 +
 .../sf/jabref/export/layout/format/ResolvePDF.java |   13 +-
 .../jabref/export/layout/format/ToLowerCase.java   |    8 +-
 .../jabref/export/layout/format/WrapContent.java   |   39 +
 .../sf/jabref/export/layout/format/XMLChars.java   |   18 +-
 .../sf/jabref/external/ExternalFileMenuItem.java   |   18 +-
 .../net/sf/jabref/external/ExternalFilePanel.java  |    2 +-
 .../net/sf/jabref/external/ExternalFileType.java   |   55 +-
 .../external/ExternalFileTypeEntryEditor.java      |   15 +-
 .../jabref/external/FileLinksUpgradeWarning.java   |   37 +-
 src/java/net/sf/jabref/external/IconSelection.java |  151 ++
 src/java/net/sf/jabref/external/PushToEmacs.java   |    2 +-
 .../sf/jabref/external/SynchronizeFileField.java   |   10 +-
 .../net/sf/jabref/external/WriteXMPAction.java     |    2 +-
 .../net/sf/jabref/gui/CheckBoxFileChooser.java     |  104 --
 .../net/sf/jabref/gui/FileListEntryEditor.java     |   18 +-
 src/java/net/sf/jabref/gui/FileListTableModel.java |   41 +-
 .../net/sf/jabref/gui/GenFieldsCustomizer.java     |    1 -
 .../net/sf/jabref/gui/ImportInspectionDialog.java  |  130 +-
 src/java/net/sf/jabref/gui/MainTable.java          |   31 +-
 src/java/net/sf/jabref/gui/MainTableFormat.java    |    7 +-
 .../net/sf/jabref/gui/date/DatePickerButton.java   |    1 +
 .../sf/jabref/imports/AppendDatabaseAction.java    |    3 +
 src/java/net/sf/jabref/imports/BibtexParser.java   |   13 +-
 src/java/net/sf/jabref/imports/CopacImporter.java  |    2 +-
 .../net/sf/jabref/imports/IEEEXploreFetcher.java   |   89 +-
 .../net/sf/jabref/imports/ImportFormatReader.java  |    5 +-
 src/java/net/sf/jabref/imports/ImportMenuItem.java |    3 +-
 src/java/net/sf/jabref/imports/IsiImporter.java    |    2 +-
 src/java/net/sf/jabref/imports/OAI2Fetcher.java    |    2 +-
 src/java/net/sf/jabref/imports/OAI2Handler.java    |    2 +-
 .../net/sf/jabref/imports/OpenDatabaseAction.java  |   37 +-
 src/java/net/sf/jabref/imports/PdfXmpImporter.java |    2 +-
 .../sf/jabref/labelPattern/LabelPatternUtil.java   |   10 +
 src/java/net/sf/jabref/util/CaseChangeMenu.java    |    2 +-
 src/java/net/sf/jabref/util/CaseChanger.java       |    4 +-
 src/java/net/sf/jabref/util/XMPUtil.java           |    2 +-
 .../sf/jabref/wizard/integrity/IntegrityCheck.java |    5 +-
 .../tests/net/sf/jabref/FileBasedTestCase.java     |    2 +-
 .../tests/net/sf/jabref/bst/BibtexWidthTest.java   |    2 +-
 .../layout/format/AuthorAbbreviatorTest.java       |    2 +-
 .../layout/format/AuthorAndsCommaReplacerTest.java |    2 +-
 .../layout/format/AuthorAndsReplacerTest.java      |    2 +-
 .../format/AuthorFirstAbbrLastCommasTest.java      |    2 +-
 .../AuthorFirstAbbrLastOxfordCommasTest.java       |    2 +-
 .../export/layout/format/AuthorFirstFirstTest.java |    2 +-
 .../layout/format/AuthorFirstLastCommasTest.java   |    2 +-
 .../format/AuthorFirstLastOxfordCommasTest.java    |    2 +-
 .../format/AuthorLastFirstAbbrCommasTest.java      |    2 +-
 .../AuthorLastFirstAbbrOxfordCommasTest.java       |    2 +-
 .../layout/format/AuthorLastFirstCommasTest.java   |    2 +-
 .../format/AuthorLastFirstOxfordCommasTest.java    |    2 +-
 .../export/layout/format/ResolvePDFTest.java       |    2 +-
 .../net/sf/jabref/imports/IsiImporterTest.java     |    2 +-
 .../net/sf/jabref/imports/OAI2ImportTest.java      |    2 +-
 src/java/tests/net/sf/jabref/imports/RisTest.ris   |   18 -
 src/java/wsi/ra/tool/ExternalHelper.java           |    8 +-
 src/java/wsi/ra/tool/ResourceLoader.java           |    8 +-
 src/java/wsi/ra/tool/WSITools.java                 |    8 +-
 src/java/wsi/ra/types/StringInt.java               |    8 +-
 src/resource/IntegrityMessage_it.properties        |   22 +-
 src/resource/JabRef_de.properties                  |   45 +-
 src/resource/JabRef_du.properties                  |   38 +-
 src/resource/JabRef_en.properties                  |   41 +-
 src/resource/JabRef_fr.properties                  |   94 +-
 src/resource/JabRef_it.properties                  |   41 +-
 src/resource/JabRef_no.properties                  |   36 +-
 src/resource/Menu_de.properties                    |    8 +-
 src/resource/Menu_du.properties                    |    2 +
 src/resource/Menu_en.properties                    |    2 +
 src/resource/Menu_fr.properties                    |    2 +
 src/resource/Menu_it.properties                    |    2 +
 src/resource/Menu_no.properties                    |    2 +
 src/resource/build.properties                      |    6 +-
 src/resource/layout/bibtexml.layout                |   71 +-
 src/resource/layout/docbook.layout                 |   36 +-
 src/resource/layout/endnote/EndNote.article.layout |    6 +-
 src/resource/layout/endnote/EndNote.book.layout    |    6 +-
 src/resource/layout/endnote/EndNote.booklet.layout |    6 +-
 src/resource/layout/endnote/EndNote.inbook.layout  |    6 +-
 .../layout/endnote/EndNote.incollection.layout     |    6 +-
 .../layout/endnote/EndNote.inproceedings.layout    |    6 +-
 src/resource/layout/endnote/EndNote.layout         |    6 +-
 src/resource/layout/endnote/EndNote.manual.layout  |    6 +-
 .../layout/endnote/EndNote.mastersthesis.layout    |    6 +-
 src/resource/layout/endnote/EndNote.misc.layout    |    6 +-
 src/resource/layout/endnote/EndNote.other.layout   |    6 +-
 .../layout/endnote/EndNote.phdthesis.layout        |    6 +-
 .../layout/endnote/EndNote.proceedings.layout      |    6 +-
 .../layout/endnote/EndNote.techreport.layout       |    6 +-
 .../layout/endnote/EndNote.unpublished.layout      |    6 +-
 src/resource/layout/endnote/Readme.txt             |    6 +-
 src/resource/layout/html.begin.layout              |   98 +-
 src/resource/layout/html.book.layout               |    6 +
 src/resource/layout/html.end.layout                |   12 +-
 src/resource/layout/html.inbook.layout             |    6 +
 src/resource/layout/html.inproceedings.layout      |    6 +
 src/resource/layout/html.layout                    |  144 +-
 src/resource/layout/html.mastersthesis.layout      |    6 +
 src/resource/layout/html.phdthesis.layout          |    6 +
 src/resource/layout/simplehtml.begin.layout        |   12 +
 src/resource/layout/simplehtml.end.layout          |    3 +
 src/resource/layout/simplehtml.layout              |   23 +-
 .../layout/tablerefs/tablerefs.begin.layout        |  367 ++--
 src/resource/layout/tablerefs/tablerefs.end.layout |   24 +-
 .../tablerefsabsbib/tablerefsabsbib.begin.layout   |  554 +++---
 .../tablerefsabsbib/tablerefsabsbib.end.layout     |   24 +-
 .../layout/tablerefsabsbib/tablerefsabsbib.layout  |   31 +-
 src/resource/layout/text.layout                    |   20 +-
 src/txt/README                                     |   46 +-
 src/txt/TODO                                       |   33 +-
 328 files changed, 19601 insertions(+), 14213 deletions(-)

diff --git a/PrepRelease.class b/PrepRelease.class
new file mode 100644
index 0000000..74d4765
Binary files /dev/null and b/PrepRelease.class differ
diff --git a/PrepRelease.java b/PrepRelease.java
new file mode 100644
index 0000000..5d60da7
--- /dev/null
+++ b/PrepRelease.java
@@ -0,0 +1,44 @@
+import java.io.*;
+
+/**
+ * This little program traverses the file structure from the current
+ * directory, and removes all CVS directories and all files starting
+ * with ".#" or ending with "~", e.g. backup files. This is to make the
+ * source tree ready for release.
+ */
+public class PrepRelease {
+
+    public static void main(String[] args) {
+	File start = new File(System.getProperty("user.dir"));
+	System.out.println(start.getPath());
+	traverse(start);
+    }
+
+    private static void traverse(File f) {
+	//System.out.println(f.getPath());
+	File[] fs = f.listFiles();
+	for (int i=0; i<fs.length; i++) {
+	    if (fs[i].getName().equals("CVS") || fs[i].getName().equalsIgnoreCase(".svn")) {
+		delete(fs[i]);
+		fs[i].delete();
+		System.out.println("Deleting dir: "+fs[i].getPath());
+	    } else if (fs[i].isDirectory()) {
+		traverse(fs[i]);
+	    } else if (fs[i].getName().endsWith("~") ||
+		       fs[i].getName().startsWith(".#")) {
+		System.out.println("Deleting: "+fs[i].getPath());
+		fs[i].delete();
+	    }
+	}
+    }
+
+    private static void delete(File f) {
+	File[] fs = f.listFiles();
+	for (int i=0; i<fs.length; i++) {
+	    System.out.println("Deleting: "+fs[i].getPath());
+	    if (fs[i].isDirectory())
+		delete(fs[i]);
+	    fs[i].delete();
+	}
+    }
+}
diff --git a/build.number b/build.number
index 208a056..db657ad 100644
--- a/build.number
+++ b/build.number
@@ -1,3 +1,3 @@
 #Build Number for ANT. Do not edit!
-#Fri Jun 29 14:17:55 CEST 2007
-build.number=84
+#Wed Aug 29 21:36:09 CEST 2007
+build.number=118
diff --git a/build.xml b/build.xml
index 5b36cd7..412dca6 100644
--- a/build.xml
+++ b/build.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-   Filename: $RCSfile: build.xml,v $
+   Filename: $RCSfile$
    Purpose:  Ant build file for Jabref.
 
              Ant-Download: http://jakarta.apache.org/ant
@@ -22,8 +22,8 @@
    Compiler: Ant
    Authors:  Joerg K. Wegner, wegnerj at informatik.uni-tuebingen.de
              Morten O. Alver
-   Version:  $Revision: 1.82.2.1 $
-             $Date: 2007/06/20 18:51:59 $
+   Version:  $Revision: 2301 $
+             $Date: 2007-08-27 20:51:07 +0200 (Mon, 27 Aug 2007) $
              $Author: mortenalver $
 
    modified:
@@ -47,7 +47,7 @@
      ========================================================================================== -->
 
 	<!-- some version information -->
-	<property name="jabref.version" value="2.3b" />
+	<property name="jabref.version" value="2.3b2" />
 	<property name="jabref.placeholder.version" value="@version@" />
 	<!-- used by replace task -->
 
diff --git a/jabref.log b/jabref.log
new file mode 100644
index 0000000..5e20d54
--- /dev/null
+++ b/jabref.log
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
+<!DOCTYPE log SYSTEM "logger.dtd">
+<log>
+<record>
+  <date>2005-06-26T23:07:12</date>
+  <millis>1119827232590</millis>
+  <sequence>0</sequence>
+  <logger>global</logger>
+  <level>INFO</level>
+  <class>net.sf.jabref.Globals</class>
+  <method>logger</method>
+  <thread>10</thread>
+  <message>Warning: could not get translation for "Preserve formatting of non-BibTeX fields"</message>
+</record>
+</log>
diff --git a/lib/forms-1.0.5.jar b/lib/forms-1.0.5.jar
deleted file mode 100644
index ddd8acb..0000000
Binary files a/lib/forms-1.0.5.jar and /dev/null differ
diff --git a/lib/log4j-1.2.6.jar b/lib/log4j-1.2.6.jar
deleted file mode 100755
index be4a917..0000000
Binary files a/lib/log4j-1.2.6.jar and /dev/null differ
diff --git a/lib/log4j-1.2.9.jar b/lib/log4j-1.2.9.jar
deleted file mode 100644
index a6568b0..0000000
Binary files a/lib/log4j-1.2.9.jar and /dev/null differ
diff --git a/src/help/About.html b/src/help/About.html
index 46d72ca..e80de49 100755
--- a/src/help/About.html
+++ b/src/help/About.html
@@ -1,119 +1,130 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-<CENTER>
-<H1>JabRef version @version@ </H1>
-
-(c) 2007
-<p>
-<img src="/images/JabRef-icon-48.png"></img>
-
-
-<P>
-JabRef is freely distributable under the terms of the GNU
-<a href="License.html">General Public License</a>, version 2.
-
-<H2>Developers:</H2>
-Morten O. Alver,
-Nizar N. Batada,
-Michel Baylac,
-Guillaume Gardey,
-Cyrille d'Haese,
-S M Mahbub Murshed,
-Raik Nagel,
-Christopher Oezbek,
-Ellen Reitmayr,
-Gert Renckens,
-Andreas Rudert,
-Michael Spiegel,
-Ulrik Stervbo,
-Dominik Waßenhoven,
-Joerg K. Wegner,
-Michael Wrighton,
-Egon Willighagen,
-Jörg Zieren
-
-<H2>Contributions from:</H2>
-
-Michael Beckmann,
-Oliver B�ckmann, 
-Kolja Brix,
-Frédéric Darboux,
-Fabrice Dessaint,
-Nathan Dunn,
-Brian Van Essen,
-Alexis Gallagher,
-David Gleich,
-Sascha Hunold,
-Bernd Kalbfuss,
-Martin Kähmer,
-Ervin Kolenovic,
-Krzysztof A. Kościuszkiewicz,
-Christian Kopf,
-Jeffrey Kuhn,
-Alex Montgomery,
-S. M. Mahbub Murshed,
-Ambrogio Oliva,
-Stephan Rave,
-John Relph,
-Hannes Restel,
-Moritz Ringler,
-Andreas Rudert,
-Mark Schenk,
-Rudolf Seemann,
-Toralf Senger,
-Manuel Siebeneicher 
-Mike Smoot,
-Ulrich Stärk,
-Martin Stolle,
-David Weitzman,
-Seb Wills,
-John Zedlewski
-
-<H2>Thanks to:</H2>
-Samin Muhammad Ridwanul Karim,
-Stefan Robert
-
-<H2>Third-party software used:</H2>
-JabRef uses JGoodies Looks 2.0.4 and JGoodies Forms 1.0.5, distributed by JGoodies
-(<code>http://www.jgoodies.com</code>) under the terms of the BSD License (see
-<code>http://www.opensource.org/licenses/bsd-license.html</code> for details).
-<P>
-Also included are two additional classes (SimpleInternalFrame and UIFSplitPane) by Karsten
-Lentzsch, which are distributed under <A HREF="jgoodies.html">these terms</A>.
-
-<P>
-Command line options are parsed using RitOpt (<code>http://ritopt.sourceforge.net</code>). RitOpt
-is distributed under the terms of the GNU <a href="License.html">General Public License</a>,
-version 2.
-<P>
-JabRef uses the ANTLR parser generator for interpreting search strings. ANTLR is
-public domain software - see <code>http://www.antlr.org/license.html</code> for the
-licensing terms.
-<p>
-For table presentation and filtering, JabRef uses the Glazed Lists library
-    (<code>http://publicobject.com/glazedlists</code>), which is
-    distributed under the Lesser General Public License.
-<P>
-JabRef also uses the threading library Spin 1.3.1, which is distributed under the terms of
-the Lesser General Public License.
-
-<P>
-Some GUI components from the Microba library are used, it is licensed under a BSD style license.
-See <code>http://sourceforge.net/projects/microba/</code> for more informations.
-
-<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.
-
-<P>
-JabRef uses the JempBox and PDFBox libraries for PDF handling, both of which are
-distributed under a BSD style license.
-
-
-
-</CENTER>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <center>
+        <h1>JabRef version @version@</h1>
+
+        <p>(c) 2007</p>
+
+        <p><img src="/images/JabRef-icon-48.png" /></p>
+
+        <p>JabRef is freely distributable under the terms of the
+        GNU <a href="License.html">General Public License</a>,
+        version 2.</p>
+
+        <h2>Developers:</h2>
+
+        <p>Morten O. Alver,
+        Nizar N. Batada,
+        Michel Baylac,
+        Kolja Brix,
+        Frédéric Darboux,
+        Guillaume Gardey,
+        Cyrille d'Haese,
+        S M Mahbub Murshed,
+        Raik Nagel,
+        Christopher Oezbek,
+        Ellen Reitmayr,
+        Gert Renckens,
+        Andreas Rudert,
+        Michael Spiegel,
+        Ulrik Stervbo,
+        Dominik Waßenhoven,
+        Joerg K. Wegner,
+        Michael Wrighton,
+        Egon Willighagen,
+        Jörg Zieren</p>
+
+        <h2>Contributions from:</h2>
+
+        <p>Michael Beckmann,
+        Oliver Beckmann,
+        Fabrice Dessaint,
+        Nathan Dunn,
+        Brian Van Essen,
+        Alexis Gallagher,
+        David Gleich,
+        Sascha Hunold,
+        Bernd Kalbfuss,
+        Martin Kähmer,
+        Ervin Kolenovic,
+        Krzysztof A. Kościuszkiewicz,
+        Christian Kopf,
+        Jeffrey Kuhn,
+        Alex Montgomery,
+        Ambrogio Oliva,
+        Stephan Rave,
+        John Relph,
+        Hannes Restel,
+        Moritz Ringler,
+        Andreas Rudert,
+        Mark Schenk,
+        Rudolf Seemann,
+        Toralf Senger,
+        Manuel Siebeneicher,
+        Mike Smoot,
+        Ulrich Stärk,
+        Martin Stolle,
+        David Weitzman,
+        Seb Wills,
+        John Zedlewski</p>
+
+        <h2>Thanks to:</h2>
+
+        <p>Samin Muhammad Ridwanul Karim,
+        Stefan Robert</p>
+
+        <h2>Third-party software used:</h2>
+
+        <p>JabRef uses JGoodies
+        Looks 2.0.4 and JGoodies Forms 1.0.5, distributed by
+        JGoodies (<code>http://www.jgoodies.com</code>) under the
+        terms of the BSD License (see
+        <code>http://www.opensource.org/licenses/bsd-license.html</code>
+        for details).</p>
+
+        <p>Also included are two additional classes
+        (SimpleInternalFrame and UIFSplitPane) by Karsten Lentzsch,
+        which are distributed under <a href="jgoodies.html">these
+        terms</a>.</p>
+
+        <p>Command line options are parsed using RitOpt
+        (<code>http://ritopt.sourceforge.net</code>). RitOpt is
+        distributed under the terms of the GNU
+        <a href="License.html">General Public License</a>, version
+        2.</p>
+
+        <p>JabRef uses the ANTLR parser generator for interpreting
+        search strings. ANTLR is public domain software - see
+        <code>http://www.antlr.org/license.html</code> for the
+        licensing terms.</p>
+
+        <p>For table presentation and filtering, JabRef uses the
+        Glazed Lists library
+        (<code>http://publicobject.com/glazedlists</code>), which
+        is distributed under the Lesser General Public License.</p>
+
+        <p>JabRef also uses the threading library Spin 1.3.1, which
+        is distributed under the terms of the Lesser General Public
+        License.</p>
+
+        <p>Some GUI components from the Microba library are used,
+        it is licensed under a BSD style license. See
+        <code>http://sourceforge.net/projects/microba/</code> for
+        more informations.</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.</p>
+
+        <p>JabRef uses the JempBox and PDFBox libraries for PDF
+        handling, both of which are distributed under a BSD style
+        license.</p>
+    </center>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/BaseFrameHelp.html b/src/help/BaseFrameHelp.html
index 9bc79bb..951ab80 100755
--- a/src/help/BaseFrameHelp.html
+++ b/src/help/BaseFrameHelp.html
@@ -1,84 +1,119 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>The JabRef main window</H1>
-
-<em>Note:</em> most menu actions referred in the following have keyboard shortcuts,
-and many are available from the toolbar. The keyboard shortcuts are found in the
-pull-down menus.
-<p>
-This is the main window from where you work with your databases. Below
-the menubar and the toolbar is a tabbed pane containing a panel for
-each of your currently open databases. When you select one of these
-panels, a table appears, listing all the database's entries, as well
-as a configurable selection of their fields.
-<ul>
-<li>You decide which fields are shown in the table by checking the fields you want
-to see in the <strong>Preferences</strong> dialog.</li>
-<li>Double-click a line of the table to edit the entry content.
-You can navigate the table with the arrow keys.</li>
-<li>The table is sorted according to a set of fields of your choosing.
-The default sort order is set up in <strong>Preferences -> Entry table</strong>,
-but to quickly change the order,
-    click the header of a column to set it as the primary sort criterion, or
-    reverse the sorting if it is already set. Another click will deselect the column
-    as sorting criterion. Hold down <b>CONTROL</b> and click a column to add, reverse
-    or remove it as a sub-criterion after the primary column. You can add an arbitrary
-    number of sub-criteria.
-<li>Adjust the width of each column by dragging the borders between
-their headers.</li>
-<li>In the <strong>Preferences</strong> dialog, toggle whether the table should be
-resized to fit the window. Enable this to ensure visibility of the whole table,
-and disable it to make room for displaying more information.</li>
-<li>Color codes can be toggled in the <strong>Preferences</strong> dialog, and
-they help you visualize the completeness of your database by coloring cells as
-follows:
-  <ul>
-  <li>A <font color="red">red</font> cell in the leftmost column denotes an
-  incomplete entry.</li>
-  <li>A <font color="#909000">yellow</font> cell in the leftmost column denotes an entry
-  that doesn't define all required fields by itself, but that contains a
-  cross-reference.</li>
-  <li>A <font color="blue">blue</font> cell denotes a required field.</li>
-  <li>A <font color="green">green</font> cell denotes an optional field.</li>
-  <li>An uncolored cell denotes a field which is not used by the <em>bibtex</em>
-  program for this type of entry. The field can still be edited in JabRef.</li>
-  </ul>
-</li>
-
-</ul>
-
-<H2>Adding a new entry</H2>
-There are several ways to add a new entry. The <strong>New entry</strong> menu
-action shows a dialog where you can choose the type of the entry from a list. To
-bypass this dialog, there are also separate menu actions for each entry type, and
-keyboard shortcuts for the most common types.
-<P>When a new entry is added, by default an
-<a href="EntryEditorHelp.html">editor dialog</a> for the entry will be
-opened. This behaviour can be toggled in the <strong>Preferences</strong> dialog.
-<P><em>Note:</em> We strongly recommend learning the shortcuts for
-the entry types you use most often, e.g. CTRL-SHIFT-A for adding an
-<em>article</em> entry.
-
-<H2>Editing an entry</H2> To open an <a
-href="EntryEditorHelp.html">editor dialog</a> for an existing entry,
-simply double-click anywhere
-on the appropriate line will open the <a href="EntryEditorHelp.html">editor dialog</a>
-(or select the entry and press ENTER).
-
-
-<H2>Referencing a <em>bibtex</em> string in a field</H2>
-In JabRef you write the contents of all fields the same way as you
-would in a text editor, with one exception: to reference a string,
-enclose the name of the string in a set of # characters, e.g.:<BR>
-  '#jan# 1997',<BR>
-which will be interpreted as the string named 'jan' followed by ' 1997'.
-<P>See also: <a href="StringEditorHelp.html">string editor</a>.
-
-</font>
-
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>The JabRef main window</h1>
+
+    <p><em>Note:</em> most menu actions
+    referred in the following have keyboard shortcuts, and many are
+    available from the toolbar. The keyboard shortcuts are found in
+    the pull-down menus.</p>
+
+    <p>This is the main window from where you work with your
+    databases. Below the menubar and the toolbar is a tabbed pane
+    containing a panel for each of your currently open databases.
+    When you select one of these panels, a table appears, listing
+    all the database's entries, as well as a configurable selection
+    of their fields.</p>
+
+    <ul>
+        <li>You decide which fields are shown in the table by
+        checking the fields you want to see in the
+        <strong>Preferences</strong> dialog.</li>
+
+        <li>Double-click a line of the table to edit the entry
+        content. You can navigate the table with the arrow
+        keys.</li>
+
+        <li>The table is sorted according to a set of fields of
+        your choosing. The default sort order is set up in
+        <strong>Preferences -> Entry table</strong>, but to
+        quickly change the order, click the header of a column to
+        set it as the primary sort criterion, or reverse the
+        sorting if it is already set. Another click will deselect
+        the column as sorting criterion. Hold down <b>CONTROL</b>
+        and click a column to add, reverse or remove it as a
+        sub-criterion after the primary column. You can add an
+        arbitrary number of sub-criteria.</li>
+
+        <li>Adjust the width of each column by dragging the borders
+        between their headers.</li>
+
+        <li>In the <strong>Preferences</strong> dialog, toggle
+        whether the table should be resized to fit the window.
+        Enable this to ensure visibility of the whole table, and
+        disable it to make room for displaying more
+        information.</li>
+
+        <li>
+            Color codes can be toggled in the
+            <strong>Preferences</strong> dialog, and they help you
+            visualize the completeness of your database by coloring
+            cells as follows:
+
+            <ul>
+                <li>A <font color="red">red</font> cell in the
+                leftmost column denotes an incomplete entry.</li>
+
+                <li>A <font color="#909000">yellow</font> cell in
+                the leftmost column denotes an entry that doesn't
+                define all required fields by itself, but that
+                contains a cross-reference.</li>
+
+                <li>A <font color="blue">blue</font> cell denotes a
+                required field.</li>
+
+                <li>A <font color="green">green</font> cell denotes
+                an optional field.</li>
+
+                <li>An uncolored cell denotes a field which is not
+                used by the <em>bibtex</em> program for this type
+                of entry. The field can still be edited in
+                JabRef.</li>
+            </ul>
+        </li>
+    </ul>
+
+    <h2>Adding a new entry</h2>
+
+    <p>There are several ways to add a new
+    entry. The <strong>New entry</strong> menu action shows a
+    dialog where you can choose the type of the entry from a list.
+    To bypass this dialog, there are also separate menu actions for
+    each entry type, and keyboard shortcuts for the most common
+    types.</p>
+
+    <p>When a new entry is added, by default an
+    <a href="EntryEditorHelp.html">editor dialog</a> for the entry
+    will be opened. This behaviour can be toggled in the
+    <strong>Preferences</strong> dialog.</p>
+
+    <p><em>Note:</em> We strongly recommend learning the shortcuts
+    for the entry types you use most often, e.g. CTRL-SHIFT-A for
+    adding an <em>article</em> entry.</p>
+
+    <h2>Editing an entry</h2>
+
+    <p>To open an
+    <a href="EntryEditorHelp.html">editor dialog</a> for an
+    existing entry, simply double-click anywhere on the appropriate
+    line will open the <a href="EntryEditorHelp.html">editor
+    dialog</a> (or select the entry and press ENTER).</p>
+
+    <h2>Referencing a <em>bibtex</em> string in a field</h2>
+
+    <p>In JabRef you write the contents of all fields the same way as you
+    would in a text editor, with one exception: to reference a
+    string, enclose the name of the string in a set of #
+    characters, e.g.:<br />
+      '#jan# 1997',<br />
+    which will be interpreted as the string named 'jan' followed by
+    ' 1997'.</p>
+
+    <p>See also: <a href="StringEditorHelp.html">string editor</a>.
+    </p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/BibtexHelp.html b/src/help/BibtexHelp.html
index e6156f5..992c991 100755
--- a/src/help/BibtexHelp.html
+++ b/src/help/BibtexHelp.html
@@ -1,380 +1,275 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
 <body style="color: rgb(39, 88, 86);">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>About <em>bibtex</em></h1>
-
-
-
-
-
-JabRef helps you work with your <em>bibtex</em> databases, but
-there are still rules to keep in mind when editing your entries, to
-ensure that your database is treated properly by the <em>bibtex</em>
-program.
-
-<h2><em>Bibtex</em> fields</h2>
-
-
-
-
-
-There is a lot of different fields in <em>bibtex</em>, and some
-additional fields that you can set in JabRef.
-<p>
-Generally, you can use LaTeX commands inside of fields containing
-text. <em>Bibtex</em> will automatically format your reference lists,
-and those fields that are included in the lists will be
-(de)capitalized according to your bibliography style. To ensure that
-certain characters remain capitalized, enclose them in braces, like in
-the word {B}elgium.
-
-</p>
-
-
-
-<p>
-Notes about some of the field types:
-</p>
-
-
-
-<ul>
-
-
-
-<li><strong style="font-style: italic;">Bibtexkey</strong> A unique string used to refer to the entry in
-LaTeX documents. Note that when referencing an entry from LaTeX, the
-key must match case-sensitively with the reference string.<br>
-    <br>
-</li>
-
-  <li><strong>address<br>
-    </strong>Usually the address of the <tt>publisher</tt> or other type
-of institution.
-For major publishing houses,
-van Leunen recommends omitting the information entirely.
-For small publishers, on the other hand, you can help the
-reader by giving the complete address.
-    <p>
-    </p>
-  </li>
-  <li><strong>annote<br>
-    </strong>An annotation.
-It is not used by the standard bibliography styles,
-but may be used by others that produce an annotated bibliography.
-    <p>
-    </p>
-  </li>
-  <li><strong>author<br>
-    </strong>This field should contain the complete author
-list for your entry. The names are separated by the word <em>and</em>,
-even if there are more than two authors. Each name can be written
-in two equivalent forms:<br>
-
- Donald E. Knuth <em>or</em> Knuth, Donald E.<br>
-
- Eddie van Halen <em>or</em> van Halen, Eddie<br>
-
-
-The second form should be used for authors with more than two names,
-to differentiate between middle names and last names.<br>
-    <br>
-    <span style="font-weight: bold;"></span></li>
-  <li><span style="font-weight: bold;"></span><strong>booktitle<br>
-    </strong>Title of a book, part of which is being cited.
-For book entries, use the <tt>title</tt> field instead.
-    <p>
-    </p>
-  </li>
-  <li><strong>chapter<br>
-    </strong>A chapter (or section or whatever) number.
-    <p>
-    </p>
-  </li>
-  <li><strong>crossref<br>
-    </strong>The database key of the entry being cross referenced.
-    <p>
-    </p>
-  </li>
-  <li><strong>edition<br>
-    </strong>The edition of a book--for example, ``Second''.
-This should be an ordinal, and
-should have the first letter capitalized, as shown here;
-the standard styles convert to lower case when necessary.
-    <p>
-    </p>
-  </li>
-  <li><strong>editor<br>
-    </strong>This field is analogue to the <em>author</em> field.
-If there is also an <tt>author</tt> field, then
-the <tt>editor</tt> field gives the editor of the book or collection
-in which the reference appears.
-    <p>
-    </p>
-  </li>
-  <li><strong>howpublished<br>
-    </strong>How something strange has been published.
-The first word should be capitalized.
-    <p>
-    </p>
-  </li>
-  <li><strong>institution<br>
-    </strong>The sponsoring institution of a technical report.
-    <p>
-    </p>
-  </li>
-  <li><strong>journal<br>
-    </strong>A journal name.
-The name of a journal can be abbreviated using a "string".
-To define such string, use the <a href="StringEditorHelp.html">string editor</a>.
-    <p>
-    </p>
-  </li>
-  <li><strong>key<br>
-    </strong>Used for alphabetizing, cross referencing, and creating a label when
-the ``author'' information is missing.
-This field should not be confused with the key that appears in the
-    <code>\cite</code> command and at the beginning of the database entry.
-    <p>
-    </p>
-  </li>
-  <li><strong>month<br>
-    </strong>The month in which the work was
-published or, for an unpublished work, in which it was written.
-You should use the standard three-letter abbreviation (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
-    <p>
-    </p>
-  </li>
-  <li><strong>note<br>
-    </strong>Any additional information that can help the reader.
-The first word should be capitalized.
-    <p>
-    </p>
-  </li>
-  <li><strong>number</strong><br>
-The number of a journal, magazine, technical report,
-or of a work in a series.
-An issue of a journal or magazine is usually
-identified by its volume and number;
-the organization that issues a
-technical report usually gives it a number;
-and sometimes books are given numbers in a named series.
-    <p>
-    </p>
-  </li>
-  <li><strong>organization<br>
-    </strong>The organization that sponsors a conference or that publishes a manual.
-    <p>
-    </p>
-  </li>
-  <li><strong>pages<br>
-    </strong>One or more page numbers or range of numbers,
-such as <tt>42-111</tt> or <tt>7,41,73-97</tt> or <tt>43+</tt>
-(the `<tt>+</tt>' in this last example indicates pages following
-that don't form a simple range).
-To make it easier to maintain <em>Scribe</em>-compatible databases,
-the standard styles convert a single dash (as in <tt>7-33</tt>)
-to the double dash used in TeX to denote number ranges
-(as in <tt>7-33</tt>).
-    <p>
-    </p>
-  </li>
-  <li><strong>publisher<br>
-    </strong>The publisher's name.
-    <p>
-    </p>
-  </li>
-  <li><strong>school<br>
-    </strong>The name of the school where a thesis was written.
-    <p>
-    </p>
-  </li>
-  <li><strong>series<br>
-    </strong>The name of a series or set of books.
-When citing an entire book, the <tt>title</tt> field
-gives its title and an optional <tt>series</tt> field gives the
-name of a series or multi-volume set
-in which the book is published.
-    <p>
-    </p>
-  </li>
-  <li><strong>title<br>
-    </strong>The work's title. The capitalization may depend on
-the bibliography style and on the language used. For words that
-have to be capitalized (such as a proper noun), enclose the word
-(or its first letter) in braces.
-    <p>
-    </p>
-  </li>
-  <li><strong>type<br>
-    </strong>The type of a technical report--for example,
-``Research Note''.
-    <p>
-    </p>
-  </li>
-  <li><strong>volume<br>
-    </strong>The volume of a journal or multivolume book.
-    <p>
-    </p>
-  </li>
-  <li><strong>year<br>
-    </strong>The year of publication or, for
-an unpublished work, the year it was written.
-Generally it should consist of four numerals, such as <tt>1984</tt>,
-although the standard styles can handle any <tt>year</tt> whose
-last four nonpunctuation characters are numerals,
-such as `(about 1984)'. This field is required
-for most entry types.</li>
-</ul>
-
-
-
-
-
-
-<br>
-
-
-<h2>Other fields</h2>
-
-
-
-BibTeX is extremely popular, and many people have used it to store
-information.  Here is a list of some of the more common fields:
-
-<dl>
-
-
-</dl>
-
-<ul>
-
-  <li><strong><span style="font-weight: normal; font-style: italic;">affiliation*</span><br>
-    </strong>The authors affiliation.<br>
-    <br>
-
-  </li>
-  <li><strong>abstract<br>
-    </strong>An abstract of the work.<br>
-    <br>
-
-  </li>
-
-  <li><strong>doi<br>
-    </strong>The Digital Object Identifier, a permanent identifier given to documents.<br>
-    <br>
-
-  </li>
-  <li><strong>eid<br>
-    </strong>The Electronic identifier is for electronic journals that also appear in print. This number replaces the page number, and is used to find the article within the printed volume. Sometimes also called <em>citation number</em>.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">contents*</span><br>
-    </strong>A Table of Contents<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">copyright*</span><br>
-    </strong>Copyright information.<br>
-    <br>
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">ISBN*</span><br>
-    </strong>The International Standard Book Number.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">ISSN*</span><br>
-    </strong>The International Standard Serial Number.  Used to identify a journal.<br>
-    <br>
-
-  </li>
-  <li><strong>keywords<br>
-    </strong>Key words used for searching or possibly for annotation.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">language*</span><br>
-    </strong>The language the document is in.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">location*</span><br>
-    </strong>A location associated with the entry, such as the city in which a conference took place.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">LCCN*</span><br>
-    </strong>The Library of Congress Call Number.  I've also seen this as <tt>lib-congress</tt>.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">mrnumber*</span><br>
-    </strong>The <i>Mathematical Reviews</i> number.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">price*</span><br>
-    </strong>The price of the document.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">size*</span><br>
-    </strong>The physical dimensions of a work.<br>
-    <br>
-
-  </li>
-  <li><strong>URL<br>
-    </strong>The WWW Universal Resource Locator that points to the item being
-    referenced.  This often is used for technical reports to point to
-    the ftp site where the postscript source of the report is located.
-
-  </li>
-</ul>
-
-<dl>
-
-
-</dl>
-
-
-
-
-
-
-<h3><br>
-</h3>
-
-
-
-<h3>JuraBib</h3>
-
-
-
-
-<ul>
-
-  <li><strong>urldate<br>
-    </strong>The date of the last page visit.</li>
-
-</ul>
-
-
-<br>
-
-*) not direct supported by JabRef<br>
-
-
-
-
-
-
-
-<br>
-
-
-
-</body></html>
\ No newline at end of file
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>About <em>bibtex</em></h1>
+
+    <p>JabRef helps you work with your
+    <em>bibtex</em> databases, but there are still rules to keep in
+    mind when editing your entries, to ensure that your database is
+    treated properly by the <em>bibtex</em> program.</p>
+
+    <h2><em>Bibtex</em> fields</h2>
+
+    <p>There is a lot of different
+    fields in <em>bibtex</em>, and some additional fields that you
+    can set in JabRef.</p>
+
+    <p>Generally, you can use LaTeX commands inside of fields
+    containing text. <em>Bibtex</em> will automatically format your
+    reference lists, and those fields that are included in the
+    lists will be (de)capitalized according to your bibliography
+    style. To ensure that certain characters remain capitalized,
+    enclose them in braces, like in the word {B}elgium.</p>
+
+    <p>Notes about some of the field types:</p>
+
+    <ul>
+        <li><strong style="font-style: italic;">Bibtexkey</strong>
+        A unique string used to refer to the entry in LaTeX
+        documents. Note that when referencing an entry from LaTeX,
+        the key must match case-sensitively with the reference
+        string.<br />
+        <br /></li>
+
+        <li><strong>address<br /></strong> Usually the address of
+        the <tt>publisher</tt> or other type of institution. For
+        major publishing houses, van Leunen recommends
+        omitting the information entirely. For small publishers, on
+        the other hand, you can help the reader by giving the
+        complete address.</li>
+
+        <li><strong>annote<br /></strong> An annotation. It is not
+        used by the standard bibliography styles, but may be used
+        by others that produce an annotated bibliography.</li>
+
+        <li><strong>author<br /></strong> This field should contain
+        the complete author list for your entry. The names are
+        separated by the word <em>and</em>, even if there are more
+        than two authors. Each name can be written in two
+        equivalent forms:<br />
+         Donald E. Knuth <em>or</em> Knuth, Donald E.<br />
+         Eddie van Halen <em>or</em> van Halen, Eddie<br />
+         The second form should be used for authors with more than
+        two names, to differentiate between middle names and last
+        names.<br />
+        <br /></li>
+
+        <li><strong>booktitle<br /></strong> Title of a book, part
+        of which is being cited. For book entries, use the
+        <tt>title</tt> field instead.</li>
+
+        <li><strong>chapter<br /></strong> A chapter (or section or
+        whatever) number.</li>
+
+        <li><strong>crossref<br /></strong> The database key of the
+        entry being cross referenced.</li>
+
+        <li><strong>edition<br /></strong> The edition of a
+        book--for example, ``Second''. This should be an ordinal,
+        and should have the first letter capitalized, as shown
+        here; the standard styles convert to lower case when
+        necessary.</li>
+
+        <li><strong>editor<br /></strong> This field is analogue to
+        the <em>author</em> field. If there is also an
+        <tt>author</tt> field, then the <tt>editor</tt> field gives
+        the editor of the book or collection in which the reference
+        appears.</li>
+
+        <li><strong>howpublished<br /></strong> How something
+        strange has been published. The first word should be
+        capitalized.</li>
+
+        <li><strong>institution<br /></strong> The sponsoring
+        institution of a technical report.</li>
+
+        <li><strong>journal<br /></strong> A journal name. The name
+        of a journal can be abbreviated using a "string". To define
+        such string, use the <a href="StringEditorHelp.html">string
+        editor</a>.</li>
+
+        <li><strong>key<br /></strong> Used for alphabetizing,
+        cross referencing, and creating a label when the ``author''
+        information is missing. This field should not be confused
+        with the key that appears in the <code>\cite</code> command
+        and at the beginning of the database entry.</li>
+
+        <li><strong>month<br /></strong> The month in which the
+        work was published or, for an unpublished work, in which it
+        was written. You should use the standard three-letter
+        abbreviation (jan, feb, mar, apr, may, jun, jul, aug, sep,
+        oct, nov, dec).</li>
+
+        <li><strong>note<br /></strong> Any additional information
+        that can help the reader. The first word should be
+        capitalized.</li>
+
+        <li><strong>number</strong><br />
+        The number of a journal, magazine, technical report, or of
+        a work in a series. An issue of a journal or magazine is
+        usually identified by its volume and number; the
+        organization that issues a technical report usually gives
+        it a number; and sometimes books are given numbers in a
+        named series.</li>
+
+        <li><strong>organization<br /></strong> The organization
+        that sponsors a conference or that publishes a manual.</li>
+
+        <li><strong>pages<br /></strong> One or more page numbers
+        or range of numbers, such as <tt>42-111</tt> or
+        <tt>7,41,73-97</tt> or <tt>43+</tt> (the `<tt>+</tt>' in
+        this last example indicates pages following that don't form
+        a simple range). To make it easier to maintain
+        <em>Scribe</em>-compatible databases, the standard styles
+        convert a single dash (as in <tt>7-33</tt>) to the double
+        dash used in TeX to denote number ranges (as in
+        <tt>7-33</tt>).</li>
+
+        <li><strong>publisher<br /></strong> The publisher's
+        name.</li>
+
+        <li><strong>school<br /></strong> The name of the school
+        where a thesis was written.</li>
+
+        <li><strong>series<br /></strong> The name of a series or
+        set of books. When citing an entire book, the
+        <tt>title</tt> field gives its title and an optional
+        <tt>series</tt> field gives the name of a series or
+        multi-volume set in which the book is published.</li>
+
+        <li><strong>title<br /></strong> The work's title. The
+        capitalization may depend on the bibliography style and on
+        the language used. For words that have to be capitalized
+        (such as a proper noun), enclose the word (or its first
+        letter) in braces.</li>
+
+        <li><strong>type<br /></strong> The type of a technical
+        report--for example, ``Research Note''.</li>
+
+        <li><strong>volume<br /></strong> The volume of a journal
+        or multivolume book.</li>
+
+        <li><strong>year<br /></strong> The year of publication or,
+        for an unpublished work, the year it was written. Generally
+        it should consist of four numerals, such as <tt>1984</tt>,
+        although the standard styles can handle any <tt>year</tt>
+        whose last four nonpunctuation characters are numerals,
+        such as `(about 1984)'. This field is required for most
+        entry types.</li>
+    </ul><br />
+
+
+    <h2>Other fields</h2>
+
+    <p>BibTeX is extremely popular, and many
+    people have used it to store information. Here is a list of
+    some of the more common fields:</p>
+
+    <ul>
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        affiliation*</span><br /></strong> The authors
+        affiliation.<br />
+        <br /></li>
+
+        <li><strong>abstract<br /></strong> An abstract of the
+        work.<br />
+        <br /></li>
+
+        <li><strong>doi<br /></strong> The Digital Object
+        Identifier, a permanent identifier given to
+        documents.<br />
+        <br /></li>
+
+        <li><strong>eid<br /></strong> The Electronic identifier is
+        for electronic journals that also appear in print. This
+        number replaces the page number, and is used to find the
+        article within the printed volume. Sometimes also called
+        <em>citation number</em>.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        contents*</span><br /></strong> A Table of Contents<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        copyright*</span><br /></strong> Copyright
+        information.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        ISBN*</span><br /></strong> The International Standard Book
+        Number.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        ISSN*</span><br /></strong> The International Standard
+        Serial Number. Used to identify a journal.<br />
+        <br /></li>
+
+        <li><strong>keywords<br /></strong> Key words used for
+        searching or possibly for annotation.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        language*</span><br /></strong> The language the document
+        is in.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        location*</span><br /></strong> A location associated with
+        the entry, such as the city in which a conference took
+        place.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        LCCN*</span><br /></strong> The Library of Congress Call
+        Number. I've also seen this as <tt>lib-congress</tt>.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        mrnumber*</span><br /></strong> The <i>Mathematical
+        Reviews</i> number.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        price*</span><br /></strong> The price of the
+        document.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        size*</span><br /></strong> The physical dimensions of a
+        work.<br />
+        <br /></li>
+
+        <li><strong>URL<br /></strong> The WWW Universal Resource
+        Locator that points to the item being referenced. This
+        often is used for technical reports to point to the ftp
+        site where the postscript source of the report is
+        located.</li>
+    </ul>
+
+    <h3>JuraBib</h3>
+
+    <ul>
+        <li><strong>urldate<br /></strong> The date of the last
+        page visit.</li>
+    </ul><br />
+     *) not direct supported by JabRef<br />
+     <br />
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/CiteSeerHelp.html b/src/help/CiteSeerHelp.html
index cda4f08..cd4e720 100644
--- a/src/help/CiteSeerHelp.html
+++ b/src/help/CiteSeerHelp.html
@@ -1,50 +1,62 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Importing From CiteSeer</H1>
-
-
-CiteSeer is a scientific literature digital library and search engine
-that focuses primarily on the literature in computer and information
-science.
-
-<H2>Importing An Entry From CiteSeer</H2>
-
-JabRef can download information about a particular citation from the CiteSeer database.
-To start this process, add a new entry into your database and populate the citeseerurl field with
-a link to its content page on CiteSeer.  The citeseerurl field must be in one of the following formats:
-
-<p>http://citeseer.ist.psu.edu/DDDDDD[.html], or <br>
-oai:CiteSeerPSU:DDDDDD, or <br>
-DDDDDD
-
-<p>where DDDDD is a sequence of digits.  To find the sequence of digits (DDDDD) for a CiteSeer entry,
-goto the citation's document page of the format http://citeseer.ist.psu.edu/<i>nameYearTitle</i>.html
-and click on the (Update) link for this citation.  The URL for the Update link will contain the numeric
-ID for this citation.
-
-<p>Once you have populated the citeseerurl field, you may download the CiteSeer fields by selecting
- <b>BibTex -> Import Fields from CiteSeer</b>.  Make sure you have selected the row(s) you wish to
- update.
-
-<H2>Generating a Citation Database</H2>
-
-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>Web Search -> Fetch Citations
-from CiteSeer</b>.
-
-<H2>Using a Proxy Server</H2>
-
-If you need to use an http proxy server, pass the server name and
-port number to java at runtime.  These environment settings are documented
-at <p> http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html
-
-<p><code>java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"</code>
-
-<p> 
-
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Importing From CiteSeer</h1>
+
+    <p>CiteSeer is a scientific
+    literature digital library and search engine that focuses
+    primarily on the literature in computer and information
+    science.</p>
+
+    <h2>Importing An Entry From CiteSeer</h2>
+
+    <p>JabRef can download
+    information about a particular citation from the CiteSeer
+    database. To start this process, add a new entry into your
+    database and populate the citeseerurl field with a link to its
+    content page on CiteSeer. The citeseerurl field must be in one
+    of the following formats:</p>
+
+    <p>http://citeseer.ist.psu.edu/DDDDDD[.html], or<br />
+    oai:CiteSeerPSU:DDDDDD, or<br />
+    DDDDDD</p>
+
+    <p>where DDDDD is a sequence of digits. To find the sequence of
+    digits (DDDDD) for a CiteSeer entry, goto the citation's
+    document page of the format
+    http://citeseer.ist.psu.edu/<i>nameYearTitle</i>.html and click
+    on the (Update) link for this citation. The URL for the Update
+    link will contain the numeric ID for this citation.</p>
+
+    <p>Once you have populated the citeseerurl field, you may
+    download the CiteSeer fields by selecting <b>BibTex ->
+    Import Fields from CiteSeer</b>. Make sure you have selected
+    the row(s) you wish to update.</p>
+
+    <h2>Generating a Citation Database</h2>
+
+    <p>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>Web Search -> Fetch Citations from
+    CiteSeer</b>.</p>
+
+    <h2>Using a Proxy Server</h2>
+
+    <p>If you need to use an http proxy
+    server, pass the server name and port number to java at
+    runtime. These environment settings are documented at</br />
+    <a href="http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html">http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html</a></p>
+
+    <p><code>java -Dhttp.proxyHost="hostname"
+    -Dhttp.proxyPort="portnumber"</code></p>
+
+    <p> </p>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/src/help/CommandLine.html b/src/help/CommandLine.html
index a5de77c..84ac25d 100644
--- a/src/help/CommandLine.html
+++ b/src/help/CommandLine.html
@@ -1,85 +1,125 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Command line options</H1>
+    <h1>Command line options</h1>
 
-Although JabRef is primarily a GUI based application, it offers several command line options
-that may be useful, and can even perform file conversion operations without opening the graphical
-interface.
+    <p>Although JabRef is primarily a GUI
+    based application, it offers several command line options that
+    may be useful, and can even perform file conversion operations
+    without opening the graphical interface.</p>
 
-<P>You can always specify one or more BibTeX files to load by simply listing their filenames. Take care to
-  specify all options before your list of file names. You must make sure the first file name is not misunderstood
-  as being an argument for an option - this simply means that if a boolean option like <code>-n</code> or
-<code>-l</code>	immediately precedes a file name, add the word "true" as an argument. For instance, the command
-line:
-<p><code>jabref -o filetoexport.xml,docbook -n true original.bib</code>
-<p>will correctly load the file <code>original.bib</code>, export it in docbook format to <code>filetoexport.xml</code>,
-  and suppress the GUI. The word <em>true</em> prevents the file name from being interpreted as an argument to the
-  -n option.
-
-<H2>Help: -h</H2>
-
-This option causes JabRef to display a summary of the command line options, and quit immediately.
-
-<H2>No-GUI mode: -n</H2>
-
-This option suppresses both the JabRef window and the splash window normally shown at startup. It
-causes the program to quit immediately once the command line options have been processed.
-<P>This option is useful for performing file conversion operations from the command line or a script.
-
-<H2>Load session: -l</H2>
-
-This option causes JabRef to load the saved session, if any, before opening the main window.
-
-<H2>Import file: -i filename[,format]</H2>
-
-This option causes JabRef to import or load the specified file. If only a filename is specified, or
-the filename is followed by a comma and a * character, JabRef will attempt to detect the file format
-automatically. This should work for all BibTeX files and files in any import format supported by JabRef.
-If the filename is followed by a comma and the name of an import format, the given import
-filter will be used. Use the <code>-h</code> option to get a list of availiable import formats.
-
-<P>If an output option is also specified, an import will always be processed before it, and the imported or
-  loaded file will be given to the export filter. If the GUI is not suppressed using the <code>-n</code> option,
-  any imported or loaded file will show up in the main window.
-<p>The -i option can be specified only once, and for one file only.
-
-<H2>Export file: -o filename[,format]</H2>
-
-This option causes JabRef to save or export a file imported or loaded by the same command line. If a file is
-imported using the <code>-i</code> option, that database will be exported. Otherwise, the <em>last</em> file
-specified (and successfully loaded) without the <code>-i</code> option will be exported.
-
-<P>If only a filename
-is specified, it will be saved in BibTeX format. If the filename is followed by a comma and an export format,
-the given export filter will be used. A custom export filter can be used in this way, and will be preferred if
-the export name matches both a custom and a standard export filter.
-<P>Use the <code>-h</code> option to get a list of availiable export formats.
-
-<P>If the <code>-n</code> option has not been invoked, any export operation will be performed before the JabRef
-  window is opened, and the imported database will show up in the window.
-
-<p>The -o option can be specified only once, and for one file only.
-
-<H2>Export preferences: -x filename</H2>
-
-Using this option, you can have JabRef export all user preferences to an XML file. After exporting,
-JabRef will start normally.
-
-<H2>Import preferences: -p filename</H2>
-
-This option causes JabRef to import user preferences exported using the <code>-x</code>
-option. After importing, JabRef will start normally.
-
-<H2>Export only used items: -a filename[.aux],newBibFile[.bib]</H2>
-
-Sometimes it is helpful, to have a bibtex file that contains only the used bibtex entries.
-A list of these used entries is located in an aux file. Jabref can parse this file to
-generate a new bibtex file, which contains only the known and used entries. That will mean, 
-if an entry is not defined in the standard bibtex file, it cannot be located in the new 
-file.
-
-</BODY>
-</HTML>
+    <p>You can always specify one or more BibTeX files to load by
+    simply listing their filenames. Take care to specify all
+    options before your list of file names. You must make sure the
+    first file name is not misunderstood as being an argument for
+    an option - this simply means that if a boolean option like
+    <code>-n</code> or <code>-l</code> immediately precedes a file
+    name, add the word "true" as an argument. For instance, the
+    command line:</p>
+
+    <p><code>jabref -o filetoexport.xml,docbook -n true
+    original.bib</code></p>
+
+    <p>will correctly load the file <code>original.bib</code>,
+    export it in docbook format to <code>filetoexport.xml</code>,
+    and suppress the GUI. The word <em>true</em> prevents the file
+    name from being interpreted as an argument to the -n
+    option.</p>
+
+    <h2>Help: -h</h2>
+
+    <p>This option causes JabRef to display a summary
+    of the command line options, and quit immediately.</p>
+
+    <h2>No-GUI mode: -n</h2>
+
+    <p>This option suppresses both the JabRef
+    window and the splash window normally shown at startup. It
+    causes the program to quit immediately once the command line
+    options have been processed.</p>
+
+    <p>This option is useful for performing file conversion
+    operations from the command line or a script.</p>
+
+    <h2>Load session: -l</h2>
+
+    <p>This option causes JabRef to load the
+    saved session, if any, before opening the main window.</p>
+
+    <h2>Import file: -i filename[,format]</h2>
+
+    <p>This option causes
+    JabRef to import or load the specified file. If only a filename
+    is specified, or the filename is followed by a comma and a *
+    character, JabRef will attempt to detect the file format
+    automatically. This should work for all BibTeX files and files
+    in any import format supported by JabRef. If the filename is
+    followed by a comma and the name of an import format, the given
+    import filter will be used. Use the <code>-h</code> option to
+    get a list of availiable import formats.</p>
+
+    <p>If an output option is also specified, an import will always
+    be processed before it, and the imported or loaded file will be
+    given to the export filter. If the GUI is not suppressed using
+    the <code>-n</code> option, any imported or loaded file will
+    show up in the main window.</p>
+
+    <p>The -i option can be specified only once, and for one file
+    only.</p>
+
+    <h2>Export file: -o filename[,format]</h2>
+
+    <p>This option causes
+    JabRef to save or export a file imported or loaded by the same
+    command line. If a file is imported using the <code>-i</code>
+    option, that database will be exported. Otherwise, the
+    <em>last</em> file specified (and successfully loaded) without
+    the <code>-i</code> option will be exported.</p>
+
+    <p>If only a filename is specified, it will be saved in BibTeX
+    format. If the filename is followed by a comma and an export
+    format, the given export filter will be used. A custom export
+    filter can be used in this way, and will be preferred if the
+    export name matches both a custom and a standard export
+    filter.</p>
+
+    <p>Use the <code>-h</code> option to get a list of availiable
+    export formats.</p>
+
+    <p>If the <code>-n</code> option has not been invoked, any
+    export operation will be performed before the JabRef window is
+    opened, and the imported database will show up in the
+    window.</p>
+
+    <p>The -o option can be specified only once, and for one file
+    only.</p>
+
+    <h2>Export preferences: -x filename</h2>
+
+    <p>Using this option, you
+    can have JabRef export all user preferences to an XML file.
+    After exporting, JabRef will start normally.</p>
+
+    <h2>Import preferences: -p filename</h2>
+
+    <p>This option causes
+    JabRef to import user preferences exported using the
+    <code>-x</code> option. After importing, JabRef will start
+    normally.</p>
+
+    <h2>Export only used items: -a
+    filename[.aux],newBibFile[.bib]</h2>
+
+    <p>Sometimes it is helpful, to
+    have a bibtex file that contains only the used bibtex entries.
+    A list of these used entries is located in an aux file. Jabref
+    can parse this file to generate a new bibtex file, which
+    contains only the known and used entries. That will mean, if an
+    entry is not defined in the standard bibtex file, it cannot be
+    located in the new file.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/ContentSelectorHelp.html b/src/help/ContentSelectorHelp.html
index 0a01f6b..2830169 100755
--- a/src/help/ContentSelectorHelp.html
+++ b/src/help/ContentSelectorHelp.html
@@ -1,32 +1,25 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-  <BODY text="#275856">
-  <basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-  <head>
-    <title>Word selector</title>
-  </head>
-
-  <body>
     <h1>Field content selector</h1>
 
-    This feature allows you to store a selection of often-used
-    words or phrases that you use often in your
-    database. By default it is enabled for the fields
-    <em>Journal</em>, <em>Author</em>, <em>Keywords</em> and <em>Publisher</em>, but you
-    can also add selectors to other fields, in the upper part of the
-    <em>Manage</em> dialog (menu <strong> Tools --> Manage content selectors</strong>).
-
-    <P>
-    The word selection is database-specific, and is saved along
-    with your references in the .bib file.
-    <P>
-    To add a new word, you can simply write it into the selector
-    combo box and press Enter. Using the <em>Manage</em> dialog
-    you can also remove words that you have added.
-
-
-
-  </body>
-</html>
+    <p>This feature allows you to store
+    a selection of often-used words or phrases that you use often
+    in your database. By default it is enabled for the fields
+    <em>Journal</em>, <em>Author</em>, <em>Keywords</em> and
+    <em>Publisher</em>, but you can also add selectors to other
+    fields, in the upper part of the <em>Manage</em> dialog (menu
+    <strong>Tools --> Manage content selectors</strong>).</p>
+
+    <p>The word selection is database-specific, and is saved along
+    with your references in the .bib file.</p>
+
+    <p>To add a new word, you can simply write it into the selector
+    combo box and press Enter. Using the <em>Manage</em> dialog you
+    can also remove words that you have added.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/Contents.html b/src/help/Contents.html
index d1f609b..078c86a 100755
--- a/src/help/Contents.html
+++ b/src/help/Contents.html
@@ -1,39 +1,55 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-    <BODY text="#275856">
-    <basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-    <H1>Help contents</H1>
+    <h1>Help contents</h1>
 
-    <a href="HelpHelp.html">About the Help window</a><br>
-    <a href="JabRefHelp.html">General information</a><br>
-    <p>
-    <a href="BibtexHelp.html"><em>Bibtex</em> help</a><br>
-    <a href="CommandLine.html">Command line options</a><br>
-    <a href="CustomExports.html">Custom export filters</a><br>
-    <a href="CustomImports.html">Custom import filters</a><br>
-    <a href="LabelPatterns.html">Customizing the BibTex key generator</a><br>
-    <a href="CustomEntriesHelp.html">Customizing entry types</a><br>
-    <a href="GeneralFields.html">Customizing general fields</a><br>
-    <a href="EndNoteFilters.html">The EndNote import/export filter set</a><br>
-    <a href="EntryEditorHelp.html">Entry editor</a><br>
-    <a href="FileLinks.html">External file links</a><br>
-    <a href="TimeStampHelp.html">Entry time stamps</a><br>
-    <a href="CiteSeerHelp.html">Fetching entries from <em>CiteSeer</em></a><br>
-    <a href="MedlineHelp.html">Fetching entries from <em>Medline</em></a><br>
-    <a href="IEEEXploreHelp.html">Fetching entries from <em>IEEExplore</em></a><br>
-    <a href="ContentSelectorHelp.html">Field content selector</a><br>
-    <a href="GroupsHelp.html">Help on using <em>Groups</em></a><br>
-    <a href="ImportInspectionDialog.html">Import inspection window</a><br>
-    <a href="JournalAbbreviations.html">Journal abbreviations</a><br>
-    <a href="BaseFrameHelp.html">The JabRef main window</a><br>
-    <a href="OwnerHelp.html">The 'owner' field</a><br>
-    <a href="MarkingHelp.html">Marking entries</a><br>
-    <a href="OpenOfficeHelp.html">Using JabRef bibliographies in OpenOffice.org</a><br>
-    <a href="ExternalFiles.html">PDF/PS/URL/DOI links in JabRef</a><br>
-    <a href="SearchHelp.html">Searching in JabRef</a><br>
-    <a href="StringEditorHelp.html">String editor</a><br>
-    <a href="PreviewHelp.html">Entry preview setup</a><br>
-    <a href="XMPHelp.html">XMP metadata support in JabRef</a>
+    <p><a href="HelpHelp.html">About the Help window</a><br />
+     <a href="JabRefHelp.html">General information</a><br /></p>
 
-</HTML>
+
+    <p><a href="BibtexHelp.html"><em>Bibtex</em> help</a><br />
+     <a href="CommandLine.html">Command line options</a><br />
+     <a href="CustomExports.html">Custom export filters</a><br />
+     <a href="CustomImports.html">Custom import filters</a><br />
+     <a href="LabelPatterns.html">Customizing the BibTex key
+    generator</a><br />
+     <a href="CustomEntriesHelp.html">Customizing entry
+    types</a><br />
+     <a href="GeneralFields.html">Customizing general
+    fields</a><br />
+     <a href="EndNoteFilters.html">The EndNote import/export filter
+    set</a><br />
+     <a href="EntryEditorHelp.html">Entry editor</a><br />
+     <a href="FileLinks.html">External file links</a><br />
+     <a href="TimeStampHelp.html">Entry time stamps</a><br />
+     <a href="CiteSeerHelp.html">Fetching entries from
+    <em>CiteSeer</em></a><br />
+     <a href="MedlineHelp.html">Fetching entries from
+    <em>Medline</em></a><br />
+     <a href="IEEEXploreHelp.html">Fetching entries from
+    <em>IEEExplore</em></a><br />
+     <a href="ContentSelectorHelp.html">Field content
+    selector</a><br />
+     <a href="GroupsHelp.html">Help on using
+    <em>Groups</em></a><br />
+     <a href="ImportInspectionDialog.html">Import inspection
+    window</a><br />
+     <a href="JournalAbbreviations.html">Journal
+    abbreviations</a><br />
+     <a href="BaseFrameHelp.html">The JabRef main window</a><br />
+     <a href="OwnerHelp.html">The 'owner' field</a><br />
+     <a href="MarkingHelp.html">Marking entries</a><br />
+     <a href="OpenOfficeHelp.html">Using JabRef bibliographies in
+    OpenOffice.org</a><br />
+     <a href="ExternalFiles.html">PDF/PS/URL/DOI links in
+    JabRef</a><br />
+     <a href="SearchHelp.html">Searching in JabRef</a><br />
+     <a href="StringEditorHelp.html">String editor</a><br />
+     <a href="PreviewHelp.html">Entry preview setup</a><br />
+     <a href="XMPHelp.html">XMP metadata support in JabRef</a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/CustomEntriesHelp.html b/src/help/CustomEntriesHelp.html
index 74ce9a9..fccfb6b 100644
--- a/src/help/CustomEntriesHelp.html
+++ b/src/help/CustomEntriesHelp.html
@@ -1,70 +1,80 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Customizing entry types</title>
-  </head>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-  <BODY text="#275856">
-    <basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
     <h1>Customizing entry types</h1>
-    <p>
-    To customize entry types, select the menu
-    <strong>Options --> Customize entry types</strong>.
-    <p>
-    When customizing an entry type, you both define how its entry editor should look, and what
-    it takes for JabRef to consider an entry complete. You can both make changes to the existing
-    entry types, and define new ones.
-    <p>
-    Note that no modifications you make in this dialog will be stored until you click <b>Apply</b>
-    or <b>OK</b>. If you click <b>Cancel</b> or simply close the dialog, unapplied changes will
-    be lost.
-
-    <h2>Using the entry customization dialog</h2> 
-
-The entry customization dialog is divided in three main panels. The leftmost panel
-is where you can select an entry type for modification, and add new ones. The middle
-panel is used for setting up the required fields of the selected entry type, and
-the right panel for setting up the optional fields.
-
-<h3>Adding and removing entry types</h3>
-
-<p>The currently available entry types are listed in the left panel. Whenever
-you select an entry type, the other panels will update to show what fields are
-required and optional for this entry type.
-
-<p>To add a new entry type, you must enter a name for it in the text field below
-the type list, and click <b>Add</b>. The new entry type will be added to the list,
-and selected for modification.
-
-<p>To remove a custom entry type, select it and click <b>Remove</b>. This operation will
-only be available for custom entry types that are not merely modifications of standard types.
-It is not possible to remove a standard entry type.
-
-<p>To return a modified standard type to its default setup, select it and click <b>Default</b>.
-This operation will only be available for customized entry types that modify a standard type.
-
-<h2>Editing entry types</h2>
-
-When an entry type is selected, the current required and optional fields will be listed
-in the center and right panels of the dialog. The process of editing the lists are identical
-for the required and optional fields.
-
-<p>To add a new field, edit the text field below the list, or select a field name from the
-dropdown menu, then click <b>Add</b>. The chosen field name will be added at the end of the
-list.
-
-<p>To remove one or more fields, select them in the list, and click <b>Remove</b>.
-
-<p>To change the order of the fields, choose one field name, and click the arrow buttons to move
-it up or down in the list.
-
-<p>
-There is one limitation to customizing entry types; certain types have
-an and/or condition in their required fields. For instance, a <em>book</em>
-entry is complete with either the <em>author</em> or the <em>editor</em>
-field, or both. This type of condition cannot be represented in a customized
-entry.
-
-  </body>
-</html>
+
+    <p>To customize entry types, select the menu <strong>Options
+    --> Customize entry types</strong>.</p>
+
+    <p>When customizing an entry type, you both define how its
+    entry editor should look, and what it takes for JabRef to
+    consider an entry complete. You can both make changes to the
+    existing entry types, and define new ones.</p>
+
+    <p>Note that no modifications you make in this dialog will be
+    stored until you click <b>Apply</b> or <b>OK</b>. If you click
+    <b>Cancel</b> or simply close the dialog, unapplied changes
+    will be lost.</p>
+
+    <h2>Using the entry customization dialog</h2>
+
+    <p>The entry
+    customization dialog is divided in three main panels. The
+    leftmost panel is where you can select an entry type for
+    modification, and add new ones. The middle panel is used for
+    setting up the required fields of the selected entry type, and
+    the right panel for setting up the optional fields.</p>
+
+    <h3>Adding and removing entry types</h3>
+
+    <p>The currently available entry types are listed in the left
+    panel. Whenever you select an entry type, the other panels will
+    update to show what fields are required and optional for this
+    entry type.</p>
+
+    <p>To add a new entry type, you must enter a name for it in the
+    text field below the type list, and click <b>Add</b>. The new
+    entry type will be added to the list, and selected for
+    modification.</p>
+
+    <p>To remove a custom entry type, select it and click
+    <b>Remove</b>. This operation will only be available for custom
+    entry types that are not merely modifications of standard
+    types. It is not possible to remove a standard entry type.</p>
+
+    <p>To return a modified standard type to its default setup,
+    select it and click <b>Default</b>. This operation will only be
+    available for customized entry types that modify a standard
+    type.</p>
+
+    <h2>Editing entry types</h2>
+
+    <p>When an entry type is selected, the
+    current required and optional fields will be listed in the
+    center and right panels of the dialog. The process of editing
+    the lists are identical for the required and optional fields.</p>
+
+    <p>To add a new field, edit the text field below the list, or
+    select a field name from the dropdown menu, then click
+    <b>Add</b>. The chosen field name will be added at the end of
+    the list.</p>
+
+    <p>To remove one or more fields, select them in the list, and
+    click <b>Remove</b>.</p>
+
+    <p>To change the order of the fields, choose one field name,
+    and click the arrow buttons to move it up or down in the
+    list.</p>
+
+    <p>There is one limitation to customizing entry types; certain
+    types have an and/or condition in their required fields. For
+    instance, a <em>book</em> entry is complete with either the
+    <em>author</em> or the <em>editor</em> field, or both. This
+    type of condition cannot be represented in a customized
+    entry.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/CustomExports.html b/src/help/CustomExports.html
index 02967fe..4db3f94 100644
--- a/src/help/CustomExports.html
+++ b/src/help/CustomExports.html
@@ -1,263 +1,446 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Custom export filters</h1>
+
+    <p>JabRef allows you to define and
+    use your own export filters, in the same way as the standard
+    export filters are defined. An export filter is defined by one
+    or more <i>layout files</i>, which with the help of a
+    collection of built-in formatter routines specify the format of
+    the exported files. Your layout files must be prepared in a
+    text editor outside of JabRef.</p>
+
+    <h2>Adding a custom export filter</h2>
+
+    <p>The only requirement for
+    a valid export filter is the existence of a file with the
+    extension <b>.layout</b>. To add a new custom export filter,
+    open the dialog box <b>Options -> Manage custom exports</b>,
+    and click <b>Add new</b>. A new dialog box will appear,
+    allowing you to specify a name for the export filter (which
+    will appear as one of the choices in the File type dropdown
+    menu of the file dialog when you use the <b>File ->
+    Export</b> menu choice in the JabRef window), the path to the
+    <b>.layout</b> file, and the preferred file extension for the
+    export filter (which will be the suggested extension in the
+    file dialog when you use the export filter).</p>
+
+    <h2>Creating the export filter</h2>
+
+    <p>To see examples of how export filters are made, look for
+    the package containing the layout files for the standard
+    export filters on our download page.</p>
+
+    <h3>Layout files</h3>
+
+    <p>Let us assume that we are creating an HTML export filter.</p>
+
+    <p>While the export filter only needs to consist of a single
+    <b>.layout</b> file, which in this case could be called
+    <i>html.layout</i>, you may also want to add two files called
+    <i>html.begin.layout</i> and <i>html.end.layout</i>. The former
+    contains the header part of the output, and the latter the
+    footer part. JabRef will look for these two files whenever the
+    export filter is used, and if found, either of these will be
+    copied verbatim to the output before or after the individual
+    entries are written.</p>
+
+    <p>Note that these files must reside in the same directory as
+    <i>html.layout</i>, and must be named by inserting
+    <b>.begin</b> and <b>.end</b>, respectively.</p>
+
+    <p>In our example export filter, these could look like the
+    following:</p>
+
+    <p><i>html.begin.layout</i>:<br />
+    <code><HTML><br />
+     <BODY> text="#275856"><br />
+    <basefont size="4" color="#2F4958"
+    face="arial"></code></p>
+
+    <p><i>html.end.layout</i>:<br />
+    <code></BODY><br />
+     </HTML></code></p>
+
+    <p>The file <i>html.layout</i> provides the <i>default</i>
+    template for exporting one single entry. If you want to use
+    different templates for different entry types, you can do this
+    by adding entry-specific <b>.layout</b> files. These must also
+    reside in the same directory as the main layout file, and are
+    named by inserting <b>.entrytype</b> into the name of the main
+    layout file. The entry type name must be in all lowercase. In
+    our example, we might want to add a template for book entries,
+    and this would go into the file <i>html.book.layout</i>. For a
+    PhD thesis we would add the file <i>html.phdthesis.layout</i>,
+    and so on. These files are similar to the default layout file,
+    except that they will only be used for entries of the matching
+    type. Note that the default file can easily be made general
+    enough to cover most entry types in most export filters.</p>
+
+    <h3>The layout file format</h3>
+
+    <p>Layout files are created using a
+    simple markup format where commands are identified by a
+    preceding backslash. All text not identified as part of a
+    command will be copied verbatim to the output file.</p>
+
+    <h3>Field commands</h3>
+
+    <p>An arbitrary word preceded by a backslash, e.g.
+    <code>\author</code>, <code>\editor</code>, <code>\title</code>
+    or <code>\year</code>, will be interpreted as a reference to
+    the corresponding field, which will be copied directly to the
+    output.</p>
+
+    <h3>Field formatters</h3>
+
+    <p>Often there will be a need for some preprocessing of the
+    field contents before output. This is done using a <i>field
+    formatter</i> - a java class containing a single method that
+    manipulates the contents of a field.</p>
+
+    <p>A formatter is used by inserting the <code>\format</code>
+    command followed by the formatter name in square braces, and
+    the field command in curly braces, e.g.:</p>
+
+    <p><code>\format[ToLowerCase]{\author}</code></p>
+
+    <p>You can also specify multiple formatters separated by
+    commas. These will be called sequentially, from left to right,
+    e.g.</p>
+
+    <p><code>\format[ToLowerCase,HTMLChars]{\author}</code></p>
+
+    <p>will cause the formatter <b>ToLowerCase</b> to be called
+    first, and then <b>HTMLChars</b> will be called to format the
+    result. You can list an arbitrary number of formatters in this
+    way.</p>
+
+    <p>The argument to the formatters, withing the curly braces,
+    does not have to be a field command. Instead, you can insert
+    normal text, which will then be passed to the formatters
+    instead of the contents of any field. This can be useful for
+    some fomatters, e.g. the CurrentDate formatter (described
+    below).</p>
+
+    <p>Some formatters take an extra argument, given in parentheses
+    immediately after the formatter name. The argument can be enclosed
+    in quotes, which is necessary if it includes the parenthesis characters.
+    For instance, <code>\format[Replace("\s,_")]{\journal}</code> calls
+    the <b>Replace</b> formatter with the argument <b>\s,_</b> (which results
+    in the "journal" field after replacing all whitespace by underscores).
+    </p>
+
+    <p>JabRef provides the following set of formatters, some of
+    which depend on the others:</p>
+
+    <ul>
+        <li><code>HTMLChars</code> : replaces TeX-specific special
+        characters (e.g. {\^a} or {\"{o}}) with their HTML
+        representations.</li>
+
+        <li><code>HTMLParagraphs</code> : interprets two
+        consecutive newlines (e.g. \n \n) as the beginning of a new
+        paragraph and creates paragraph-html-tags accordingly.</li>
+
+        <li><code>XMLChars</code> : replaces TeX-specific special
+        characters (e.g. {\^a} or {\"{o}}) with their XML
+        representations.</li>
+
+        <li><code>CreateDocBookAuthors</code> : formats the author
+        field in DocBook style.</li>
+
+        <li><code>CreateDocBookEditors</code> : to be
+        documented.</li>
+
+        <li><code>CurrentDate</code> : outputs the current date.
+        With no argument, this formatter outputs the current date
+        and time in the format "yyyy.MM.dd hh:mm:ss z" (date, time
+        and time zone). By giving a different format string as
+        argument, the date format can be customized. E.g.
+        <code>\format[CurrentDate]{yyyy.MM.dd}</code> will give the
+        date only, e.g. 2005.11.30.</li>
+
+        <li><code>AuthorFirstFirst</code> : formats author/editor
+        fields with the first names first.</li>
+
+        <li><code>AuthorFirstFirstCommas</code> : formats
+        author/editor fields with the first names first, and
+        deliminated by commas.</li>
+
+        <li><code>AuthorFirstAbbrLastCommas</code> : to be
+        documented.</li>
+
+        <li><code>AuthorFirstAbbrLastOxfordCommas</code> : to be
+        documented.</li>
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+        <li><code>AuthorFirstLastOxfordCommas</code> : to be
+        documented.</li>
 
-<H1>Custom export filters</H1>
+        <li><code>AuthorLastFirst</code> : formats author/editor
+        fields with the last names first.</li>
 
-JabRef allows you to define and use your own export filters, in the same way as the
-standard export filters are defined. An export filter is defined by one or more
-<i>layout files</i>, which with the help of a collection of built-in formatter
-routines specify the format of the exported files. Your layout files must be prepared
-in a text editor outside of JabRef.
+        <li><code>AuthorLastFirstAbbreviator</code> : abbreviates
+        first and middle names of all authors. This formatter
+        requires AuthorLastFirst to have been run earlier.</li>
 
-<H2>Adding a custom export filter</H2>
+        <li><code>AuthorLastFirstCommas</code> : to be
+        documented.</li>
+
+        <li><code>AuthorLastFirstOxfordCommas</code> : to be
+        documented.</li>
 
-The only requirement for a valid export filter is the existence of a file with
-the extension <b>.layout</b>. To add a new custom export filter, open the
-dialog box <b>Options -> Manage custom exports</b>, and click <b>Add new</b>.
-A new dialog box will appear, allowing you to specify a name for the export filter
-(which will appear as one of the choices in the File type dropdown menu of the file dialog
-when you use the <b>File -> Export</b> menu choice in the JabRef window),
-the path to the <b>.layout</b> file, and the preferred file extension for the export
-filter (which will be the suggested extension in the file dialog when you use the
-export filter).
+        <li><code>AuthorLastFirstAbbrCommas</code> : to be
+        documented.</li>
 
-<H2>Creating the export filter</H2>
+        <li><code>AuthorLastFirstAbbrOxfordCommas</code> : to be
+        documented.</li>
+
+        <li><code>AuthorAndsReplacer</code> : replaces "and"
+        between names with ";", and "&" between the last
+        two.</li>
+
+        <li><code>AuthorAndsCommaReplacer</code> : replaces "and"
+        between names with ",", and "&" between the last
+        two.</li>
 
-To see examples of how export filters are made, look for the package containing the layout files
-for the standard export filters on our download page.
+        <li><code>AuthorOrgSci</code> : first author is in "last,
+        first" all others in "first last". First names are
+        abbreviated.</li>
+
+        <li><code>AuthorAbbreviator</code> : to be documented.</li>
+
+        <li><code>AuthorNatBib</code> : formats author names in
+        NatBib style, with last names only, separating names by
+        "and" if there are two authors, and giving the first author
+        followed by "et al." if there are more than two
+        authors.</li>
+
+        <li><code>NoSpaceBetweenAbbreviations</code> : spaces
+        between multiple abbreviated first names are removed.</li>
+
+        <li><code>FileLink(filetype)</code> : if no argument is given, this formatter outputs
+            the first external file link encoded in the field. To work, the formatter must
+            be supplied with the contents of the "file" field.
+            <p>This formatter takes the name of an external file type as an optional argument,
+                specified in parentheses after the formatter name. For instance,
+                <code>\format[FileLink(pdf)]{\file}</code> specifies <code>pdf</code> as an
+                argument. When an argument is given, the formatter selects the first file
+                link of the specified type. In the example, the path to the first PDF link will
+                be output.</p></li>
 
-<H3>Layout files</H3>
-
-Let us assume that we are creating an HTML export filter.
-
-<P>While the export filter only needs to consist of a single <b>.layout</b> file, which in this case
-could be called <i>html.layout</i>, you may also want to add two files called
-<i>html.begin.layout</i> and <i>html.end.layout</i>. The former contains the header part
-of the output, and the latter the footer part. JabRef will look for these two files whenever
-the export filter is used, and if found, either of these will be copied verbatim to the output
-before or after the individual entries are written.
-
-<P>Note that these files must reside in the same directory as <i>html.layout</i>, and must be
-named by inserting <b>.begin</b> and <b>.end</b>, respectively.
-
-<P>In our example export filter, these could look like the following:
-
-<p><i>html.begin.layout</i>:<br>
-<code><HTML><br>
-  <BODY> text="#275856"><br>
-<basefont size="4" color="#2F4958" face="arial"></code>
-
-<p><i>html.end.layout</i>:<br>
-<code></BODY><br>
-  </HTML></code>
-
-<P>The file <i>html.layout</i> provides the <i>default</i> template for exporting one single entry. If
-you want to use different templates for different entry types, you can do this by adding entry-specific
-<b>.layout</b> files. These must also reside in the same directory as the main layout file, and
-are named by inserting <b>.entrytype</b> into the name of the main layout file. The entry type name
-must be in all lowercase. In our example, we might want to add a template for book entries, and this
-would go into the file <i>html.book.layout</i>. For a PhD thesis we would add the file
-<i>html.phdthesis.layout</i>, and so on. These files are similar to the default layout file, except that
-they will only be used for entries of the matching type. Note that the default file can easily be made
-general enough to cover most entry types in most export filters.
-
-<H3>The layout file format</H3>
-
-Layout files are created using a simple markup format where commands are identified by a preceding
-backslash. All text not identified as part of a command will be copied verbatim to the output file.
-
-<H3>Field commands</H3>
-
-<p>An arbitrary word preceded by a backslash, e.g. <code>\author</code>, <code>\editor</code>,
-<code>\title</code> or <code>\year</code>, will be interpreted as a reference to the corresponding field,
-which will be copied directly to the output.
-
-<H3>Field formatters</H3>
-
-<p>Often there will be a need for some preprocessing of the field contents before output. This is
-  done using a <i>field formatter</i> - a java class containing a single method that manipulates the
-  contents of a field.
-<p>A formatter is used by inserting the <code>\format</code> command followed by the formatter name in
-  square braces, and the field command in curly braces, e.g.:
-
-  <p><code>\format[ToLowerCase]{\author}</code>
-
-<p>You can also specify multiple formatters separated by commas. These will be called sequentially,
-  from left to right, e.g.
-
-  <p><code>\format[ToLowerCase,HTMLChars]{\author}</code>
-
-<p>will cause the formatter <b>ToLowerCase</b> to be called first, and then <b>HTMLChars</b> will be
-  called to format the result. You can list an arbitrary number of formatters in this way.
-
-<p>The argument to the formatters, withing the curly braces, does not have to be a field command. Instead,
-you can insert normal text, which will then be passed to the formatters instead of the contents of any field.
-This can be useful for some fomatters, e.g. the CurrentDate formatter (described below).
-
-<p>JabRef provides the following set of formatters, some of which depend on the others:
-<ul>
-<li><code>HTMLChars</code> : replaces TeX-specific special characters (e.g. {\^a} or {\"{o}})
-  with their HTML representations.
-<li><code>HTMLParagraphs</code> : interprets two consecutive newlines (e.g. \n   \n) as the beginning of a new paragraph and creates paragraph-html-tags accordingly.
-<li><code>XMLChars</code> : replaces TeX-specific special characters (e.g. {\^a} or {\"{o}})
-  with their XML representations.
-
-<li><code>CreateDocBookAuthors</code> : formats the author field in DocBook style.
-<li><code>CreateDocBookEditors</code> : to be documented.
-
-<li><code>CurrentDate</code> : outputs the current date. With no argument, this formatter outputs the
-    current date and time in the format "yyyy.MM.dd hh:mm:ss z" (date, time and time zone). By giving a
-    different format string as argument, the date format can be customized. E.g.
-    <code>\format[CurrentDate]{yyyy.MM.dd}</code> will give the date only, e.g. 2005.11.30.
-
-<li><code>AuthorFirstFirst</code> : formats author/editor fields with the first names first.
-<li><code>AuthorFirstFirstCommas</code> : formats author/editor fields with the first names first, and deliminated by commas.
-<li><code>AuthorFirstAbbrLastCommas</code> : to be documented.
-<li><code>AuthorFirstAbbrLastOxfordCommas</code> : to be documented.
-<li><code>AuthorFirstLastOxfordCommas </code> : to be documented.
-
-<li><code>AuthorLastFirst</code> : formats author/editor fields with the last names first.
-<li><code>AuthorLastFirstAbbreviator</code> : abbreviates first and middle names of all authors. This formatter requires AuthorLastFirst
-to have been run earlier.
-<li><code>AuthorLastFirstCommas</code> : to be documented.
-<li><code>AuthorLastFirstOxfordCommas</code> : to be documented.
-<li><code>AuthorLastFirstAbbrCommas</code> : to be documented.
-<li><code>AuthorLastFirstAbbrOxfordCommas</code> : to be documented.
-
-<li><code>AuthorAndsReplacer</code> : replaces "and" between names with ";", and "&" between the last two.
-<li><code>AuthorAndsCommaReplacer</code> : replaces "and" between names with ",", and "&" between the last two.
-<li><code>AuthorOrgSci</code> : first author is in "last, first" all others in "first last". First names are abbreviated.
-<li><code>AuthorAbbreviator</code> : to be documented.
-<li><code>AuthorNatBib</code> : formats author names in NatBib style, with last names only, separating names by "and"
-    if there are two authors, and giving the first author followed by "et al." if there are more than
-    two authors.
-<li><code>NoSpaceBetweenAbbreviations</code> : spaces between multiple abbreviated first names are removed.
-<li><code>FormatPagesForHTML</code> : replaces "--" with "-".
-  <li><code>FormatPagesForXML</code> : replaces "--" with an XML en-dash.
-
-<li><code>RemoveBrackets</code> : removes all curly brackets "{" or "}".
-<li><code>RemoveBracketsAddComma</code> : to be documented.
-<li><code>RemoveWhitespace</code> : to be documented.
-<li><code>RemoveLatexCommands</code> : removes LaTeX commands like <code>\em</code>, <code>\textbf</code>, etc. If
-  used together with <code>HTMLChars</code> or <code>XMLChars</code>, this formatter should be called last.
-<li><code>RemoveTilde</code> : replaces the tilde character used in LaTeX as a non-breakable space by a regular space. Useful 
-in combination with the NameFormatter discussed in the next section.
-<li><code>ToLowerCase</code> : turns all characters into lower case.
-
-<li><code>CompositeFormat</code> : to be documented.
-<li><code>GetOpenOfficeType</code> : to be documented.
-<li><code>RTFChars</code> : to be documented.
-<li><code>ResolvePDF</code> : to be documented.
-
-</ul>
-
-<p>If none of the available formatters can do what you want to achieve, you can add your own by implementing
-  the <code>net.sf.jabref.export.layout.LayoutFormatter</code> interface. If you insert your class
-  into the <code>net.sf.jabref.export.layout.format</code> package, you can call the formatter by its
-  class name only, like with the standard formatters. Otherwise, you must call the formatter by its fully
-  qualified name (including package name). In any case, the formatter must be in your classpath when running
-  JabRef.</p>
-  
-<a name="NameFormatter">
-<H2>Using Custom Name Formatters</H2>
-
-<p>With JabRef 2.2 it is now possible to define custom name formatters using the bibtex-sty-file syntax. 
-This allows ultimate flexibility, but is a cumbersome to write</p>
-<p>You can define your own formatter in the preference tab "Name Formatter" using the following format
-and then use it with the name given to it as any other formatter</p>
-
-<code>
-  <case1>@<range11>@<format>@<range12>@<format>@<range13>...@@<br>
-  <case2>@<range21>@... and so on.
-</code>
-
-<p>This format first splits the task to format a list of author into cases depending on
-how many authors there are (this is since some formats differ depending on how many authors there are). 
-Each individual case is separated by @@ and contains instructions on how to format each author in the case.
-These instructions are separated by a @.</p>
-<p>Cases are identified using integers (1,2,3,etc.) or the character * (matches any number of authors) and will tell 
-the formatter to apply the following instructions if there are a number of less or equal of authors given.
-</p>
-<p>
-  Ranges are either <code><integer>..<integer></code>, <code><integer></code> or the character <code>*</code> using a 1 based index for indexing 
-  authors from the given list of authors. Integer indexes can be negative to denote them to start from 
-  the end of the list where -1 is the last author.
-</p>
-
-<p>For instance with an authorlist of "Joe Doe and Mary Jane and Bruce Bar and Arthur Kay":</p>
-<ul>
-  <li> 1..3 will affect Joe, Mary and Bruce</li>
-  <li> 4..4 will affect Arthur </li>
-  <li> * will affect all of them</li>
-  <li> 2..-1 will affect Mary, Bruce and Arthur</li>
-</ul>
-
-<p>The <code><format></code>-strings use the Bibtex formatter format:</p>
- 
-<p> 
-  The four letter v, f, l, j indicate the name parts von, first, last, jr which 
-  are used within curly braces. A single letter v, f, l, j indicates that the name should be abbreviated.
-  If one of these letters or letter pairs is encountered JabRef will output all the respective names 
-  (possibly abbreviated), but the whole expression in curly braces is only printed if the name part exists.</p>
-
-<p>For instance if the format is "{ll} {vv {von Part}} {ff}" and the names are "Mary Kay and John von Neumann",
-  then JabRef will output "Kay  Mary" (with two space between last and first) and "Neuman von von Part John".</p>
-  
-<p>I give two examples but would rather point you to the bibtex documentation.</p>
-
-<p>Small example: <code>"{ll}, {f.}"</code> will turn <code>"Joe Doe"</code> into <code>"Doe, J."</code></p>
-
-<p>Large example:</p>
-<blockquote>
-<p> To turn: </p>
-<p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur Kay"</code></p>
-<p>into</p>
-<p><code>"Doe, J., Jane, M., Bar, B. and Kay, A."</code></p>
-<p>you would use</p>
-<p><code>1@*@{ll}, {f}.@@2 at 1@{ll}, {f}. at 2@ and {ll}, {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}. at -1@ and {ll}, {f}.</code></p>
-</blockquote>
-<p>If somebody would like to write a better tutorial about this: Write a mail to one of the JabRef mailinglists!</p>
-
-<H3>Conditional output</H3>
-
-Some static output might only make sense if a specific field is set. For instance, say we want to follow
-the editor names with the text <code>(Ed.)</code>. This can be done with the following text:
-
-<p><code>\format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)</code>
-
-<p>However, if the <code>editor</code> field has not been set - it might not even make sense for the entry
-  being exported - the <code>(Ed.)</code> would be left hanging. This can be prevented by instead using the
-<code>\begin</code> and <code>\end</code> commands:
-
-<p><code>\begin{editor}<br>\format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)
-<br>\end{editor}</code>
-
-<p>The <code>\begin</code> and <code>\end</code> commands make sure the text in between is printed if and
-only if the field referred in the curly braces is defined for the ently being exported.
-
-<p><b>Note:</b> Use of the <code>\begin</code> and <code>\end</code> commands is a key to creating
-  layout files that work well with a variety of entry types.
-
-<H3>Grouped output</H3>
-
-If you wish to separate your entries into groups based on a certain field, use the grouped output commands.
-Grouped output is very similar to conditional output, except that the text in between is printed only if the
-field referred in the curly braces has changed value.
-
-<p>For example, let's assume I wish to group by keyword.  Before exporting the file, make sure you have sorted
-your entries based on keyword.  Now use the following commands to group by keyword:
-
-<p><code>\begingroup{keywords}New Category: \format[HTMLChars]{\keywords}
-<br>    \endgroup{keywords}</code>
-
-<H2>Sharing your work</H2>
-
-With external layout files, it's fairly simple to share custom export formats between users.
-If you write an export filter for a format not supported by JabRef, or an improvement over an
-existing one, we encourage you to post your work on our SourceForge.net page. The same goes for
-formatter classes that you write. We'd be happy to distribute a collection of submitted
-layout files, or to add to the selection of standard export filters and formatters.
-
-</HTML>
+        <li><code>FormatPagesForHTML</code> : replaces "--" with
+        "-".</li>
+
+        <li><code>FormatPagesForXML</code> : replaces "--" with an
+        XML en-dash.</li>
+
+	<li><code>Replace(regexp,replacewith)</code> : does a regular expression replacement.
+		To use this formatter, a two-part argument must be given. The parts are
+ 		separated by a comma. To indicate the comma character, use an escape
+		sequence: \,<br> <br>
+ 		The first part is the regular expression to search for. The regular expression
+		is written normally, without extra escape sequences for backslashes. A description
+		of Java regular expressions can be found at:<br>
+		 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
+		 <br> <br>
+		The second part is the text to replace all matches with.
+
+        <li><code>RemoveBrackets</code> : removes all curly
+        brackets "{" or "}".</li>
+
+        <li><code>RemoveBracketsAddComma</code> : to be
+        documented.</li>
+
+        <li><code>RemoveWhitespace</code> : to be documented.</li>
+
+        <li><code>RemoveLatexCommands</code> : removes LaTeX
+        commands like <code>\em</code>, <code>\textbf</code>, etc.
+        If used together with <code>HTMLChars</code> or
+        <code>XMLChars</code>, this formatter should be called
+        last.</li>
+
+        <li><code>RemoveTilde</code> : replaces the tilde character
+        used in LaTeX as a non-breakable space by a regular space.
+        Useful in combination with the NameFormatter discussed in
+        the next section.</li>
+
+        <li><code>ToLowerCase</code> : turns all characters into
+        lower case.</li>
+
+        <li><code>CompositeFormat</code> : to be documented.</li>
+
+        <li><code>GetOpenOfficeType</code> : to be documented.</li>
+
+        <li><code>RTFChars</code> : to be documented.</li>
+
+        <li><code>ResolvePDF</code> : to be documented.</li>
+
+    <li></li>
+    </ul>
+
+    <p>If none of the available formatters can do what you want to
+    achieve, you can add your own by implementing the
+    <code>net.sf.jabref.export.layout.LayoutFormatter</code>
+    interface. If you insert your class into the
+    <code>net.sf.jabref.export.layout.format</code> package, you
+    can call the formatter by its class name only, like with the
+    standard formatters. Otherwise, you must call the formatter by
+    its fully qualified name (including package name). In any case,
+    the formatter must be in your classpath when running
+    JabRef.</p>
+
+    <h2><a name="NameFormatter"
+       id="NameFormatter">Using Custom Name Formatters</a></h2>
+
+    <p>With JabRef 2.2 it is now possible to define custom name
+    formatters using the bibtex-sty-file syntax. This allows
+    ultimate flexibility, but is a cumbersome to write</p>
+
+    <p>You can define your own formatter in the preference tab
+    "Name Formatter" using the following format and then use it
+    with the name given to it as any other formatter</p>
+    <code><case1>@<range11>@<format>@<range12>@<format>@<range13>...@@<br />
+
+     <case2>@<range21>@... and so on.</code>
+
+    <p>This format first splits the task to format a list of author
+    into cases depending on how many authors there are (this is
+    since some formats differ depending on how many authors there
+    are). Each individual case is separated by @@ and contains
+    instructions on how to format each author in the case. These
+    instructions are separated by a @.</p>
+
+    <p>Cases are identified using integers (1, 2, 3, etc.) or the
+    character * (matches any number of authors) and will tell the
+    formatter to apply the following instructions if there are a
+    number of less or equal of authors given.</p>
+
+    <p>Ranges are either
+    <code><integer>..<integer></code>,
+    <code><integer></code> or the character <code>*</code>
+    using a 1 based index for indexing authors from the given list
+    of authors. Integer indexes can be negative to denote them to
+    start from the end of the list where -1 is the last author.</p>
+
+    <p>For instance with an authorlist of "Joe Doe and Mary Jane
+    and Bruce Bar and Arthur Kay":</p>
+
+    <ul>
+        <li>1..3 will affect Joe, Mary and Bruce</li>
+
+        <li>4..4 will affect Arthur</li>
+
+        <li>* will affect all of them</li>
+
+        <li>2..-1 will affect Mary, Bruce and Arthur</li>
+    </ul>
+
+    <p>The <code><format></code>-strings use the Bibtex
+    formatter format:</p>
+
+    <p>The four letters v, f, l, j indicate the name parts von,
+    first, last, jr which are used within curly braces. A single
+    letter v, f, l, j indicates that the name should be
+    abbreviated. If one of these letters or letter pairs is
+    encountered JabRef will output all the respective names
+    (possibly abbreviated), but the whole expression in curly
+    braces is only printed if the name part exists.</p>
+
+    <p>For instance if the format is "{ll} {vv {von Part}} {ff}"
+    and the names are "Mary Kay and John von Neumann", then JabRef
+    will output "Kay Mary" (with two space between last and first)
+    and "Neuman von von Part John".</p>
+
+    <p>I give two examples but would rather point you to the bibtex
+    documentation.</p>
+
+    <p>Small example: <code>"{ll}, {f.}"</code> will turn
+    <code>"Joe Doe"</code> into <code>"Doe, J."</code></p>
+
+    <p>Large example:</p>
+
+    <blockquote>
+        <p>To turn:</p>
+
+        <p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur
+        Kay"</code></p>
+
+        <p>into</p>
+
+        <p><code>"Doe, J., Jane, M., Bar, B. and Kay,
+        A."</code></p>
+
+        <p>you would use</p>
+
+        <p><code>1@*@{ll}, {f}.@@2 at 1@{ll}, {f}. at 2@ and {ll},
+        {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}. at -1@ and {ll},
+        {f}.</code></p>
+    </blockquote>
+
+    <p>If somebody would like to write a better tutorial about
+    this: Write a mail to one of the JabRef mailinglists!</p>
+
+    <h3>Conditional output</h3>
+
+    <p>Some static output might only make
+    sense if a specific field is set. For instance, say we want to
+    follow the editor names with the text <code>(Ed.)</code>. This
+    can be done with the following text:</p>
+
+    <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor}
+    (Ed.)</code></p>
+
+    <p>However, if the <code>editor</code> field has not been set -
+    it might not even make sense for the entry being exported - the
+    <code>(Ed.)</code> would be left hanging. This can be prevented
+    by instead using the <code>\begin</code> and <code>\end</code>
+    commands:</p>
+
+    <p><code>\begin{editor}<br />
+    \format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)<br />
+     \end{editor}</code></p>
+
+    <p>The <code>\begin</code> and <code>\end</code> commands make
+    sure the text in between is printed if and only if the field
+    referred in the curly braces is defined for the ently being
+    exported.</p>
+
+    <p><b>Note:</b> Use of the <code>\begin</code> and
+    <code>\end</code> commands is a key to creating layout files
+    that work well with a variety of entry types.</p>
+
+    <h3>Grouped output</h3>
+
+    <p>If you wish to separate your entries
+    into groups based on a certain field, use the grouped output
+    commands. Grouped output is very similar to conditional output,
+    except that the text in between is printed only if the field
+    referred in the curly braces has changed value.</p>
+
+    <p>For example, let's assume I wish to group by keyword. Before
+    exporting the file, make sure you have sorted your entries
+    based on keyword. Now use the following commands to group by
+    keyword:</p>
+
+    <p><code>\begingroup{keywords}New Category:
+    \format[HTMLChars]{\keywords}<br />
+     \endgroup{keywords}</code></p>
+
+    <h2>Sharing your work</h2>
+
+    <p>With external layout files, it's
+    fairly simple to share custom export formats between users. If
+    you write an export filter for a format not supported by
+    JabRef, or an improvement over an existing one, we encourage
+    you to post your work on our SourceForge.net page. The same
+    goes for formatter classes that you write. We'd be happy to
+    distribute a collection of submitted layout files, or to add to
+    the selection of standard export filters and formatters.</p>
+</body>
+</html>
diff --git a/src/help/CustomImports.html b/src/help/CustomImports.html
index cebf2f7..d1615f5 100644
--- a/src/help/CustomImports.html
+++ b/src/help/CustomImports.html
@@ -1,64 +1,80 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Custom import filters</H1>
-
-<p>JabRef allows you to define and use your own importers, in very much the same way as the
-standard import filters are defined. An import filter is defined by one or more
-Java <i>classes</i>, which parse the contents of a file from an input stream
-and create BibTex-Entries. So with some basic Java programming you can add an importer
-for your favorite source of references or register a new, improved version of an existing
-importer. Also, this allows you to add compiled custom importers that you might
-have obtained e.g. from SourceForge without rebuilding JabRef (see "Sharing your work").</p>
-
-<p>Custom importers take precedence over standard importers. This way, you can override
-existing importers for the Autodetect and Command Line features of JabRef. Custom importers
-are ordered by name.</p>
-
-<H2>Adding a custom import filter</H2>
-
-<p>Make sure, you have a compiled custom import filter (one or more <code>.class</code> files
-as described below) and the class files are in a directory structure according to 
-their package structure. To add a new custom import filter, open the dialog box 
-<b>Options -> Manage custom imports</b>, and click <b>Add from folder</b>. 
-A file chooser will appear, allowing you to select the classpath of your importer, 
-i.e. the directory where the top folder of the package structure of your importer 
-resides. In a second file chooser you select your importer
-class file, which must be derived from <code>ImportFormat</code>. By clicking
-<b>Select new ImportFormat Subclass</b>, your new importer will appear in the list 
-of custom import filters. All custom importers will appear in the <b>File -> Import -> 
-Custom Importers</b> and <b>File -> Import and Append -> Custom Importers</b> submenus 
-of the JabRef window.</p>
-
-<p>Please note that if you move the class to another directory you will have to
-remove and re-add the importer. If you add a custom importer under a name that
-already exists, the existing importer will be replaced. Although in some cases
-it is possible to update an existing custom importer without restarting JabRef 
-(when the importer is not on the classpath), we recommend restarting JabRef 
-after updating an custom-importer. You can also register importers 
-contained in a ZIP- or JAR-file, simply select the Zip- or Jar-archive, then the 
-entry (class-file) that represents the new importer.</p>
-
-<H2>Creating an import filter</H2>
-
-For examples and some helpful files on how to build your own importer, please check
-our download page.
-
-<H3>A simple example</H3>
-
-<p>Let us assume that we want to import files of the following form:
-<pre>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Custom import filters</h1>
+
+    <p>JabRef allows you to define and use your own importers, in
+    very much the same way as the standard import filters are
+    defined. An import filter is defined by one or more Java
+    <i>classes</i>, which parse the contents of a file from an
+    input stream and create BibTex-Entries. So with some basic Java
+    programming you can add an importer for your favorite source of
+    references or register a new, improved version of an existing
+    importer. Also, this allows you to add compiled custom
+    importers that you might have obtained e.g. from SourceForge
+    without rebuilding JabRef (see "Sharing your work").</p>
+
+    <p>Custom importers take precedence over standard importers.
+    This way, you can override existing importers for the
+    Autodetect and Command Line features of JabRef. Custom
+    importers are ordered by name.</p>
+
+    <h2>Adding a custom import filter</h2>
+
+    <p>Make sure, you have a compiled custom import filter (one or
+    more <code>.class</code> files as described below) and the
+    class files are in a directory structure according to their
+    package structure. To add a new custom import filter, open the
+    dialog box <b>Options -> Manage custom imports</b>, and
+    click <b>Add from folder</b>. A file chooser will appear,
+    allowing you to select the classpath of your importer, i.e. the
+    directory where the top folder of the package structure of your
+    importer resides. In a second file chooser you select your
+    importer class file, which must be derived from
+    <code>ImportFormat</code>. By clicking <b>Select new
+    ImportFormat Subclass</b>, your new importer will appear in the
+    list of custom import filters. All custom importers will appear
+    in the <b>File -> Import -> Custom Importers</b> and
+    <b>File -> Import and Append -> Custom Importers</b>
+    submenus of the JabRef window.</p>
+
+    <p>Please note that if you move the class to another directory
+    you will have to remove and re-add the importer. If you add a
+    custom importer under a name that already exists, the existing
+    importer will be replaced. Although in some cases it is
+    possible to update an existing custom importer without
+    restarting JabRef (when the importer is not on the classpath),
+    we recommend restarting JabRef after updating an
+    custom-importer. You can also register importers contained in a
+    ZIP- or JAR-file, simply select the Zip- or Jar-archive, then
+    the entry (class-file) that represents the new importer.</p>
+
+    <h2>Creating an import filter</h2>
+
+    <p>For examples and some helpful
+    files on how to build your own importer, please check our
+    download page.</p>
+
+    <h3>A simple example</h3>
+
+    <p>Let us assume that we want to import files of the following
+    form:</p>
+    <pre>
 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
-</pre></p>
-
-<p>In your favorite IDE or text editor create a class derived from <code>ImportFormat</code>
-that implements methods <code>getFormatName()</code>, <code>isRecognizedFormat</code>
-and <code>importEntries()</code>. Here is an example:
-<pre>
+</pre><br />
+    <br />
+
+    <p>In your favorite IDE or text editor create a class derived
+    from <code>ImportFormat</code> that implements methods
+    <code>getFormatName()</code>, <code>isRecognizedFormat</code>
+    and <code>importEntries()</code>. Here is an example:</p>
+    <pre>
 import java.io.*;
 import java.util.*;
 import net.sf.jabref.*;
@@ -74,11 +90,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 {    
-  	ArrayList bibitems = new ArrayList();
+
+  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())) {
@@ -90,37 +106,46 @@ public class SimpleCsvImporter extends ImportFormat {
         be.setField("title", fields[2]);
         bibitems.add(be);
         line = in.readLine();
-      }     
+      }
     }
-  	return bibitems;	  	
+        return bibitems;
   }
 }
-</pre></p>
-
-<p>Note that the example is in the default package. Suppose you have saved it
-under <code>/mypath/SimpleCsvImporter.java</code>. Also suppose the JabRef-2.0.jar is in the
-same folder as <code>SimpleCsvImporter.java</code> and Java is on your command path. 
-Compile it using a JSDK 1.4 e.g. with 
-<pre>
+</pre><br />
+    <br />
+
+    <p>Note that the example is in the default package. Suppose you
+    have saved it under
+    <code>/mypath/SimpleCsvImporter.java</code>. Also suppose the
+    JabRef-2.0.jar is in the same folder as
+    <code>SimpleCsvImporter.java</code> and Java is on your command
+    path. Compile it using a JSDK 1.4 e.g. with</p>
+    <pre>
 javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
-</pre>
-Now there should be a file <code>/mypath/SimpleCsvImporter.class</code>.</p>
-
-<p>In JabRef, open <b>Options -> Manage custom imports</b>, and click <b>Add from folder</b>.
-Navigate to <code>/mypath</code> and click the <b>Select ...</b> button. Select the
-<code>SimpleCsvImporter.class</code> and click the <b>Select ...</b> button.
-Your importer should now appear in the list of custom importers under the name 
-"Simple CSV Importer" and, after you click <b>Close</b> also in the <b>File -> Import -> 
-Custom Importers</b> and <b>File -> Import and Append -> Custom Importers</b> submenus 
-of the JabRef window.</p>
-
-<H2>Sharing your work</H2>
-
-<p>With custom importer files, it's fairly simple to share custom import formats between users.
-If you write an import filter for a format not supported by JabRef, or an improvement over an
-existing one, we encourage you to post your work on our SourceForge.net page. We'd be happy to 
-distribute a collection of submitted import files, or to add to the selection of standard 
-importers.</p>
-
-</BODY>
-</HTML>
+</pre>Now there should be a file
+<code>/mypath/SimpleCsvImporter.class</code>.<br />
+    <br />
+
+
+    <p>In JabRef, open <b>Options -> Manage custom imports</b>,
+    and click <b>Add from folder</b>. Navigate to
+    <code>/mypath</code> and click the <b>Select ...</b> button.
+    Select the <code>SimpleCsvImporter.class</code> and click the
+    <b>Select ...</b> button. Your importer should now appear in
+    the list of custom importers under the name "Simple CSV
+    Importer" and, after you click <b>Close</b> also in the <b>File
+    -> Import -> Custom Importers</b> and <b>File ->
+    Import and Append -> Custom Importers</b> submenus of the
+    JabRef window.</p>
+
+    <h2>Sharing your work</h2>
+
+    <p>With custom importer files, it's fairly simple to share
+    custom import formats between users. If you write an import
+    filter for a format not supported by JabRef, or an improvement
+    over an existing one, we encourage you to post your work on our
+    SourceForge.net page. We'd be happy to distribute a collection
+    of submitted import files, or to add to the selection of
+    standard importers.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/EndNoteFilters.html b/src/help/EndNoteFilters.html
index 01737d0..9314958 100644
--- a/src/help/EndNoteFilters.html
+++ b/src/help/EndNoteFilters.html
@@ -1,104 +1,113 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>EndNote Export Filter</h1>
-
-<h2>Export from JabRef</h2>
-
-JabRef can export databases to EndNote-readable files.
-To use this feature, choose <b>File -> Export</b>, choose the file type <b>Endnote (txt)</b> and
-then specify the name of the export file.
-
-<h2>Import to EndNote</h2>
-
-The default EndNote Import filter does not handle multiple authors or
-editors properly. There are two options to work around this:
-
-<ol>
-
-<li>Use the built-in filter and fix the file later. To open up
-the file in EndNote, create a new database or open an old database in
-EndNote. Then select <b>File -> Import</b>, click on <b>Choose
-File</b>, then highlight the exported file and
-click <b>Choose</b>. Click on <b>Import Options</b> and
-select <b>EndNote Import</b>. Click <b>Import</b> to start the
-import. After import, select <b>Edit-> Change Text</b>. Change <b>Any
-Field</b> to <b>Author</b>. Enter " and " into the search field
-(without quotes). enter a return character into the change field
-(option-return on Mac OS X, ctrl-return on Windows
-XP). Click <b>Change</b>. Repeat with the <b>Secondary Author</b>
-field.
-
-<li>Install the <i>EndNote Import from JabRef filter</i> in
-the <i>EndNote Extras</i>. Follow the instructions in <i>Advanced
-Use</i> below. To open up the file in EndNote, create a new database
-or open an old database in EndNote. Then select <b>File -> Import</b>,
-click on <b>Choose File</b>, then highlight the exported file and
-click <b>Choose</b>. Click on <b>Import Options</b> and
-select <b>EndNote Import from JabRef</b> (if it does not appear,
-select Other filters. If it still doesn't appear, it was not correctly
-installed.) Click <b>Import</b> to start the import.
-
-</ol>
-
-<h2>Notes</h2>
-
-The EndNote Export filter maps BibTeX entrytypes to EndNote reference
-types as follows:
-
-<pre>
-BibTeX entrytype -> Endnote Reference Type
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>EndNote Export Filter</h1>
+
+    <h2>Export from JabRef</h2>
+
+    <p>JabRef can export databases to
+    EndNote-readable files. To use this feature, choose <b>File
+    -> Export</b>, choose the file type <b>Endnote (txt)</b> and
+    then specify the name of the export file.</p>
+
+    <h2>Import to EndNote</h2>
+
+    <p>The default EndNote Import filter
+    does not handle multiple authors or editors properly. There are
+    two options to work around this:</p>
+
+    <ol>
+        <li>Use the built-in filter and fix the file later. To open
+        up the file in EndNote, create a new database or open an
+        old database in EndNote. Then select <b>File ->
+        Import</b>, click on <b>Choose File</b>, then highlight the
+        exported file and click <b>Choose</b>. Click on <b>Import
+        Options</b> and select <b>EndNote Import</b>. Click
+        <b>Import</b> to start the import. After import, select
+        <b>Edit-> Change Text</b>. Change <b>Any Field</b> to
+        <b>Author</b>. Enter " and " into the search field (without
+        quotes). enter a return character into the change field
+        (option-return on Mac OS X, ctrl-return on Windows XP).
+        Click <b>Change</b>. Repeat with the <b>Secondary
+        Author</b> field.</li>
+
+        <li>Install the <i>EndNote Import from JabRef filter</i> in
+        the <i>EndNote Extras</i>. Follow the instructions in
+        <i>Advanced Use</i> below. To open up the file in EndNote,
+        create a new database or open an old database in EndNote.
+        Then select <b>File -> Import</b>, click on <b>Choose
+        File</b>, then highlight the exported file and click
+        <b>Choose</b>. Click on <b>Import Options</b> and select
+        <b>EndNote Import from JabRef</b> (if it does not appear,
+        select Other filters. If it still doesn't appear, it was
+        not correctly installed.) Click <b>Import</b> to start the
+        import.</li>
+    </ol>
+
+    <h2>Notes</h2>
+
+    <p>The EndNote Export filter maps BibTeX entrytypes
+    to EndNote reference types as follows:</p>
+    <pre>
+BibTeX entrytype -> Endnote Reference Type
 ------------------------------------------
-misc, other -> Generic
-unpublished -> Manuscript
-manual -> Computer Program
-article -> Journal Article
-book -> Book
-booklet -> Personal Communication
-inbook,incollection -> Book Section
-inproceedings -> Conference Proceedings
-techreport -> Report
-mastersthesis, phdthesis -> Thesis
-</pre>
-
-<h2>Corporate Authors</h2>
-
-By default, the export filter assumes that entries in the author or
-editor fields in brackets are corporate authors and replaces the
-brackets with a trailing comma. However, this means that entries that
-include LaTeX code in brackets will be assumed to be corporate authors
-and therefore will be improperly formatted.
-
-<H2>Advanced Use: Endnote Extras</h2>
-
-<h3>Installing the EndNote Import from JabRef filter</h3>
-
-The default EndNote Import filter does not properly parse authors. The
-EndNote Import from JabRef filter does.  Additionally, this filter
-will recognize a field endnotereftype that will override the default
-mapping. To install the filter, extract the EndNote Extras (<b>Tools -> Unpack EndNote filter set</b>) and unpack the Zip file which is created.
-Then follow the directions in the file Readme.txt.<p>
-
-<h3>Modifying EndNote Reference Types</h3>
-
-Several fields used by BibTeX are not part of EndNote's default
-Reference Types. While import from JabRef and export to JabRef will
-work fine without modifying reference types, the field names will not
-display correctly in EndNote (e.g. an entry window will call the pdf
-field <i>Custom 1</i> instead of <i>pdf</i>. Additionally, these
-fields cannot be added to new entries in EndNote, since they will not
-appear in the entry window. To modify the EndNote Reference Types,
-extract the EndNote Extras and follow the directions in the file
-readme.txt.<p>
-
-<h3>Export to JabRef</h3>
-
-EndNote comes with an export style BibTeX. However, this does not
-support all BibTeX types and fields, and does not support the
-additional General Fields supported by JabRef (<i>pdf, owner, key,</i> etc.)
-If you wish to have these fields supported, extract the EndNote
-Extras (<b>Tools -> Unpack EndNote filter set</b>) and follow the directions in the file readme.txt.<p>
-
-</HTML>
\ No newline at end of file
+misc, other -> Generic
+unpublished -> Manuscript
+manual -> Computer Program
+article -> Journal Article
+book -> Book
+booklet -> Personal Communication
+inbook,incollection -> Book Section
+inproceedings -> Conference Proceedings
+techreport -> Report
+mastersthesis, phdthesis -> Thesis</pre>
+
+    <h2>Corporate Authors</h2>
+
+    <p>By default, the export filter assumes
+    that entries in the author or editor fields in brackets are
+    corporate authors and replaces the brackets with a trailing
+    comma. However, this means that entries that include LaTeX code
+    in brackets will be assumed to be corporate authors and
+    therefore will be improperly formatted.</p>
+
+    <h2>Advanced Use: Endnote Extras</h2>
+
+    <h3>Installing the EndNote Import from JabRef filter</h3>
+
+    <p>The default EndNote Import filter does not properly parse authors.
+    The EndNote Import from JabRef filter does. Additionally, this
+    filter will recognize a field endnotereftype that will override
+    the default mapping. To install the filter, extract the EndNote
+    Extras (<b>Tools -> Unpack EndNote filter set</b>) and
+    unpack the Zip file which is created. Then follow the
+    directions in the file Readme.txt.</p>
+
+    <h3>Modifying EndNote Reference Types</h3>
+
+    <p>Several fields used
+    by BibTeX are not part of EndNote's default Reference Types.
+    While import from JabRef and export to JabRef will work fine
+    without modifying reference types, the field names will not
+    display correctly in EndNote (e.g. an entry window will call
+    the pdf field <i>Custom 1</i> instead of <i>pdf</i>.
+    Additionally, these fields cannot be added to new entries in
+    EndNote, since they will not appear in the entry window. To
+    modify the EndNote Reference Types, extract the EndNote Extras
+    and follow the directions in the file readme.txt.</p>
+
+    <h3>Export to JabRef</h3>
+
+    <p>EndNote comes with an export style
+    BibTeX. However, this does not support all BibTeX types and
+    fields, and does not support the additional General Fields
+    supported by JabRef (<i>pdf, owner, key,</i> etc.) If you wish
+    to have these fields supported, extract the EndNote Extras
+    (<b>Tools -> Unpack EndNote filter set</b>) and follow the
+    directions in the file readme.txt.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/EntryEditorHelp.html b/src/help/EntryEditorHelp.html
index 457e8a2..19c3d63 100755
--- a/src/help/EntryEditorHelp.html
+++ b/src/help/EntryEditorHelp.html
@@ -1,100 +1,125 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>The entry editor</H1>
-
-<em>Opened from main window by double-clicking anywhere on the line of the entry,
-or selecting the entry and pressing ENTER. The panel is closed by pressing ESC.</em>
-<P>
-In this panel you can specify all relevant information on a single entry.
-The entry editor checks the type of your entry, and lists all the fields that
-are required, and the ones that are optional, for referring the entry
-with <em>bibtex</em>. In addition, there are several fields termed <em>General
-fields</em>, that are common to all entry types.
-
-<P>You can fully customize which fields should be regarded as required and optional for each
-type of entry, and which fields appear in the General fields tab. See
-<a href="CustomEntriesHelp.html">Customizing entry types</a> for more information about this.
-
-<P>For information about how the fields should be filled out, see <a href="BibtexHelp.html">Bibtex help</a>.
-
-<H2>The entry editor's panels</H2>
-
-The entry editor contains six panels: <em>Required fields</em>,
-<em>Optional fields</em>, <em>General</em>, <em>Abstract</em>, <em>Review</em> and <em>BibTeX
-source</em>, where <em>General</em>, <em>Abstract</em> and <em>Review</em> can be customized
-(see <a href="GeneralFields.html">Customizing general fields</a> for details).
-Inside the three first panels, TAB and SHIFT-TAB are used
-to switch focus between the text fields.
-
-<P>Switch panels by clicking on the tabs, or navigate to the panel to
-the left or right using the following key combinations: CTRL-TAB or CTRL-PLUS
-switch to the tab to the right, and CTRL-SHIFT-TAB or CTRL-MINUS switch to the
-tab to the left. You can also switch to the next or previous entry by pressing
-CTRL-SHIFT-DOWN or CTRL-SHIFT-UP, respectively, or by clicking the
-appropriate toolbar button.
-
-<P>The <em>bibtex source</em> panel shows how the entry will appear
-when the database is saved in <em>bibtex</em> format.  If you wish,
-you can edit the <em>bibtex</em> source directly in this panel. When
-you move to a different panel, press CTRL-S or close the entry editor,
-JabRef will try to parse the contents of the source panel. If there
-are problems, you will be notified, and given the option to edit your
-entry further, or to revert to the former contents.
-
-If <strong>Show source by default</strong> is checked in the
-<strong>General options</strong> tab of the
-<strong>Preferences</strong> dialog, the source panel will be the one
-shown each time you open the entry editor. If you prefer editing the
-source rather than using the other four panels, you should check this
-option.
-
-<P><strong>Tip:</strong> If your database contains fields unknown to
-JabRef, these will be visible in the source panel.
-
-<P><strong>Tip:</strong> the <I>pdf</I> and <I>url</I> fields support Drag and Drop operations.
-You can drop there an url from your browser. either a link to a pdf file
-(that JabRef can download for you) or you can keep the link.
-
-<H2>Field consistency checking</H2>
-When the contents of a field is changed, JabRef checks if the new
-contents are acceptable. For field types that are used by
-<em>bibtex</em>, the contents are checked with respect to the use of
-the '#' character. The hash symbol is <em>only</em> to be used in
-pairs, wrapping the name of a <em>bibtex</em> string that is
-referenced. Note that JabRef does not check if the referenced string
-actually exists (this is not trivial, since the <em>bibtex</em> style
-you use can define an arbitrary set of strings unknown to JabRef).
-<P>
-If the contents are not accepted, the field will turn red,
-indicating an error. In this case the change will not be stored.
-
-<!--<H2>Word/name autocompletion</H2>
-The entry editor offers autocompletion of words. In the Preferences dialog
-you can enable or disable autocompletion, and choose for which fields
-autocompletion is active.
-<P>With autocompletion, JabRef records all words that appear in
-each of the chosen fields throughout your database. Whenever you write
-the beginning of one of these words, it will be suggested visually. To
-ignore the suggestion, simply write on. To accept the suggestion,
-either press <em>ENTER</em> or use your arrow keys or other keys to
-remove the selection box around the suggested characters.
-<P><em>Note:</em> the words considered for suggestion are only the ones
-appearing in the same field in entries of the same database as the one you
-are editing. There are many ways to realise this kind of feature, and if you feel
-it should have been implemented differently, we'd like to hear your suggestions!
-
-<H2>Copy <em>bibtex</em> key</H2>
-Pressing CTRL-K or the 'key' button causes the <em>bibtex</em> key for your entry
-to be copied to the clipboard.
--->
-<H2>Autogenerate <em>bibtex</em> key</H2>
-Press CTRL-G or the 'gen key' button (the magic wand) to autogenerate a <em>bibtex</em> key for your entry
-based on the contents of its required fields.
-<p>
-For more information on how JabRef generates <em>bibtex</em> keys, see <a href="LabelPatterns.html">Customizing the BibTex key generator</a>.
-
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>The entry editor</h1>
+
+    <p><em>Opened from main window by
+    double-clicking anywhere on the line of the entry, or selecting
+    the entry and pressing ENTER. The panel is closed by pressing
+    ESC.</em></p>
+
+    <p>In this panel you can specify all relevant information on a
+    single entry. The entry editor checks the type of your entry,
+    and lists all the fields that are required, and the ones that
+    are optional, for referring the entry with <em>bibtex</em>. In
+    addition, there are several fields termed <em>General
+    fields</em>, that are common to all entry types.</p>
+
+    <p>You can fully customize which fields should be regarded as
+    required and optional for each type of entry, and which fields
+    appear in the General fields tab. See
+    <a href="CustomEntriesHelp.html">Customizing entry types</a>
+    for more information about this.</p>
+
+    <p>For information about how the fields should be filled out,
+    see <a href="BibtexHelp.html">Bibtex help</a>.</p>
+
+    <h2>The entry editor's panels</h2>
+
+    <p>The entry editor contains six
+    panels: <em>Required fields</em>, <em>Optional fields</em>,
+    <em>General</em>, <em>Abstract</em>, <em>Review</em> and
+    <em>BibTeX source</em>, where <em>General</em>,
+    <em>Abstract</em> and <em>Review</em> can be customized (see
+    <a href="GeneralFields.html">Customizing general fields</a> for
+    details). Inside the three first panels, TAB and SHIFT-TAB are
+    used to switch focus between the text fields.</p>
+
+    <p>Switch panels by clicking on the tabs, or navigate to the
+    panel to the left or right using the following key
+    combinations: CTRL-TAB or CTRL-PLUS switch to the tab to the
+    right, and CTRL-SHIFT-TAB or CTRL-MINUS switch to the tab to
+    the left. You can also switch to the next or previous entry by
+    pressing CTRL-SHIFT-DOWN or CTRL-SHIFT-UP, respectively, or by
+    clicking the appropriate toolbar button.</p>
+
+    <p>The <em>bibtex source</em> panel shows how the entry will
+    appear when the database is saved in <em>bibtex</em> format. If
+    you wish, you can edit the <em>bibtex</em> source directly in
+    this panel. When you move to a different panel, press CTRL-S or
+    close the entry editor, JabRef will try to parse the contents
+    of the source panel. If there are problems, you will be
+    notified, and given the option to edit your entry further, or
+    to revert to the former contents. If <strong>Show source by
+    default</strong> is checked in the <strong>General
+    options</strong> tab of the <strong>Preferences</strong>
+    dialog, the source panel will be the one shown each time you
+    open the entry editor. If you prefer editing the source rather
+    than using the other four panels, you should check this
+    option.</p>
+
+    <p><strong>Tip:</strong> If your database contains fields
+    unknown to JabRef, these will be visible in the source
+    panel.</p>
+
+    <p><strong>Tip:</strong> the <i>pdf</i> and <i>url</i> fields
+    support Drag and Drop operations. You can drop there an url
+    from your browser. either a link to a pdf file (that JabRef can
+    download for you) or you can keep the link.</p>
+
+    <h2>Field consistency checking</h2>
+
+    <p>When the contents of a field
+    is changed, JabRef checks if the new contents are acceptable.
+    For field types that are used by <em>bibtex</em>, the contents
+    are checked with respect to the use of the '#' character. The
+    hash symbol is <em>only</em> to be used in pairs, wrapping the
+    name of a <em>bibtex</em> string that is referenced. Note that
+    JabRef does not check if the referenced string actually exists
+    (this is not trivial, since the <em>bibtex</em> style you use
+    can define an arbitrary set of strings unknown to JabRef).</p>
+
+    <p>If the contents are not accepted, the field will turn red,
+    indicating an error. In this case the change will not be
+    stored.</p>
+
+    <!--<h2>Word/name autocompletion</h2>
+
+    <p>The entry editor offers autocompletion of words. In the Preferences dialog
+    you can enable or disable autocompletion, and choose for which fields
+    autocompletion is active.</p>
+
+    <p>With autocompletion, JabRef records all words that appear in
+    each of the chosen fields throughout your database. Whenever you write
+    the beginning of one of these words, it will be suggested visually. To
+    ignore the suggestion, simply write on. To accept the suggestion,
+    either press <em>ENTER</em> or use your arrow keys or other keys to
+    remove the selection box around the suggested characters.</p>
+
+    <p><em>Note:</em> the words considered for suggestion are only the ones
+    appearing in the same field in entries of the same database as the one you
+    are editing. There are many ways to realise this kind of feature, and if you feel
+    it should have been implemented differently, we'd like to hear your suggestions!</p>
+
+    <h2>Copy <em>bibtex</em> key</h2>
+
+    <p>Pressing CTRL-K or the 'key' button causes the <em>bibtex</em> key for your entry
+    to be copied to the clipboard.</p>
+    -->
+
+    <h2>Autogenerate <em>bibtex</em> key</h2>
+
+    <p>Press CTRL-G or the
+    'gen key' button (the magic wand) to autogenerate a
+    <em>bibtex</em> key for your entry based on the contents of its
+    required fields.</p>
+
+    <p>For more information on how JabRef generates <em>bibtex</em>
+    keys, see <a href="LabelPatterns.html">Customizing the BibTex
+    key generator</a>.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/ExternalFiles.html b/src/help/ExternalFiles.html
index f4af9c0..70e71b5 100644
--- a/src/help/ExternalFiles.html
+++ b/src/help/ExternalFiles.html
@@ -1,87 +1,138 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>PDF/PS/URL/DOI links in JabRef</H1>
-
-<b>Note:</b> JabRef 2.3 and later versions offer an <a href="FileLinks.html">improved system for external file links</a>.
-<p>
-JabRef lets you link up your entries with PDF or PS files stored on your system, as well as
-links to the document on the web in the form of an URL or a DOI identifier.
-
-<H2>Setting up external viewers</H2>
-
-The program has to know which external viewers to use for PDF, PS and web pages. These are by default
-set to values that probably make sense for your operating system, so there's a fair chance you don't
-have to change these values.
-<p>To change the external viewer settings, go to <b>Options -> Preferences -> External programs</b>.
-
-<H2>Opening external files or links</H2>
-
-There are several ways to open an external file or web page. In the entry editor, you can double click on the text field
-containing the file name, DOI or URL. In the entry table you can select an entry and use the menu choice, keyboard shortcut
-or the right-click menu to open the file or web page. Finally, you can click on a PDF, PS, URL or DOI icon.
-<P> By default the entry table will contain two columns with icons for those entries that link to external files and URLs.
-  You can disable any of these in <b>Preferences -> Table</b>. The second column of the entry table shows icons for PDF or PS files (only PDF if both
- are present), and the third column shows icons for URL or DOI (only URL if both are present). You open the file or web
- page by clicking on an icon.
-
-<P><b>Note:</b> If the PS field does not appear in the entry editor (in the 'General' panel),
-you may have to <a href="GeneralFields.html">customize the entry types of the general fields</a>.
-</P>
-
-<H2>The main PDF and PS directories</H2>
-
-JabRef makes it easy to link PDF and PS files to your entries. To take advantage of this,
-you have to indicate in <b>Options -> Preferences -> External programs</b> your main PDF and PS directories. All PDF and PS files that are stored in
-or below each of these directories will be referred to with a relative path by JabRef, making it easy for you if you need to move the
-PDF and PS directories, or if several users use the same database from different network places.
-
-<P>Additionally, if you give your PDF and PS files names that correspond to the relevant entry's bibtex key (plus '.pdf' or '.ps'),
-  JabRef will be able to search your main directories and its subfolders for the correct PDF and PS. Once the correctly-named
-  PDF or PS is in place you access this function by clicking the 'Auto' button next to the PDF and PS fields in the entry editor. If
-  the PDF or PS is found, the field will immediately be set.
-<P>If you name a PDF or PS file as mentioned, you can also open the file without setting the PDF or PS field of the entry at all.
-  The downside is that the PDF or PS icon will not appear in the table unless you do (manually or with the 'Auto' button).
-
-<H2>The database-specific PDF and PS directories</H2>
-<P>
-You can set PDF and PS directories specific to a database (<b>File -> Database properties</b>).
-These directories will supersede the main directories.
-</P>
-
-<a name="RegularExpressionSearch">
-<H2>Using Regular Expression Search for Auto-Linking</H2>
-</a>
-<p>
-In the previous sections JabRef's auto-linking feature was described: If you choose names for your files
-corresponding to the bibtex-key + plus the extension, JabRef will automatically be able to find it.
-</p><p>
-Since JabRef 2.2 it is now possible to have greater flexibility in the naming scheme by using
-regular expression for the search. In most cases it should not be necessary though to adapt the given default.
-</p><p>
-If you open the external preferences
-(Options -> Preferences -> External Programs) you will find an option called "Use Regular Expression Search".
-Checking this option will allow you to enter your own regular expression for search in the PDF directories.
-</p><p>
-The following syntax is understood:
-</p>
-<ul>
-  <li><code>*</code> - Search in all immediate all subdirectories excluding the current
-      and any deeper subdirectories.</li>
-  <li><code>**</code> - Search in all subdirectories recursively AND the current directory.</li>
-  <li><code>.</code> and <code>..</code> - The current directory and the parent directory.</li>
-  <li><code>[title]</code> - All expressions in square brackets are replace by the corresponding field in the current
-  entry</li>
-  <li><code>[extension]</code> - Is replaced by the file-extension of the field you are using.</li>
-  <li>All other text is interpreted as a regular expression. But caution: You need to escape backslashes by putting
-      two backslashes after each other to not confuse them with the path-separator.</li>
-</ul>
-<p>
-The default for searches is <code>**/.*[bibtexkey].*\\.[extension]</code>. As you can see this will
-search in all subdirectories of the extension-based directory (for instance in the PDF directory) for any file that has the correct extension and
-contains the Bibtex-key somewhere.
-</p>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>PDF/PS/URL/DOI links in JabRef</h1>
+
+    <p><b>Note:</b> JabRef 2.3
+    and later versions offer an <a href="FileLinks.html">improved
+    system for external file links</a>.</p>
+
+    <p>JabRef lets you link up your entries with PDF or PS files
+    stored on your system, as well as links to the document on the
+    web in the form of an URL or a DOI identifier.</p>
+
+    <h2>Setting up external viewers</h2>
+
+    <p>The program has to know
+    which external viewers to use for PDF, PS and web pages. These
+    are by default set to values that probably make sense for your
+    operating system, so there's a fair chance you don't have to
+    change these values.</p>
+
+    <p>To change the external viewer settings, go to <b>Options
+    -> Preferences -> External programs</b>.</p>
+
+    <h2>Opening external files or links</h2>
+
+    <p>There are several ways
+    to open an external file or web page. In the entry editor, you
+    can double click on the text field containing the file name,
+    DOI or URL. In the entry table you can select an entry and use
+    the menu choice, keyboard shortcut or the right-click menu to
+    open the file or web page. Finally, you can click on a PDF, PS,
+    URL or DOI icon.</p>
+
+    <p>By default the entry table will contain two columns with
+    icons for those entries that link to external files and URLs.
+    You can disable any of these in <b>Preferences -> Table</b>.
+    The second column of the entry table shows icons for PDF or PS
+    files (only PDF if both are present), and the third column
+    shows icons for URL or DOI (only URL if both are present). You
+    open the file or web page by clicking on an icon.</p>
+
+    <p><b>Note:</b> If the PS field does not appear in the entry
+    editor (in the 'General' panel), you may have to
+    <a href="GeneralFields.html">customize the entry types of the
+    general fields</a>.</p>
+
+    <h2>The main PDF and PS directories</h2>
+
+    <p>JabRef makes it easy to
+    link PDF and PS files to your entries. To take advantage of
+    this, you have to indicate in <b>Options -> Preferences
+    -> External programs</b> your main PDF and PS directories.
+    All PDF and PS files that are stored in or below each of these
+    directories will be referred to with a relative path by JabRef,
+    making it easy for you if you need to move the PDF and PS
+    directories, or if several users use the same database from
+    different network places.</p>
+
+    <p>Additionally, if you give your PDF and PS files names that
+    correspond to the relevant entry's bibtex key (plus '.pdf' or
+    '.ps'), JabRef will be able to search your main directories and
+    its subfolders for the correct PDF and PS. Once the
+    correctly-named PDF or PS is in place you access this function
+    by clicking the 'Auto' button next to the PDF and PS fields in
+    the entry editor. If the PDF or PS is found, the field will
+    immediately be set.</p>
+
+    <p>If you name a PDF or PS file as mentioned, you can also open
+    the file without setting the PDF or PS field of the entry at
+    all. The downside is that the PDF or PS icon will not appear in
+    the table unless you do (manually or with the 'Auto'
+    button).</p>
+
+    <h2>The database-specific PDF and PS directories</h2>
+
+    <p>You can set PDF and PS directories specific to a database
+    (<b>File -> Database properties</b>). These directories will
+    supersede the main directories.</p>
+
+    <h2><a name="RegularExpressionSearch"
+       id="RegularExpressionSearch">Using Regular Expression Search
+       for Auto-Linking</a></h2>
+
+    <p>In the previous sections JabRef's auto-linking feature was
+    described: If you choose names for your files corresponding to
+    the bibtex-key + plus the extension, JabRef will automatically
+    be able to find it.</p>
+
+    <p>Since JabRef 2.2 it is now possible to have greater
+    flexibility in the naming scheme by using regular expression
+    for the search. In most cases it should not be necessary though
+    to adapt the given default.</p>
+
+    <p>If you open the external preferences (Options ->
+    Preferences -> External Programs) you will find an option
+    called "Use Regular Expression Search". Checking this option
+    will allow you to enter your own regular expression for search
+    in the PDF directories.</p>
+
+    <p>The following syntax is understood:</p>
+
+    <ul>
+        <li><code>*</code> - Search in all immediate all
+        subdirectories excluding the current and any deeper
+        subdirectories.</li>
+
+        <li><code>**</code> - Search in all subdirectories
+        recursively AND the current directory.</li>
+
+        <li><code>.</code> and <code>..</code> - The current
+        directory and the parent directory.</li>
+
+        <li><code>[title]</code> - All expressions in square
+        brackets are replace by the corresponding field in the
+        current entry</li>
+
+        <li><code>[extension]</code> - Is replaced by the
+        file-extension of the field you are using.</li>
+
+        <li>All other text is interpreted as a regular expression.
+        But caution: You need to escape backslashes by putting two
+        backslashes after each other to not confuse them with the
+        path-separator.</li>
+    </ul>
+
+    <p>The default for searches is
+    <code>**/.*[bibtexkey].*\\.[extension]</code>. As you can see
+    this will search in all subdirectories of the extension-based
+    directory (for instance in the PDF directory) for any file that
+    has the correct extension and contains the Bibtex-key
+    somewhere.</p>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/src/help/FileLinks.html b/src/help/FileLinks.html
index a2e9792..5ff166d 100644
--- a/src/help/FileLinks.html
+++ b/src/help/FileLinks.html
@@ -1,50 +1,77 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>File links in JabRef</H1>
-
-JabRef lets you link up your entries with files of any type stored on your system, as well as
-links to the document on the web in the form of an URL or a DOI identifier. Each entry can
-have an arbitrary number of file links, and each linked file can be opened quickly from
-JabRef.
-<p>
-In BibTeX terms, the file links of an entry are encoded in a single field. However, from
-within JabRef they appear as an editable list of links accessed from the entry editor
-along with other BibTeX fields.
-
-<H2>Setting up external file types</H2>
-
-For each file link, a file type must be chosen, to determine what icon should be used and what
-application should be called to open the file. The list of file types can be viewed and edited
-by choosing <b>Options -> Manage external file types</b>, or by clicking the <b>Manage external
-file types</b> button in the <b>External programs</b> tab of the Preferences dialog.
-<p>
-A file type is specified by its name, a graphical icon, a file extension and an application view the files. On Windows, the name of the application can be omitted in
-order to use Window's default viewer instead.
-
-<h2>Adding external links to an entry</h2>
-
-If the "file" field is included in <a href="GeneralFields.html">General fields</a>,
-you can edit the list of external links for an entry in the <a href="EntryEditorHelp.html">Entry editor</a>. The editor includes buttons for inserting,
-editing and removing links, as well as buttons for reordering the list of links.
-<p>
-If you have a file within or below your file directory (set up in <b>Preferences -> External programs -> External file links -> Main file directory</b>) with an extension
-matching one of the defined external file types, and a name containing a BibTeX entry's
-BibTeX key, the file can be autolinked by clicking on the <b>Auto</b> button in the entry editor. The rules for which file names can be autolinked to a BibTeX key can be set up in
-<b>Preferences -> External programs -> External file links -> Use regular expression search</b>.
-<p>
-If you want to download a file and link to it from a BibTeX entry, you can do this by
-clicking the <b>Download</b> button in the entry editor. A dialog box will appear, prompting you to enter the URL. The file will be downloaded to your main file directory,  named based on the entry's BibTeX key, and finally linked from the entry.
-
-<h2>Opening external files</h2>
-
-There are several ways to open an external file or web page. In the entry table you can select an entry and use the menu choice, keyboard shortcut
-or the right-click menu to open an entry's first external link. Alternatively, if the entry table is set up to show the <b>file</b> column (set up in <b>Preferences -> Entry table -> Special table columns -> Show file column</b>), you can click on
-the file icon to open an entry's first link. To access any of an entry's links, click
-on the icon with the right mouse button (or <b>Ctrl-click</b> on Max OS X) to bring up
-a menu showing all links.
+<html xmlns="http://www.w3.org/1999/xhtml">
 
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>File links in JabRef</h1>
+
+    <p>JabRef lets you link up your
+    entries with files of any type stored on your system, as well
+    as links to the document on the web in the form of an URL or a
+    DOI identifier. Each entry can have an arbitrary number of file
+    links, and each linked file can be opened quickly from JabRef.</p>
+
+    <p>In BibTeX terms, the file links of an entry are encoded in a
+    single field. However, from within JabRef they appear as an
+    editable list of links accessed from the entry editor along
+    with other BibTeX fields.</p>
+
+    <h2>Setting up external file types</h2>
+
+    <p>For each file link, a
+    file type must be chosen, to determine what icon should be used
+    and what application should be called to open the file. The
+    list of file types can be viewed and edited by choosing
+    <b>Options -> Manage external file types</b>, or by clicking
+    the <b>Manage external file types</b> button in the <b>External
+    programs</b> tab of the Preferences dialog.</p>
+
+    <p>A file type is specified by its name, a graphical icon, a
+    file extension and an application to view the files. On
+    Windows, the name of the application can be omitted in order to
+    use Window's default viewer instead.</p>
+
+    <h2>Adding external links to an entry</h2>
+
+    <p>If the "file" field
+    is included in <a href="GeneralFields.html">General fields</a>,
+    you can edit the list of external links for an entry in the
+    <a href="EntryEditorHelp.html">Entry editor</a>. The editor
+    includes buttons for inserting, editing and removing links, as
+    well as buttons for reordering the list of links.</p>
+
+    <p>If you have a file within or below your file directory (set
+    up in <b>Preferences -> External programs -> External
+    file links -> Main file directory</b>) with an extension
+    matching one of the defined external file types, and a name
+    containing a BibTeX entry's BibTeX key, the file can be
+    autolinked by clicking on the <b>Auto</b> button in the entry
+    editor. The rules for which file names can be autolinked to a
+    BibTeX key can be set up in <b>Preferences -> External
+    programs -> External file links -> Use regular expression
+    search</b>.</p>
+
+    <p>If you want to download a file and link to it from a BibTeX
+    entry, you can do this by clicking the <b>Download</b> button
+    in the entry editor. A dialog box will appear, prompting you to
+    enter the URL. The file will be downloaded to your main file
+    directory, named based on the entry's BibTeX key, and finally
+    linked from the entry.</p>
+
+    <h2>Opening external files</h2>
+
+    <p>There are several ways to open
+    an external file or web page. In the entry table you can select
+    an entry and use the menu choice, keyboard shortcut or the
+    right-click menu to open an entry's first external link.
+    Alternatively, if the entry table is set up to show the
+    <b>file</b> column (set up in <b>Preferences -> Entry table
+    -> Special table columns -> Show file column</b>), you
+    can click on the file icon to open an entry's first link. To
+    access any of an entry's links, click on the icon with the
+    right mouse button (or <b>Ctrl-click</b> on Max OS X) to bring
+    up a menu showing all links.</p>
 </body>
 </html>
\ No newline at end of file
diff --git a/src/help/GeneralFields.html b/src/help/GeneralFields.html
index 2ca86af..28d48fa 100644
--- a/src/help/GeneralFields.html
+++ b/src/help/GeneralFields.html
@@ -1,25 +1,27 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Customizing entry types</title>
-  </head>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-  <BODY text="#275856">
-    <basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
     <h1>Customizing general fields</h1>
-    <p>
-    You can add an arbitrary number of tabs to the entry editor. These will be present for all entry types.
-    To customize these tabs, go to "Options -> Set up general fields".
-    
-    <p>
-    You specify one tab on each line. The line should start with the name of the tab, followed by a colon (:),
-    and the fields it should contain, separated by semicolons (;).
-    
-    <p>
-    E.g.<BR><code>General:url;keywords;doi;pdf<BR>
-        Abstract:abstract;annote</CODE>
-    <P>which would give one tab named "General" containing the fields <em>url</em>, <em>keywords</em>, <em>doi</em> and <em>pdf</em>,
-    and another tab named "Abstract" containing the fields <em>abstract</em> and <em>annote</em>.
-  </body>
-</html>
+
+    <p>You can add an arbitrary number of tabs to the entry editor.
+    These will be present for all entry types. To customize these
+    tabs, go to "Options -> Set up general fields".</p>
+
+    <p>You specify one tab on each line. The line should start with
+    the name of the tab, followed by a colon (:), and the fields it
+    should contain, separated by semicolons (;).</p>
+
+    <p>E.g.<br />
+    <code>General:url;keywords;doi;pdf<br />
+     Abstract:abstract;annote</code></p>
+
+    <p>which would give one tab named "General" containing the
+    fields <em>url</em>, <em>keywords</em>, <em>doi</em> and
+    <em>pdf</em>, and another tab named "Abstract" containing the
+    fields <em>abstract</em> and <em>annote</em>.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/GroupsHelp.html b/src/help/GroupsHelp.html
index 7327168..c13f017 100644
--- a/src/help/GroupsHelp.html
+++ b/src/help/GroupsHelp.html
@@ -1,135 +1,338 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Groups</H1>
-
-Groups allow to structure a BibTeX database in a tree-like way that is similar to organizing files on disk in directories and subdirectories. The two main differences are:
-
-<ul>
-<li> While a file is always located in exactly one directory, an entry may be contained in more than one group.
-<li> Groups may use certain criteria to dynamically define their content. New entries that match these criteria are automatically contained in these groups. This feature is not available in common file systems, but in several Email clients (e.g. Thunderbird and Opera).
-</ul>
-
-Selecting a group shows the entries contained in that group. Selecting multiple groups shows the entries contained in any group (union) or those contained in all groups (intersection), depending on the current settings. All this is explained in detail below.
-<p>
-Group definitions are database-specific; they are saved as a <tt>@COMMENT</tt> block in the <tt>.bib</tt>-file and are shared among all users. (Future versions of JabRef might support user-dependent groups.)
-
-<H2>Interface</H2>
-
-The groups interface is shown in the side pane on the left of the screen. It can be toggled on or off by pressing <tt>CTRL-SHIFT-G</tt> or by the groups button in the toolbar. The interface has several buttons, but most functions are accessed via a context ("right-click") menu. Drag and Drop is also supported.
-<p>
-
-<table cellspacing=0 cellpadding=5 border=0 bgcolor=#c0ffc0>
-<tr><td>
-<h2>Some quick examples</h2>
-
-You might want to...
-
-<h3>...just create a group and assign some entries to it</h3>
-
-Ensure that the groups interface is visible. Press the <b>New Group</b> button, enter a name for the group, then press OK, leaving all values at their defaults. Now select the entries to be assigned to the group and use Drag and Drop to the group, or the option <b>Add to group</b> in the context menu. Finally select the group to see its content (which should be the entries you just assigned).
-
-<h3>...use the <tt>keywords</tt> field to group the entries</h3>
-
-Ensure that the groups interface is visible. Press the <b>New Group</b> button, enter a name for the group, and select the option to dynamically group entries by searching a field for a keyword. Enter the keyword to search for, then click OK. Finally select the group to see its content (which should be all entries whose <tt>keywords</tt> field contains the keyword you specified).
-
-<h3>...use a free-form search expression to define a group</h3>
-
-Ensure that the groups interface is visible. Press the <b>New Group</b> button, enter a name for the group, and select the option to dynamically group entries by a free-form search expression. Enter <tt>author=smith</tt> as a search expression (replace <tt>smith</tt> with a name that actually occurs in your database) and click <b>OK</b>. Finally select the group to see its content (which should be all entries whose <tt>author</tt> field contains the name you specified).
-
-<h3>...combine multiple groups</h3>
-
-Create two different groups (e.g. as described above). Click the <b>Settings</b> button and make sure that <b>Union</b> is selected. Now select both groups. You should see all entries contained in any of the two groups. Click <b>Settings</b> again and select <b>Intersection</b>. Now you should see only those entries contained in both groups (which might be none at all, or exactly the same entries as before in case both groups contain the same entries).
-
-<h3>...identify overlapping groups</h3>
-
-JabRef allows you to easily identify groups that overlap with the currently selected groups (i.e. that contain at least one entry that is also contained in the currently selected groups). Click <b>Settings</b> and activate the option to highlight overlapping groups. Then select a group that overlaps with other groups. The other groups should be highlighted.
-
-</tr></td>
-</table>
-<p>
-
-<H2>Types of groups</H2>
-
-In JabRef there are four different types of groups:
-
-<ol>
-<li> The group <b>All Entries</b>, which -- as the name suggests -- contains all entries, is always present and cannot be edited or removed.
-<li> <b>Static groups</b> behave like directories on disk and contain only those entries that you explicitly assign to them.
-<li> <b>Dynamic groups based on keyword search</b> contain entries in which a certain BibTeX field (e.g. <tt>keywords</tt>) contains a certain keyword (e.g. <tt>electrical</tt>). This method does not require manual assignment of entries, but uses information that is already present in the database. If all entries in your database have suitable keywords in their <tt>keywords</tt> field, using this type of group might be the best choice.
-<li> <b>Dynamic groups based on free-form search expressions</b> contain entries that match a specified search expression, using the same syntax as the <a href="SearchHelp.html">search panel</a> on the side pane. This <a href="SearchHelp.html#advanced">syntax</a> supports logical operators (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) and allows to specify one or more BibTeX fields to search, facilitating more flexible group definitions than a keyword search (e.g. <tt>author=smith and title= [...]
-</ol>
-
-Every group that you create is of one of the last three types. The group editing dialog, which is invoked by double-clicking on a group, shows a short description of the selected/edited group in plain English.
-
-<H2>Groups structure, creating and removing groups</H2>
-
-Just like directories, groups are structured like a tree, with the group <b>All Entries</b> at the root. By right-clicking on a group you can add a new group to the tree, either at the same level as the selected group or as a subgroup of it. The <b>New Group</b> button lets you create a new subgroup of the group <b>All Entries</b>, regardless of the currently selected group(s). The context menu also allows to remove groups and/or subgroups, to sort subgroups alphabetically, or to move gr [...]
-<p>
-Undo and redo is supported for all edits.
-
-<H3>Static groups</h3>
-
-Static groups are populated only by explicit manual assignment of entries. After creating a static group you select the entries to be assigned to it, and use either Drag and Drop or the main table's context menu to perform the assignment. To remove entries from a static group, select them and use the main table's context menu. There are no options to be configured.
-<p>
-This method of grouping requires that all entries have a unique BibTeX key. In case of missing or duplicate BibTeX keys, the assignment of the affected entries cannot be correctly restored in future sessions.
-
-<H3>Dynamic groups</h3>
-
-The content of a dynamic group is defined by a logical condition. Only entries that meet this condition are contained in the group. This method uses the information stored in the database itself, and updates dynamically whenever the database changes.
-<p>
-Two types of conditions can be used:
-<dl>
-<dt><b>Searching a field for a keyword</b></dt>
-<dd>
-This method groups entries in which a specified BibTeX field (e.g. <tt>keywords</tt>) contains a specified search term (e.g. <tt>electrical</tt>). Obviously, for this to work, the grouping field must be present in every entry, and its content must be accurate. The above example would group all entries referring to something electrical. Using the field <tt>author</tt> allows to group entries by a certain author, etc. The search can either be done as a plain-text or a regular expression se [...]
-</dd>
-<dt><b>Using a free-form search expression</b></dt>
-<dd>
-This is similar to the above, but rather than search a single field for a single search term, the <a href="SearchHelp.html#advanced">search expression syntax</a> can be used, which supports logical operators (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) and allows to search multiple BibTeX fields. For example, the search expression <tt>keywords=regression and not keywords=linear</tt> groups entries concerned with non-linear regression.
-</dd>
-</dl>
-
-In the groups view, dynamic groups are shown in <i>italics</i> by default. This can be turned off in the preferences (Options -> Preferences -> Groups, box "Show dynamic groups in italics").
-
-<h3>Hierarchical context</h3>
-
-By default, a group is <b>independent</b> of its position in the groups tree: When selected, only the group's contents are shown. However, especially when using dynamic groups, it is often useful to define a subgroup that <b>refines its supergroup</b>, i.e., when selected, entries contained in both groups are displayed. For example, create a supergroup containing entries with the keyword <tt>distribution</tt> and a subgroup containing entries with the keyword <tt>gauss</tt> that refines  [...]
-<p>
-The logical complement to a refining group is a group that <b>includes its subgroups</b>, i.e. when selected, not only the group's own entries, but also its subgroups' entries are shown. In the groups tree, this type of group has a special icon (this can be turned off in the preferences).
-
-<h2>Viewing a group's entries, combining multiple groups</H2>
-
-Selecting a group shows the entries contained in that group by highlighting them and, depending on the settings (accessible by clicking the <b>Settings</b> button), moving them to the top of the list and/or selecting them. These options are identical to those available for the regular search.
-<p>
-When multiple groups are selected, either the union or the intersection of their content is shown, depending on the current settings. This allows to quickly combine multiple conditions, e.g. if you have a static group <tt>Extremely Important</tt> to which you assign all extremely important entries, you can view the extremely important entries in any other group by selecting both groups (this requires to have <b>Intersection</b> selected in the settings).
-
-<h2>Groups and searching</h2>
-
-When viewing the contents of the selected group(s), a search can be performed within these contents using the regular search facility.
-
-<h2>Highlighting overlapping groups</h2>
-
-The <b>Settings</b> button offers an option to highlight overlapping groups. If this is activated, upon selection of one or more groups, all groups that contain at least one of the entries contained in the currently selected group(s) are highlighted. This quickly identifies overlap between the groups' contents. You might, for example, create a group <tt>To Read</tt> that contains all entries which you plan to read. Now, whenever you select any group, the group <tt>To Read</tt> is highlig [...]
-
-<h2>Advanced features</h2>
-
-After mastering the grouping concepts described above, the following advanced features might come in handy.
-
-<h3>Automatically creating dynamic groups</h3>
-
-By clicking the <b>Automatically create groups for database</b> button, you can quickly create a set of groups appropriate for your database. This feature will gather all words found in a specific field of your choice, and create a group for each word. This is useful for instance if your database contains suitable keywords for all entries. By autogenerating groups based on the <tt>keywords</tt> field, you should have a basic set of groups at no cost.
-<p>
-You can also specify characters to ignore, for instance commas used between keywords. These will be treated as separators between words, and not part of them. This step is important for combined keywords such as <tt>laplace distribution</tt> to be recognized as a single semantic unit. (You cannot use this option to remove complete words. Instead, delete the unwanted groups manually after they were created automatically.)
-
-<h3>Refreshing the groups view</h3>
-
-The <b>Refresh</b> button updates the entry table to reflect the current groups selection. This is usually done automatically, but in rare occasions (e.g. after a group-related undo/redo) a manual refresh is required.
-
-<h3>Mixing refining groups with including groups</h3>
-
-If a refining group is a subgroup of a group that includes its subgroups -- the refining group's siblings --, these siblings are ignored when the refining group is selected.
-
-</HTML> 
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Groups</h1>
+
+    <p>Groups allow to structure a BibTeX database in a
+    tree-like way that is similar to organizing files on disk in
+    directories and subdirectories. The two main differences are:</p>
+
+    <ul>
+        <li>While a file is always located in exactly one
+        directory, an entry may be contained in more than one
+        group.</li>
+
+        <li>Groups may use certain criteria to dynamically define
+        their content. New entries that match these criteria are
+        automatically contained in these groups. This feature is
+        not available in common file systems, but in several Email
+        clients (e.g. Thunderbird and Opera).</li>
+    </ul>Selecting a group shows the entries contained in that
+    group. Selecting multiple groups shows the entries contained in
+    any group (union) or those contained in all groups
+    (intersection), depending on the current settings. All this is
+    explained in detail below.
+
+    <p>Group definitions are database-specific; they are saved as a
+    <tt>@COMMENT</tt> block in the <tt>.bib</tt>-file and are
+    shared among all users. (Future versions of JabRef might
+    support user-dependent groups.)</p>
+
+    <h2>Interface</h2>
+
+    <p>The groups interface is shown in the side
+    pane on the left of the screen. It can be toggled on or off by
+    pressing <tt>CTRL-SHIFT-G</tt> or by the groups button in the
+    toolbar. The interface has several buttons, but most functions
+    are accessed via a context ("right-click") menu. Drag and Drop
+    is also supported.</p>
+
+    <table cellspacing="0"
+           cellpadding="5"
+           border="0"
+           bgcolor="#C0FFC0">
+        <tr>
+            <td>
+                <h2>Some quick examples</h2>
+
+                <p>You might want to...</p>
+
+                <h3>...just create a group and assign some entries
+                to it</h3>
+
+                <p>Ensure that the groups interface is
+                visible. Press the <b>New Group</b> button, enter a
+                name for the group, then press OK, leaving all
+                values at their defaults. Now select the entries to
+                be assigned to the group and use Drag and Drop to
+                the group, or the option <b>Add to group</b> in the
+                context menu. Finally select the group to see its
+                content (which should be the entries you just
+                assigned).</p>
+
+                <h3>...use the <tt>keywords</tt> field to group the
+                entries</h3>
+
+                <p>Ensure that the groups interface is
+                visible. Press the <b>New Group</b> button, enter a
+                name for the group, and select the option to
+                dynamically group entries by searching a field for
+                a keyword. Enter the keyword to search for, then
+                click OK. Finally select the group to see its
+                content (which should be all entries whose
+                <tt>keywords</tt> field contains the keyword you
+                specified).</p>
+
+                <h3>...use a free-form search expression to define
+                a group</h3>
+
+                <p>Ensure that the groups interface is
+                visible. Press the <b>New Group</b> button, enter a
+                name for the group, and select the option to
+                dynamically group entries by a free-form search
+                expression. Enter <tt>author=smith</tt> as a search
+                expression (replace <tt>smith</tt> with a name that
+                actually occurs in your database) and click
+                <b>OK</b>. Finally select the group to see its
+                content (which should be all entries whose
+                <tt>author</tt> field contains the name you
+                specified).</p>
+
+                <h3>...combine multiple groups</h3>
+
+                <p>Create two
+                different groups (e.g. as described above). Click
+                the <b>Settings</b> button and make sure that
+                <b>Union</b> is selected. Now select both groups.
+                You should see all entries contained in any of the
+                two groups. Click <b>Settings</b> again and select
+                <b>Intersection</b>. Now you should see only those
+                entries contained in both groups (which might be
+                none at all, or exactly the same entries as before
+                in case both groups contain the same entries).</p>
+
+                <h3>...identify overlapping groups</h3>
+
+                <p>JabRef allows you to easily identify groups that overlap
+                with the currently selected groups (i.e. that
+                contain at least one entry that is also contained
+                in the currently selected groups). Click
+                <b>Settings</b> and activate the option to
+                highlight overlapping groups. Then select a group
+                that overlaps with other groups. The other groups
+                should be highlighted.</p>
+            </td>
+        </tr>
+    </table>
+
+    <h2>Types of groups</h2>
+
+    <p>In JabRef there are four different types of groups:</p>
+
+    <ol>
+        <li>The group <b>All Entries</b>, which -- as the name
+        suggests -- contains all entries, is always present and
+        cannot be edited or removed.</li>
+
+        <li><b>Static groups</b> behave like directories on disk
+        and contain only those entries that you explicitly assign
+        to them.</li>
+
+        <li><b>Dynamic groups based on keyword search</b> contain
+        entries in which a certain BibTeX field (e.g.
+        <tt>keywords</tt>) contains a certain keyword (e.g.
+        <tt>electrical</tt>). This method does not require manual
+        assignment of entries, but uses information that is already
+        present in the database. If all entries in your database
+        have suitable keywords in their <tt>keywords</tt> field,
+        using this type of group might be the best choice.</li>
+
+        <li><b>Dynamic groups based on free-form search
+        expressions</b> contain entries that match a specified
+        search expression, using the same syntax as the
+        <a href="SearchHelp.html">search panel</a> on the side
+        pane. This <a href="SearchHelp.html#advanced">syntax</a>
+        supports logical operators (<tt>AND</tt>, <tt>OR</tt>,
+        <tt>NOT</tt>) and allows to specify one or more BibTeX
+        fields to search, facilitating more flexible group
+        definitions than a keyword search (e.g. <tt>author=smith
+        and title=electrical</tt>).</li>
+    </ol>Every group that you create is of one of the last three
+    types. The group editing dialog, which is invoked by
+    double-clicking on a group, shows a short description of the
+    selected/edited group in plain English.
+
+    <h2>Groups structure, creating and removing groups</h2>
+
+    <p>Just like directories, groups are structured like a tree, with the
+    group <b>All Entries</b> at the root. By right-clicking on a
+    group you can add a new group to the tree, either at the same
+    level as the selected group or as a subgroup of it. The <b>New
+    Group</b> button lets you create a new subgroup of the group
+    <b>All Entries</b>, regardless of the currently selected
+    group(s). The context menu also allows to remove groups and/or
+    subgroups, to sort subgroups alphabetically, or to move groups
+    to a different location in the tree. The latter can also be
+    done by Drag and Drop, with the restriction that Drag and Drop
+    does not support changing the order of a group's subgroups.</p>
+
+    <p>Undo and redo is supported for all edits.</p>
+
+    <h3>Static groups</h3>
+
+    <p>Static groups are populated only by
+    explicit manual assignment of entries. After creating a static
+    group you select the entries to be assigned to it, and use
+    either Drag and Drop or the main table's context menu to
+    perform the assignment. To remove entries from a static group,
+    select them and use the main table's context menu. There are no
+    options to be configured.</p>
+
+    <p>This method of grouping requires that all entries have a
+    unique BibTeX key. In case of missing or duplicate BibTeX keys,
+    the assignment of the affected entries cannot be correctly
+    restored in future sessions.</p>
+
+    <h3>Dynamic groups</h3>
+
+    <p>The content of a dynamic group is
+    defined by a logical condition. Only entries that meet this
+    condition are contained in the group. This method uses the
+    information stored in the database itself, and updates
+    dynamically whenever the database changes.</p>
+
+    <p>Two types of conditions can be used:</p>
+
+    <dl>
+        <dt><b>Searching a field for a keyword</b></dt>
+
+        <dd>This method groups entries in which a specified BibTeX
+        field (e.g. <tt>keywords</tt>) contains a specified search
+        term (e.g. <tt>electrical</tt>). Obviously, for this to
+        work, the grouping field must be present in every entry,
+        and its content must be accurate. The above example would
+        group all entries referring to something electrical. Using
+        the field <tt>author</tt> allows to group entries by a
+        certain author, etc. The search can either be done as a
+        plain-text or a regular expression search. In the former
+        case, JabRef allows to manually assign/remove entries
+        to/from the group by simply appending/removing the search
+        term to/from the content of the grouping field. This makes
+        sense only for the <tt>keywords</tt> field or for
+        self-defined fields, but obviously not for fields like
+        <tt>author</tt> or <tt>year</tt>.</dd>
+
+        <dt><b>Using a free-form search expression</b></dt>
+
+        <dd>This is similar to the above, but rather than search a
+        single field for a single search term, the
+        <a href="SearchHelp.html#advanced">search expression
+        syntax</a> can be used, which supports logical operators
+        (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) and allows to
+        search multiple BibTeX fields. For example, the search
+        expression <tt>keywords=regression and not
+        keywords=linear</tt> groups entries concerned with
+        non-linear regression.</dd>
+    </dl>In the groups view, dynamic groups are shown in
+    <i>italics</i> by default. This can be turned off in the
+    preferences (Options -> Preferences -> Groups, box "Show
+    dynamic groups in italics").
+
+    <h3>Hierarchical context</h3>
+
+    <p>By default, a group is
+    <b>independent</b> of its position in the groups tree: When
+    selected, only the group's contents are shown. However,
+    especially when using dynamic groups, it is often useful to
+    define a subgroup that <b>refines its supergroup</b>, i.e.,
+    when selected, entries contained in both groups are displayed.
+    For example, create a supergroup containing entries with the
+    keyword <tt>distribution</tt> and a subgroup containing entries
+    with the keyword <tt>gauss</tt> that refines this supergroup.
+    Selecting the subgroup now displays entries that match both
+    conditions, i.e. are concerned with Gaussian distributions. By
+    adding another refining subgroup for <tt>laplace</tt> to the
+    original supergroup, the grouping can easily be extended. In
+    the groups tree, refining groups have a special icon (this can
+    be turned off in the preferences).</p>
+
+    <p>The logical complement to a refining group is a group that
+    <b>includes its subgroups</b>, i.e. when selected, not only the
+    group's own entries, but also its subgroups' entries are shown.
+    In the groups tree, this type of group has a special icon (this
+    can be turned off in the preferences).</p>
+
+    <h2>Viewing a group's entries, combining multiple
+    groups</h2>
+
+    <p>Selecting a group shows the entries contained in
+    that group by highlighting them and, depending on the settings
+    (accessible by clicking the <b>Settings</b> button), moving
+    them to the top of the list and/or selecting them. These
+    options are identical to those available for the regular
+    search.</p>
+
+    <p>When multiple groups are selected, either the union or the
+    intersection of their content is shown, depending on the
+    current settings. This allows to quickly combine multiple
+    conditions, e.g. if you have a static group <tt>Extremely
+    Important</tt> to which you assign all extremely important
+    entries, you can view the extremely important entries in any
+    other group by selecting both groups (this requires to have
+    <b>Intersection</b> selected in the settings).</p>
+
+    <h2>Groups and searching</h2>
+
+    <p>When viewing the contents of the
+    selected group(s), a search can be performed within these
+    contents using the regular search facility.</p>
+
+    <h2>Highlighting overlapping groups</h2>
+
+    <p>The <b>Settings</b>
+    button offers an option to highlight overlapping groups. If
+    this is activated, upon selection of one or more groups, all
+    groups that contain at least one of the entries contained in
+    the currently selected group(s) are highlighted. This quickly
+    identifies overlap between the groups' contents. You might, for
+    example, create a group <tt>To Read</tt> that contains all
+    entries which you plan to read. Now, whenever you select any
+    group, the group <tt>To Read</tt> is highlighted if the
+    selected group contains entries that you plan to read.</p>
+
+    <h2>Advanced features</h2>
+
+    <p>After mastering the grouping concepts
+    described above, the following advanced features might come in
+    handy.</p>
+
+    <h3>Automatically creating dynamic groups</h3>
+
+    <p>By clicking the
+    <b>Automatically create groups for database</b> button, you can
+    quickly create a set of groups appropriate for your database.
+    This feature will gather all words found in a specific field of
+    your choice, and create a group for each word. This is useful
+    for instance if your database contains suitable keywords for
+    all entries. By autogenerating groups based on the
+    <tt>keywords</tt> field, you should have a basic set of groups
+    at no cost.</p>
+
+    <p>You can also specify characters to ignore, for instance
+    commas used between keywords. These will be treated as
+    separators between words, and not part of them. This step is
+    important for combined keywords such as <tt>laplace
+    distribution</tt> to be recognized as a single semantic unit.
+    (You cannot use this option to remove complete words. Instead,
+    delete the unwanted groups manually after they were created
+    automatically.)</p>
+
+    <h3>Refreshing the groups view</h3>
+
+    <p>The <b>Refresh</b> button
+    updates the entry table to reflect the current groups
+    selection. This is usually done automatically, but in rare
+    occasions (e.g. after a group-related undo/redo) a manual
+    refresh is required.</p>
+
+    <h3>Mixing refining groups with including groups</h3>
+
+    <p>If a refining group is a subgroup of a group that includes its
+    subgroups -- the refining group's siblings --, these siblings
+    are ignored when the refining group is selected.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/HelpHelp.html b/src/help/HelpHelp.html
index b87c301..4de8bfe 100755
--- a/src/help/HelpHelp.html
+++ b/src/help/HelpHelp.html
@@ -1,27 +1,35 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>The help window</H1>
-<em>Opened by clicking the help button or pressing F1.</em>
-<P>
-The help window is there to provide information about using JabRef.
-
-<H2>Navigating the help files</H2>
-
-The help window is in fact a lightweight HTML browser, and the help files
-are standard HTML files.
-<P>
-When opened, the help window will default to different files depending on which
-program window it is called from. If this file doesn't explain the aspect you
-are interested in, the <em>Contents</em> button in the toolbar will take you
-to a list of the available help files.
-<P>
-In addition the toolbar contains navigation buttons for showing the next or
-previous file. These are similar to the <em>Back</em> and <em>Forward</em>
-buttons of a standard web browser. The keyboard shortcuts for navigation are
-the arrow key left for <em>Back</em> and the arrow key right for <em>Forward</em>.
-<P>
-The help window is closed by pressing ESCAPE.
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>The help window</h1>
+
+    <p><em>Opened by clicking the help button or pressing F1.</em></p>
+
+    <p>The help window is there to provide information about using
+    JabRef.</p>
+
+    <h2>Navigating the help files</h2>
+
+    <p>The help window is in fact a lightweight HTML browser, and the
+    help files are standard HTML files.</p>
+
+    <p>When opened, the help window will default to different files
+    depending on which program window it is called from. If this
+    file doesn't explain the aspect you are interested in, the
+    <em>Contents</em> button in the toolbar will take you to a list
+    of the available help files.</p>
+
+    <p>In addition the toolbar contains navigation buttons for
+    showing the next or previous file. These are similar to the
+    <em>Back</em> and <em>Forward</em> buttons of a standard web
+    browser. The keyboard shortcuts for navigation are the arrow
+    key left for <em>Back</em> and the arrow key right for
+    <em>Forward</em>.</p>
+
+    <p>The help window is closed by pressing ESCAPE.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/IEEEXploreHelp.html b/src/help/IEEEXploreHelp.html
index 78deac0..fc014b8 100644
--- a/src/help/IEEEXploreHelp.html
+++ b/src/help/IEEEXploreHelp.html
@@ -1,29 +1,33 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Search IEEEXplore</H1>
+    <h1>Search IEEEXplore</h1>
 
-IEEEXplore delivers access to technical literature in electrical engineering,
-computer science, and electronics.
-<p>
-JabRef can download citations from the IEEEXplore database.
-To use this feature, choose <b>Web search -> Search IEEEXplore</b>,
-and the search interface will appear in the side pane.
-<P>
-To start a search, enter the words of your query, and press
-<b>Enter</b> or the <b>Fetch</b> button.
+    <p>IEEEXplore delivers access to
+    technical literature in electrical engineering, computer
+    science, and electronics.</p>
 
-<p>
-The search is done in guest mode, which means that a maximum of 100 results
-will be returned.
+    <p>JabRef can download citations from the IEEEXplore database.
+    To use this feature, choose <b>Web search -> Search
+    IEEEXplore</b>, and the search interface will appear in the
+    side pane.</p>
 
-<p>
-You may opt to download the abstracts along with the cite information for each
-entry, by checking the <b>Include abstracts</b> checkbox. This causes a
-significantly larger amount of network queries, so to avoid excessive pressure
-on the IEEEXplore web site, JabRef will refuse to download abstracts
-for searches returning more than a given number of hits.
+    <p>To start a search, enter the words of your query, and press
+    <b>Enter</b> or the <b>Fetch</b> button.</p>
 
-</HTML>
+    <p>The search is done in guest mode, which means that a maximum
+    of 100 results will be returned.</p>
+
+    <p>You may opt to download the abstracts along with the cite
+    information for each entry, by checking the <b>Include
+    abstracts</b> checkbox. This causes a significantly larger
+    amount of network queries, so to avoid excessive pressure on
+    the IEEEXplore web site, JabRef will refuse to download
+    abstracts for searches returning more than a given number of
+    hits.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/ImportInspectionDialog.html b/src/help/ImportInspectionDialog.html
index 1a1f48e..13695de 100644
--- a/src/help/ImportInspectionDialog.html
+++ b/src/help/ImportInspectionDialog.html
@@ -1,22 +1,24 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>Import inspection window</h1>
-
-When you import new entries from a supported reference format, or fetch entries directly from
-the Internet, they are first shown in this window for inspection. At this point none of the entries
-have been added to the database you already have open (if any).
-
-<P>The inspection window allows you to discard entries you don't want to keep, and to perform some
-simple operations like generating BibTeX keys for the entries, or adding them to
-<a href="GroupsHelp.html">groups</a>. If you are importing into an existing database, it is often
-easier to perform these operations before they are mixed in between the entries of the existing
-database. 
-
-<h2></h2>
-
-
-
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Import inspection window</h1>
+
+    <p>When you import new entries
+    from a supported reference format, or fetch entries directly
+    from the Internet, they are first shown in this window for
+    inspection. At this point none of the entries have been added
+    to the database you already have open (if any).</p>
+
+    <p>The inspection window allows you to discard entries you
+    don't want to keep, and to perform some simple operations like
+    generating BibTeX keys for the entries, or adding them to
+    <a href="GroupsHelp.html">groups</a>. If you are importing into
+    an existing database, it is often easier to perform these
+    operations before they are mixed in between the entries of the
+    existing database.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/JabRefHelp.html b/src/help/JabRefHelp.html
index c9ca2d2..17f8656 100755
--- a/src/help/JabRefHelp.html
+++ b/src/help/JabRefHelp.html
@@ -1,33 +1,35 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>JabRef</H1>
-
-<P><strong>Note:</strong> The <em>bibtex</em> program is mentioned many times in these help
-files. <em>Bibtex</em> is a utility for the generation of
-bibliographic references in LaTeX documents, created by Oren
-Patashnik. The same database format is also used with CiteMaker,
-a utility for bibliography generation in Adobe FrameMaker.
-
-<P>JabRef is is a program for working with <em>bibtex</em>
-databases. The program uses no internal file format, which means you
-normally load and save your databases directly in the <em>bibtex</em>
-.bib format. However, you can also import bibliography databases in a
-number of other formats into JabRef.
-
-<P>JabRef provides sorting and searching functionality for getting
-the overview of your databases' contents. You can easily add new
-database entries without having to remember what information is
-required, and <em>bibtex</em> keys can be autogenerated.  JabRef
-will be most useful for those using <em>bibtex</em> or CiteMaker, but
-may also be of use to those using other referencing systems or simply
-wanting to organize their literature sources.
-
-<P>
-<a href="BaseFrameHelp.html">The JabRef main window</a>
-
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>JabRef</h1>
+
+    <p><strong>Note:</strong> The <em>bibtex</em> program is
+    mentioned many times in these help files. <em>Bibtex</em> is a
+    utility for the generation of bibliographic references in LaTeX
+    documents, created by Oren Patashnik. The same database format
+    is also used with CiteMaker, a utility for bibliography
+    generation in Adobe FrameMaker.</p>
+
+    <p>JabRef is is a program for working with <em>bibtex</em>
+    databases. The program uses no internal file format, which
+    means you normally load and save your databases directly in the
+    <em>bibtex</em> .bib format. However, you can also import
+    bibliography databases in a number of other formats into
+    JabRef.</p>
+
+    <p>JabRef provides sorting and searching functionality for
+    getting the overview of your databases' contents. You can
+    easily add new database entries without having to remember what
+    information is required, and <em>bibtex</em> keys can be
+    autogenerated. JabRef will be most useful for those using
+    <em>bibtex</em> or CiteMaker, but may also be of use to those
+    using other referencing systems or simply wanting to organize
+    their literature sources.</p>
+
+    <p><a href="BaseFrameHelp.html">The JabRef main window</a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/JournalAbbreviations.html b/src/help/JournalAbbreviations.html
index 23d0de7..7ba29e7 100644
--- a/src/help/JournalAbbreviations.html
+++ b/src/help/JournalAbbreviations.html
@@ -1,75 +1,104 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Journal abbreviations</H1>
-
-This feature can be configured under <b>Options -> Manage journal abbreviations</b>.
-
-<p>JabRef can automatically toggle journal names between abbreviated and unabbreviated form, as long
-as the names are contained in one of your journal lists. You can use several lists, all realized as
-external text files on your hard disk.
-
-<H2>Using the feature</H2>
-<p>
-Journal name conversion can be accessed either from within the entry editor, or from the <b>Tools</b> menu.
-In the entry editor you will find a button labelled <i>Toggle abbreviation</i> by the <i>journal</i> field.
-Clicking this button will cause the current journal name to be switched to the next of three modes:
-<ul>
-    <li>Full name, e.g. "Aquacultural Engineering"</li>
-    <li>ISO abbreviation, e.g. "Aquacult. Eng."</li>
-    <li>MEDLINE abbreviation, e.g. "Aquacult Eng"</li>
-</ul>
-If the current journal name is not found in your journal lists, the field will not be modified.
-
-<p>
-To convert the journal names of many entries in bulk, you can select any number of entries, and choose
-<b>Tools -> Abbreviate journal names (ISO)</b>, <b>Tools -> Abbreviate journal names (MEDLINE)</b> or
-    <b>Tools -> Unabbreviate journal names</b>. These three actions
-will abbreviate and unabbreviate the journal names of all selected entries for which the journal name could
-be found in your journal lists.
-
-<h2>Setting up your journal lists</h2>
-
-You can have several journal lists, all external text files linked from JabRef. The primary list can be
-edited from within JabRef.
-
-<H3>Your personal journal abbreviations list</H3>
-
-Your personal journal list is managed in the upper part of the <b>Manage journal abbreviations</b> window.
-To start building your personal journal abbreviations list, choose <i>New file</i>, and enter a filename
-manually or using the <i>Browse</i> button. If you already have a file that you want to use as a starting point,
-choose <i>Existing file</i>, and use the <i>Browse</i> button to choose the file. The table will update to show
-the contents of the list you have selected.
-
-<p>The table and the tool buttons to the right allow you to add, remove and edit journal entries. For each entry
-you must provide the full journal name, and the ISO abbreviation (e.g. "Aquacultural Engineering" and "Aquacult. Eng.").
-To edit an entry, double-click its row in the table.
-
-<p>Once you click <i>OK</i>, if you have selected a file, and the table contains at least one entry, the table
-contents will be stored to the selected file, and JabRef's list of journals will be updated.
-
-<h3>External journal lists</h3>
-
-In addition to your personal list, you can link to a number of external lists. These links can be set up
-in the lower part of the <b>Manage journal abbreviations</b> window. External lists are similar to the personal
-list - the only difference is that JabRef doesn't provide an interface for editing the external lists.
-<p>
-To add a new external list, if necessary, click the <b>+</b> button to add another slot to the interface.
-Then use either the <i>Browse</i> or <i>Download</i> button next to one of the
-slots in the lower part of the window.
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Journal abbreviations</h1>
+
+    <p>This feature can be configured
+    under <b>Options -> Manage journal abbreviations</b>.</p>
+
+    <p>JabRef can automatically toggle journal names between
+    abbreviated and unabbreviated form, as long as the names are
+    contained in one of your journal lists. You can use several
+    lists, all realized as external text files on your hard
+    disk.</p>
+
+    <h2>Using the feature</h2>
+
+    <p>Journal name conversion can be accessed either from within
+    the entry editor, or from the <b>Tools</b> menu. In the entry
+    editor you will find a button labelled <i>Toggle
+    abbreviation</i> by the <i>journal</i> field. Clicking this
+    button will cause the current journal name to be switched to
+    the next of three modes:</p>
+
+    <ul>
+        <li>Full name, e.g. "Aquacultural Engineering"</li>
+
+        <li>ISO abbreviation, e.g. "Aquacult. Eng."</li>
+
+        <li>MEDLINE abbreviation, e.g. "Aquacult Eng"</li>
+    </ul>If the current journal name is not found in your journal
+    lists, the field will not be modified.
+
+    <p>To convert the journal names of many entries in bulk, you
+    can select any number of entries, and choose <b>Tools ->
+    Abbreviate journal names (ISO)</b>, <b>Tools -> Abbreviate
+    journal names (MEDLINE)</b> or <b>Tools -> Unabbreviate
+    journal names</b>. These three actions will abbreviate and
+    unabbreviate the journal names of all selected entries for
+    which the journal name could be found in your journal
+    lists.</p>
+
+    <h2>Setting up your journal lists</h2>
+
+    <p>You can have several
+    journal lists, all external text files linked from JabRef. The
+    primary list can be edited from within JabRef.</p>
+
+    <h3>Your personal journal abbreviations list</h3>
+
+    <p>Your personal
+    journal list is managed in the upper part of the <b>Manage
+    journal abbreviations</b> window. To start building your
+    personal journal abbreviations list, choose <i>New file</i>,
+    and enter a filename manually or using the <i>Browse</i>
+    button. If you already have a file that you want to use as a
+    starting point, choose <i>Existing file</i>, and use the
+    <i>Browse</i> button to choose the file. The table will update
+    to show the contents of the list you have selected.</p>
+
+    <p>The table and the tool buttons to the right allow you to
+    add, remove and edit journal entries. For each entry you must
+    provide the full journal name, and the ISO abbreviation (e.g.
+    "Aquacultural Engineering" and "Aquacult. Eng."). To edit an
+    entry, double-click its row in the table.</p>
+
+    <p>Once you click <i>OK</i>, if you have selected a file, and
+    the table contains at least one entry, the table contents will
+    be stored to the selected file, and JabRef's list of journals
+    will be updated.</p>
+
+    <h3>External journal lists</h3>
+
+    <p>In addition to your personal
+    list, you can link to a number of external lists. These links
+    can be set up in the lower part of the <b>Manage journal
+    abbreviations</b> window. External lists are similar to the
+    personal list - the only difference is that JabRef doesn't
+    provide an interface for editing the external lists.</p>
+
+    <p>To add a new external list, if necessary, click the <b>+</b>
+    button to add another slot to the interface. Then use either
+    the <i>Browse</i> or <i>Download</i> button next to one of the
+    slots in the lower part of the window.</p>
+
     <ul>
-    <li>The <i>Browse</i> button allows you to select an existing file on
-your computer.</li>
-    <li>The <i>Download</i> button allows you to download a list over the internet by entering and
-URL, store it to a local file on your computer, and link to it as a journal list from JabRef. The URL will
-default to the address of a journal list provided from the JabRef web page. This list is incomplete, but
-may be improved in the future.</li>
-    </ul>
-
-Any entry in your personal journal list will override an entry with the same full journal name in one of the
-external lists. Similarly, the external lists are given precedence in the order they are listed.
-
-</BODY>
-</HTML>
+        <li>The <i>Browse</i> button allows you to select an
+        existing file on your computer.</li>
+
+        <li>The <i>Download</i> button allows you to download a
+        list over the internet by entering and URL, store it to a
+        local file on your computer, and link to it as a journal
+        list from JabRef. The URL will default to the address of a
+        journal list provided from the JabRef web page. This list
+        is incomplete, but may be improved in the future.</li>
+    </ul>Any entry in your personal journal list will override an
+    entry with the same full journal name in one of the external
+    lists. Similarly, the external lists are given precedence in
+    the order they are listed.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/LabelPatterns.html b/src/help/LabelPatterns.html
index c4330c9..5fb4f74 100644
--- a/src/help/LabelPatterns.html
+++ b/src/help/LabelPatterns.html
@@ -1,100 +1,179 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Customizing the BibTeX key generator</H1>
-
-In the 'Key pattern' tab in Preferences, one can set the fields used in auto
-generation of BibTex labels. The pattern can be set for each of the standard entry
-types.
-<H2>Key patterns</H2>
-The pattern can contain any text you wish, in addition to field
-markers that indicate that a specific field of the entry should be
-inserted at that position of the key. A field marker generally
-consists of the field name enclosed in square braces,
-e.g. <b>[volume]</b>. If the field is undefined in an entry at the
-time of key generation, no text will be inserted by the field marker.
-<P>
-Several special field markers are offered, which extract only a specific part of a field. These are listed below. Feel free to suggest new special field markers.
-
-<P>
-Special field markers:
-<ul>
-<li><b>[<code>auth</code>]</b>: The last name of the first author<BR>
-<li><b>[<code>authors</code>]</b>: The last name of all authors<BR>
-<li><b>[<code>authorsN</code>]</b>: The last name of up to N authors. If there are more authors, "EtAl" is appended.<BR>
-<li><b>[<code>authIniN</code>]</b>: The beginning of each author's last name, using
-no more than N characters.<BR>
-<li><b>[<code>authorIni</code>]</b>: The first 5 characters of the first author's last name,
-          and the last name initials of the remaining authors.<BR>
-<li><b>[<code>authN</code>]</b>: The first N characters of the first author's last name<BR>
-<li><b>[<code>authN_M</code>]</b>: The first N characters of the Mth author's last name<BR>
-<li><b>[<code>auth.auth.ea</code>]</b>: The last name of the first two authors, and ".ea" if there are more than two.<BR>
-<li><b>[<code>auth.etal</code>]</b>: The last name of the first author, and the last name of the second author if there are two
-    authors or ".etal" if there are more than two.<BR>    
-<li><b>[<code>authshort</code>]</b>: The last name if one author is given; the first character of up to three authors' last names if more than one author is given. A plus character is added, if there are more than three authors.<BR>
-</ul>
-<b>Note:</b> If there is no author (as in the case of an edited book), then all of the above <b><code>[auth...]</code></b> markers will use the editor(s) (if any) as a fallback. Thus, the editor(s) of a book with no author will be treated as the author(s) for label-generation purposes. If you do not want this behaviour, i.e. you require a marker which expands to nothing if there is no author, use  <b><code>pureauth</code></b> instead of <b><code>auth</code></b> in the above codes. For ex [...]
-<ul>
-<li><b>[<code>edtr</code>]</b>: The last name of the first editor<BR>
-<li><b>[<code>edtrIniN</code>]</b>: The beginning of each editor's last name, using
-no more than N characters<BR>
-<li><b>[<code>editors</code>]</b>: The last name of all editors<BR>
-<li><b>[<code>editorIni</code>]</b>: The first 5 characters of the first editor's last name,
- 	and the last name initials of the remaining editors.<BR>
-<li><b>[<code>edtrN</code>]</b>: The first N characters of the first editor's last name<BR>
-<li><b>[<code>edtrN_M</code>]</b>: The first N characters of the Mth editor's last name<BR>
-<li><b>[<code>edtr.edtr.ea</code>]</b>: The last name of the first two editors, and ".ea" if there are more than two.<BR>
-<li><b>[<code>edtrshort</code>]</b>: The last name if one editor is given; the first character of up to three editors' last names if more than one editor is given. A plus character is added, if there are more than three editors.<BR>
-<li><b>[<code>firstpage</code>]</b>: The number of the first page of the publication<BR>
-<li><b>[<code>lastpage</code>]</b>: The number of the last page of the publication<BR>
-<li><b>[<code>shorttitle</code>]</b>: The first 3 words of the title<BR>
-<li><b>[<code>shortyear</code>]</b>: The last 2 digits of the publication year<BR>
-<li><b>[<code>veryshorttitle</code>]</b>: The first word of the title,
-discounting 'the', 'a', 'an'.<BR>
- </ul>
-
-<P>
-A field name (or one of the above pseudo-field names) may optionally
-be followed by one or more modifiers. Modifiers are applied in the order they are
-specified.
-<ul>
-    <li><b>:abbr</b>: Abbreviates the text produced by the field name or spcial field
-        marker. Only the first character and subsequent characters following white space
-        will be included. For example, <b>[journal:abbr]</b> would from the journal name
-        "Journal of Fish Biology" produce "JoFB".<br>
-    <li><b>:lower</b>: Forces the text inserted by the field marker to
-        be in lowercase.  For example, <b>[auth:lower]</b> expands the last
-        name of the first author in lowercase.<br>
-</ul>
-
-
-<P>
-If you haven't defined a key pattern for a certain entry type, the <b>Default
-key pattern</b> will be used. You can change the default pattern - its setting
-is above the list of entry types in the <b>Key pattern</b> section of the <b>Preferences</b>
-dialog.
-
-<P>
-The default key pattern is [auth][year], and this could produce
-keys like e.g. <code>Yared1998</code> If the key is not unique in the
-current database, it is made unique by adding one of the letters a-z
-until a unique key is found. Thus, the labels might look like:
-<blockquote> <code>Yared1998</code><BR> <code>Yared1998a</code><BR>
-<code>Yared1998b</code> </blockquote>
-
-<h2>Regular expression replace</h2>
-
-    After the key pattern has been applied to produce a key, you can choose to have the
-    key generator search for occurences of a specific regular expression, and replace
-    it with a string. The regular expression and replacement string are entered in the
-    text fields below the list of key patterns.
-
-    If the replacement string is empty, matches of the regular expression will simply
-    be removed from the generated key.
-
-</font>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Customizing the BibTeX key generator</h1>
+
+    <p>In the 'Key pattern' tab in Preferences, one can set the fields
+    used in auto generation of BibTex labels. The pattern can be
+    set for each of the standard entry types.</p>
+
+    <h2>Key patterns</h2>
+
+    <p>The pattern can contain any text you wish,
+    in addition to field markers that indicate that a specific
+    field of the entry should be inserted at that position of the
+    key. A field marker generally consists of the field name
+    enclosed in square braces, e.g. <b>[volume]</b>. If the field
+    is undefined in an entry at the time of key generation, no text
+    will be inserted by the field marker.</p>
+
+    <p>Several special field markers are offered, which extract
+    only a specific part of a field. These are listed below. Feel
+    free to suggest new special field markers.</p>
+
+    <p>Special field markers:</p>
+
+    <ul>
+        <li><b>[<code>auth</code>]</b>: The last name of the first
+        author<br /></li>
+
+        <li><b>[<code>authors</code>]</b>: The last name of all
+        authors<br /></li>
+
+        <li><b>[<code>authorsN</code>]</b>: The last name of up to
+        N authors. If there are more authors, "EtAl" is
+        appended.<br /></li>
+
+        <li><b>[<code>authIniN</code>]</b>: The beginning of each
+        author's last name, using no more than N
+        characters.<br /></li>
+
+        <li><b>[<code>authorIni</code>]</b>: The first 5 characters
+        of the first author's last name, and the last name initials
+        of the remaining authors.<br /></li>
+
+        <li><b>[<code>authN</code>]</b>: The first N characters of
+        the first author's last name<br /></li>
+
+        <li><b>[<code>authN_M</code>]</b>: The first N characters
+        of the Mth author's last name<br /></li>
+
+        <li><b>[<code>auth.auth.ea</code>]</b>: The last name of
+        the first two authors, and ".ea" if there are more than
+        two.<br /></li>
+
+        <li><b>[<code>auth.etal</code>]</b>: The last name of the
+        first author, and the last name of the second author if
+        there are two authors or ".etal" if there are more than
+        two.<br /></li>
+
+        <li><b>[<code>authshort</code>]</b>: The last name if one
+        author is given; the first character of up to three
+        authors' last names if more than one author is given. A
+        plus character is added, if there are more than three
+        authors.<br /></li>
+    </ul><b>Note:</b> If there is no author (as in the case of an
+    edited book), then all of the above
+    <b><code>[auth...]</code></b> markers will use the editor(s)
+    (if any) as a fallback. Thus, the editor(s) of a book with no
+    author will be treated as the author(s) for label-generation
+    purposes. If you do not want this behaviour, i.e. you require a
+    marker which expands to nothing if there is no author, use
+    <b><code>pureauth</code></b> instead of
+    <b><code>auth</code></b> in the above codes. For example,
+    <b><code>[pureauth]</code></b>, or
+    <b><code>[pureauthors3]</code></b>.
+
+    <ul>
+        <li><b>[<code>edtr</code>]</b>: The last name of the first
+        editor<br /></li>
+
+        <li><b>[<code>edtrIniN</code>]</b>: The beginning of each
+        editor's last name, using no more than N
+        characters<br /></li>
+
+        <li><b>[<code>editors</code>]</b>: The last name of all
+        editors<br /></li>
+
+        <li><b>[<code>editorIni</code>]</b>: The first 5 characters
+        of the first editor's last name, and the last name initials
+        of the remaining editors.<br /></li>
+
+        <li><b>[<code>edtrN</code>]</b>: The first N characters of
+        the first editor's last name<br /></li>
+
+        <li><b>[<code>edtrN_M</code>]</b>: The first N characters
+        of the Mth editor's last name<br /></li>
+
+        <li><b>[<code>edtr.edtr.ea</code>]</b>: The last name of
+        the first two editors, and ".ea" if there are more than
+        two.<br /></li>
+
+        <li><b>[<code>edtrshort</code>]</b>: The last name if one
+        editor is given; the first character of up to three
+        editors' last names if more than one editor is given. A
+        plus character is added, if there are more than three
+        editors.<br /></li>
+
+        <li><b>[<code>firstpage</code>]</b>: The number of the
+        first page of the publication<br /></li>
+
+        <li><b>[<code>keywordN</code>]</b>: Keyword number N from
+        the "keywords" field, assuming keywords are separated by
+        commas or semicolons.<br /></li>
+
+        <li><b>[<code>lastpage</code>]</b>: The number of the last
+        page of the publication<br /></li>
+
+        <li><b>[<code>shorttitle</code>]</b>: The first 3 words of
+        the title<br /></li>
+
+        <li><b>[<code>shortyear</code>]</b>: The last 2 digits of
+        the publication year<br /></li>
+
+        <li><b>[<code>veryshorttitle</code>]</b>: The first word of
+        the title, discounting 'the', 'a', 'an'.<br /></li>
+    </ul>
+
+    <p>A field name (or one of the above pseudo-field names) may
+    optionally be followed by one or more modifiers. Modifiers are
+    applied in the order they are specified.</p>
+
+    <ul>
+        <li><b>:abbr</b>: Abbreviates the text produced by the
+        field name or spcial field marker. Only the first character
+        and subsequent characters following white space will be
+        included. For example, <b>[journal:abbr]</b> would from the
+        journal name "Journal of Fish Biology" produce
+        "JoFB".<br /></li>
+
+        <li><b>:lower</b>: Forces the text inserted by the field
+        marker to be in lowercase. For example, <b>[auth:lower]</b>
+        expands the last name of the first author in
+        lowercase.<br /></li>
+    </ul>
+
+    <p>If you haven't defined a key pattern for a certain entry
+    type, the <b>Default key pattern</b> will be used. You can
+    change the default pattern - its setting is above the list of
+    entry types in the <b>Key pattern</b> section of the
+    <b>Preferences</b> dialog.</p>
+
+    <p>The default key pattern is [auth][year], and this could
+    produce keys like e.g. <code>Yared1998</code> If the key is not
+    unique in the current database, it is made unique by adding one
+    of the letters a-z until a unique key is found. Thus, the
+    labels might look like:</p>
+
+    <blockquote>
+        <code>Yared1998</code><br />
+         <code>Yared1998a</code><br />
+        <code>Yared1998b</code>
+    </blockquote>
+
+    <h2>Regular expression replace</h2>
+
+    <p>After the key pattern has
+    been applied to produce a key, you can choose to have the key
+    generator search for occurences of a specific regular
+    expression, and replace it with a string. The regular
+    expression and replacement string are entered in the text
+    fields below the list of key patterns. If the replacement
+    string is empty, matches of the regular expression will simply
+    be removed from the generated key.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/LabelPatterns.txt b/src/help/LabelPatterns.txt
deleted file mode 100644
index 42f9ffb..0000000
--- a/src/help/LabelPatterns.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Setting the the BibTeX labels</H1>
-
-In the 'Label Pattern' tab in Preferences, one can set the fields used in auto 
-generation of BibTex labels. The pattern can be set for each of the standard entry 
-types.
-
-The pattern is of the form: <code>[field1]separator[field2]separator[field3]...<code>,
-where 'field#' is one of the (required) fields of a given entry type. The square 
-brackets are quite important. They're used to recognize which part of the string is 
-a field, and which part is a separator. This way one is not restricted to use 
-underscore as a separator.
-
-The label can contain the first or last page by using the fields firstpage and lastpage 
-(non BibTeX fields).
-
-The default is [author]_[year], and since this is not a unique key, it's made unique by
-adding one of the letters a-z until a unique key is found, so the labels might look like:
-
-<blockquote>
-	<code>Yared_1998<code>
-	<code>Yared_1998a</code>
-	<code>Yared_1998b</code>
-</blockquote>
-
-</font>
-</BODY>
-</HTML>
\ No newline at end of file
diff --git a/src/help/MarkingHelp.html b/src/help/MarkingHelp.html
index 6871896..1b97321 100644
--- a/src/help/MarkingHelp.html
+++ b/src/help/MarkingHelp.html
@@ -1,20 +1,29 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Mark entries</H1>
+    <h1>Mark entries</h1>
 
-You have the option of <em>marking</em> entries. Keyboard shortcuts are CTRL-M and CTRL-SHIFT-M to
-mark and unmark the selected entries, respectively, and you can also access these actions in the
-menus.
+    <p>You have the option of <em>marking</em>
+    entries. Keyboard shortcuts are CTRL-M and CTRL-SHIFT-M to mark
+    and unmark the selected entries, respectively, and you can also
+    access these actions in the menus.</p>
 
-<p>Note that marking is not the same as selecting entries. Marked entries behave differently from other entries 
-in two ways. First, they are always displayed with a yellow background in the entry table. Second, they will float 
-to the top of your entry list, as long as your table is not sorted according to groups or a Float search.
+    <p>Note that marking is not the same as selecting entries.
+    Marked entries behave differently from other entries in two
+    ways. First, they are always displayed with a yellow background
+    in the entry table. Second, they will float to the top of your
+    entry list, as long as your table is not sorted according to
+    groups or a Float search.</p>
 
-<p>Saving your database will preserve the markings.
+    <p>Saving your database will preserve the markings.</p>
 
-<p>Marking entries can be useful for instance if you need to do several searches without losing your first
-  search results, or if you need to remember which articles or books to look more closely at.
-</HTML>
+    <p>Marking entries can be useful for instance if you need to do
+    several searches without losing your first search results, or
+    if you need to remember which articles or books to look more
+    closely at.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/MedlineHelp.html b/src/help/MedlineHelp.html
index 5b97f19..626cce2 100644
--- a/src/help/MedlineHelp.html
+++ b/src/help/MedlineHelp.html
@@ -1,39 +1,46 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Fetching Medline entries</H1>
+    <h1>Fetching Medline entries</h1>
 
-MEDLINE is the U.S. National Library of Medicine's premier bibliographic database.
-It contains references to journal articles in life sciences
-with a concentration on biomedicine.
-<P>
-JabRef can download citations from the Medline database.
-To use this feature, choose <b>Web search -> Fetch Medline</b>,
-and the Medline interface will appear in the side pane.
-<P>
-There are two ways of specifying which entries to download:
+    <p>MEDLINE is the U.S. National Library of Medicine's premier
+    bibliographic database. It contains references to journal
+    articles in life sciences with a concentration on biomedicine.</p>
 
-<ol>
-<li> Enter one or more Medline IDs (separated by comma/semicolon) in the
-text field.
-<li> Enter a set of names and/or words to search for. You can use the operators
-<em>and</em> and <em>or</em> and parentheses to refine your search expression.
-</ol>
+    <p>JabRef can download citations from the Medline database. To
+    use this feature, choose <b>Web search -> Fetch Medline</b>,
+    and the Medline interface will appear in the side pane.</p>
 
-In both cases, press <b>Enter</b> or the <b>Fetch</b> button. If you
-use a text search, you will be prompted with the number of entries
-found, and given a choice of how many to download.
+    <p>There are two ways of specifying which entries to
+    download:</p>
 
-<p>The entries fetched will be added to your currently active database.
+    <ol>
+        <li>Enter one or more Medline IDs (separated by
+        comma/semicolon) in the text field.</li>
 
-<H2>Using a Proxy Server</H2>
+        <li>Enter a set of names and/or words to search for. You
+        can use the operators <em>and</em> and <em>or</em> and
+        parentheses to refine your search expression.</li>
+    </ol>In both cases, press <b>Enter</b> or the <b>Fetch</b>
+    button. If you use a text search, you will be prompted with the
+    number of entries found, and given a choice of how many to
+    download.
 
-If you need to use an http proxy server, pass the server name and
-port number to java at runtime.  These environment settings are documented
-at <p> http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html
+    <p>The entries fetched will be added to your currently active
+    database.</p>
 
-<p><code>java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"</code>
+    <h2>Using a Proxy Server</h2>
 
-</HTML>
+    <p>If you need to use an http proxy
+    server, pass the server name and port number to java at
+    runtime. These environment settings are documented at<br>
+    <a href="http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html">http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html</a></p>
+
+    <p><code>java -Dhttp.proxyHost="hostname"
+    -Dhttp.proxyPort="portnumber"</code></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/OpenOfficeHelp.html b/src/help/OpenOfficeHelp.html
index 5995e33..4814d16 100644
--- a/src/help/OpenOfficeHelp.html
+++ b/src/help/OpenOfficeHelp.html
@@ -1,53 +1,80 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Using JabRef bibliographies in OpenOffice.org</H1>
-
-JabRef can export your database in both the OpenOffice.org 1.1 <b>.sxc</b>
-spreadsheet format, and the OpenDocument <b>.ods</b> spreadsheet format used
-by OpenOffice.org 2.0.
-<p>
-In both cases the exported spreadsheet will contain one data sheet, listing entries
-in rows and the various fields in columns. The order and names of the columns is set
-to be compatible with OpenOffice.org's bibliography functions (OOo 1.1 in the case of
-the <b>.sxc</b> export, and OOo 2.0 in the case of the <b>.ods</b> format).
-
-<h2>Using the exported file as bibliography database in OpenOffice 2.0 or newer</h2>
-
-Use the following steps to set up a spreadsheet exported from JabRef as bibliography
-database in OpenOffice.org:
-<ul>
-    <li>Export your database using the <b>.ods</b> format</li>
-    <li>Start OpenOffice.org</li>
-    <li>Choose <b>Tools -> Options -> OpenOffice.org Base -> Databases</b></li>
-    <li>Edit the <i>Bibliography</i> database, and change the name to something else,
-    e.g. <i>Bibliography-old</i> (indeed, OpenOffice.orgWriter does not allow for several bibliographies)</li>
-    <li>Close the <b>Options</b> window, and choose <b>File -> New -> Database</b></li>
-    <li>Choose <b>Connect to an existing database</b>, select <b>Spreadsheet</b> as
-    the database type, and choose the <b>.ods</b> file you exported</li>
-    <li>Click <b>Finish</b>, then choose the name <i>Bibliography</i> when prompted</li>
-</ul>                                       
-After finishing these steps, choose <b>Tools -> Bibliography Database</b>. Your database
-should now be displayed.
-<p>
-
-<h2>Using the exported file as bibliography database in OpenOffice 1.1.x</h2>
-
- <ul>
-    <li>Export your database using the <b>.sxc</b> format</li>
-    <li>Start OpenOffice.org</li>
-    <li>Choose <b>Tools -> Data sources</b></li>
-    <li>Select the <i>Bibliography</i> database, and change its name to something else,
-    e.g. <i>Bibliography-old</i>. Click <b>Apply</b>.</li>
-    <li>Click <b>New Data Source</b>. A new entry will appear. Change its name to
-        <i>Bibliography</i>.</li>
-     <li>Change <b>Database type</b> to <b>Spreadsheet</b>. Click  the <b>...</b> button
-     in the <b>Data source URL</b> line. Choose the <b>.sxc</b> file you exported.</li>
-     <li>Click <b>OK</b> to close the <b>Data Sources</b> window.</li>
-</ul>
-After finishing these steps, choose <b>Tools -> Bibliography Database</b>.
-Your database should now be displayed.
-
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Using JabRef bibliographies in OpenOffice.org</h1>
+
+    <p>JabRef can export your database in both the OpenOffice.org 1.1
+    <b>.sxc</b> spreadsheet format, and the OpenDocument
+    <b>.ods</b> spreadsheet format used by OpenOffice.org 2.0.</p>
+
+    <p>In both cases the exported spreadsheet will contain one data
+    sheet, listing entries in rows and the various fields in
+    columns. The order and names of the columns is set to be
+    compatible with OpenOffice.org's bibliography functions (OOo
+    1.1 in the case of the <b>.sxc</b> export, and OOo 2.0 in the
+    case of the <b>.ods</b> format).</p>
+
+    <h2>Using the exported file as bibliography database in
+    OpenOffice 2.0 or newer</h2>
+
+    <p>Use the following steps to set up a spreadsheet exported from
+    JabRef as bibliography database in OpenOffice.org:</p>
+
+    <ul>
+        <li>Export your database using the <b>.ods</b> format</li>
+
+        <li>Start OpenOffice.org</li>
+
+        <li>Choose <b>Tools -> Options -> OpenOffice.org Base
+        -> Databases</b></li>
+
+        <li>Edit the <i>Bibliography</i> database, and change the
+        name to something else, e.g. <i>Bibliography-old</i>
+        (indeed, OpenOffice.orgWriter does not allow for several
+        bibliographies)</li>
+
+        <li>Close the <b>Options</b> window, and choose <b>File
+        -> New -> Database</b></li>
+
+        <li>Choose <b>Connect to an existing database</b>, select
+        <b>Spreadsheet</b> as the database type, and choose the
+        <b>.ods</b> file you exported</li>
+
+        <li>Click <b>Finish</b>, then choose the name
+        <i>Bibliography</i> when prompted</li>
+    </ul>After finishing these steps, choose <b>Tools ->
+    Bibliography Database</b>. Your database should now be
+    displayed.
+
+    <h2>Using the exported file as bibliography database in
+    OpenOffice 1.1.x</h2>
+
+    <ul>
+        <li>Export your database using the <b>.sxc</b> format</li>
+
+        <li>Start OpenOffice.org</li>
+
+        <li>Choose <b>Tools -> Data sources</b></li>
+
+        <li>Select the <i>Bibliography</i> database, and change its
+        name to something else, e.g. <i>Bibliography-old</i>. Click
+        <b>Apply</b>.</li>
+
+        <li>Click <b>New Data Source</b>. A new entry will appear.
+        Change its name to <i>Bibliography</i>.</li>
+
+        <li>Change <b>Database type</b> to <b>Spreadsheet</b>.
+        Click the <b>...</b> button in the <b>Data source URL</b>
+        line. Choose the <b>.sxc</b> file you exported.</li>
+
+        <li>Click <b>OK</b> to close the <b>Data Sources</b>
+        window.</li>
+    </ul>After finishing these steps, choose <b>Tools ->
+    Bibliography Database</b>. Your database should now be
+    displayed.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/OwnerHelp.html b/src/help/OwnerHelp.html
index 7291951..8ce1853 100644
--- a/src/help/OwnerHelp.html
+++ b/src/help/OwnerHelp.html
@@ -1,15 +1,20 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>The 'owner' field</H1>
+    <h1>The 'owner' field</h1>
 
-JabRef can optionally mark all new entries added or imported to a database with your username.
-You can disable or enable this feature by entering <b>Preferences -> General</b>, and you can also
-change the name used to mark your entries. The default name used is your user name.
+    <p>JabRef can optionally mark all new
+    entries added or imported to a database with your username. You
+    can disable or enable this feature by entering <b>Preferences
+    -> General</b>, and you can also change the name used to
+    mark your entries. The default name used is your user name.</p>
 
-<p>The name will be added in a field called 'owner', which by default is visible in the <b>General fields</b>
-  tab in the Entry Editor.
-
-</HTML>
+    <p>The name will be added in a field called 'owner', which by
+    default is visible in the <b>General fields</b> tab in the
+    Entry Editor.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/PreviewHelp.html b/src/help/PreviewHelp.html
index 39b6b15..2b30ccf 100644
--- a/src/help/PreviewHelp.html
+++ b/src/help/PreviewHelp.html
@@ -1,17 +1,21 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Entry preview setup</H1>
+    <h1>Entry preview setup</h1>
 
-The entry preview is created using the same mechanism as used by the
-<a href="CustomExports.html">Custom export filter</a> facility. When previewed,
-an entry is processed using one of the two alternative layouts (you can switch between
-the two layouts by pressing F9) to produce HTML code which is displayed by the
-preview panel.
-
-To modify the appearance and contents of the preview you need to edit the preview layouts
-using the syntax described in the help file on <a href="CustomExports.html">Custom export filters</a>.
-
-</HTML>
+    <p>The entry preview is created using
+    the same mechanism as used by the
+    <a href="CustomExports.html">Custom export filter</a> facility.
+    When previewed, an entry is processed using one of the two
+    alternative layouts (you can switch between the two layouts by
+    pressing F9) to produce HTML code which is displayed by the
+    preview panel. To modify the appearance and contents of the
+    preview you need to edit the preview layouts using the syntax
+    described in the help file on
+    <a href="CustomExports.html">Custom export filters</a>.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/RemoteHelp.html b/src/help/RemoteHelp.html
index 86d28f4..d40e3db 100644
--- a/src/help/RemoteHelp.html
+++ b/src/help/RemoteHelp.html
@@ -1,35 +1,41 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Remote operation</H1>
-
-This feature can be toggled and configured under <b>Preferences -> Advanced</b>.
-
-<p><i>Note that activating this feature under Windows XP SP2 (and possibly other configurations)
-may prompt a message box stating that certain features of the program have been blocked by the
-Windows firewall. You can safely tell the firewall to keep blocking - the firewall will not interfere
-with remote operation of JabRef.</i>
-
-<p>If listening for remote operation is enabled, JabRef will at startup attempt to start listening
-to a specific port. This means that other applications can send information to JabRef through
-this port. JabRef will only accept local connections, to avoid the risk of interference from
-outside.
-
-<p>
-Binding to this port makes it possible for a second JabRef instance to discover that the first one is
-    running. In this case, unless specifically instructed to run in stand-alone mode,
-    the second JabRef instance will pass its command line options through the port to the first
-    JabRef instance, and then immediately quit.
-
-<p>The first JabRef instance will read the command line options, and perform the indicated actions,
-    such as reading or importing a file, or importing a file to the currently shown database.
-    If a file is imported using the command-line option <code>--importToOpen</code>, the imported
-    entries will be added to the currently shown database. If no database is open, a new one will
-    be created.
-
-
-
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Remote operation</h1>
+
+    <p>This feature can be toggled and
+    configured under <b>Preferences -> Advanced</b>.</p>
+
+    <p><i>Note that activating this feature under Windows XP SP2
+    (and possibly other configurations) may prompt a message box
+    stating that certain features of the program have been blocked
+    by the Windows firewall. You can safely tell the firewall to
+    keep blocking - the firewall will not interfere with remote
+    operation of JabRef.</i></p>
+
+    <p>If listening for remote operation is enabled, JabRef will at
+    startup attempt to start listening to a specific port. This
+    means that other applications can send information to JabRef
+    through this port. JabRef will only accept local connections,
+    to avoid the risk of interference from outside.</p>
+
+    <p>Binding to this port makes it possible for a second JabRef
+    instance to discover that the first one is running. In this
+    case, unless specifically instructed to run in stand-alone
+    mode, the second JabRef instance will pass its command line
+    options through the port to the first JabRef instance, and then
+    immediately quit.</p>
+
+    <p>The first JabRef instance will read the command line
+    options, and perform the indicated actions, such as reading or
+    importing a file, or importing a file to the currently shown
+    database. If a file is imported using the command-line option
+    <code>--importToOpen</code>, the imported entries will be added
+    to the currently shown database. If no database is open, a new
+    one will be created.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/SearchHelp.html b/src/help/SearchHelp.html
index f9ca60d..18a7cca 100644
--- a/src/help/SearchHelp.html
+++ b/src/help/SearchHelp.html
@@ -1,71 +1,101 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Searching</H1>
-
-
-There are three different search modes in JabRef.
-
-<p>
-<em>CTRL-F</em> opens or focuses the search interface. Pressing
-<em>CTRL-F</em> several times toggles search mode. When searching
-incrementally, pressing <em>CTRL-F</em> makes the program search for
-the next occurence of the search string.
-<p>
-<em>CTRL-SHIFT-F</em> opens or focuses the search interface, and
-selects incremental search. When searching incrementally,
-<em>CTRL-SHIFT-F</em> also finds the next occurence of the search
-string.
-
-<H2>Incremental search</H2>
-
-When searching incrementally, the program searches immediately each
-time you press a letter. The status line informs you about the success
-of the search. Pressing the search shortcut keys causes the program to
-find the next occurrence of the current search string. If no further
-occurrences can be found, the status line will notify you about
-this. Repeating the search again causes the search to restart at the
-top. The search order always follows the current sorting of your
-database. To escape an incremental search, press ESC or click "Clear
-search".
-
-<H2>Normal</H2>
-
-In a normal search, the program searches your database for all occurences of the words in your
-search string, once you press ENTER. Only entries containing all words will be considered matches.
-To search for sequences of words, enclose the sequences in double quotes. For instance, the query
-<b>progress "marine aquaculture"</b> will match entries containing both the word "progress" and the
-phrase "marine aquaculture". All entries that don't match are hidden, leaving for display the
-matching entries only (filter mode), or are grayed-out (float mode).
-To stop displaying the search results, press ESC or click "Clear search".
-
-<a name="advanced"><H2>Field specification, logical operators</H2>
-
-In order to search specific fields only and/or include logical operators in the search expression, a special syntax is available in which these can be specified. E.g. to search for entries whose author is "Miller", enter (in any but incremental search mode):
-<p>
-author = miller
-<p>
-Both the field specification and the search term support regular expressions. If the search term contains spaces, enclose it in quotes. Do <i>not</i> use spaces in the field specification! E.g. to search for entries about image processing, type:
-<p>
-title|keywords = "image processing"
-<p>
-You can use "and", "or", "not", and braces as intuitively expected:
-<p>
-(author = miller or title|keywords = "image processing") and not author = brown
-<p>
-The "=" sign is actually a shorthand for "contains". Searching for an exact match is possible using "matches" or "==". Using "!=" tests if the search term is <i>not</i> contained in the field (equivalent to "not ... contains ..."). The selection of field types to search (required, optional, all) is always overruled by the field specification in the search expression. To search for entries of a certain type, a pseudo field called "entrytype" is available:
-<p>
-entrytype = thesis
-<p>
-This finds entries whose type (as displayed in the "Entrytype" column) contains the word "thesis" (which would be "phdthesis" and "mastersthesis"). Another pseudo field "bibtexkey" allows to search for citation keys, e.g.
-<p>
-bibtexkey = miller2005
-
-<H2>Search settings</H2>
-
- The <em>Settings</em> button opens a menu that allows to toggle case sensitivity and use of regular expressions in the search, and whether search results should be selected in the table.
-
-</BODY>
-</HTML> 
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Searching</h1>
+
+    <p>There are three different search modes in JabRef.</p>
+
+    <p><em>CTRL-F</em> opens or focuses the search interface.
+    Pressing <em>CTRL-F</em> several times toggles search mode.
+    When searching incrementally, pressing <em>CTRL-F</em> makes
+    the program search for the next occurence of the search
+    string.</p>
+
+    <p><em>CTRL-SHIFT-F</em> opens or focuses the search interface,
+    and selects incremental search. When searching incrementally,
+    <em>CTRL-SHIFT-F</em> also finds the next occurence of the
+    search string.</p>
+
+    <h2>Incremental search</h2>
+
+    <p>When searching incrementally, the
+    program searches immediately each time you press a letter. The
+    status line informs you about the success of the search.
+    Pressing the search shortcut keys causes the program to find
+    the next occurrence of the current search string. If no further
+    occurrences can be found, the status line will notify you about
+    this. Repeating the search again causes the search to restart
+    at the top. The search order always follows the current sorting
+    of your database. To escape an incremental search, press ESC or
+    click "Clear search".</p>
+
+    <h2>Normal</h2>
+
+    <p>In a normal search, the program searches your
+    database for all occurences of the words in your search string,
+    once you press ENTER. Only entries containing all words will be
+    considered matches. To search for sequences of words, enclose
+    the sequences in double quotes. For instance, the query
+    <b>progress "marine aquaculture"</b> will match entries
+    containing both the word "progress" and the phrase "marine
+    aquaculture". All entries that don't match are hidden, leaving
+    for display the matching entries only (filter mode), or are
+    grayed-out (float mode). To stop displaying the search results,
+    press ESC or click "Clear search".</p>
+
+    <h2><a name="advanced"
+       id="advanced">Field specification, logical
+       operators</a></h2>
+
+       <p>In order to search specific fields only
+       and/or include logical operators in the search expression, a
+       special syntax is available in which these can be specified.
+       E.g. to search for entries whose author is "Miller", enter
+       (in any but incremental search mode):</p>
+
+    <p>author = miller</p>
+
+    <p>Both the field specification and the search term support
+    regular expressions. If the search term contains spaces,
+    enclose it in quotes. Do <i>not</i> use spaces in the field
+    specification! E.g. to search for entries about image
+    processing, type:</p>
+
+    <p>title|keywords = "image processing"</p>
+
+    <p>You can use "and", "or", "not", and braces as intuitively
+    expected:</p>
+
+    <p>(author = miller or title|keywords = "image processing") and
+    not author = brown</p>
+
+    <p>The "=" sign is actually a shorthand for "contains".
+    Searching for an exact match is possible using "matches" or
+    "==". Using "!=" tests if the search term is <i>not</i>
+    contained in the field (equivalent to "not ... contains ...").
+    The selection of field types to search (required, optional,
+    all) is always overruled by the field specification in the
+    search expression. To search for entries of a certain type, a
+    pseudo field called "entrytype" is available:</p>
+
+    <p>entrytype = thesis</p>
+
+    <p>This finds entries whose type (as displayed in the
+    "Entrytype" column) contains the word "thesis" (which would be
+    "phdthesis" and "mastersthesis"). Another pseudo field
+    "bibtexkey" allows to search for citation keys, e.g.</p>
+
+    <p>bibtexkey = miller2005</p>
+
+    <h2>Search settings</h2>
+
+    <p>The <em>Settings</em> button opens a
+    menu that allows to toggle case sensitivity and use of regular
+    expressions in the search, and whether search results should be
+    selected in the table.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/ShortAuxImport.html b/src/help/ShortAuxImport.html
index 7a9d14b..6bc6c0c 100644
--- a/src/help/ShortAuxImport.html
+++ b/src/help/ShortAuxImport.html
@@ -1,7 +1,10 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
 <body>
-<basefont size="-1" color="#2F4958" face="arial">
-This feature generates a new database, which contains only the used references of an existing TeX project.
-</body></html>
\ No newline at end of file
+    <basefont size="-1"
+          color="#2F4958"
+          face="arial" /> This feature generates a new database,
+          which contains only the used references of an existing
+          TeX project.
+</body>
+</html>
diff --git a/src/help/ShortIntegrityCheck.html b/src/help/ShortIntegrityCheck.html
index 510f99e..8cac5e9 100644
--- a/src/help/ShortIntegrityCheck.html
+++ b/src/help/ShortIntegrityCheck.html
@@ -1,8 +1,10 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
 <body>
-<basefont size="-1" color="#2F4958" face="arial">
-Integrity check is a process that checks for indications of wrongly 
-filled out bibtex fields. "Scan" is the button that starts the check.
-<br>
-</body></html>
\ No newline at end of file
+    <basefont size="-1"
+          color="#2F4958"
+          face="arial" /> Integrity check is a process that checks
+          for indications of wrongly filled out bibtex fields.
+          "Scan" is the button that starts the check. <br />
+</body>
+</html>
diff --git a/src/help/ShortPlainImport.html b/src/help/ShortPlainImport.html
index c11affb..97de394 100644
--- a/src/help/ShortPlainImport.html
+++ b/src/help/ShortPlainImport.html
@@ -1,7 +1,11 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
 <body>
-<basefont size="-1" color="#2F4958" face="arial">This is a simple copy
-and paste dialog. First load or paste some text into the text input
-area.  After that, you can mark text and assign it to a bibtex field. <br>
-</body></html>
\ No newline at end of file
+    <basefont size="-1"
+          color="#2F4958"
+          face="arial" />This is a simple copy and paste dialog.
+          First load or paste some text into the text input
+          area.  After that, you can mark text and assign it
+          to a bibtex field. <br />
+</body>
+</html>
diff --git a/src/help/StringEditorHelp.html b/src/help/StringEditorHelp.html
index e869da1..381d1bf 100755
--- a/src/help/StringEditorHelp.html
+++ b/src/help/StringEditorHelp.html
@@ -1,46 +1,51 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>The string editor</H1>
-<em>Opened from the main window by <em>Edit strings</em> or pressing a
-button in the toolbar.</em>
-<P>
-<em>Strings</em> are the <em>bibtex</em> equivalent to constants in a
-programming language.  Each string is defined with a unique
-<em>name</em> and a <em>content</em>. Elsewhere in the database, the
-name can be used to represent the content.
-
-<P>
-For instance, if many entries are from a journal with an abbreviation
-that may be hard to remember, such as 'J. Theor. Biol.' (Journal of
-Theroretical Biology), a string named JTB could be defined to
-represent the journal's name. Instead of repeating the exact journal
-name in each entry, the characters '#JTB#' (without quotes) are put into the
-<em>journal</em> field of each, ensuring the journal name is written
-identically each time.
-
-<P>
-A string reference can appear anywhere in a field, always by enclosing
-the string's name in a pair of '#' characters. This syntax is specific for
-JabRef, and differs slightly from the <em>bibtex</em> notation that
-is produced when you save your database. Strings can by default be used for all
-standard BibTeX fields, and in <b>Preferences -> General -> File</b> you can opt to
-enable strings for non-standard fields as well. In the latter case you can specify a
-set of fields that are excepted from string resolving, and here it is recommended
-to include the 'url' field and other fields that may need to contain the '#' character
-and that may be processed by BibTeX/LaTeX.
-
-<P>
-A string may in the same way be referred in the content of another
-string, provided the referred string is defined <em>before</em> the
-referring one.
-
-<p>While the order of strings in your BibTeX file is important in some cases,
-you don't have to worry about this when using JabRef. The strings will be displayed
-in alphabetical order in the string editor, and stored in the same order, except when
-a different ordering is required by BibTeX.
-
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>The string editor</h1>
+
+    <p><em>Opened from the main window
+    by</em> Edit strings or pressing a button in the toolbar.</p>
+
+    <p><em>Strings</em> are the <em>bibtex</em> equivalent to
+    constants in a programming language. Each string is defined
+    with a unique <em>name</em> and a <em>content</em>. Elsewhere
+    in the database, the name can be used to represent the
+    content.</p>
+
+    <p>For instance, if many entries are from a journal with an
+    abbreviation that may be hard to remember, such as 'J. Theor.
+    Biol.' (Journal of Theroretical Biology), a string named JTB
+    could be defined to represent the journal's name. Instead of
+    repeating the exact journal name in each entry, the characters
+    '#JTB#' (without quotes) are put into the <em>journal</em>
+    field of each, ensuring the journal name is written identically
+    each time.</p>
+
+    <p>A string reference can appear anywhere in a field, always by
+    enclosing the string's name in a pair of '#' characters. This
+    syntax is specific for JabRef, and differs slightly from the
+    <em>bibtex</em> notation that is produced when you save your
+    database. Strings can by default be used for all standard
+    BibTeX fields, and in <b>Preferences -> General ->
+    File</b> you can opt to enable strings for non-standard fields
+    as well. In the latter case you can specify a set of fields
+    that are excepted from string resolving, and here it is
+    recommended to include the 'url' field and other fields that
+    may need to contain the '#' character and that may be processed
+    by BibTeX/LaTeX.</p>
+
+    <p>A string may in the same way be referred in the content of
+    another string, provided the referred string is defined
+    <em>before</em> the referring one.</p>
+
+    <p>While the order of strings in your BibTeX file is important
+    in some cases, you don't have to worry about this when using
+    JabRef. The strings will be displayed in alphabetical order in
+    the string editor, and stored in the same order, except when a
+    different ordering is required by BibTeX.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/TimeStampHelp.html b/src/help/TimeStampHelp.html
index 594a76d..2bd6bef 100644
--- a/src/help/TimeStampHelp.html
+++ b/src/help/TimeStampHelp.html
@@ -1,37 +1,50 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Entry time stamps</H1>
+    <h1>Entry time stamps</h1>
 
-This feature can be toggled and configured under <b>Options -> Preferences -> General</b>.
+    <p>This feature can be toggled and configured under <b>Options ->
+    Preferences -> General</b>.</p>
 
-<p>JabRef can automatically set a field to contain the date an entry was added to the database.
+    <p>JabRef can automatically set a field to contain the date an
+    entry was added to the database.</p>
 
-<H2>Formatting</H2>
+    <h2>Formatting</h2>
 
-The formatting of the time stamp is determined by a string containing designator words that indicate
-the position of the various parts of the date.
-<p>
-These are some of the available designator letters (examples are given in parentheses for
-Wednesday 14th of September 2005 at 5.45 PM):
-<ul>
-    <li><b>yy</b>: year (05)</li>
-    <li><b>yyyy</b>: year (2005)</li>
-    <li><b>MM</b>: month (09)</li>
-    <li><b>dd</b>: day in month (14)</li>
-    <li><b>HH</b>: hour in day (17)</li>
-    <li><b>mm</b>: minute in hour (45)</li>
-</ul>
+    <p>The formatting of the time stamp is
+    determined by a string containing designator words that
+    indicate the position of the various parts of the date.</p>
 
-These designators can be combined along with punctuation and whitespace. A couple of examples:
+    <p>These are some of the available designator letters (examples
+    are given in parentheses for Wednesday 14th of September 2005
+    at 5.45 PM):</p>
 
-<ul>
-<li><b>yyyy.MM.dd</b> gives <b>2005.09.14</b></li>
-<li><b>yy.MM.dd</b> gives <b>05.09.14</b></li>
-<li><b>yyyy.MM.dd HH:mm</b> gives <b>2005.09.14 17:45</b></li>
-</ul>
+    <ul>
+        <li><b>yy</b>: year (05)</li>
 
-</BODY>
-</HTML>
+        <li><b>yyyy</b>: year (2005)</li>
+
+        <li><b>MM</b>: month (09)</li>
+
+        <li><b>dd</b>: day in month (14)</li>
+
+        <li><b>HH</b>: hour in day (17)</li>
+
+        <li><b>mm</b>: minute in hour (45)</li>
+    </ul>These designators can be combined along with punctuation
+    and whitespace. A couple of examples:
+
+    <ul>
+        <li><b>yyyy.MM.dd</b> gives <b>2005.09.14</b></li>
+
+        <li><b>yy.MM.dd</b> gives <b>05.09.14</b></li>
+
+        <li><b>yyyy.MM.dd HH:mm</b> gives <b>2005.09.14
+        17:45</b></li>
+    </ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/XMPHelp.html b/src/help/XMPHelp.html
index aeff817..3531e3f 100644
--- a/src/help/XMPHelp.html
+++ b/src/help/XMPHelp.html
@@ -1,59 +1,97 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>XMP metadata support in JabRef</H1>
-<p>
-XMP is a standard created by Adobe Systems for storing metadata (data about data) in files.
-An well known example for metadata are MP3 tags, which can be used to describe artist, album and song name
-of a MP3 file. Adding metadata to MP3 helps other people to identify the songs correctly independent of file-name
-and can provide means for software (MP3 players for instance) to sort and group songs.
-</p>
-<p>
-With XMP-support the JabRef team tries to bring the advantages of metadata to the world of reference managers.
-You can now choose to "Write XMP" metadata in the General Tab of JabRef, which will put all the Bibtex information
-into the PDF. If you then email this PDF to a collegue she can just drag the file into JabRef and all information
-that you entered will be available to her.
-</p>
-
-<H2>Usage</H2>
-
-To use the XMP-feature in JabRef you can do the following:
-
-<ul>
-  <li>To <b>import a single annotated PDF-file</b> that contains XMP you can select "File -> Import into... -> XMP-annotated PDF" or drag the file into the main view.</li>
-  <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". 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>
-
-<p>
-XMP uses a subset of the Resource Description Framework (RDF) to store data. For JabRef a new metadata
-format is used which maps very closely to BibTeX. Basically all fields and values are turned into
-nodes of an XML document. Only authors and editors are stored as rdf:Seq-structures, so users
-of the data can skip the splitting on 'and's. All strings and crossrefs will be resolved in the data.
-</p>
-<p>
-The following easy minimal schema is used:
-</p>
-<p>
-<ul>
-  <li>The BibTeX-key is stored as <code>bibtexkey</code>.</li>
-  <li>The type of the BibTeX-entry is stored as <code>entrytype</code>.</li>
-  <li><code>author</code> and <code>editor</code> are encoding as <code>rdf:Seq</code>s where the
-  individual authors are represented as <code>rdf:li</code>s.</li>
-  <li>All other fields are saved using their field-name as is.</li>
-</ul>
-</p>
-<p>
-The following is an example of the mapping
-</p>
-<pre>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>XMP metadata support in JabRef</h1>
+
+    <p>XMP is a standard created by Adobe Systems for storing
+    metadata (data about data) in files. An well known example for
+    metadata are MP3 tags, which can be used to describe artist,
+    album and song name of a MP3 file. Adding metadata to MP3 helps
+    other people to identify the songs correctly independent of
+    file-name and can provide means for software (MP3 players for
+    instance) to sort and group songs.</p>
+
+    <p>With XMP-support the JabRef team tries to bring the
+    advantages of metadata to the world of reference managers. You
+    can now choose to "Write XMP" metadata in the General Tab of
+    JabRef, which will put all the Bibtex information into the PDF.
+    If you then email this PDF to a collegue she can just drag the
+    file into JabRef and all information that you entered will be
+    available to her.</p>
+
+    <h2>Usage</h2>
+
+    <p>To use the XMP-feature in JabRef you can do the
+    following:</p>
+
+    <ul>
+        <li>To <b>import a single annotated PDF-file</b> that
+        contains XMP you can select "File -> Import into...
+        -> XMP-annotated PDF" or drag the file into the main
+        view.</li>
+
+        <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". 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>
+
+        <li style="list-style: none">
+            <div style="margin-left: 2em">
+                <h2>BibteXmp Fileformat</h2>
+
+                <p>XMP uses a subset of the Resource Description
+                Framework (RDF) to store data. For JabRef a new
+                metadata format is used which maps very closely to
+                BibTeX. Basically all fields and values are turned
+                into nodes of an XML document. Only authors and
+                editors are stored as rdf:Seq-structures, so users
+                of the data can skip the splitting on 'and's. All
+                strings and crossrefs will be resolved in the
+                data.</p>
+
+                <p>The following easy minimal schema is used:</p>
+
+                <ul>
+                    <li>The BibTeX-key is stored as
+                    <code>bibtexkey</code>.</li>
+
+                    <li>The type of the BibTeX-entry is stored as
+                    <code>entrytype</code>.</li>
+
+                    <li><code>author</code> and <code>editor</code>
+                    are encoding as <code>rdf:Seq</code>s where the
+                    individual authors are represented as
+                    <code>rdf:li</code>s.</li>
+
+                    <li>All other fields are saved using their
+                    field-name as is.</li>
+                </ul><br />
+                <br />
+
+
+                <p>The following is an example of the mapping</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},
@@ -63,19 +101,16 @@ The following is an example of the mapping
   timestamp = {2006.05.29},
   url = {http://james.howison.name/publications.html}
 }
-</pre>
-
-will be transformed into
-
-<pre>
-<rdf:Description xmlns:bibtex="http://jabref.sourceforge.net/bibteXMP/"
-    bibtex:bibtexkey="CroAnnHow05"
-    bibtex:year="2005"
-    bibtex:title="Effective work practices for floss development: A model and propositions"
-    bibtex:owner="oezbek"
-    bibtex:url="http://james.howison.name/publications.html"
-    bibtex:booktitle="Hawaii International Conference On System Sciences (HICSS)"
-    bibtex:timestamp="2006.05.29">
+</pre>will be transformed into
+                <pre>
+<rdf:Description xmlns:bibtex="http://jabref.sourceforge.net/bibteXMP/"
+    bibtex:bibtexkey="CroAnnHow05"
+    bibtex:year="2005"
+    bibtex:title="Effective work practices for floss development: A model and propositions"
+    bibtex:owner="oezbek"
+    bibtex:url="http://james.howison.name/publications.html"
+    bibtex:booktitle="Hawaii International Conference On System Sciences (HICSS)"
+    bibtex:timestamp="2006.05.29">
         <bibtex:author>
             <rdf:Seq>
                 <rdf:li>K. Crowston</rdf:li>
@@ -86,30 +121,50 @@ will be transformed into
         </bibtex:author>
     <bibtex:entrytype>Inproceedings</bibtex:entrytype>
 </rdf:Description>
-</pre></td></tr>
-</table>
-
-<p>
-Beware of the following caveats if you trying to parse bibteXMP:
-</p>
-<p>
-<ul>
-  <li>In RDF attribute-value pairs can also be expressed as nodes and vice versa.</li>
-</ul>
-</p>
-<H2>Related Links:</H2>
-<p>
-Some links about XMP and annotating PDFs:
-</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 article about XMP</a></li>
-  <li><a href="http://jempbox.org">JempBox</a> and <a href="http://pdfbox.org">PDFBox</a> by Ben Litchfield are the Jaba libraries
-  used to access the PDFs and the metadata stream.</a></li>
-  <li><a href="http://episteme.arstechnica.com/eve/ubb.x/a/tpc/f/8300945231/m/377001889631">Good thread on ArsTechnica discussing the management of PDFs.</a></li>
-  <li><a href="http://partners.adobe.com/public/developer/en/xmp/sdk/xmpspecification.pdf">Adobe XMP Specification</a></li>
-</ul>
-</p>
+</pre>
+
+                <p>Beware of the following caveats if you trying to
+                parse bibteXMP:</p>
+
+                <ul>
+                    <li>In RDF attribute-value pairs can also be
+                    expressed as nodes and vice versa.</li>
+                </ul><br />
+                <br />
+
+
+                <h2>Related Links:</h2>
+
+                <p>Some links about XMP and annotating PDFs:</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 article about XMP</a></li>
+
+                    <li><a href="http://jempbox.org">JempBox</a>
+                    and <a href="http://pdfbox.org">PDFBox</a> by
+                    Ben Litchfield are the Jaba libraries used to
+                    access the PDFs and the metadata stream.</li>
+
+                    <li>
+                    <a href="http://episteme.arstechnica.com/eve/ubb.x/a/tpc/f/8300945231/m/377001889631">
+                    Good thread on ArsTechnica discussing the
+                    management of PDFs.</a></li>
+
+                    <li>
+                    <a href="http://partners.adobe.com/public/developer/en/xmp/sdk/xmpspecification.pdf">
+                    Adobe XMP Specification</a></li>
+                </ul><br />
+                <br />
+
+            </div>
+        </li>
+    </ul>
 </body>
-</HTML>
\ No newline at end of file
+</html>
\ No newline at end of file
diff --git a/src/help/de/About.html b/src/help/de/About.html
index b47ff1d..90c1fe1 100644
--- a/src/help/de/About.html
+++ b/src/help/de/About.html
@@ -1,110 +1,131 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
 
 <body text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-<center>
-<h1>JabRef Version @version@</h1>
-
-(c) 2007
-<p>
-<img src="/images/JabRef-icon-48.png"></img>
-
-
-<p>
-JabRef ist frei verfügbar unter den Bedingungen der GNU
-<a href="License.html">General Public License</a>.
-
-</p><h2>Entwickler:</h2>
-Morten O. Alver,
-Nizar N. Batada,
-Michel Baylac,
-Guillaume Gardey,
-Cyrille d'Haese,
-Raik Nagel,
-Christopher Oezbek,
-Ellen Reitmayr,
-Gert Renckens,
-Andreas Rudert,
-Michael Spiegel,
-Ulrik Stervbo,
-Dominik Waßenhoven,
-Joerg K. Wegner,
-Michael Wrighton,
-Egon Willighagen,
-Jörg Zieren
-
-<h2>Beiträge von:</h2>
-Michael Beckmann,
-Oliver Böckmann,
-Kolja Brix,
-Frédéric Darboux,
-Fabrice Dessaint,
-Nathan Dunn,
-Brian Van Essen,
-Alexis Gallagher,
-David Gleich,
-Sascha Hunold,
-Bernd Kalbfuss,
-Martin Kähmer,
-Ervin Kolenovic,
-Krzysztof A. Kościuszkiewicz,
-Christian Kopf,
-Jeffrey Kuhn,
-Alex Montgomery,
-S. M. Mahbub Murshed,
-Ambrogio Oliva,
-Stephan Rave,
-John Relph,
-Hannes Restel,
-Moritz Ringler,
-Andreas Rudert,
-Mark Schenk,
-Rudolf Seemann,
-Toralf Senger,
-Manuel Siebeneicher,
-Mike Smoot,
-Ulrich Stärk,
-Martin Stolle,
-David Weitzman,
-Seb Wills,
-John Zedlewski
-
-<h2>Dank an:</h2>
-Samin Muhammad Ridwanul Karim,
-Stefan Robert
-
-<h2>Benutzte Fremdsoftware:</h2>
-JabRef benutzt JGoodies Looks 2.0.4 und JGoodiesForms 1.0.5, das von JGoodies (<code>http://www.jgoodies.com</code>) unter den Bedingungen der BSD-Lizenz vertrieben wird (siehe <code>http://www.opensource.org/licenses/bsd-license.html</code> für nähere Einzelheiten dieser Lizenz).
-<p>
-Außerdem werden zwei zustätzliche Klassen
-(SimpleInternalFrame and UIFSplitPane) von Karsten Lentzsch benutzt,
-die unter <a href="jgoodies.html">diesen Bedingungen</a> vertrieben werden.
-</p><p>
-Kommandozeilenbefehle werden geparst mit RitOpt (<code>http://ritopt.sourceforge.net</code>), das unter den Bedingungen der GNU <a href="License.html">General Public License</a> (Version 2) verfügbar ist.
-</p><p>
-JabRef verwendet für die Suche den ANTLR Parser Generator. ANTLR ist public domain software - siehe <code>http://www.antlr.org/license.html</code> für die Lizenzbedingungen.
-</p><p>
-Für die Darstellung und Filterung der Tabelle benutzt JabRef die Glazed Lists library
-    (<code>http://publicobject.com/glazedlists</code>), die unter den Bedingungen der Lesser General Public License vertrieben wird.
-</p><p>
-JabRef benutzt darüber hinaus die "threading library" Spin 1.3.1,
-die ebenfalls unter den Bedingungen der Lesser General Public License
-vertrieben wird.<br>
-</p>
-<p>Für die einfache Auswahl und den Umgang mit Datumsangaben
-werden Komponenten der Microba-Bibliothek verwenden. Diese wird unter
-einer BSD-Lizenz vertrieben, siehe <code>http://sourceforge.net/projects/microba/</code>
-für eine genauere Beschreibung.
-
-</p><p>
-Die meisten Icons stammen aus dem Crystal Clear Icon-Set von Everaldo
-(<code>http://www.everaldo.com</code>), das unter den Bedingungen
-der Lesser General Public License vertrieben wird.
-
-<P>
-JabRef verwendet für die Behandlung von PDF-Dateien die JempBox- und PDFBox-Bibliotheken, die unter
-einer BSD-Lizenz vertrieben werden.
-
-</p></center>
-</body></html>
\ No newline at end of file
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <center>
+        <h1>JabRef Version @version@</h1>
+
+        <p>(c) 2007</p>
+
+        <p><img src="/images/JabRef-icon-48.png" /></p>
+
+        <p>JabRef ist frei verfügbar unter den Bedingungen der
+        GNU <a href="License.html">General Public License</a>.</p>
+
+        <h2>Entwickler:</h2>
+
+        <p>Morten O. Alver,
+        Nizar N. Batada,
+        Michel Baylac,
+        Kolja Brix,
+        Frédéric Darboux,
+        Guillaume Gardey,
+        Cyrille d'Haese,
+        S. M. Mahbub Murshed,
+        Raik Nagel,
+        Christopher Oezbek,
+        Ellen Reitmayr,
+        Gert Renckens,
+        Andreas Rudert,
+        Michael Spiegel,
+        Ulrik Stervbo,
+        Dominik Waßenhoven,
+        Joerg K. Wegner,
+        Michael Wrighton,
+        Egon Willighagen,
+        Jörg Zieren</p>
+
+        <h2>Beiträge von:</h2>
+
+        <p>Michael Beckmann,
+        Oliver Böckmann,
+        Fabrice Dessaint,
+        Nathan Dunn,
+        Brian Van Essen,
+        Alexis Gallagher,
+        David Gleich,
+        Sascha Hunold,
+        Bernd Kalbfuss,
+        Martin Kähmer,
+        Ervin Kolenovic,
+        Krzysztof A. Kościuszkiewicz,
+        Christian Kopf,
+        Jeffrey Kuhn,
+        Alex Montgomery,
+        Ambrogio Oliva,
+        Stephan Rave,
+        John Relph,
+        Hannes Restel,
+        Moritz Ringler,
+        Andreas Rudert,
+        Mark Schenk,
+        Rudolf Seemann,
+        Toralf Senger,
+        Manuel Siebeneicher,
+        Mike Smoot,
+        Ulrich Stärk,
+        Martin Stolle,
+        David Weitzman,
+        Seb Wills,
+        John Zedlewski</p>
+
+        <h2>Dank an:</h2>
+
+        <p>Samin Muhammad Ridwanul Karim,
+        Stefan Robert</p>
+
+        <h2>Benutzte Fremdsoftware:</h2>
+
+        <p>JabRef benutzt JGoodies
+        Looks 2.0.4 und JGoodiesForms 1.0.5, das von JGoodies
+        (<code>http://www.jgoodies.com</code>) unter den
+        Bedingungen der BSD-Lizenz vertrieben wird (siehe
+        <code>http://www.opensource.org/licenses/bsd-license.html</code>
+        für nähere Einzelheiten dieser Lizenz).</p>
+
+        <p>Außerdem werden zwei zustätzliche Klassen
+        (SimpleInternalFrame and UIFSplitPane) von Karsten Lentzsch
+        benutzt, die unter <a href="jgoodies.html">diesen
+        Bedingungen</a> vertrieben werden.</p>
+
+        <p>Kommandozeilenbefehle werden geparst mit RitOpt
+        (<code>http://ritopt.sourceforge.net</code>), das unter den
+        Bedingungen der GNU <a href="License.html">General Public
+        License</a> (Version 2) verfügbar ist.</p>
+
+        <p>JabRef verwendet für die Suche den ANTLR Parser
+        Generator. ANTLR ist public domain software - siehe
+        <code>http://www.antlr.org/license.html</code> für die
+        Lizenzbedingungen.</p>
+
+        <p>Für die Darstellung und Filterung der Tabelle
+        benutzt JabRef die Glazed Lists library
+        (<code>http://publicobject.com/glazedlists</code>), die
+        unter den Bedingungen der Lesser General Public License
+        vertrieben wird.</p>
+
+        <p>JabRef benutzt darüber hinaus die "threading
+        library" Spin 1.3.1, die ebenfalls unter den Bedingungen
+        der Lesser General Public License vertrieben wird.</p>
+
+        <p>Für die einfache Auswahl und den Umgang mit
+        Datumsangaben werden Komponenten der Microba-Bibliothek
+        verwenden. Diese wird unter einer BSD-Lizenz vertrieben,
+        siehe <code>http://sourceforge.net/projects/microba/</code>
+        für eine genauere Beschreibung.</p>
+
+        <p>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>
+
+        <p>JabRef verwendet für die Behandlung von PDF-Dateien
+        die JempBox- und PDFBox-Bibliotheken, die unter einer
+        BSD-Lizenz vertrieben werden.</p>
+    </center>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/BaseFrameHelp.html b/src/help/de/BaseFrameHelp.html
index 9515441..b929276 100644
--- a/src/help/de/BaseFrameHelp.html
+++ b/src/help/de/BaseFrameHelp.html
@@ -1,59 +1,140 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Das Hauptfenster von JabRef</H1>
-
-<em>Anmerkung:</em> Die meisten Menüfunktionen, auf die im Folgenden hingewiesen wird, haben Tastenkürzel, und viele Funktionen können über die Werkzeugleiste aufgerufen werden.
-
-<p>
-Dies ist das Hauptfenster, in dem Sie mit Ihrer Datei arbeiten. Unter der Menüleiste und der Werkzeugleiste befindet sich 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 auflistet.
-
-<ul>
-<li>Die Auswahl der entsprechenden Felder können Sie im <strong>Einstellungs</strong>-Dialog vornehmen.</li>
-
-<li>Mit einem Doppelklick auf eine Tabellenzeile können Sie den Inhalt bearbeiten (der <a href="EntryEditorHelp.html">Eintragseditor</a> wird geöffnet). Sie können mit den Pfeiltasten innerhalb der Tabelle navigieren. Wenn Sie einen Buchstaben drücken, springen Sie zu dem ersten Eintrag, der mit diesem Buchstaben beginnt (abhängig von der Spalte, nach der Sie die Tabelle sortiert haben).</li>
-
-<li>Die Tabelle wird nach einem Feld Ihrer Wahl sortiert. Sie können das Standardverhalten unter <strong>Optionen -> Einstellungen -> Tabellenansicht</strong> angeben. Um die Sortierreihenfolge schnell zu ändern, klicken Sie einfach auf die Kopfzeile einer Spalte; damit haben Sie das primäre Sortierkriterium definiert. Klicken Sie erneut auf den Spaltenkopf, um die Sortierrichtung umzukehren. Ein weiterer Klick sorgt dafür, dass die Spalte nicht mehr zur Sortierung he [...]
-
-<li>Sie können die Breite der Tabellenspalten einstellen, indem Sie die Trennlinie zwischen den Spaltenköpfen anklicken und verschieben. Die Reihenfolge der Spalten können Sie festlegen, indem Sie mit der Maus auf den Spaltenkopf klicken und die Spalte an die gewünschte Stelle ziehen.</li>
-
-<li>Im <strong>Einstellungs</strong>-Dialog können Sie festlegen, ob die Tabelle an die Bildschirmgröße angepasst werden soll oder nicht. Aktivieren Sie diese Funktion, um sicherzustellen, dass Sie die gesamte Tabelle sehen können. Deaktivieren Sie diese Funktion, wenn mehr Informationen dargestellt werden sollen.</li>
-
-<li>Die Farbanzeige kann ebenfalls im <strong>Einstellungs</strong>-Dialog ein- und ausgeschaltet werden. Die Farbanzeige illustriert, ob Ihre Daten vollständig sind, indem sie die Zellen wie folgt darstellt:
-	<ul>
-	<li>Eine <font color="red">rote</font> Zelle in der linken 	Spalte kennzeichnet einen unvollständigen Eintrag.</li>
-	<li>Eine <font color="#909000">gelbe</font> Zelle in der linken 	Spalte kennzeichnet einen Eintrag, der nicht alle benötigten 	Felder selbst enthält, der aber einen Querverweis enthält.</li>
-	<li>Eine <font color="blue">blaue</font> Zelle kennzeichnet ein 	benötigtes Feld.</li>
-	<li>Eine <font color="green">grüne</font> Zelle kennzeichnet 	ein optionales Feld.</li>
-	<li>Eine farblose (weiße) Zelle kennzeichnet ein Feld, das von 	BibTeX für diesen Eintragstyp nicht benutzt wird. Das Feld can 	selbstverständlich in JabRef bearbeitet werden.</li>
-	</ul>
-</li>
-</ul>
-
-<H2>Einen neuen Eintrag hinzufügen</H2>
-
-Es gibt verschiedene Möglichkeiten, einen neuen Eintrag hinzuzufügen. Im Menü <strong>BibTeX</strong> führt ein Klick auf <strong>Neuer Eintrag</strong> zu einem Dialog, in dem Sie den Eintragstyp aus einer Liste wählen können. Um diesen Dialog zu umgehen, gibt es auch eigene Menüpunkte für jeden Eintragstyp und außerdem Tastenkürzel für die gängigsten Typen.
-
-<P>Wenn ein Eintrag hinzugefügt wird, wird standardmäßig ein
-<a href="EntryEditorHelp.html">Editor</a> für den Eintrag geöffnet. Sie können dieses Verhalten im <strong>Einstellungs</strong>-Dialog abstellen.
-
-<P><em>Anmerkung:</em> Wir empfehlen dringend, sich die Tastenkürzel für die Eintragstypen einzuprägen, die Sie am häufigsten benutzen, z.B. STRG-SHIFT-A für einen Zeitschriftenaufsatz (<em>article</em>).
-
-<H2>Einen Eintrag bearbeiten</H2>
-
-Um den <a href="EntryEditorHelp.html">Eintrags-Editor</a> zur Bearbeitung eines existierenden Eintrags zu öffnen, klicken Sie einfach doppelt auf die Zeile des Eintrags oder markieren den Eintrag und drücken auf ENTER.
-
-<H2>Einen <em>BibTeX</em> String in einem Feld verwenden</H2>
-
-In JabRef schreiben Sie den Inhalt aller Felder so, wie Sie es in einem Texteditor machen würden, mit einer Ausnahme: um einen String (Anm. d. Übers.: eine Art Abkürzung) zu verwenden, umschließen Sie den Namen des Strings mit je einem #, z.B.<BR>
-  '#jan# 1997',<BR>
-was interpretiert wird als String mit dem Namen 'jan' gefolgt von '1997'.
-
-<P>Vergleichen Sie auch die Hilfeseite zum <a href="StringEditorHelp.html">String-Editor</a>.
-
-</font>
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Das Hauptfenster von JabRef</h1>
+
+    <p><em>Anmerkung:</em> Die
+    meisten Menüfunktionen, auf die im Folgenden hingewiesen
+    wird, haben Tastenkürzel, und viele Funktionen können
+    über die Werkzeugleiste aufgerufen werden.</p>
+
+    <p>Dies ist das Hauptfenster, in dem Sie mit Ihrer Datei
+    arbeiten. Unter der Menüleiste und der Werkzeugleiste
+    befindet sich 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 auflistet.</p>
+
+    <ul>
+        <li>Die Auswahl der entsprechenden Felder können Sie
+        im <strong>Einstellungs</strong>-Dialog vornehmen.</li>
+
+        <li>Mit einem Doppelklick auf eine Tabellenzeile
+        können Sie den Inhalt bearbeiten (der
+        <a href="EntryEditorHelp.html">Eintragseditor</a> wird
+        geöffnet). Sie können mit den Pfeiltasten
+        innerhalb der Tabelle navigieren. Wenn Sie einen Buchstaben
+        drücken, springen Sie zu dem ersten Eintrag, der mit
+        diesem Buchstaben beginnt (abhängig von der Spalte,
+        nach der Sie die Tabelle sortiert haben).</li>
+
+        <li>Die Tabelle wird nach einem Feld Ihrer Wahl sortiert.
+        Sie können das Standardverhalten unter
+        <strong>Optionen -> Einstellungen ->
+        Tabellenansicht</strong> angeben. Um die Sortierreihenfolge
+        schnell zu ändern, klicken Sie einfach auf die
+        Kopfzeile einer Spalte; damit haben Sie das primäre
+        Sortierkriterium definiert. Klicken Sie erneut auf den
+        Spaltenkopf, um die Sortierrichtung umzukehren. Ein
+        weiterer Klick sorgt dafür, dass die Spalte nicht mehr
+        zur Sortierung herangezogen wird. Halten Sie die
+        CONTROL-Taste beim Klicken auf einen Spaltenknopf
+        gedrückt, um eine zweite Spalte als sekundäres
+        Sortierkriterium festzulegen. Sie können beliebig
+        viele Spalten zur Sortierung heranziehen.</li>
+
+        <li>Sie können die Breite der Tabellenspalten
+        einstellen, indem Sie die Trennlinie zwischen den
+        Spaltenköpfen anklicken und verschieben. Die
+        Reihenfolge der Spalten können Sie festlegen, indem
+        Sie mit der Maus auf den Spaltenkopf klicken und die Spalte
+        an die gewünschte Stelle ziehen.</li>
+
+        <li>Im <strong>Einstellungs</strong>-Dialog können Sie
+        festlegen, ob die Tabelle an die Bildschirmgröße
+        angepasst werden soll oder nicht. Aktivieren Sie diese
+        Funktion, um sicherzustellen, dass Sie die gesamte Tabelle
+        sehen können. Deaktivieren Sie diese Funktion, wenn
+        mehr Informationen dargestellt werden sollen.</li>
+
+        <li>
+            Die Farbanzeige kann ebenfalls im
+            <strong>Einstellungs</strong>-Dialog ein- und
+            ausgeschaltet werden. Die Farbanzeige illustriert, ob
+            Ihre Daten vollständig sind, indem sie die Zellen
+            wie folgt darstellt:
+
+            <ul>
+                <li>Eine <font color="red">rote</font> Zelle in der
+                linken Spalte kennzeichnet einen
+                unvollständigen Eintrag.</li>
+
+                <li>Eine <font color="#909000">gelbe</font> Zelle
+                in der linken Spalte kennzeichnet einen Eintrag,
+                der nicht alle benötigten Felder selbst
+                enthält, der aber einen Querverweis
+                enthält.</li>
+
+                <li>Eine <font color="blue">blaue</font> Zelle
+                kennzeichnet ein benötigtes Feld.</li>
+
+                <li>Eine <font color="green">grüne</font>
+                Zelle kennzeichnet ein optionales Feld.</li>
+
+                <li>Eine farblose (weiße) Zelle kennzeichnet
+                ein Feld, das von BibTeX für diesen
+                Eintragstyp nicht benutzt wird. Das Feld can
+                selbstverständlich in JabRef bearbeitet
+                werden.</li>
+            </ul>
+        </li>
+    </ul>
+
+    <h2>Einen neuen Eintrag hinzufügen</h2>
+
+    <p>Es gibt verschiedene Möglichkeiten, einen neuen Eintrag
+    hinzuzufügen. Im Menü <strong>BibTeX</strong>
+    führt ein Klick auf <strong>Neuer Eintrag</strong> zu
+    einem Dialog, in dem Sie den Eintragstyp aus einer Liste
+    wählen können. Um diesen Dialog zu umgehen, gibt es
+    auch eigene Menüpunkte für jeden Eintragstyp und
+    außerdem Tastenkürzel für die gängigsten
+    Typen.</p>
+
+    <p>Wenn ein Eintrag hinzugefügt wird, wird
+    standardmäßig ein
+    <a href="EntryEditorHelp.html">Editor</a> für den Eintrag
+    geöffnet. Sie können dieses Verhalten im
+    <strong>Einstellungs</strong>-Dialog abstellen.</p>
+
+    <p><em>Anmerkung:</em> Wir empfehlen dringend, sich die
+    Tastenkürzel für die Eintragstypen einzuprägen,
+    die Sie am häufigsten benutzen, z.B. STRG-SHIFT-A für
+    einen Zeitschriftenaufsatz (<em>article</em>).</p>
+
+    <h2>Einen Eintrag bearbeiten</h2>
+
+    <p>Um den <a href="EntryEditorHelp.html">Eintrags-Editor</a> zur
+    Bearbeitung eines existierenden Eintrags zu öffnen,
+    klicken Sie einfach doppelt auf die Zeile des Eintrags oder
+    markieren den Eintrag und drücken auf ENTER.</p>
+
+    <h2>Einen <em>BibTeX</em> String in einem Feld verwenden</h2>
+
+    <p>In JabRef schreiben Sie den Inhalt aller Felder so, wie Sie es in
+    einem Texteditor machen würden, mit einer Ausnahme: um
+    einen String (Anm. d. Übers.: eine Art Abkürzung) zu
+    verwenden, umschließen Sie den Namen des Strings mit je
+    einem #, z.B.</p>
+    <p>  '#jan# 1997',</p>
+    <p>was interpretiert wird als String mit dem Namen 'jan' gefolgt
+    von '1997'.</p>
+
+    <p>Vergleichen Sie auch die Hilfeseite zum
+    <a href="StringEditorHelp.html">String-Editor</a>. </p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/BibtexHelp.html b/src/help/de/BibtexHelp.html
index 4cfabf0..31da4bc 100644
--- a/src/help/de/BibtexHelp.html
+++ b/src/help/de/BibtexHelp.html
@@ -1,276 +1,307 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Über <em>BibTeX</em></H1>
-
-JabRef hilft Ihnen bei der Arbeit mit Ihren <em>BibTeX</em>-Dateien, aber es müssen dennoch Regeln beachtet werden, wenn Sie Ihre Einträge bearbeiten. Nur so kann sichergestellt werden, dass <em>BibTeX</em> Ihre Datei richtig verarbeiten kann.
-
-<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.
-<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  [...]
-
-<P>
-Hinweise zu einigen Feldtypen:
-<ul>
-<li><strong style="font-style: italic;">Bibtexkey<br>
-</strong>Eine eindeutige Bezeichnung, um sich in LaTeX-Dokumenten auf den Eintrag beziehen zu können. Beachten Sie, dass der Bibtexkey genau mit dem Verweis im LaTeX-Dokument übereinstimmen muss (auch die Groß-/Kleinschreibung).<br>
-    <br>
-</li>
-
-  <li><strong>address<br>
-    </strong>Der Ort des <em>Verlags</em> oder einer anderen Institution.
-    <p>
-    </p>
-  </li>
-  <li><strong>annote<br>
-    </strong>Eine Anmerkung.
-Dieses Feld wird von den Standard-Bibliographiestilen nicht verwendet, kann aber bei einigen Stilen benutzt werden, um eine kommentierte Literaturliste zu erstellen.
-    <p>
-    </p>
-  </li>
-  <li><strong>author<br>
-    </strong>Dieses Feld sollte alle Autoren Ihres Eintrags enthalten. Die Namen werden durch das Wort <tt>and</tt> getrennt, auch wenn es mehr als zwei Autoren gibt. Jeder Name kann in zwei gleichwertigen Formen notiert werden:
-<ul>
-<li>Donald E. Knuth <em>oder</em> Knuth, Donald E.</li>
-<li>Eddie van Halen <em>oder</em> van Halen, Eddie</li>
-</ul>
-Die zweite Form sollte für Autoren mit zwei oder mehr Nachnamen benutzt werden, um zwischen dem mittleren und dem Nachnamen zu unterscheiden.<br>
-    <br>
-    <span style="font-weight: bold;"></span></li>
-  <li><span style="font-weight: bold;"></span><strong>booktitle<br>
-    </strong>Der Titel eines Buches, aus dem ein Teil zitiert wird. Falls Sie ein Buch zitieren wollen, nehmen Sie für den Titel stattdessen das <tt>title</tt>-Feld.
-    <p>
-    </p>
-  </li>
-  <li><strong>chapter<br>
-    </strong>Eine Kapitelnummer (oder Abschnittsnummer oder was-auch-immer-Nummer).
-    <p>
-    </p>
-  </li>
-  <li><strong>crossref<br>
-    </strong>Der <tt>key</tt> eines Eintrags, auf den ein Querverweis gesetzt wird. Damit lassen sich beispielsweise die Daten eines Sammelbandes in einem Eintrag für einen Aufsatztitel wiederverwenden, ohne sie bei jedem Aufsatztitel explizit einzutragen. Die Funktionalität von <tt>crossref</tt> ist jedoch nicht in jedem Fall praktikabel.
-    <p>
-    </p>
-  </li>
-  <li><strong>edition<br>
-    </strong>Die Auflage eines Buch, z.B. ,,Zweite``. Die Ordnungszahl sollte mit einem Großbuchstaben beginnen; sie wird von den Standardstilen gegebenenfalls in Kleinbuchstaben umgewandelt. Manche Stile verlangen hier eine Ziffer.
-    <p>
-    </p>
-  </li>
-  <li><strong>editor<br>
-    </strong>Dieses Feld ist analog zu dem <em>author</em>-Feld.
-Falls zusätzlich ein <tt>author</tt>-Feld angegeben wird, bezeichnet das <tt>editor</tt>-Feld den Herausgeber des Buches oder des Sammelbandes, in dem die referenzierte Literatur erschienen ist.
-    <p>
-    </p>
-  </li>
-  <li><strong>howpublished<br>
-    </strong>Die Art, wie ein Werk veröffentlicht wurde (meist außerhalb eines Verlags). Das erste Wort sollte mit einem Großbuchstaben beginnen.
-    <p>
-    </p>
-  </li>
-  <li><strong>institution<br>
-    </strong>Die fördernde Institutions eines technischen Reports.
-    <p>
-    </p>
-  </li>
-  <li><strong>journal<br>
-    </strong>Ein Zeitschriftenname.
-Mit Hilfe von "Strings" können Zeitschriftennamen abgekürzt werden. Zum Erstellen eines solchen Strings können Sie den <a href="StringEditorHelp.html">String-Editor</a> benutzen oder die Funktionalität zur <a href="JournalAbbreviations.html">Abkürzung von Zeitschriftentiteln</a> verwenden.
-    <p>
-    </p>
-  </li>
-  <li><strong>key<br>
-    </strong>Dieses Feld wird zur Sortierung, zur Erstellung von Labels (falls kein <tt>author</tt> vorhanden ist) und für Querverweise (<tt>crossref</tt>) verwendet. Verwechseln Sie dieses Feld nicht mit dem <tt>Bibtexkey</tt>, der für die <code>\cite</code>-Kommandos gebraucht wird und am Anfang jedes Eintrags erscheint (im BibTeX-Quelltext).
-    <p>
-    </p>
-  </li>
-  <li><strong>month<br>
-    </strong>Der Monat, in dem ein Werk veröffentlicht oder geschrieben wurde. Benutzen Sie am besten die englischen Abkürzungen (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
-    <p>
-    </p>
-  </li>
-  <li><strong>note<br>
-    </strong>Zusätzliche Infromationen. Das erste Wort sollte mit einem Großbuchstaben beginnen.
-    <p>
-    </p>
-  </li>
-  <li><strong>number</strong><br>
-Die Nummer einer Zeitschrift, eines technischen Reports oder eines Bandes innerhalb einer Reihe (<tt>series</tt>). Zeitschriften haben oft eine Band- und Heftzählung, der Band entspricht dem <tt>volume</tt>-, das Heft dem <tt>number</tt>-Eintrag.
-    <p>
-    </p>
-  </li>
-  <li><strong>organization<br>
-    </strong>Die Organisation, die einen Konferenzband fördert.
-    <p>
-    </p>
-  </li>
-  <li><strong>pages<br>
-    </strong>Die Seitenzahl(en) oder der Seitenzahlbereich, z.B. <tt>42-111</tt> oder <tt>7,41,73-97</tt> or <tt>43+</tt> (das `<tt>+</tt>' deutet auf folgende Seiten, die nicht einen einfachen Bereich umfassen).
-Ein einfacher Bindestrich (wie in <tt>7-33</tt>) wird in einen doppelten Bindestrich (<tt>--</tt>) verwandelt, der in TeX den bis-Strich anzeigt (also 7–33).
-    <p>
-    </p>
-  </li>
-  <li><strong>publisher<br>
-    </strong>Der Name des Verlags.
-    <p>
-    </p>
-  </li>
-  <li><strong>school<br>
-    </strong>Der Name einer Universität, an der eine Abschlussarbeit - z.B. eine Dissertation (<tt>phdthesis</tt>) oder Magisterarbeit (<tt>mastersthesis</tt>) - geschrieben wurde.
-    <p>
-    </p>
-  </li>
-  <li><strong>series<br>
-    </strong>Der Name einer Reihe, in der ein Buch erschienen ist.
-Falls die Bücher einer Reihe nummeriert sind, wird die entsprechende Nummer im Feld <tt>number</tt> angegeben.
-    <p>
-    </p>
-  </li>
-  <li><strong>title<br>
-    </strong>Der Titel des Werkes. Die Groß- und Kleinschreibung kann von den Bibliographiestilen und der benutzten Sprache abhängig sein (wobei sie mit deutschen Bibliographiestilen beibehalten wird). Worte, die auch bei Verwendung englischer Bibliographiestile groß geschrieben werden sollen, müssen in geschweifte Klammern eingefasst werden (z.B. <tt>A {German} title</tt>).
-    <p>
-    </p>
-  </li>
-  <li><strong>type<br>
-    </strong>Der Typ eines technischen Reports, z.B. ``Research Note''. Bei <em>jurabib</em> wird dieses Feld auch für den Typ einer Abschlussarbeit verwendet.
-    <p>
-    </p>
-  </li>
-  <li><strong>volume<br>
-    </strong>Der Band (Jahrgang) einer Zeitschrift oder der Band eines Buches in einem mehrbändigen Werk.    <p>
-    </p>
-  </li>
-  <li><strong>year<br>
-    </strong>Das Jahr der Veröffentlichung (oder bei einem unveröffentlichten Werk das Jahr, in dem es geschrieben wurde). Normalerweise sollte im <tt>year</tt>-Feld nur eine vierstellige Zahl stehen, z.B. <tt>1984</tt>. Die Standardstile können aber auch mit <tt>year</tt>-Einträgen umgehen, deren letzte vier Zeichen (ausgenommen Satzzeichen) Ziffern sind, beispielsweise <tt>(um 1984)</tt>.
-    Dieses Feld wird für die meisten Eintragstypen benötigt.</li>
-</ul>
-
-
-
-
-
-
-<br>
-
-
-<h2>Andere Felder</h2>
-
-
-Bibliographie-Stile für BibTeX wurden von vielen Leuten entwickelt,
-und einige haben weitere Felder erstellt. Es folgt eine kleine Auswahl.<br>
-<br>
-Feldnamen, die mit einem Stern* versehen sind, werden nicht direkt von JabRef unterstützt, können aber eingebunden werden (siehe <a href="CustomEntriesHelp.html">Eintragstypen anpassen</a>).
-
-<dl>
-
-
-</dl>
-
-<ul>
-
-  <li><strong><span style="font-weight: normal; font-style: italic;">affiliation*</span><br>
-    </strong>Die Zugehörigkeit eines Autors.<br>
-    <br>
-
-  </li>
-  <li><strong>abstract<br>
-    </strong>Die Zusammenfassung eines Werks.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">contents*</span><br>
-    </strong>Ein Inhaltsverzeichnis.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">copyright*</span><br>
-    </strong>Copyright-Informationen.<br>
-    <br>
-  </li>
-
-  <li><strong>doi<br>
-    </strong>Der <em>Digital Object Identifier</em> ist eine permanente Kennung von Dokumenten.<br>
-    <br>
-
-  </li>
-  <li><strong>eid<br>
-    </strong>Der EID (<em>Electronic identifier</em>) wird für elektronische Zeitschriften benutzt, die auch im Druck erscheinen. Mit dieser Nummer, die die Seitenzahlen ersetzt, lässt sich der Artikel in der gedruckten Ausgabe finden. Der EID wird manchmal auch <em>citation number</em> genannt.<br>
-    <br>
-
-  </li>
-
-  <li><strong><span style="font-weight: normal; font-style: italic;">ISBN*</span><br>
-    </strong>Die Internationale Standardbuchnummer.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">ISSN*</span><br>
-    </strong>Die Internationale Standardseriennummer (für Zeitschriften).<br>
-    <br>
-
-  </li>
-  <li><strong>keywords<br>
-    </strong>Stichworte, können in JabRef gut zum Gruppieren verwendet werden.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">language*</span><br>
-    </strong>Die Sprache des Werks.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">location*</span><br>
-    </strong>Der Ort, der mit einem Werk in Verbindung steht, z.B. die Stadt, in der eine Konferenz stattgefunden hat.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">LCCN*</span><br>
-    </strong>Die <em>Library of Congress Call Number</em>.  Manchmal heißt das Feld auch <tt>lib-congress</tt>.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">mrnumber*</span><br>
-    </strong>Die <i>Mathematical Reviews</i>-Nummer.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">price*</span><br>
-    </strong>Der Preis.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">size*</span><br>
-    </strong>Die physische Größe eines Dokuments.<br>
-    <br>
-
-  </li>
-  <li><strong>url<br>
-    </strong>Der <em>Uniform Resource Locator</em> (URL, "einheitlicher Quellenanzeiger"), der auf eine Webseite im Internet verweist.<br><br>
-  </li>
-
-  <li><strong>urldate<br>
-    </strong>Das Datum, an dem eine Webseite zuletzt besucht wurde.</li>
-
-</ul>
-
-
-<br>
-
-<br>
-
-
-
-
-
-
-
-<br>
-
-
-
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Über <em>BibTeX</em></h1>
+
+    <p>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.</p>
+
+    <h2><em>BibTeX</em> Felder</h2>
+
+    <p>Es gibt viele unterschiedliche
+    Felder in <em>BibTeX</em> und einige zusätzliche Felder,
+    die Sie in JabRef einsetzen können.</p>
+
+    <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 BibTeX-Stile behalten
+    die Großbuchstaben ohnehin bei.)</em></p>
+
+    <p>Hinweise zu einigen Feldtypen:</p>
+
+    <ul>
+        <li>
+        <strong style="font-style: italic;">Bibtexkey<br /></strong>Eine
+        eindeutige Bezeichnung, um sich in LaTeX-Dokumenten auf den
+        Eintrag beziehen zu können. Beachten Sie, dass der
+        Bibtexkey genau mit dem Verweis im LaTeX-Dokument
+        übereinstimmen muss (auch die
+        Groß-/Kleinschreibung).<br />
+        </li>
+
+        <li><strong>address<br /></strong> Der Ort des
+        <em>Verlags</em> oder einer anderen Institution.</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.</li>
+
+        <li>
+            <strong>author<br /></strong> Dieses Feld sollte alle
+            Autoren Ihres Eintrags enthalten. Die Namen werden
+            durch das Wort <tt>and</tt> getrennt, auch wenn es mehr
+            als zwei Autoren gibt. Jeder Name kann in zwei
+            gleichwertigen Formen notiert werden:
+
+            <ul>
+                <li>Donald E. Knuth <em>oder</em> Knuth, Donald
+                E.</li>
+
+                <li>Eddie van Halen <em>oder</em> van Halen,
+                Eddie</li>
+            </ul>Die zweite Form sollte für Autoren mit zwei
+            oder mehr Nachnamen benutzt werden, um zwischen dem
+            mittleren und dem Nachnamen zu unterscheiden.<br />
+        </li>
+
+        <li><strong>booktitle<br /></strong> Der Titel eines
+        Buches, aus dem ein Teil zitiert wird. Falls Sie ein Buch
+        zitieren wollen, nehmen Sie für den Titel stattdessen
+        das <tt>title</tt>-Feld.</li>
+
+        <li><strong>chapter<br /></strong> Eine Kapitelnummer (oder
+        Abschnittsnummer oder was-auch-immer-Nummer).</li>
+
+        <li><strong>crossref<br /></strong> Der <tt>key</tt> eines
+        Eintrags, auf den ein Querverweis gesetzt wird. Damit
+        lassen sich beispielsweise die Daten eines Sammelbandes in
+        einem Eintrag für einen Aufsatztitel wiederverwenden,
+        ohne sie bei jedem Aufsatztitel explizit einzutragen. Die
+        Funktionalität von <tt>crossref</tt> ist jedoch nicht
+        in jedem Fall praktikabel.</li>
+
+        <li><strong>edition<br /></strong> Die Auflage eines Buch,
+        z.B. ,,Zweite``. Die Ordnungszahl sollte mit einem
+        Großbuchstaben beginnen; sie wird von den
+        Standardstilen gegebenenfalls in Kleinbuchstaben
+        umgewandelt. Manche Stile verlangen hier eine Ziffer.</li>
+
+        <li><strong>editor<br /></strong> Dieses Feld ist analog zu
+        dem <em>author</em>-Feld. Falls zusätzlich ein
+        <tt>author</tt>-Feld angegeben wird, bezeichnet das
+        <tt>editor</tt>-Feld den Herausgeber des Buches oder des
+        Sammelbandes, in dem die referenzierte Literatur erschienen
+        ist.</li>
+
+        <li><strong>howpublished<br /></strong> Die Art, wie ein
+        Werk veröffentlicht wurde (meist außerhalb eines
+        Verlags). Das erste Wort sollte mit einem
+        Großbuchstaben beginnen.</li>
+
+        <li><strong>institution<br /></strong> Die fördernde
+        Institutions eines technischen Reports.</li>
+
+        <li><strong>journal<br /></strong> Ein Zeitschriftenname.
+        Mit Hilfe von "Strings" können Zeitschriftennamen
+        abgekürzt werden. Zum Erstellen eines solchen Strings
+        können Sie den
+        <a href="StringEditorHelp.html">String-Editor</a> benutzen
+        oder die Funktionalität zur
+        <a href="JournalAbbreviations.html">Abkürzung von
+        Zeitschriftentiteln</a> verwenden.</li>
+
+        <li><strong>key<br /></strong> Dieses Feld wird zur
+        Sortierung, zur Erstellung von Labels (falls kein
+        <tt>author</tt> vorhanden ist) und für Querverweise
+        (<tt>crossref</tt>) verwendet. Verwechseln Sie dieses Feld
+        nicht mit dem <tt>Bibtexkey</tt>, der für die
+        <code>\cite</code>-Kommandos gebraucht wird und am Anfang
+        jedes Eintrags erscheint (im BibTeX-Quelltext).</li>
+
+        <li><strong>month<br /></strong> Der Monat, in dem ein Werk
+        veröffentlicht oder geschrieben wurde. Benutzen Sie am
+        besten die englischen Abkürzungen (jan, feb, mar, apr,
+        may, jun, jul, aug, sep, oct, nov, dec).</li>
+
+        <li><strong>note<br /></strong> Zusätzliche
+        Infromationen. Das erste Wort sollte mit einem
+        Großbuchstaben beginnen.</li>
+
+        <li><strong>number</strong><br />
+        Die Nummer einer Zeitschrift, eines technischen Reports
+        oder eines Bandes innerhalb einer Reihe (<tt>series</tt>).
+        Zeitschriften haben oft eine Band- und Heftzählung,
+        der Band entspricht dem <tt>volume</tt>-, das Heft dem
+        <tt>number</tt>-Eintrag.</li>
+
+        <li><strong>organization<br /></strong> Die Organisation,
+        die einen Konferenzband fördert.</li>
+
+        <li><strong>pages<br /></strong> Die Seitenzahl(en) oder
+        der Seitenzahlbereich, z.B. <tt>42-111</tt> oder
+        <tt>7,41,73-97</tt> or <tt>43+</tt> (das `<tt>+</tt>'
+        deutet auf folgende Seiten, die nicht einen einfachen
+        Bereich umfassen). Ein einfacher Bindestrich (wie in
+        <tt>7-33</tt>) wird in einen doppelten Bindestrich
+        (<tt>--</tt>) verwandelt, der in TeX den bis-Strich anzeigt
+        (also 7–33).</li>
+
+        <li><strong>publisher<br /></strong> Der Name des
+        Verlags.</li>
+
+        <li><strong>school<br /></strong> Der Name einer
+        Universität, an der eine Abschlussarbeit - z.B. eine
+        Dissertation (<tt>phdthesis</tt>) oder Magisterarbeit
+        (<tt>mastersthesis</tt>) - geschrieben wurde.</li>
+
+        <li><strong>series<br /></strong> Der Name einer Reihe, in
+        der ein Buch erschienen ist. Falls die Bücher einer
+        Reihe nummeriert sind, wird die entsprechende Nummer im
+        Feld <tt>number</tt> angegeben.</li>
+
+        <li><strong>title<br /></strong> Der Titel des Werkes. Die
+        Groß- und Kleinschreibung kann von den
+        Bibliographiestilen und der benutzten Sprache abhängig
+        sein (wobei sie mit deutschen Bibliographiestilen
+        beibehalten wird). Worte, die auch bei Verwendung
+        englischer Bibliographiestile groß geschrieben werden
+        sollen, müssen in geschweifte Klammern eingefasst
+        werden (z.B. <tt>A {German} title</tt>).</li>
+
+        <li><strong>type<br /></strong> Der Typ eines technischen
+        Reports, z.B. ``Research Note''. Bei <em>jurabib</em> wird
+        dieses Feld auch für den Typ einer Abschlussarbeit
+        verwendet.</li>
+
+        <li><strong>volume<br /></strong> Der Band (Jahrgang) einer
+        Zeitschrift oder der Band eines Buches in einem
+        mehrbändigen Werk.</li>
+
+        <li><strong>year<br /></strong> Das Jahr der
+        Veröffentlichung (oder bei einem
+        unveröffentlichten Werk das Jahr, in dem es
+        geschrieben wurde). Normalerweise sollte im
+        <tt>year</tt>-Feld nur eine vierstellige Zahl stehen, z.B.
+        <tt>1984</tt>. Die Standardstile können aber auch mit
+        <tt>year</tt>-Einträgen umgehen, deren letzte vier
+        Zeichen (ausgenommen Satzzeichen) Ziffern sind,
+        beispielsweise <tt>(um 1984)</tt>. Dieses Feld wird
+        für die meisten Eintragstypen benötigt.</li>
+    </ul>
+
+    <h2>Andere Felder</h2>
+
+    <p>Bibliographie-Stile für BibTeX
+    wurden von vielen Leuten entwickelt, und einige haben weitere
+    Felder erstellt. Es folgt eine kleine Auswahl.</p>
+
+    <p>Feldnamen, die mit einem Stern* versehen sind, werden nicht
+    direkt von JabRef unterstützt, können aber
+    eingebunden werden (siehe
+    <a href="CustomEntriesHelp.html">Eintragstypen anpassen</a>).</p>
+
+    <ul>
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        affiliation*</span><br /></strong> Die Zugehörigkeit
+        eines Autors.<br />
+        </li>
+
+        <li><strong>abstract<br /></strong> Die Zusammenfassung
+        eines Werks.<br />
+        </li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        contents*</span><br /></strong> Ein
+        Inhaltsverzeichnis.<br />
+        </li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        copyright*</span><br /></strong>
+        Copyright-Informationen.<br />
+        </li>
+
+        <li><strong>doi<br /></strong> Der <em>Digital Object
+        Identifier</em> ist eine permanente Kennung von
+        Dokumenten.<br />
+        </li>
+
+        <li><strong>eid<br /></strong> Der EID (<em>Electronic
+        identifier</em>) wird für elektronische Zeitschriften
+        benutzt, die auch im Druck erscheinen. Mit dieser Nummer,
+        die die Seitenzahlen ersetzt, lässt sich der Artikel
+        in der gedruckten Ausgabe finden. Der EID wird manchmal
+        auch <em>citation number</em> genannt.<br />
+        </li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        ISBN*</span><br /></strong> Die Internationale
+        Standardbuchnummer.<br />
+        </li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        ISSN*</span><br /></strong> Die Internationale
+        Standardseriennummer (für Zeitschriften).<br />
+        </li>
+
+        <li><strong>keywords<br /></strong> Stichworte, können
+        in JabRef gut zum Gruppieren verwendet werden.<br />
+        </li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        language*</span><br /></strong> Die Sprache des
+        Werks.<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 />
+        </li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        LCCN*</span><br /></strong> Die <em>Library of Congress
+        Call Number</em>. Manchmal heißt das Feld auch
+        <tt>lib-congress</tt>.<br />
+        </li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        mrnumber*</span><br /></strong> Die <i>Mathematical
+        Reviews</i>-Nummer.<br />
+        </li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        price*</span><br /></strong> Der Preis.<br />
+        </li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        size*</span><br /></strong> Die physische Größe
+        eines Dokuments.<br />
+        </li>
+
+        <li><strong>url<br /></strong> Der <em>Uniform Resource
+        Locator</em> (URL, "einheitlicher Quellenanzeiger"), der
+        auf eine Webseite im Internet verweist.<br />
+        </li>
+
+        <li><strong>urldate<br /></strong> Das Datum, an dem eine
+        Webseite zuletzt besucht wurde.</li>
+    </ul><br />
+     <br />
+     <br />
 </body>
-</HTML>
\ No newline at end of file
+</html>
\ No newline at end of file
diff --git a/src/help/de/CiteSeerHelp.html b/src/help/de/CiteSeerHelp.html
index 5707313..4ace49b 100644
--- a/src/help/de/CiteSeerHelp.html
+++ b/src/help/de/CiteSeerHelp.html
@@ -1,50 +1,71 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>CiteSeer-Import</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-CiteSeer ist eine digitale Bibliothek und Suchmaschine für wissenschaftliche Literatur, vornehmlich zu den Bereichen Computer und Informatik.
+    <h1>CiteSeer-Import</h1>
 
-<H2>Importieren eines Eintrags von CiteSeer</H2>
+    <p>CiteSeer ist eine digitale Bibliothek
+    und Suchmaschine für wissenschaftliche Literatur,
+    vornehmlich zu den Bereichen Computer und Informatik.</p>
 
-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 <em>citeseerurl</em> mit einem Link zur entsprechenden Inhaltsseite auf
-CiteSeer. Das Feld <em>citeseerurl</em> muss in einem der folgenden Formate eingegeben werden:
+    <h2>Importieren eines Eintrags von CiteSeer</h2>
 
-<p>http://citeseer.ist.psu.edu/DDDDDD[.html], oder <br>
-oai:CiteSeerPSU:DDDDDD, oder <br>
-DDDDDD
+    <p>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 <em>citeseerurl</em> mit einem Link zur
+    entsprechenden Inhaltsseite auf CiteSeer. Das Feld
+    <em>citeseerurl</em> muss in einem der folgenden Formate
+    eingegeben werden:</p>
 
-<p>wobei DDDDDD eine Ziffernfolge darstellt. Um diese Ziffernfolge (DDDDDD) für einen CiteSeer-Eintrag
-zu finden, gehen Sie auf die Dokumentseite der Literaturangabe des Formats
-http://citeseer.ist.psu.edu/<i>nameYearTitle</i>.html und klicken den (Update)-Link für diese
-Literaturangabe. Die URL für den Update-Link beinhaltet die numerische ID für diese
-Literaturangabe.
+    <p>http://citeseer.ist.psu.edu/DDDDDD[.html], oder<br />
+     oai:CiteSeerPSU:DDDDDD, oder<br />
+     DDDDDD</p>
 
-<p>Sobald Sie das Feld <em>citeseerurl</em> belegt haben, können Sie die CiteSeer-Felder herunterladen,
-indem Sie <b>BibTeX -> Felder von CiteSeer importieren</b> auswählen. Achten Sie darauf, dass
-Sie die Zeile(n) ausgewählt haben, die Sie aktualisieren wollen.
+    <p>wobei DDDDDD eine Ziffernfolge darstellt. Um diese
+    Ziffernfolge (DDDDDD) für einen CiteSeer-Eintrag zu
+    finden, gehen Sie auf die Dokumentseite der Literaturangabe des
+    Formats http://citeseer.ist.psu.edu/<i>nameYearTitle</i>.html
+    und klicken den (Update)-Link für diese Literaturangabe.
+    Die URL für den Update-Link beinhaltet die numerische ID
+    für diese Literaturangabe.</p>
 
-<H2>Eine Datei mit zitierenden Literaturangaben erzeugen</H2>
+    <p>Sobald Sie das Feld <em>citeseerurl</em> belegt haben,
+    können Sie die CiteSeer-Felder herunterladen, indem Sie
+    <b>BibTeX -> Felder von CiteSeer importieren</b>
+    auswählen. Achten Sie darauf, dass Sie die Zeile(n)
+    ausgewählt haben, die Sie aktualisieren wollen.</p>
 
-Mit einem Satz von Literaturangaben können Sie eine Liste der Dokumente
-erzeugen, die die einzelnen Literaturangaben ihrerseits zitieren. Dazu
-muss jede Literaturangabe der entsprechenden Datenbank-Datei ein
-ausgefülltes citeseerurl-Feld besitzen, dessen Inhalt dem in <b>Importieren eines Eintrags von CiteSeer</b>
-beschriebenen Format entspricht. Sie können diese Funktion nutzen, indem
-Sie <b>Zitierende Literatur von CiteSeer abrufen</b> auswählen.
+    <h2>Eine Datei mit zitierenden Literaturangaben
+    erzeugen</h2>
 
-<H2>Benutzung eines Proxy-Servers</H2>
+    <p>Mit einem Satz von Literaturangaben können
+    Sie eine Liste der Dokumente erzeugen, die die einzelnen
+    Literaturangaben ihrerseits zitieren. Dazu muss jede
+    Literaturangabe der entsprechenden Datenbank-Datei ein
+    ausgefülltes citeseerurl-Feld besitzen, dessen Inhalt dem
+    in <b>Importieren eines Eintrags von CiteSeer</b> beschriebenen
+    Format entspricht. Sie können diese Funktion nutzen, indem
+    Sie <b>Zitierende Literatur von CiteSeer abrufen</b>
+    auswählen.</p>
 
-Wenn Sie einen HTTP-Proxy-Server benutzen müssen, übergeben Sie den Servernamen und die Portnummer
-an Java. Diese Umgebungseinstellungen sind dokumentiert unter
- <p> http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html
+    <h2>Benutzung eines Proxy-Servers</h2>
 
-<p><code>java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"</code>
+    <p>Wenn Sie einen
+    HTTP-Proxy-Server benutzen müssen, übergeben Sie den
+    Servernamen und die Portnummer an Java. Diese
+    Umgebungseinstellungen sind dokumentiert unter<br />
 
-<p> 
+    <a href="http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html">http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html</a></p>
 
-</HTML>
\ No newline at end of file
+    <p><code>java -Dhttp.proxyHost="hostname"
+    -Dhttp.proxyPort="portnumber"</code></p>
+
+    <p> </p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/CommandLine.html b/src/help/de/CommandLine.html
index ad9834b..83e5f53 100644
--- a/src/help/de/CommandLine.html
+++ b/src/help/de/CommandLine.html
@@ -1,92 +1,142 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Kommandozeilen-Optionen</H1>
-
-Obwohl JabRef in erster Linie ein Programm mit grafischer Benutzeroberfläche ist, bietet es
-einige nützliche Optionen für die Kommandozeile und kann sogar Dateikonvertierungen
-durchführen, ohne die grafische Benutzeroberfläche zu öffnen.
-
-<P>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 nicht als Argument einer Option missverstanden werden kann - falls eine Bool'sche
-Option wie <code>-n</code> oder <code>-l</code> direkt vor einem Dateinamen steht, müssen Sie
-also "true" als Argument angeben. Das Beispielkommando:
-<p><code>jabref -o filetoexport.xml,docbook -n true original.bib</code>
-<p>lädt die Datei <code>original.bib</code>, exportiert sie in das Docbook-Format, speichert sie
-unter dem Namen <code>filetoexport.xml</code>
-und unterdrückt das Laden der grafischen Oberfläche. Das Word <em>true</em> verhindert, dass der
-Dateiname als Argument der Option <code>-n</code> interpretiert wird.
-
-<H2>Hilfe: -h</H2>
-
-Diese Option veranlasst JabRef, eine Zusammenfassung der Kommandozeilen-Optionen anzuzeigen und das
-Programm unmittelbar darauf zu schließen.
-
-<H2>Kein GUI-Modus: -n</H2>
-
-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
-abgearbeitet wurden.
-<P>Diese Option ist nützlich, um Dateikonvertierungen von der Kommandozeile oder mit Hilfe eines Scripts
-durchzuführen.
-
-<H2>Sitzung laden: -l</H2>
-
-Diese Option veranlasst JabRef, eine gespeicherte Sitzung zu laden, sofern eine vorhanden ist, bevor sich
-das Hauptfenster öffnet.
-
-<H2>Datei importieren: -i Dateiname[,Importformat]</H2>
-
-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 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 <code>-h</code> können Sie sich eine Liste der
-verfügbaren Importformate anzeigen lassen.
-
-<P>Wenn Sie zusätzlich eine Export-Option angeben, wird der Import immer zuerst ausgeführt, bevor
-die importierte oder geladene Datei an den Exportfilter übergeben wird. Falls die grafische Oberfläche
-nicht mit der Option <code>-n</code> unterdrückt wird, werden alle geladenen oder importierten Dateien
-im Hauptfenster von JabRef angezeigt.
-
-<p>Die Option <code>-i</code> kann nur einmal angegeben werden und nimmt als Argument maximal eine Datei.
-
-<H2>Datei exportieren: -o Dateiname[,Exportformat]</H2>
-
-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 <code>-i</code> importiert wurde, wird diese Datei exportiert.
-Ansonsten wird die Datei exportiert, die <em>zuletzt</em> - ohne die Option <code>-i</code> -
-angegeben (und erfolgreich geladen) wurde.
-
-<P>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 auf einen Standard-Exportfilter, als auch auf einen benutzerdefinierten
-Exportfilter zutrifft, wird der benutzerdefinierte verwendet.
-<P>Mit der Option <code>-h</code> können Sie sich eine Liste der verfügbaren Exportformate anzeigen lassen.
-
-<P>Falls die Option <code>-n</code> nicht aufgerufen wurde, wird jeder Exportvorgang durchgeführt, bevor das
-JabRef-Fenster geöffnet wird. Dort werden dann die importierten Dateien angezeigt.
-
-<p>Die Option <code>-o</code> kann nur einmal angegeben werden und nimmt als Argument maximal eine Datei.
-
-<H2>Einstellungen exportieren: -x Dateiname</H2>
-
-Mit dieser Option können Sie JabRef veranlassen, alle Benutzer-Einstellungen in eine XML-Datei zu speichern.
-Nach dem Export startet JabRef normal.
-
-<H2>Einstellungen importieren: -p Dateiname</H2>
-
-Mit dieser Option importiert JabRef Benutzer-Einstellungen, die mit der Option <code>-x</code> exportiert wurden.
-Nach dem Import startet JabRef normal.
-
-<H2>Nur benutzte Einträge exportieren: -a Dateiname[.aux],neueBibDatei[.bib]</H2>
-
-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 BibTeX-Datei zu erstellen, die nur die bekannten und benutzten
-Einträge enthält. Das bedeutet, dass ein Eintrag, der in der Standard-BibTeX-Datei nicht definiert ist,
-auch nicht in die neue Datei geschrieben werden kann.
-
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Kommandozeilen-Optionen</h1>
+
+    <p>Obwohl JabRef in erster Linie
+    ein Programm mit grafischer Benutzeroberfläche ist, bietet
+    es einige nützliche Optionen für die Kommandozeile
+    und kann sogar Dateikonvertierungen durchführen, ohne die
+    grafische Benutzeroberfläche zu öffnen.</p>
+
+    <p>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 nicht als Argument einer Option missverstanden
+    werden kann - falls eine Bool'sche Option wie
+    <code>-n</code> oder <code>-l</code> direkt vor einem
+    Dateinamen steht, müssen Sie also "true" als Argument
+    angeben. Das Beispielkommando:</p>
+
+    <p><code>jabref -o filetoexport.xml,docbook -n true
+    original.bib</code></p>
+
+    <p>lädt die Datei <code>original.bib</code>, exportiert
+    sie in das Docbook-Format, speichert sie unter dem Namen
+    <code>filetoexport.xml</code> und unterdrückt das Laden
+    der grafischen Oberfläche. Das Word <em>true</em>
+    verhindert, dass der Dateiname als Argument der Option
+    <code>-n</code> interpretiert wird.</p>
+
+    <h2>Hilfe: -h</h2>
+
+    <p>Diese Option veranlasst JabRef, eine
+    Zusammenfassung der Kommandozeilen-Optionen anzuzeigen und das
+    Programm unmittelbar darauf zu schließen.</p>
+
+    <h2>Kein GUI-Modus: -n</h2>
+
+    <p>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 abgearbeitet
+    wurden.</p>
+
+    <p>Diese Option ist nützlich, um Dateikonvertierungen von
+    der Kommandozeile oder mit Hilfe eines Scripts
+    durchzuführen.</p>
+
+    <h2>Sitzung laden: -l</h2>
+
+    <p>Diese Option veranlasst JabRef, eine
+    gespeicherte Sitzung zu laden, sofern eine vorhanden ist, bevor
+    sich das Hauptfenster öffnet.</p>
+
+    <h2>Datei importieren: -i Dateiname[,Importformat]</h2>
+
+    <p>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
+    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 <code>-h</code> können Sie sich eine Liste der
+    verfügbaren Importformate anzeigen lassen.</p>
+
+    <p>Wenn Sie zusätzlich eine Export-Option angeben, wird
+    der Import immer zuerst ausgeführt, bevor die importierte
+    oder geladene Datei an den Exportfilter übergeben wird.
+    Falls die grafische Oberfläche nicht mit der Option
+    <code>-n</code> unterdrückt wird, werden alle geladenen
+    oder importierten Dateien im Hauptfenster von JabRef
+    angezeigt.</p>
+
+    <p>Die Option <code>-i</code> kann nur einmal angegeben werden
+    und nimmt als Argument maximal eine Datei.</p>
+
+    <h2>Datei exportieren: -o Dateiname[,Exportformat]</h2>
+
+    <p>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
+    <code>-i</code> importiert wurde, wird diese Datei exportiert.
+    Ansonsten wird die Datei exportiert, die
+    <em>zuletzt</em> - ohne die Option <code>-i</code> -
+    angegeben (und erfolgreich geladen) wurde.</p>
+
+    <p>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 auf einen
+    Standard-Exportfilter, als auch auf einen benutzerdefinierten
+    Exportfilter zutrifft, wird der benutzerdefinierte
+    verwendet.</p>
+
+    <p>Mit der Option <code>-h</code> können Sie sich eine
+    Liste der verfügbaren Exportformate anzeigen lassen.</p>
+
+    <p>Falls die Option <code>-n</code> nicht aufgerufen wurde,
+    wird jeder Exportvorgang durchgeführt, bevor das
+    JabRef-Fenster geöffnet wird. Dort werden dann die
+    importierten Dateien angezeigt.</p>
+
+    <p>Die Option <code>-o</code> kann nur einmal angegeben werden
+    und nimmt als Argument maximal eine Datei.</p>
+
+    <h2>Einstellungen exportieren: -x Dateiname</h2>
+
+    <p>Mit dieser Option können Sie JabRef veranlassen, alle
+    Benutzer-Einstellungen in eine XML-Datei zu speichern. Nach dem
+    Export startet JabRef normal.</p>
+
+    <h2>Einstellungen importieren: -p Dateiname</h2>
+
+    <p>Mit dieser Option importiert JabRef Benutzer-Einstellungen, die mit der
+    Option <code>-x</code> exportiert wurden. Nach dem Import
+    startet JabRef normal.</p>
+
+    <h2>Nur benutzte Einträge exportieren: -a
+    Dateiname[.aux],neueBibDatei[.bib]</h2>
+
+    <p>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 BibTeX-Datei zu erstellen, die nur
+    die bekannten und benutzten Einträge enthält. Das
+    bedeutet, dass ein Eintrag, der in der Standard-BibTeX-Datei
+    nicht definiert ist, auch nicht in die neue Datei geschrieben
+    werden kann.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/ContentSelectorHelp.html b/src/help/de/ContentSelectorHelp.html
index 04cedff..3c7d449 100644
--- a/src/help/de/ContentSelectorHelp.html
+++ b/src/help/de/ContentSelectorHelp.html
@@ -1,37 +1,36 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-  <BODY text="#275856">
-  <basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-  <head>
-    <title>Wortauswahl verwalten</title>
-  </head>
-
-  <body>
     <h1>Wortauswahl verwalten</h1>
 
-	Diese Funktion ermöglicht es, eine Auswahl von oft benutzten Wörtern 
-	oder Phrasen zu speichern. In der Standardeinstellung ist sie für die Felder
-	<em>Journal</em>, <em>Keywords</em> und <em>Publisher</em> aktiviert, aber Sie
-	können die Funktion auch in anderen Feldern verwenden, indem Sie diese
-	Felder im oberen Teil des Dialogs <em>Extras -> Wortauswahl verwalten</em> hinzufügen.
-
-	<P>
-	Die Wortauswahl gilt nur für die jeweilige Datei und wird daher zusammen
-	mit den Literaturangaben in der .bib-Datei gespeichert.
-	<P>
-	Jedes Feld mit Wortauswahl erhält im Eintrags-Editor einen gesonderten Bereich
-	mit einer Auswahlliste und der Schaltfläche <em>Verwalten</em>. Wenn Sie die 
-	Auswahlliste mit der Maus anklicken, erscheint eine Liste der für dieses Feld
-	verfügbaren Wörter. Sobald Sie auf das gewünschte Wort klicken, wird
-	es in das entsprechende Feld geschrieben.
-	<P>
-	Um ein neues Wort hinzuzufügen, schreiben Sie es einfach in das Auswahlfeld
-	und drücken ENTER. Im Dialog <em>Verwalten</em> können Sie hinzugefügte
-	Wörter auch wieder löschen.
-
-
-
-  </body>
-</html>
+    <p>Diese Funktion ermöglicht
+    es, eine Auswahl von oft benutzten Wörtern oder Phrasen zu
+    speichern. In der Standardeinstellung ist sie für die
+    Felder <em>Journal</em>, <em>Keywords</em> und
+    <em>Publisher</em> aktiviert, aber Sie können die Funktion
+    auch in anderen Feldern verwenden, indem Sie diese Felder im
+    oberen Teil des Dialogs <em>Extras -> Wortauswahl
+    verwalten</em> hinzufügen.</p>
+
+    <p>Die Wortauswahl gilt nur für die jeweilige Datei und
+    wird daher zusammen mit den Literaturangaben in der .bib-Datei
+    gespeichert.</p>
+
+    <p>Jedes Feld mit Wortauswahl erhält im Eintrags-Editor
+    einen gesonderten Bereich mit einer Auswahlliste und der
+    Schaltfläche <em>Verwalten</em>. Wenn Sie die Auswahlliste
+    mit der Maus anklicken, erscheint eine Liste der für
+    dieses Feld verfügbaren Wörter. Sobald Sie auf das
+    gewünschte Wort klicken, wird es in das entsprechende Feld
+    geschrieben.</p>
+
+    <p>Um ein neues Wort hinzuzufügen, schreiben Sie es
+    einfach in das Auswahlfeld und drücken ENTER. Im Dialog
+    <em>Verwalten</em> können Sie hinzugefügte
+    Wörter auch wieder löschen.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/Contents.html b/src/help/de/Contents.html
index c12d472..fa04fd8 100644
--- a/src/help/de/Contents.html
+++ b/src/help/de/Contents.html
@@ -1,40 +1,60 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Hilfe - Inhalt</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<a href="HelpHelp.html">Über die Hilfe</a><br>
-<a href="JabRefHelp.html">Allgemeines</a><br>
-<br>
-<a href="GeneralFields.html">Allgemeine Felder festlegen</a><br>
-<a href="LabelPatterns.html">Anpassen der automatischen Generierung von BibTeX-keys</a><br>
-<a href="OwnerHelp.html">Das 'Besitzer' (owner) Feld</a><br>
-<a href="BibtexHelp.html"><em>BibTeX</em> Hilfe</a><br>
-<a href="MarkingHelp.html">Einträge markieren</a><br>
-<a href="CiteSeerHelp.html">Einträge von <em>CiteSeer</em> abrufen</a><br>
-<a href="IEEEXploreHelp.html">Einträge von <em>IEEExplore</em> abrufen</a><br>
-<a href="MedlineHelp.html">Einträge von <em>Medline</em> abrufen</a><br>
-<a href="EntryEditorHelp.html">Der Eintrags-Editor</a><br>
-<a href="CustomEntriesHelp.html">Eintragstypen anpassen</a><br>
-<a href="PreviewHelp.html">Eintragsvorschau anpassen</a><br>
-<a href="CustomExports.html">Exportfilter anpassen</a><br>
-<a href="RemoteHelp.html">Externer Zugriff</a><br>
-<a href="EndNoteFilters.html">Die Exportfilter und Importfilter für EndNote</a><br>
-<a href="BaseFrameHelp.html">Das Hauptfenster von JabRef</a><br>
-<a href="GroupsHelp.html">Hilfe zu den <em>Gruppen</em></a><br>
-<a href="CustomImports.html">Importfilter anpassen</a><br>
-<a href="ImportInspectionDialog.html">Import-Kontrollfenster</a><br>
-<a href="OpenOfficeHelp.html">JabRef-Bibliographien in OpenOffice.org benutzen</a><br>
-<a href="CommandLine.html">Kommandozeilen-Optionen</a><br>
-<a href="FileLinks.html">Links zu externen Dateien</a><br>
-<a href="ExternalFiles.html">Links zu PDF- und PS-Dateien, URLs und DOIs</a><br>
-<a href="StringEditorHelp.html">Der String-Editor</a><br>
-<a href="SearchHelp.html">Die Suchfunktionen von JabRef</a><br>
-<a href="ContentSelectorHelp.html">Wortauswahl verwalten</a><br>
-<a href="XMPHelp.html">XMP-Metadaten und JabRef</a><br>
-<a href="JournalAbbreviations.html">Zeitschriftentitel abkürzen</a><br>
-<a href="TimeStampHelp.html">Zeitstempel</a><br>
+    <h1>Hilfe - Inhalt</h1>
 
-</HTML>
\ No newline at end of file
+    <p><a href="HelpHelp.html">Über die
+    Hilfe</a><br />
+     <a href="JabRefHelp.html">Allgemeines</a></p>
+
+     <p>
+     <a href="GeneralFields.html">Allgemeine Felder
+    festlegen</a><br />
+     <a href="LabelPatterns.html">Anpassen der automatischen
+    Generierung von BibTeX-keys</a><br />
+     <a href="OwnerHelp.html">Das 'Besitzer' (owner) Feld</a><br />
+     <a href="BibtexHelp.html"><em>BibTeX</em> Hilfe</a><br />
+     <a href="MarkingHelp.html">Einträge markieren</a><br />
+     <a href="CiteSeerHelp.html">Einträge von
+    <em>CiteSeer</em> abrufen</a><br />
+     <a href="IEEEXploreHelp.html">Einträge von
+    <em>IEEExplore</em> abrufen</a><br />
+     <a href="MedlineHelp.html">Einträge von <em>Medline</em>
+    abrufen</a><br />
+     <a href="EntryEditorHelp.html">Der Eintrags-Editor</a><br />
+     <a href="CustomEntriesHelp.html">Eintragstypen
+    anpassen</a><br />
+     <a href="PreviewHelp.html">Eintragsvorschau anpassen</a><br />
+     <a href="CustomExports.html">Exportfilter anpassen</a><br />
+     <a href="RemoteHelp.html">Externer Zugriff</a><br />
+     <a href="EndNoteFilters.html">Die Exportfilter und
+    Importfilter für EndNote</a><br />
+     <a href="BaseFrameHelp.html">Das Hauptfenster von
+    JabRef</a><br />
+     <a href="GroupsHelp.html">Hilfe zu den
+    <em>Gruppen</em></a><br />
+     <a href="CustomImports.html">Importfilter anpassen</a><br />
+     <a href="ImportInspectionDialog.html">Import-Kontrollfenster</a><br />
+
+     <a href="OpenOfficeHelp.html">JabRef-Bibliographien in
+    OpenOffice.org benutzen</a><br />
+     <a href="CommandLine.html">Kommandozeilen-Optionen</a><br />
+     <a href="FileLinks.html">Links zu externen Dateien</a><br />
+     <a href="ExternalFiles.html">Links zu PDF- und PS-Dateien,
+    URLs und DOIs</a><br />
+     <a href="StringEditorHelp.html">Der String-Editor</a><br />
+     <a href="SearchHelp.html">Die Suchfunktionen von
+    JabRef</a><br />
+     <a href="ContentSelectorHelp.html">Wortauswahl
+    verwalten</a><br />
+     <a href="XMPHelp.html">XMP-Metadaten und JabRef</a><br />
+     <a href="JournalAbbreviations.html">Zeitschriftentitel
+    abkürzen</a><br />
+     <a href="TimeStampHelp.html">Zeitstempel</a><br /></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/CustomEntriesHelp.html b/src/help/de/CustomEntriesHelp.html
index df85f3b..1fb6bc1 100644
--- a/src/help/de/CustomEntriesHelp.html
+++ b/src/help/de/CustomEntriesHelp.html
@@ -1,73 +1,95 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Eintragstypen anpassen</title>
-  </head>
-
-  <BODY text="#275856">
-    <basefont size="4" color="#2F4958" face="arial">
-
-<h1>Eintragstypen anpassen</h1>
-<p>
-Um Eintragstypen anzupassen, wählen Sie den Menüpunkt <strong>Optionen --> Eintragstypen anpassen</strong>.
-
-<p>Wenn Sie einen Eintragstyp anpassen, definieren Sie sowohl sein Erscheinungsbild im Eintragseditor
-als auch die Bedingungen, nach denen JabRef einen Eintrag als vollständig akzeptiert.
-Sie können die bestehenden Eintragstypen verändern und neue hinzufügen.
-<p>
-Beachten Sie, dass in diesem Dialog keine Änderungen gespeichert werden, solange Sie nicht
-auf <b>Übernehmen</b> oder <b>OK</b> klicken. Wenn Sie <b>Cancel</b> anklicken oder
-einfach den Dialog schließen, gehen die bislang nicht übernommenen Änderungen
-verloren.
-
-<h2>Der Dialog <i>Eintragstypen anpassen</i></h2>
-
-Der Dialog <i>Eintragstypen anpassen</i> ist in drei Hauptbereiche unterteilt. Im linken Bereich
-können Sie den Eintragstyp auswählen, den Sie bearbeiten wollen, und neue
-Eintragstypen hinzufügen. Im mittleren Bereich werden die Einstellungen für die
-benötigten Felder des ausgewählten Eintragstyps vorgenommen und im rechten
-Bereich diejenigen der optionalen Felder.
-
-<h3>Eintragstypen hinzufügen und löschen</h3>
-
-<p>Die derzeit verfügbaren Eintragstypen werden im linken Bereich des Dialogfensters
-aufgelistet. Wenn Sie einen Eintragstyp auswählen, werden die anderen Bereiche
-aktualisiert und zeigen die benötigten und optionalen Felder dieses Eintragstyps.
-
-<p>Um einen neuen Eintragstyp hinzuzufügen, geben Sie einfach seinen Namen in das
-Textfeld unter der Typliste ein und klicken <b>Hinzufügen</b>. Der neue Eintragstyp
-wird zur Liste hinzugefügt und zur Bearbeitung ausgewählt.
-
-<p>Um einen eigenen Eintragstyp zu entfernen, wählen Sie ihn aus und klicken auf
-<b>Löschen</b>. Dieser Vorgang ist nur für eigene Eintragstypen verfügbar,
-die nicht nur Abwandlungen der Standard-Typen sind. Die Standard-Eintragstypen können
-nicht gelöscht werden.
-
-<p>Um einem Eintragstyp seinen Standardwert zurüzugeben, wählen Sie ihn aus
-und drücken auf <b>Standard</b>. Dieser Vorgang ist nur für Standard-Typen
-verfügbar, die bearbeitet wurden.
-
-<h2>Eintragstypen bearbeiten</h2>
-
-Wenn ein Eintragstyp ausgewählt ist, werden die derzeitigen benötigten und optionalen
-Felder im mittleren und rechten Bereich des Dialogfensters aufgelistet. Das Vorgehen beim
-Bearbeiten dieser Listen ist für die benötigten und optionalen Felder identisch.
-
-<p>Um ein neues Feld hinzuzufügen, bearbeiten Sie das Textfeld unterhalb der Liste
-oder wählen einen Feldnamen aus dem Dropdown-Menü und klicken auf <b>Hinzufügen</b>.
-Der gewählte Feldname erscheint am Ende der Liste.
-
-<p>Um eines oder mehrere Felder zu löschen, wählen Sie sie in der Liste aus und
-klicken auf <b>Löschen</b>.
-
-<p>Die Reihenfolge der Felder können Sie ändern, indem Sie einen Feldnamen auswählen
-und die Pfeiltasten benutzen, um das Feld nach oben oder nach unten zu verschieben.
-
-<p>Es gibt eine Beschränkung beim Anpassen der Eintragstypen; bestimmte Typen
-haben eine und/oder-Bedingung in ihren benötigten Feldern. Ein <em>book</em>-Eintrag
-ist beispielsweise komplett, wenn entweder das Feld <em>author</em> oder <em>editor</em>
-oder beide gesetzt sind. Diese Art von Bedingung kann in einem angepassten Eintragstyp
-nicht realisiert werden.
-
-  </body>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Eintragstypen anpassen</h1>
+
+    <p>Um Eintragstypen anzupassen, wählen Sie den
+    Menüpunkt <strong>Optionen --> Eintragstypen
+    anpassen</strong>.</p>
+
+    <p>Wenn Sie einen Eintragstyp anpassen, definieren Sie sowohl
+    sein Erscheinungsbild im Eintragseditor als auch die
+    Bedingungen, nach denen JabRef einen Eintrag als
+    vollständig akzeptiert. Sie können die bestehenden
+    Eintragstypen verändern und neue hinzufügen.</p>
+
+    <p>Beachten Sie, dass in diesem Dialog keine Änderungen
+    gespeichert werden, solange Sie nicht auf
+    <b>Übernehmen</b> oder <b>OK</b> klicken. Wenn Sie
+    <b>Cancel</b> anklicken oder einfach den Dialog
+    schließen, gehen die bislang nicht übernommenen
+    Änderungen verloren.</p>
+
+    <h2>Der Dialog <i>Eintragstypen anpassen</i></h2>
+
+    <p>Der Dialog
+    <i>Eintragstypen anpassen</i> ist in drei Hauptbereiche
+    unterteilt. Im linken Bereich können Sie den Eintragstyp
+    auswählen, den Sie bearbeiten wollen, und neue
+    Eintragstypen hinzufügen. Im mittleren Bereich werden die
+    Einstellungen für die benötigten Felder des
+    ausgewählten Eintragstyps vorgenommen und im rechten
+    Bereich diejenigen der optionalen Felder.</p>
+
+    <h3>Eintragstypen hinzufügen und löschen</h3>
+
+    <p>Die derzeit verfügbaren Eintragstypen werden im linken
+    Bereich des Dialogfensters aufgelistet. Wenn Sie einen
+    Eintragstyp auswählen, werden die anderen Bereiche
+    aktualisiert und zeigen die benötigten und optionalen
+    Felder dieses Eintragstyps.</p>
+
+    <p>Um einen neuen Eintragstyp hinzuzufügen, geben Sie
+    einfach seinen Namen in das Textfeld unter der Typliste ein und
+    klicken <b>Hinzufügen</b>. Der neue Eintragstyp wird zur
+    Liste hinzugefügt und zur Bearbeitung ausgewählt.</p>
+
+    <p>Um einen eigenen Eintragstyp zu entfernen, wählen Sie
+    ihn aus und klicken auf <b>Löschen</b>. Dieser Vorgang ist
+    nur für eigene Eintragstypen verfügbar, die nicht nur
+    Abwandlungen der Standard-Typen sind. Die
+    Standard-Eintragstypen können nicht gelöscht
+    werden.</p>
+
+    <p>Um einem Eintragstyp seinen Standardwert zurüzugeben,
+    wählen Sie ihn aus und drücken auf <b>Standard</b>.
+    Dieser Vorgang ist nur für Standard-Typen verfügbar,
+    die bearbeitet wurden.</p>
+
+    <h2>Eintragstypen bearbeiten</h2>
+
+    <p>Wenn ein Eintragstyp
+    ausgewählt ist, werden die derzeitigen benötigten und
+    optionalen Felder im mittleren und rechten Bereich des
+    Dialogfensters aufgelistet. Das Vorgehen beim Bearbeiten dieser
+    Listen ist für die benötigten und optionalen Felder
+    identisch.</p>
+
+    <p>Um ein neues Feld hinzuzufügen, bearbeiten Sie das
+    Textfeld unterhalb der Liste oder wählen einen Feldnamen
+    aus dem Dropdown-Menü und klicken auf
+    <b>Hinzufügen</b>. Der gewählte Feldname erscheint am
+    Ende der Liste.</p>
+
+    <p>Um eines oder mehrere Felder zu löschen, wählen
+    Sie sie in der Liste aus und klicken auf
+    <b>Löschen</b>.</p>
+
+    <p>Die Reihenfolge der Felder können Sie ändern,
+    indem Sie einen Feldnamen auswählen und die Pfeiltasten
+    benutzen, um das Feld nach oben oder nach unten zu
+    verschieben.</p>
+
+    <p>Es gibt eine Beschränkung beim Anpassen der
+    Eintragstypen; bestimmte Typen haben eine und/oder-Bedingung in
+    ihren benötigten Feldern. Ein <em>book</em>-Eintrag ist
+    beispielsweise komplett, wenn entweder das Feld <em>author</em>
+    oder <em>editor</em> oder beide gesetzt sind. Diese Art von
+    Bedingung kann in einem angepassten Eintragstyp nicht
+    realisiert werden.</p>
+</body>
 </html>
\ No newline at end of file
diff --git a/src/help/de/CustomExports.html b/src/help/de/CustomExports.html
index df92a23..09fb510 100644
--- a/src/help/de/CustomExports.html
+++ b/src/help/de/CustomExports.html
@@ -1,208 +1,449 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Exportfilter anpassen</h1>
+
+    <p>Mit JabRef können Sie Ihre
+    eigenen Exportfilter definieren und genau so wie die
+    Standard-Exportfilter benutzen. Ein Exportfilter wird durch
+    eine oder mehr <i>Layout-Dateien</i> definiert, die mittels
+    eingebauter Formatierprogramme das Format der exportierten
+    Dateien festlegen. Ihre Layout-Datei müssen Sie in einem
+    separaten Texteditor erstellen.</p>
+
+    <h2>Hinzufügen eines Exportfilters</h2>
+
+    <p>Die einzige
+    Voraussetzung für einen Exportfilter ist, daß eine
+    Datei mit der Endung <b>.layout</b> vorhanden ist. Um einen
+    neuen, eigenen Exportfilter hinzuzufügen, öffnen Sie
+    das Dialogfenster <b>Optionen -> Verwalte externe
+    Exportfilter</b> und klicken auf die Schaltfläche
+    <b>Neu</b>. Es öffnet sich ein neues Fenster, in dem Sie
+    einen Namen (der als Auswahl im Dateityp-Dropdownmenü
+    erscheint, wenn man <b>Datei -> Exportieren</b> im
+    JabRef-Hauptfenster wählt), eine Pfadangabe zur
+    <b>.layout</b>-Datei und die gewünschte Dateiendung
+    für den Exportfilter angeben können. Wenn Sie den
+    Exportfilter benutzen, wird diese Endung im Datei-Dialog
+    automatisch vorgeschlagen.</p>
+
+    <h2>Das Erstellen des Exportfilters</h2>
+
+    <p>Um einen Eindruck zu
+    bekommen, wie Exportfilter auszusehen haben, suchen Sie am
+    besten auf unserer Homepage nach dem Paket, das die
+    Layout-Dateien der Standard-Exportfilter enthält.</p>
+
+    <h3>Layout-Dateien</h3>
+
+    <p>Nehmen wir einmal an, dass wir einen
+    HTML-Exportfilter erstellen wollen.</p>
+
+    <p>Der Exportfilter muss lediglich aus einer einzigen
+    <b>.layout</b>-Datei bestehen, die in diesem Fall
+    <i>html.layout</i> genannt werden könnte. Sie können
+    darüber hinaus auch zwei Dateien mit den Namen
+    <i>html.begin.layout</i> und <i>html.end.layout</i> anlegen.
+    Die erste dieser beiden Dateien enthält den Kopfteil der
+    Ausgabe, die zweite den Fußteil. JabRef sucht jedes Mal,
+    wenn der Exportfilter benutzt wird, nach diesen Dateien und
+    fügt sie – falls sie gefunden
+    werden – wörtlich vor bzw. nach den einzelnen
+    Einträgen in die Ausgabe ein.</p>
+
+    <p>Beachten Sie, dass sich diese Dateien in demselben
+    Verzeichnis wie <i>html.layout</i> befinden müssen und die
+    Namensbestandteile <b>.begin</b> bzw. <b>.end</b> enthalten
+    müssen.</p>
+
+    <p>In unserem Beispiel-Exportfilter könnten diese Dateien
+    folgendermaßen aussehen:</p>
+
+    <p><i>html.begin.layout</i>:<br />
+    <code><HTML><br />
+     <BODY> text="#275856"><br />
+    <basefont size="4" color="#2F4958"
+    face="arial"></code></p>
+
+    <p><i>html.end.layout</i>:<br />
+    <code></BODY><br />
+     </HTML></code></p>
+
+    <p>Die Datei <i>html.layout</i> stellt die
+    <i>Standard</i>-Formatvorlage für den Export eines
+    einzelnen Eintrags bereit. Falls Sie unterschiedliche
+    Formatvorlagen für verschiedene Eintragstypen anwenden
+    wollen, müssen Sie Eintrags-spezifische
+    <b>.layout</b>-Dateien erstellen. Diese müssen sich
+    ebenfalls in demselben Verzeichnis wie die Haupt-Layout-Datei
+    befinden und den Namensbestandteil <b>.entrytype</b> enthalten.
+    Der Name des Eintragstyps muss komplett in Kleinbuchstaben
+    geschrieben werden. In unserem Beispiel wollen wir eine
+    Formatvorlage für Einträge des Typs "book" haben, die
+    in der Datei <i>html.book.layout</i> abgelegt wird. Für
+    eine Dissertation würden wir die Datei
+    <i>html.phdthesis.layout</i> anlegen – und so
+    weiter. Diese Dateien sind der Standard-Layout-Datei sehr
+    ähnlich, nur dass sie lediglich für Einträge des
+    entsprechenden Typs genutzt werden. Beachten Sie, dass die
+    Standard-Layout-Datei so allgemein gehalten werden kann, dass
+    sie die meisten Eintragstypen abdeckt.</p>
+
+    <h3>Das Format der Layout-Datei</h3>
+
+    <p>Layout-Dateien werden mit
+    einem einfachen markup-Format erstellt, bei dem die Kommandos
+    mit einem "backslash" (<code>\</code>) eingeleitet werden. Alle
+    Textbestandteile, die nicht als Kommando identifiziert werden,
+    gelangen direkt in die Ausgabedatei.</p>
+
+    <h3>Feldkommandos</h3>
+
+    <p>Ein beliebiges Wort, vor dem ein backslash steht, z.B.
+    <code>\author</code>, <code>\editor</code>, <code>\title</code>
+    or <code>\year</code>, wird als Verweis auf das entsprechende
+    Feld ausgewertet, das dann direkt in die Ausgabe kopiert
+    wird.</p>
+
+    <h3>Feldformatierer</h3>
+
+    <p>Oft muss der Feldinhalt vor der Ausgabe verarbeitet werden.
+    Dies wird mit Hilfe eines <i>Feldformatierers</i> gemacht -
+    einer java class, die eine Methode zur Verarbeitung des
+    Feldinhaltes enthält.</p>
+
+    <p>Ein Formatierer wird angewendet, indem man das Kommando
+    <code>\format</code> gefolgt vom Namen des Formatierers in
+    eckigen Klammern und dem Feldnamen in geschweiften Klammern
+    einfügt, z.B.:</p>
+
+    <p><code>\format[ToLowerCase]{\author}</code></p>
+
+    <p>Sie können auch mehrere Formatierer angeben, getrennt
+    durch Kommas. Sie werden nacheinander aufgerufen, und zwar von
+    links nach rechts. Das Kommando</p>
+
+    <p><code>\format[ToLowerCase,HTMLChars]{\author}</code></p>
+
+    <p>ruft z.B. zunächst den Formatierer <b>ToLowerCase</b>
+    auf, <b>HTMLChars</b> formatiert anschließend das
+    Ergebnis. Auf diese Weise können Sie eine beliebige Anzahl
+    an Formatierern auflisten.</p>
+
+    <p>JabRef bietet die folgenden Formatierer, wobei einige von
+    anderen abhängen:</p>
+
+    <ul>
+        <li><code>HTMLChars</code> : ersetzt TeX-spezifische
+        Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
+        HTML-Entsprechungen.</li>
+
+        <li><code>HTMLParagraphs</code> : interpretiert zwei
+        aufeinanderfolgende Zeilenumbrüche (z.B. \n \n) als
+        Beginn eines neuen Absatzes und erstellt dementsprechend
+        Absatz-HTML-Tags.</li>
+
+        <li><code>XMLChars</code> : ersetzt TeX-spezifische
+        Sonderzeichen (z.B. {\^a} oder {\"{o}}) durch ihre
+        XML-Entsprechungen.</li>
+
+        <li><code>CreateDocBookAuthors</code> : formatiert das
+        author-Feld im DocBook-Stil.</li>
+
+        <li><code>CreateDocBookEditors</code> : Dokumentation
+        folgt.</li>
+
+        <li><code>CurrentDate</code> : gibt das aktuelle Datum aus.
+        Ohne Argument gibt dieser Formatierer das aktuelle Datum im
+        Format "JJJJ.MM.TT HH:MM:SS Z" (Datum, Zeit und Zeitzone)
+        aus. Mit einem anderen Format-String als Argument kann das
+        Datum angepasst werden. So ergibt
+        <code>\format[CurrentDate]{yyyy.MM.dd}</code> nur das
+        Datum, z.B. 2005.11.30.</li>
+
+        <li><code>AuthorFirstFirst</code> : formatiert die Felder
+        author/editor mit den Vornamen zuerst.</li>
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+        <li><code>AuthorFirstFirstCommas</code> : formatiert die
+        Felder author/editor mit den Vornamen zuerst und abgetrennt
+        durch Kommas.</li>
+
+        <li><code>AuthorFirstAbbrLastCommas</code> : Dokumentation
+        folgt.</li>
+
+        <li><code>AuthorFirstAbbrLastOxfordCommas</code> :
+        Dokumentation folgt.</li>
+
+        <li><code>AuthorFirstLastOxfordCommas</code> :
+        Dokumentation folgt.</li>
+
+        <li><code>AuthorLastFirst</code> : formatiert die Felder
+        author/editor mit den Nachnamen zuerst.</li>
 
-<H1>Exportfilter anpassen</H1>
+        <li><code>AuthorLastFirstAbbreviator</code> : kürzt
+        die Vornamen aller Autoren. Dieser Formatierer kann nur
+        angewendet werden, wenn <code>AuthorLastFirst</code>
+        bereits benutzt wurde.</li>
 
-Mit JabRef können Sie Ihre eigenen Exportfilter definieren und genau so wie die
-Standard-Exportfilter benutzen. Ein Exportfilter wird durch eine oder mehr <i>Layout-Dateien</i>
-definiert, die mittels eingebauter Formatierprogramme das Format der exportierten Dateien
-festlegen. Ihre Layout-Datei müssen Sie in einem separaten Texteditor erstellen.
+        <li><code>AuthorLastFirstCommas</code> : Dokumentation
+        folgt.</li>
 
-<H2>Hinzufügen eines Exportfilters</H2>
+        <li><code>AuthorLastFirstOxfordCommas</code> :
+        Dokumentation folgt.</li>
 
-Die einzige Voraussetzung für einen Exportfilter ist, daß eine Datei mit der
-Endung <b>.layout</b> vorhanden ist. Um einen neuen, eigenen Exportfilter hinzuzufügen,
-öffnen Sie das Dialogfenster <b>Optionen -> Verwalte externe Exportfilter</b> und klicken
-auf die Schaltfläche <b>Neu</b>. Es öffnet sich ein neues Fenster, in dem Sie einen
-Namen (der als Auswahl im Dateityp-Dropdownmenü erscheint, wenn man <b>Datei -> Exportieren</b>
-im JabRef-Hauptfenster wählt), eine Pfadangabe
-zur <b>.layout</b>-Datei und die gewünschte Dateiendung für den Exportfilter angeben
-können. Wenn Sie den Exportfilter benutzen, wird diese Endung im Datei-Dialog automatisch
-vorgeschlagen.
+        <li><code>AuthorLastFirstAbbrCommas</code> : Dokumentation
+        folgt.</li>
 
-<H2>Das Erstellen des Exportfilters</H2>
+        <li><code>AuthorLastFirstAbbrOxfordCommas</code> :
+        Dokumentation folgt.</li>
 
-Um einen Eindruck zu bekommen, wie Exportfilter auszusehen haben, suchen Sie am besten auf unserer
-Homepage nach dem Paket, das die Layout-Dateien der Standard-Exportfilter enthält.
+        <li><code>AuthorAndsReplacer</code> : ersetzt "and"
+        zwischen den Namen durch ";", zwischen den letzten beiden
+        Autoren steht "&".</li>
 
-<H3>Layout-Dateien</H3>
+        <li><code>AuthorAndsCommaReplacer</code> : ersetzt "and"
+        zwischen den Namen durch "," sowie "&" zwischen den
+        beiden letzten.</li>
 
-Nehmen wir einmal an, dass wir einen HTML-Exportfilter erstellen wollen.
+        <li><code>AuthorOrgSci</code> : Der erste Autor erscheint
+        als "Nachname, Vorname", alle anderen als "Vorname
+        Nachname". Vornamen werden abgekürzt.</li>
+
+        <li><code>AuthorAbbreviator</code> : Dokumentation
+        folgt.</li>
+
+        <li><code>AuthorNatBib</code> : formatiert Autorennamen im
+        Natbib-Stil, also nur mit Nachnamen; zwei Autoren werden
+        durch ein "and" voneinander getrennt, bei mehr als zwei
+        Autoren wird der erste angegeben, gefolgt von "et al."</li>
 
-<P>Der Exportfilter muss lediglich aus einer einzigen <b>.layout</b>-Datei bestehen, die in diesem
-Fall <i>html.layout</i> genannt werden könnte. Sie können darüber hinaus auch zwei
-Dateien mit den
-Namen <i>html.begin.layout</i> und <i>html.end.layout</i> anlegen. Die erste dieser beiden Dateien
-enthält den Kopfteil der Ausgabe, die zweite den Fußteil. JabRef sucht jedes Mal, wenn der
-Exportfilter benutzt wird, nach diesen Dateien und fügt sie – falls sie gefunden
-werden – wörtlich vor bzw. nach den einzelnen Einträgen in die Ausgabe ein.
-
-<P>Beachten Sie, dass sich diese Dateien in demselben Verzeichnis wie <i>html.layout</i> befinden
-müssen und die Namensbestandteile <b>.begin</b> bzw. <b>.end</b> enthalten müssen.
-
-<P>In unserem Beispiel-Exportfilter könnten diese Dateien folgendermaßen aussehen:
-
-<p><i>html.begin.layout</i>:<br>
-<code><HTML><br>
-  <BODY> text="#275856"><br>
-<basefont size="4" color="#2F4958" face="arial"></code>
-
-<p><i>html.end.layout</i>:<br>
-<code></BODY><br>
-  </HTML></code>
-
-<P>Die Datei <i>html.layout</i> stellt die <i>Standard</i>-Formatvorlage für den Export
-eines einzelnen Eintrags bereit. Falls Sie unterschiedliche Formatvorlagen für verschiedene
-Eintragstypen anwenden wollen, müssen Sie Eintrags-spezifische <b>.layout</b>-Dateien erstellen.
-Diese müssen sich ebenfalls in demselben Verzeichnis wie die Haupt-Layout-Datei befinden und
-den Namensbestandteil <b>.entrytype</b> enthalten. Der Name des Eintragstyps muss komplett in
-Kleinbuchstaben geschrieben werden. In unserem Beispiel wollen wir eine Formatvorlage für
-Einträge des Typs "book" haben, die in der Datei <i>html.book.layout</i> abgelegt wird.
-Für eine Dissertation würden wir die Datei <i>html.phdthesis.layout</i> anlegen –
-und so weiter. Diese Dateien sind der Standard-Layout-Datei sehr ähnlich, nur dass sie lediglich
-für Einträge des entsprechenden Typs genutzt werden. Beachten Sie, dass die
-Standard-Layout-Datei so allgemein gehalten werden kann, dass sie die meisten
-Eintragstypen abdeckt.
-
-<H3>Das Format der Layout-Datei</H3>
-
-Layout-Dateien werden mit einem einfachen markup-Format erstellt, bei dem die Kommandos mit
-einem "backslash" (<code>\</code>) eingeleitet werden. Alle Textbestandteile, die nicht als
-Kommando identifiziert werden, gelangen direkt in die Ausgabedatei.
-
-<H3>Feldkommandos</H3>
-
-<p>Ein beliebiges Wort, vor dem ein backslash steht, z.B. <code>\author</code>, <code>\editor</code>,
-<code>\title</code> or <code>\year</code>, wird als Verweis auf das entsprechende Feld ausgewertet,
-das dann direkt in die Ausgabe kopiert wird.
-
-<H3>Feldformatierer</H3>
-
-<p>Oft muss der Feldinhalt vor der Ausgabe verarbeitet werden. Dies wird mit Hilfe eines
-<i>Feldformatierers</i> gemacht - einer java class, die eine Methode zur Verarbeitung des
-Feldinhaltes enthält.
-<p>Ein Formatierer wird angewendet, indem man das Kommando <code>\format</code> gefolgt vom Namen
-des Formatierers in eckigen Klammern und dem Feldnamen in geschweiften Klammern einfügt, z.B.:
-
-  <p><code>\format[ToLowerCase]{\author}</code>
-
-<p>Sie können auch mehrere Formatierer angeben, getrennt durch Kommas. Sie werden nacheinander
-aufgerufen, und zwar von links nach rechts. Das Kommando
-
-  <p><code>\format[ToLowerCase,HTMLChars]{\author}</code>
-
-<p>ruft z.B. zunächst den Formatierer <b>ToLowerCase</b> auf, <b>HTMLChars</b> formatiert
-anschließend das Ergebnis. Auf diese Weise können Sie eine beliebige Anzahl an
-Formatierern auflisten.
+        <li><code>NoSpaceBetweenAbbreviations</code> : Leerzeichen
+        zwischen mehreren abgekürzten Vornamen werden
+        gelöscht.</li>
+
+        <li><code>FormatPagesForHTML</code> : ersetzt "--" durch
+        "-".</li>
 
-<p>JabRef bietet die folgenden Formatierer, wobei einige von anderen abhängen:
-
-<ul>
-<li><code>HTMLChars</code> : ersetzt TeX-spezifische Sonderzeichen (z.B. {\^a} oder {\"{o}})
-  durch ihre HTML-Entsprechungen.
-<li><code>HTMLParagraphs</code> : interpretiert zwei aufeinanderfolgende Zeilenumbrüche (z.B. \n   \n) als Beginn eines neuen Absatzes und erstellt dementsprechend Absatz-HTML-Tags.
-<li><code>XMLChars</code> : ersetzt TeX-spezifische Sonderzeichen (z.B. {\^a} oder {\"{o}})
-  durch ihre XML-Entsprechungen.
-
-<li><code>CreateDocBookAuthors</code> : formatiert das author-Feld im DocBook-Stil.
-<li><code>CreateDocBookEditors</code> : Dokumentation folgt.
-
-<li><code>CurrentDate</code> : gibt das aktuelle Datum aus. Ohne Argument gibt dieser Formatierer das aktuelle Datum im Format "JJJJ.MM.TT HH:MM:SS Z" (Datum, Zeit und Zeitzone) aus. Mit einem anderen Format-String als Argument kann das Datum angepasst werden. So ergibt <code>\format[CurrentDate]{yyyy.MM.dd}</code> nur das Datum, z.B. 2005.11.30.
-
-<li><code>AuthorFirstFirst</code> : formatiert die Felder author/editor mit den Vornamen zuerst.
-<li><code>AuthorFirstFirstCommas</code> : formatiert die Felder author/editor mit den Vornamen zuerst
-und abgetrennt durch Kommas.
-<li><code>AuthorFirstAbbrLastCommas</code> : Dokumentation folgt.
-<li><code>AuthorFirstAbbrLastOxfordCommas</code> : Dokumentation folgt.
-<li><code>AuthorFirstLastOxfordCommas </code> : Dokumentation folgt.
-
-<li><code>AuthorLastFirst</code> : formatiert die Felder author/editor mit den Nachnamen zuerst.
-<li><code>AuthorLastFirstAbbreviator</code> : kürzt die Vornamen aller Autoren.
-Dieser Formatierer kann nur angewendet werden, wenn <code>AuthorLastFirst</code> bereits benutzt wurde.
-<li><code>AuthorLastFirstCommas</code> : Dokumentation folgt.
-<li><code>AuthorLastFirstOxfordCommas</code> : Dokumentation folgt.
-<li><code>AuthorLastFirstAbbrCommas</code> : Dokumentation folgt.
-<li><code>AuthorLastFirstAbbrOxfordCommas</code> : Dokumentation folgt.
-
-<li><code>AuthorAndsReplacer</code> : ersetzt "and" zwischen den Namen durch ";", zwischen den letzten beiden Autoren steht "&".
-<li><code>AuthorAndsCommaReplacer</code> : ersetzt "and" zwischen den Namen durch "," sowie "&" zwischen den beiden letzten.
-
-<li><code>AuthorOrgSci</code> : Der erste Autor erscheint als "Nachname, Vorname", alle anderen als "Vorname Nachname". Vornamen werden abgekürzt.
-<li><code>AuthorAbbreviator</code> : Dokumentation folgt.
-<li><code>AuthorNatBib</code> : formatiert Autorennamen im Natbib-Stil, also nur mit Nachnamen; zwei Autoren werden durch ein "and" voneinander getrennt, bei mehr als zwei Autoren wird der erste angegeben, gefolgt von "et al."
-<li><code>NoSpaceBetweenAbbreviations</code> : Leerzeichen zwischen mehreren abgekürzten Vornamen werden gelöscht.
-
-<li><code>FormatPagesForHTML</code> : ersetzt "--" durch "-".
-<li><code>FormatPagesForXML</code> : ersetzt "--" durch einen XML en-dash (Gedanken- bzw. Bis-Strich).
-<li><code>RemoveBrackets</code> : entfernt alle geschweiften Klammern "{" oder "}".
-<li><code>RemoveBracketsAddComma</code> : Dokumentation folgt.
-<li><code>RemoveWhitespace</code> : Dokumentation folgt.
-<li><code>RemoveLatexCommands</code> : entfernt LaTeX Kommandos wie <code>\em</code>, <code>\textbf</code>
-etc. Zusammen mit <code>HTMLChars</code> oder <code>XMLChars</code> sollte dieser Formatierer
-zuletzt aufgerufen werden.
-<li><code>ToLowerCase</code> : macht aus allen Buchstaben Kleinbuchstaben.
-
-<li><code>CompositeFormat</code> : Dokumentation folgt.
-<li><code>GetOpenOfficeType</code> : Dokumentation folgt.
-<li><code>RTFChars</code> : Dokumentation folgt.
-<li><code>ResolvePDF</code> : Dokumentation folgt.
-</ul>
-
-<p>Falls keiner der verfügbaren Formatierer das Ergebnis erzielt, das Sie erreichen möchten,
-können Sie Ihren eigenen Formatierer hinzufügen, indem Sie das
-<code>net.sf.jabref.export.layout.LayoutFormatter</code>-Interface implementieren. Wenn Sie Ihre Klasse
-(class) in das Paket <code>net.sf.jabref.export.layout.format</code> einfügen, können Sie
-den Formatierer mit seinem Klassennamen aufrufen, so wie auch die Standard-Formatierer. Ansonsten
-müssen Sie den Formatierer mit seinem vollen Namen aufrufen (inklusive Paketname). In jedem Fall
-muss der Formatierer in ihrem classpath sein, wenn Sie JabRef starten.
-
-<H3>Bedingte Ausgabe</H3>
-
-Manche statische Ausgabe macht nur Sinn, wenn ein bestimmtes Feld nicht leer ist. Wenn wir z.B. hinter
-den Namen der Editoren den Text <code>(Hrsg.)</code> haben wollen, brauchen wir folgendes:
-
-<p><code>\format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)</code>
+        <li><code>FormatPagesForXML</code> : ersetzt "--" durch
+        einen XML en-dash (Gedanken- bzw. Bis-Strich).</li>
 
-<p>Wenn nun aber das <code>editor</code>-Feld leer ist - möglicherweise ist es für den Eintrag,
-der exportiert werden soll, nicht erforderlich -, dann würde das <code>(Hrsg.)</code> dennoch
-erscheinen. Das kann man mit den Kommandos <code>\begin</code> und <code>\end</code> verhindern:
-
-<p><code>\begin{editor}<br>\format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)
-<br>\end{editor}</code>
+        <li><code>RemoveBrackets</code> : entfernt alle
+        geschweiften Klammern "{" oder "}".</li>
 
-<p>Die Kommandos <code>\begin</code> und <code>\end</code> sorgen dafür, dass der Text, den sie
-einschließen, nur dann ausgegeben wird, falls das Feld, auf das in den geschweiften Klammern
-verwiesen wird, für den zu exportierenden Eintrag definiert und damit nicht leer ist.
-
-<p><b>Anmerkung:</b> Das Benutzen der Kommandos <code>\begin</code> und <code>\end</code> ist ein
-Schlüssel zum Erstellen von Layout-Dateien, die mit einer Vielzahl von Eintragstypen
-umgehen können.
-
-<H3>Gruppierte Ausgabe</H3>
-
-Wenn Sie Ihre Einträge auf der Basis eines bestimmten Feldes gruppieren wollen, benutzen Sie
-die Kommandos für die gruppierte Ausgabe.
-Die gruppierte Ausgabe ist der bedingten Ausgabe sehr ähnlich, auß dass der Text zwischen
-den Kommandos nur ausgegeben wird, wenn das Feld, auf das in den geschweiften Klammern verwiesen wird,
-unterschiedliche Werte enthält.
-
-<p>Nehmen wir zum Beispiel an, dass wir die Ausgabe nach dem keyword (Stichwort) gruppieren wollen.
-Bevor die Datei exportiert wird, müssen die Einträge nach dem keyword sortiert worden sein.
-Dann benutzen Sie die folgenden Kommandos, um nach keyword zu gruppieren:
-
-<p><code>\begingroup{keywords}New Category: \format[HTMLChars]{\keywords}
-<br>	\endgroup{keywords}</code>
-
-<H2>Teilen Sie Ihre Arbeit mit anderen</H2>
-
-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.
-
-</HTML>
\ No newline at end of file
+        <li><code>RemoveBracketsAddComma</code> : Dokumentation
+        folgt.</li>
+
+        <li><code>RemoveWhitespace</code> : Dokumentation
+        folgt.</li>
+
+        <li><code>RemoveLatexCommands</code> : entfernt LaTeX
+        Kommandos wie <code>\em</code>, <code>\textbf</code> etc.
+        Zusammen mit <code>HTMLChars</code> oder
+        <code>XMLChars</code> sollte dieser Formatierer zuletzt
+        aufgerufen werden.</li>
+
+        <li><code>RemoveTilde</code> : ersetzt das Tilde-Zeichen
+        (~), das in LaTeX als festes Leerzeichen dient, durch ein
+        normales Leerzeichen. Nützlich in Kombination mit dem
+        <a href="#NameFormatter">Namens-Formatierer</a>, der im
+        nächsten Abschnitt beschrieben wird.</li>
+
+        <li><code>ToLowerCase</code> : macht aus allen Buchstaben
+        Kleinbuchstaben.</li>
+
+        <li><code>CompositeFormat</code> : Dokumentation
+        folgt.</li>
+
+        <li><code>GetOpenOfficeType</code> : Dokumentation
+        folgt.</li>
+
+        <li><code>RTFChars</code> : Dokumentation folgt.</li>
+
+        <li><code>ResolvePDF</code> : Dokumentation folgt.</li>
+    </ul>
+
+    <p>Falls keiner der verfügbaren Formatierer das Ergebnis
+    erzielt, das Sie erreichen möchten, können Sie Ihren
+    eigenen Formatierer hinzufügen, indem Sie das
+    <code>net.sf.jabref.export.layout.LayoutFormatter</code>-Interface
+    implementieren. Wenn Sie Ihre Klasse (class) in das Paket
+    <code>net.sf.jabref.export.layout.format</code> einfügen,
+    können Sie den Formatierer mit seinem Klassennamen
+    aufrufen, so wie auch die Standard-Formatierer. Ansonsten
+    müssen Sie den Formatierer mit seinem vollen Namen
+    aufrufen (inklusive Paketname). In jedem Fall muss der
+    Formatierer in ihrem classpath sein, wenn Sie JabRef
+    starten.</p>
+
+    <h2><a name="NameFormatter"
+       id="NameFormatter">Eigene Namens-Formatierer
+       verwenden</a></h2>
+
+    <p>Mit JabRef 2.2 ist es jetzt möglich, eigene
+    Namens-Formatierer zu definieren. Dazu wird die Syntax der
+    Bibliographie-Stile (bst) verwendet. Das erlaubt
+    äußerste Flexibilität, ist allerdings
+    aufwändig in der Schreibweise.</p>
+
+    <p>Sie können unter <strong>Optionen -> Einstellungen
+    -> Namens-Formatierer</strong> Ihren eigenen Formatierer
+    schreiben. Benutzen Sie das folgende Format:
+    <code><Fall1>@<Bereich11>@<Format>@<Bereich12>@<Format>@<Bereich13>...@@<br />
+
+     <Fall2>@<Bereich21>@... und so weiter.</code></p>
+
+    <p>Dieses Format teilt die Aufgabe, eine Liste von Autoren zu
+    formatieren, in unterschiedliche Fälle abhängig von
+    der Zahl der Autoren (das ist nötig, weil manche Formate
+    sich je nach der Zahl der Autoren unterscheiden). Die einzelnen
+    Fälle werden durch <code>@@</code> voneinander getrennt
+    und enthalten Anweisungen, wie jeder einzelne Autor in diesem
+    Fall zu formatieren ist. Diese Anweisungen werden durch
+    <code>@</code> getrennt.</p>
+
+    <p>Fälle werden durch Ganzzahlen (1, 2, 3, etc.) oder das
+    Zeichen <code>*</code> (alle Autoren) definiert. Sie geben die
+    nachfolgenden Anweisungen an den Formatierer weiter, falls
+    weniger oder gleich viele Autoren vorhanden sind.</p>
+
+    <p>Bereiche sind entweder
+    <code><Ganzzahl>..<Ganzzahl></code>,
+    <code><Ganzzahl></code> oder das Zeichen <code>*</code>.
+    Die Liste der Autoren fängt bei 1 an. Die Ganzzahlen
+    können einen negativen Wert haben, um vom letzten Autor
+    der Liste zu starten, wobei -1 der Wert für den letzten
+    Autor ist.</p>
+
+    <p>Als Beispiel dient die Autorenliste "Joe Doe and Mary Jane
+    and Bruce Bar and Arthur Kay":</p>
+
+    <ul>
+        <li>1..3 betrifft Joe, Mary und Bruce</li>
+
+        <li>4..4 betrifft Arthur</li>
+
+        <li>* betrifft alle</li>
+
+        <li>2..-1 betrifft Mary, Bruce und Arthur</li>
+    </ul>
+
+    <p>Die <code><Format></code>-Strings nutzen das
+    BibTeX-Namensschema:</p>
+
+    <p>Die vier Buchstaben v, f, l, j stehen für die
+    Namensteile von, Vorname (first), Nachname (last) und Junior
+    und werden in geschweiften Klammern gesetzt. Ein einzelner
+    Buchstabe v, f, l, j bedeutet, dass der Name abgekürzt
+    werden soll. Wenn einer dieser Buchstaben oder Buchstabenpaare
+    vorkommen, gibt JabRef alle entsprechenden Namen (eventuell
+    abgekürzt) aus, aber der Ausdruck in geschweiften Klammern
+    wird nur ausgegeben, wenn der Namensteil existiert.</p>
+
+    <p>Beispielsweise wird beim Format "{ll} {vv {von Part}} {ff}"
+    die Autorenliste "Mary Kay and John von Neumann" von JabRef als
+    "Kay Mary" (mit zwei Leerzeichen) und "Neumann von von Part
+    John" ausgegeben.</p>
+
+    <p>Zwei weitere Beispiele sollen das Ganze verdeutlichen; die
+    BibTeX-Dokumentation gibt weitere Hinweise.</p>
+
+    <p>Kurzes Beispiel: <code>"{ll}, {f.}"</code> formatiert
+    <code>"Joe Doe"</code> als <code>"Doe, J."</code></p>
+
+    <p>Ausführliches Beispiel:</p>
+
+    <blockquote>
+        <p>Um</p>
+
+        <p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur
+        Kay"</code></p>
+
+        <p>als</p>
+
+        <p><code>"Doe, J., Jane, M., Bar, B. and Kay,
+        A."</code></p>
+
+        <p>zu formatieren, nutzt man</p>
+
+        <p><code>1@*@{ll}, {f}.@@2 at 1@{ll}, {f}. at 2@ and {ll},
+        {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}. at -1@ and {ll},
+        {f}.</code></p>
+    </blockquote>
+
+    <p>Falls jemand eine bessere Dokumentation hierzu verfassen
+    möchte: Wenden Sie sich einfach an die
+    JabRef-Maililnglisten!</p>
+
+    <h3>Bedingte Ausgabe</h3>
+
+    <p>Manche statische Ausgabe macht nur
+    Sinn, wenn ein bestimmtes Feld nicht leer ist. Wenn wir z.B.
+    hinter den Namen der Editoren den Text <code>(Hrsg.)</code>
+    haben wollen, brauchen wir folgendes:</p>
+
+    <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor}
+    (Hrsg.)</code></p>
+
+    <p>Wenn nun aber das <code>editor</code>-Feld leer ist -
+    möglicherweise ist es für den Eintrag, der exportiert
+    werden soll, nicht erforderlich -, dann würde das
+    <code>(Hrsg.)</code> dennoch erscheinen. Das kann man mit den
+    Kommandos <code>\begin</code> und <code>\end</code>
+    verhindern:</p>
+
+    <p><code>\begin{editor}<br />
+    \format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)<br />
+     \end{editor}</code></p>
+
+    <p>Die Kommandos <code>\begin</code> und <code>\end</code>
+    sorgen dafür, dass der Text, den sie einschließen,
+    nur dann ausgegeben wird, falls das Feld, auf das in den
+    geschweiften Klammern verwiesen wird, für den zu
+    exportierenden Eintrag definiert und damit nicht leer ist.</p>
+
+    <p><b>Anmerkung:</b> Das Benutzen der Kommandos
+    <code>\begin</code> und <code>\end</code> ist ein
+    Schlüssel zum Erstellen von Layout-Dateien, die mit einer
+    Vielzahl von Eintragstypen umgehen können.</p>
+
+    <h3>Gruppierte Ausgabe</h3>
+
+    <p>Wenn Sie Ihre Einträge auf der
+    Basis eines bestimmten Feldes gruppieren wollen, benutzen Sie
+    die Kommandos für die gruppierte Ausgabe. Die gruppierte
+    Ausgabe ist der bedingten Ausgabe sehr ähnlich, auß
+    dass der Text zwischen den Kommandos nur ausgegeben wird, wenn
+    das Feld, auf das in den geschweiften Klammern verwiesen wird,
+    unterschiedliche Werte enthält.</p>
+
+    <p>Nehmen wir zum Beispiel an, dass wir die Ausgabe nach dem
+    keyword (Stichwort) gruppieren wollen. Bevor die Datei
+    exportiert wird, müssen die Einträge nach dem keyword
+    sortiert worden sein. Dann benutzen Sie die folgenden
+    Kommandos, um nach keyword zu gruppieren:</p>
+
+    <p><code>\begingroup{keywords}New Category:
+    \format[HTMLChars]{\keywords}<br />
+     \endgroup{keywords}</code></p>
+
+    <h2>Teilen Sie Ihre Arbeit mit anderen</h2>
+
+    <p>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.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/CustomImports.html b/src/help/de/CustomImports.html
index da78dce..2bf6485 100644
--- a/src/help/de/CustomImports.html
+++ b/src/help/de/CustomImports.html
@@ -1,68 +1,92 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Importfilter anpassen</H1>
-
-<p>JabRef bietet Ihnen die Möglichkeit, ganz ähnlich den Standard-Importern, eigene Importer
-zu definieren und zu benutzen. Man definiert einen Importer durch eine oder mehrere Java
-<i>Klassen</i>, die Dateinhalte aus einem sogenannten <i>Input stream</i> lesen
-und daraus BibTex-Einträge erzeugen. Sie können vorkompilierte Importer einbinden, die Sie vielleicht
-von SourceForge erhalten haben (siehe "Ihre Arbeit anderen zur Verfügung stellen"). Sie können auch
-mit Grundkenntnissen der Java-Programmierung eigene Importer für für Sie wichtige Referenzquellen
-erstellen oder neue, verbesserte Versionen existierender Importer einbinden, ohne JabRef neu zu
-kompilieren.</p>
-
-<p>Externe Importfilter haben Vorrang vor Standard-Importern. So können Sie mit Ihren Importern
-die existierenden in der automatischen Formaterkennung und an der Kommandozeile in JabRef überschreiben.
-Externe Importfilter selbst sind dann nach Namen sortiert.</p>
-
-<H2>Einen externen Importfilter hinzufügen</H2>
-
-<p>Stellen Sie sicher, dass Sie den Importer in kompilierter Form haben (eine oder mehrere
-<code>.class</code> Dateien) und dass die Klassendateien
-in einer Verzeichnisstruktur entsprechend ihrer Package-Struktur liegen.
-Um einen neuen externen Importfilter hinzuzufügen, öffnen Sie den Dialog
-<b>Optionen -> Verwalte externe Importfilter</b>, und klicken Sie auf
-<b>Aus Klassenpfad hinzufügen</b>. Ein Dateiauswahl-Fenster erscheint,
-mit dem Sie den Klassenpfad des Importers wählen, dass heißt den obersten Ordner,
-in dem die Package-Struktur Ihres Importers beginnt. In einem zweiten Dateiauswahl-Fenster
-wählen Sie die <i>.class</i>-Datei Ihres Importers, die von <code>ImportFormat</code> abgeleitet
-ist. Wenn Sie <b>Klasse auswählen</b> klicken, erscheint Ihr neuer Importer
-in der Liste der externen Importfilter. Alle externen Importfilter erscheinen in den
-JabRef-Submenüs <b>Datei -> Importieren -> Externe Importfilter</b> und
-<b>Datei -> Importieren und Anhängen -> Externe Importfilter</b>.</p>
-
-<p>Bitte beachten Sie: wenn Sie die Klassen in ein anderes Verzeichnis verschieben,
-müssen Sie den Importer entfernen und neu hinzufügen. Wenn Sie einen Importfilter
-mit einem bereits vorhandenen Namen registrieren, ersetzt JabRef den vorhandenen
-externen Importfilter. Auch wenn es in manchen Fällen möglich ist, einen schon registrierten
-Importer zu aktualisieren ohne JabRef neu zu starten (nämlich dann,
-wenn der Importer nicht im Klassenpfad von JabRef ist), empfehlen wir, grundsätzlich
-JabRef neu zu starten, wenn Sie ein Update eines externen Importers durchgeführt haben.
-Sie können auch Importer aus ZIP- oder JAR-Archiven registrieren, wählen Sie einfach
-<b>Aus Archiv-Datei hinzufügen</b>, dann das ZIP- oder JAR-Archiv und dann den Eintrag
-(Klassendatei), der den neuen Importer darstellt.</p>
-
-<H2>Einen Importfilter entwickeln</H2>
-
-Bitte schauen Sie auf unseren Download-Seiten nach Beispielen und nützliche Dateien zur
-Entwicklung Ihres Importfilters.
-
-<H3>Ein einfaches Beispiel</H3>
-
-<p>Angenommen, wir wollen Dateien der folgenden Form importieren:
-<pre>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Importfilter anpassen</h1>
+
+    <p>JabRef bietet Ihnen die Möglichkeit, ganz ähnlich
+    den Standard-Importern, eigene Importer zu definieren und zu
+    benutzen. Man definiert einen Importer durch eine oder mehrere
+    Java <i>Klassen</i>, die Dateinhalte aus einem sogenannten
+    <i>Input stream</i> lesen und daraus BibTex-Einträge
+    erzeugen. Sie können vorkompilierte Importer einbinden,
+    die Sie vielleicht von SourceForge erhalten haben (siehe "Ihre
+    Arbeit anderen zur Verfügung stellen"). Sie können
+    auch mit Grundkenntnissen der Java-Programmierung eigene
+    Importer für für Sie wichtige Referenzquellen
+    erstellen oder neue, verbesserte Versionen existierender
+    Importer einbinden, ohne JabRef neu zu kompilieren.</p>
+
+    <p>Externe Importfilter haben Vorrang vor Standard-Importern.
+    So können Sie mit Ihren Importern die existierenden in der
+    automatischen Formaterkennung und an der Kommandozeile in
+    JabRef überschreiben. Externe Importfilter selbst sind
+    dann nach Namen sortiert.</p>
+
+    <h2>Einen externen Importfilter hinzufügen</h2>
+
+    <p>Stellen Sie sicher, dass Sie den Importer in kompilierter
+    Form haben (eine oder mehrere <code>.class</code> Dateien) und
+    dass die Klassendateien in einer Verzeichnisstruktur
+    entsprechend ihrer Package-Struktur liegen. Um einen neuen
+    externen Importfilter hinzuzufügen, öffnen Sie den
+    Dialog <b>Optionen -> Verwalte externe Importfilter</b>, und
+    klicken Sie auf <b>Aus Klassenpfad hinzufügen</b>. Ein
+    Dateiauswahl-Fenster erscheint, mit dem Sie den Klassenpfad des
+    Importers wählen, dass heißt den obersten Ordner, in
+    dem die Package-Struktur Ihres Importers beginnt. In einem
+    zweiten Dateiauswahl-Fenster wählen Sie die
+    <i>.class</i>-Datei Ihres Importers, die von
+    <code>ImportFormat</code> abgeleitet ist. Wenn Sie <b>Klasse
+    auswählen</b> klicken, erscheint Ihr neuer Importer in der
+    Liste der externen Importfilter. Alle externen Importfilter
+    erscheinen in den JabRef-Submenüs <b>Datei ->
+    Importieren -> Externe Importfilter</b> und <b>Datei ->
+    Importieren und Anhängen -> Externe
+    Importfilter</b>.</p>
+
+    <p>Bitte beachten Sie: wenn Sie die Klassen in ein anderes
+    Verzeichnis verschieben, müssen Sie den Importer entfernen
+    und neu hinzufügen. Wenn Sie einen Importfilter mit einem
+    bereits vorhandenen Namen registrieren, ersetzt JabRef den
+    vorhandenen externen Importfilter. Auch wenn es in manchen
+    Fällen möglich ist, einen schon registrierten
+    Importer zu aktualisieren ohne JabRef neu zu starten
+    (nämlich dann, wenn der Importer nicht im Klassenpfad von
+    JabRef ist), empfehlen wir, grundsätzlich JabRef neu zu
+    starten, wenn Sie ein Update eines externen Importers
+    durchgeführt haben. Sie können auch Importer aus ZIP-
+    oder JAR-Archiven registrieren, wählen Sie einfach <b>Aus
+    Archiv-Datei hinzufügen</b>, dann das ZIP- oder JAR-Archiv
+    und dann den Eintrag (Klassendatei), der den neuen Importer
+    darstellt.</p>
+
+    <h2>Einen Importfilter entwickeln</h2>
+
+    <p>Bitte schauen Sie auf
+    unseren Download-Seiten nach Beispielen und nützliche
+    Dateien zur Entwicklung Ihres Importfilters.</p>
+
+    <h3>Ein einfaches Beispiel</h3>
+
+    <p>Angenommen, wir wollen Dateien der folgenden Form
+    importieren:</p>
+    <pre>
 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
-</pre></p>
+</pre>
 
-<p>Erzeugen Sie in einem Text-Editor eine von <code>ImportFormat</code> abgeleitete Klasse,
-die die Methoden <code>getFormatName()</code>, <code>isRecognizedFormat()</code>
-und <code>importEntries()</code> implementiert. Hier ein Beispiel:
-<pre>
+    <p>Erzeugen Sie in einem Text-Editor eine von
+    <code>ImportFormat</code> abgeleitete Klasse, die die Methoden
+    <code>getFormatName()</code>, <code>isRecognizedFormat()</code>
+    und <code>importEntries()</code> implementiert. Hier ein
+    Beispiel:</p>
+    <pre>
 import java.io.*;
 import java.util.*;
 import net.sf.jabref.*;
@@ -80,7 +104,7 @@ public class SimpleCsvImporter extends ImportFormat {
   }
 
   public List importEntries(InputStream stream) throws IOException {
-  	ArrayList bibitems = new ArrayList();
+        ArrayList bibitems = new ArrayList();
     BufferedReader in = new BufferedReader(ImportFormatReader.getReaderDefaultEncoding(stream));
 
     String line = in.readLine();
@@ -99,33 +123,45 @@ public class SimpleCsvImporter extends ImportFormat {
     return bibitems;
   }
 }
-</pre></p>
-
-<p>Beachten Sie, dass die Beispielklasse im Default-Package liegt. Angenommen, Sie haben
-sie unter <code>/meinpfad/SimpleCsvImporter.java</code> gespeichert. Nehmen wir weiter an,
-die Datei <i>JabRef-2.0.jar</i> ist im gleichen Verzeichnis wie
-<code>SimpleCsvImporter.java</code> und Java ist in Ihrem Kommandopfad.
-Kompilieren Sie die Klasse mit JSDK 1.4 zum Beispiel mit folgendem Kommandozeilen-Aufruf:
-<pre>
-javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
 </pre>
-Nun sollte dort auch eine Datei <code>/mypath/SimpleCsvImporter.class</code> liegen.</p>
-
-<p>Öffnen Sie in JabRef <b>Optionen -> Verwaltung externer Importfilter</b> und klicken Sie
-auf <b>Aus Klassenpfad hinzufügen</b>. Navigieren Sie nach <code>/meinpfad</code> und
-klicken Sie <b>Klassenpfad auswählen</b>. Wählen Sie dann <code>SimpleCsvImporter.class</code>
-und klicken Sie <b>Klasse auswählen</b>. Ihr Importfilter sollte nun in der Liste der
-externen Importfilter unter dem Namen "Simple CSV Importer" erscheinen, und,
-sobald Sie <b>Schließen</b> gewählt haben, auch in den Untermenüs <b>Datei -> Importieren ->
-Externe Importfilter</b> und <b>Datei -> Importieren und Anhängen -> Externe Importfilter</b>
-des JabRef-Hauptfensters.</p>
-
-<H2>Teilen Sie Ihre Arbeit</H2>
-
-Mit externen Importfiltern ist es recht einfach, Importfilter zwischen Nutzern auszutauschen und
-gemeinsam zu nutzen. Wenn Sie einen Importer für ein  Format schreiben, das JabRef noch nicht unterstützt,
-oder einen Importer verbessern, bitten wir Sie, Ihre Ergebnisse auf unserer SourceForge.net
-Seite zu veröffentlichen. Wir bieten gerne eine Sammlung eingereichter Importfilter an oder
-fügen sie unserer Auswahl an Standard-Importfiltern hinzu.
-
-</HTML>
\ No newline at end of file
+
+    <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:</p>
+    <pre>
+javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
+</pre>Nun sollte dort auch eine Datei
+<code>/mypath/SimpleCsvImporter.class</code> liegen.
+
+    <p>Öffnen Sie in JabRef <b>Optionen -> Verwaltung
+    externer Importfilter</b> und klicken Sie auf <b>Aus
+    Klassenpfad hinzufügen</b>. Navigieren Sie nach
+    <code>/meinpfad</code> und klicken Sie <b>Klassenpfad
+    auswählen</b>. Wählen Sie dann
+    <code>SimpleCsvImporter.class</code> und klicken Sie <b>Klasse
+    auswählen</b>. Ihr Importfilter sollte nun in der Liste
+    der externen Importfilter unter dem Namen "Simple CSV Importer"
+    erscheinen, und, sobald Sie <b>Schließen</b> gewählt
+    haben, auch in den Untermenüs <b>Datei -> Importieren
+    -> Externe Importfilter</b> und <b>Datei -> Importieren
+    und Anhängen -> Externe Importfilter</b> des
+    JabRef-Hauptfensters.</p>
+
+    <h2>Teilen Sie Ihre Arbeit</h2>
+
+    <p>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.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/EndNoteFilters.html b/src/help/de/EndNoteFilters.html
index f2482ed..d114cc9 100644
--- a/src/help/de/EndNoteFilters.html
+++ b/src/help/de/EndNoteFilters.html
@@ -1,100 +1,132 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>EndNote Exportfilter</h1>
-
-<h2>Exportieren aus JabRef</h2>
-
-JabRef kann Dateien so exportieren, dass EndNote sie lesen kann.
-Um diese Funktion zu nutzen, wählen Sie <b>Datei -> Exportieren</b>, wählen als Dateityp <b>Endnote (txt)</b> und dann den Namen der Export-Datei.
-
-<h2>Importieren in EndNote</h2>
-
-Der Standard-EndNote-Importfilter kann nicht richtig mit mehreren Autoren oder Editoren umgehen.
-Es gibt zwei Möglichkeiten, um diese Schwierigkeit zu umgehen:
-
-<ol>
-
-<li>Benutzen Sie den eingebauten Filter und bessern Sie die Datei später aus.
-Um die Datei in EndNote zu öffnen, erstellen Sie eine neue Datei oder öffnen
-eine bestehende Datei in EndNote. Dann wählen Sie <b>Datei -> Importieren</b>,
-klicken mit der Maus auf <b>Datei wählen</b>, wählen die exportierte Datei
-aus und drücken auf <b>Auswählen</b>. Anschließend drücken Sie
-auf <b>Import Optionen</b> und wählen <b>EndNote Import</b>. Mit einem Klick
-auf <b>Importieren</b> starten Sie den Importvorgang. Anschließend gehen Sie zum
-Menüpunkt <b>Bearbeiten -> Text ändern</b> und ändern <b>Any Field</b>
-in <b>Author</b>. Geben Sie " and " in das Suchfeld ein (ohne Anführungszeichen) sowie
-ein RETURN-Zeichen in das Feld Ändern (Option-Return unter Mac OS X, Strg-Return
-unter Windows XP). Dann klicken Sie auf <b>Ändern</b>. Wiederholen Sie das Ganze
-für das Feld <b>Secondary Author</b> (Zweiter Autor).
-
-<li>Installieren Sie den <i>EndNote Import from JabRef Filter</i> in <i>EndNote Extras</i>.
-Folgen Sie den Anweisungen in <i>Erweitert</i> (unten). Um die Datei in EndNote zu
-öffnen, erstellen Sie eine neue Datei oder öffnen eine bestehende Datei in
-EndNote. Dann wählen Sie <b>Datei -> Importieren</b>, klicken auf <b>Datei wählen</b>,
-wählen die exportierte Datei aus und drücken auf <b>Auswählen</b>.
-Anschließend drücken Sie auf <b>Import Optionen</b> und wählen
-<b>EndNote Import from JabRef</b>. (Falls dieser Eintrag nicht erscheint, wählen Sie
-Weitere Filter. Wenn er dann immer noch nicht erscheint, wurde der Filter nicht korrekt installiert.)
-Klicken Sie schließlich auf <b>Importieren</b>, um den Importvorgang zu starten.
-
-</ol>
-
-<h2>Anmerkungen</h2>
-
-Der EndNote Exportfilter ordnet BibTeX-Eintragstypen folgenden EndNote-Referenztypen zu:
-
-<pre>
-BibTeX-Eintragstyp -> Endnote Referenztyp
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>EndNote Exportfilter</h1>
+
+    <h2>Exportieren aus JabRef</h2>
+
+    <p>JabRef kann Dateien so
+    exportieren, dass EndNote sie lesen kann. Um diese Funktion zu
+    nutzen, wählen Sie <b>Datei -> Exportieren</b>,
+    wählen als Dateityp <b>Endnote (txt)</b> und dann den
+    Namen der Export-Datei.</p>
+
+    <h2>Importieren in EndNote</h2>
+
+    <p>Der
+    Standard-EndNote-Importfilter kann nicht richtig mit mehreren
+    Autoren oder Editoren umgehen. Es gibt zwei Möglichkeiten,
+    um diese Schwierigkeit zu umgehen:</p>
+
+    <ol>
+        <li>Benutzen Sie den eingebauten Filter und bessern Sie die
+        Datei später aus. Um die Datei in EndNote zu
+        öffnen, erstellen Sie eine neue Datei oder öffnen
+        eine bestehende Datei in EndNote. Dann wählen Sie
+        <b>Datei -> Importieren</b>, klicken mit der Maus auf
+        <b>Datei wählen</b>, wählen die exportierte Datei
+        aus und drücken auf <b>Auswählen</b>.
+        Anschließend drücken Sie auf <b>Import
+        Optionen</b> und wählen <b>EndNote Import</b>. Mit
+        einem Klick auf <b>Importieren</b> starten Sie den
+        Importvorgang. Anschließend gehen Sie zum
+        Menüpunkt <b>Bearbeiten -> Text ändern</b> und
+        ändern <b>Any Field</b> in <b>Author</b>. Geben Sie "
+        and " in das Suchfeld ein (ohne Anführungszeichen)
+        sowie ein RETURN-Zeichen in das Feld Ändern
+        (Option-Return unter Mac OS X, Strg-Return unter Windows
+        XP). Dann klicken Sie auf <b>Ändern</b>. Wiederholen
+        Sie das Ganze für das Feld <b>Secondary Author</b>
+        (Zweiter Autor).</li>
+
+        <li>Installieren Sie den <i>EndNote Import from JabRef
+        Filter</i> in <i>EndNote Extras</i>. Folgen Sie den
+        Anweisungen in <i>Erweitert</i> (unten). Um die Datei in
+        EndNote zu öffnen, erstellen Sie eine neue Datei oder
+        öffnen eine bestehende Datei in EndNote. Dann
+        wählen Sie <b>Datei -> Importieren</b>, klicken auf
+        <b>Datei wählen</b>, wählen die exportierte Datei
+        aus und drücken auf <b>Auswählen</b>.
+        Anschließend drücken Sie auf <b>Import
+        Optionen</b> und wählen <b>EndNote Import from
+        JabRef</b>. (Falls dieser Eintrag nicht erscheint,
+        wählen Sie Weitere Filter. Wenn er dann immer noch
+        nicht erscheint, wurde der Filter nicht korrekt
+        installiert.) Klicken Sie schließlich auf
+        <b>Importieren</b>, um den Importvorgang zu starten.</li>
+    </ol>
+
+    <h2>Anmerkungen</h2>
+
+    <p>Der EndNote Exportfilter ordnet
+    BibTeX-Eintragstypen folgenden EndNote-Referenztypen zu:</p>
+    <pre>
+BibTeX-Eintragstyp -> Endnote Referenztyp
 ------------------------------------------
-misc, other -> Generic
-unpublished -> Manuscript
-manual -> Computer Program
-article -> Journal Article
-book -> Book
-booklet -> Personal Communication
-inbook,incollection -> Book Section
-inproceedings -> Conference Proceedings
-techreport -> Report
-mastersthesis, phdthesis -> Thesis
-</pre>
-
-<h2>Mehrere Autoren</h2>
-
-In der Standardeinstellung geht der Exportfilter davon aus, dass Einträge in den
-Feldern author oder editor, die geklammert sind, mehrere Autoren enthalten und
-ersetzt die Klammern durch ein angehängtes Komma. Dadurch werden Einträge,
-die LaTeX-Befehle mit Klammern enthalten, als Eintrag mit mehreren Autoren gewertet
-und demzufolge unpassend formatiert.
-
-<H2>Erweiterte Benutzung: Endnote Extras</h2>
-
-<h3>Installieren des EndNote Import from JabRef Filters</h3>
-
-Der vorgegebene EndNote-Importfilter kann das Feld author nicht richtig analysieren.
-Der EndNote Import from JabRef Filter kann dies. Außerdem erkennt dieser Filter
-ein Feld <code>endnotereftype</code>, das die vorgegebene Zuordnung überschreibt.
-Um den Filter zu installieren, extrahieren Sie die EndNote Extras (<b>Extras
--> EndNote Filter-Set entpacken</b>) und entpacken die Zip-Datei, die dabei erstellt wird. Dann folgen Sie den Angaben in der Datei <code>readme.txt</code>.
-
-<h3>Ändern der EndNote Referenztypen</h3>
-
-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
-korrekt dargestellt (z.B. wird das pdf-Feld <i>Custom 1</i> heißen statt <i>pdf</i>).
-Darüber hinaus können diese Felder bei neuen Einträgen in EndNote
-nicht genutzt werden, weil sie nicht im Eintragsdialog erscheinen. Um die EndNote-Referenztypen
-anzupassen, müssen Sie die EndNote Extras extrahieren und den Anweisungen in der
-Datei <code>readme.txt</code> folgen.
-
-<h3>Exportieren nach JabRef</h3>
-
-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 (<i>pdf, owner, key</i>
-usw.) unterstützt. Falls Sie diese Felder nutzen wollen, extrahieren Sie die EndNote Extras (<b>Extras -> EndNote Filter-Set entpacken</b>)
-und folgen den Anweisungen in der Datei <code>readme.txt</code>.<p>
-
-</HTML>
\ No newline at end of file
+misc, other -> Generic
+unpublished -> Manuscript
+manual -> Computer Program
+article -> Journal Article
+book -> Book
+booklet -> Personal Communication
+inbook,incollection -> Book Section
+inproceedings -> Conference Proceedings
+techreport -> Report
+mastersthesis, phdthesis -> Thesis</pre>
+
+    <h2>Mehrere Autoren</h2>
+
+    <p>In der Standardeinstellung geht der
+    Exportfilter davon aus, dass Einträge in den Feldern
+    author oder editor, die geklammert sind, mehrere Autoren
+    enthalten und ersetzt die Klammern durch ein angehängtes
+    Komma. Dadurch werden Einträge, die LaTeX-Befehle mit
+    Klammern enthalten, als Eintrag mit mehreren Autoren gewertet
+    und demzufolge unpassend formatiert.</p>
+
+    <h2>Erweiterte Benutzung: Endnote Extras</h2>
+
+    <h3>Installieren des EndNote Import from JabRef Filters</h3>
+
+    <p>Der vorgegebene EndNote-Importfilter kann das Feld author nicht
+    richtig analysieren. Der EndNote Import from JabRef Filter kann
+    dies. Außerdem erkennt dieser Filter ein Feld
+    <code>endnotereftype</code>, das die vorgegebene Zuordnung
+    überschreibt. Um den Filter zu installieren, extrahieren
+    Sie die EndNote Extras (<b>Extras -> EndNote Filter-Set
+    entpacken</b>) und entpacken die Zip-Datei, die dabei erstellt
+    wird. Dann folgen Sie den Angaben in der Datei
+    <code>readme.txt</code>.</p>
+
+    <h3>Ändern der EndNote Referenztypen</h3>
+
+    <p>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 korrekt dargestellt (z.B. wird das pdf-Feld <i>Custom
+    1</i> heißen statt <i>pdf</i>). Darüber hinaus
+    können diese Felder bei neuen Einträgen in EndNote
+    nicht genutzt werden, weil sie nicht im Eintragsdialog
+    erscheinen. Um die EndNote-Referenztypen anzupassen,
+    müssen Sie die EndNote Extras extrahieren und den
+    Anweisungen in der Datei <code>readme.txt</code> folgen.</p>
+
+    <h3>Exportieren nach JabRef</h3>
+
+    <p>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 (<i>pdf, owner, key</i> usw.)
+    unterstützt. Falls Sie diese Felder nutzen wollen,
+    extrahieren Sie die EndNote Extras (<b>Extras -> EndNote
+    Filter-Set entpacken</b>) und folgen den Anweisungen in der
+    Datei <code>readme.txt</code>.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/EntryEditorHelp.html b/src/help/de/EntryEditorHelp.html
index 4fa71f9..878690c 100644
--- a/src/help/de/EntryEditorHelp.html
+++ b/src/help/de/EntryEditorHelp.html
@@ -1,104 +1,144 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Der Eintrags-Editor</H1>
-
-<em>Geöffnet wird der Eintrags-Editor im Hauptfenster durch einen Doppelklick
-auf die Zeile eines Eintrags oder durch Drücken auf ENTER. Der
-Eintrags-Editor wird geschlossen, indem man auf ESC drückt.</em>
-<P>
-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 <em>BibTeX</em> an. Darüber hinaus gibt es
-einige Felder, die <em>Allgemeine Felder</em> genannt werden und für alle
-Eintragstypen gelten.
-
-<P>Sie können die Felder, die für die einzelnen Eintragstypen als benötigt und optional
-angesehen werden, und auch die Allgemeinen Felder anpassen. Schlagen Sie unter
-<a href="CustomEntriesHelp.html">Eintragstypen anpassen</a> nach, wenn Sie mehr Informationen
-darüber erhalten möchten.
-
-<P>Nähere Informationen darüber, was in die Felder eingetragen werden soll,
-finden sie in der <a href="BibtexHelp.html">Bibtex Hilfe</a>.
-
-<H2>Die Panels des Eintrags-Editors</H2>
-
-Der Eintrags-Editor besteht in der Standardeinstellung aus fünf Panels: <em>Benötigte Felder</em>,
-<em>Optionale Felder</em>, <em>General</em>, <em>Abstract</em> und <em>BibTeX
-Quelltext</em>, wobei <em>General</em> und <em>Abstract</em> vom Benutzer angepasst werden können (siehe
-dazu <a href="GeneralFields.html">Allgemeine Felder festlegen</a>).
-In den ersten drei Panels können Sie mit TAB und SHIFT-TAB zwischen
-den einzelnen Feldern hin- und herwechseln.
-
-<P>Zu einem anderen Panel gelangen Sie, indem Sie auf die Tabs klicken. Mit den folgenden
-Tastaturkürzeln können Sie ebenfalls zwischen den Panels navigieren:
-CTRL-TAB oder CTRL-PLUS wechselt zum Panel rechts vom aktuellen Panel,
- CTRL-SHIFT-TAB oder CTRL-MINUS wechselt dementsprechend zum Panel
- links vom aktuellen Panel. Außerdem können Sie zum nächsten oder
- vorherigen Eintrag wechseln, indem Sie "STRG-SHIFT-Pfeil nach unten" bzw. "STRG-SHIFT-Pfeil nach oben"
- oder die Pfeiltasten in der linken Toolbar drücken.
-
-<P>Das Panel <em>BibTeX Quelltext</em> zeigt, wie der Eintrag aussehen wird, wenn die Datei
-im <em>bibtex</em>-Format gespeichert wird. Wenn Sie wollen, können Sie den
-<em>BibTeX</em> 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 Sie benachrichtigt
-und erhalten die Möglichkeit, den Eintrag noch einmal zu überarbeiten oder den
-vorherigen Inhalt wiederherzustellen.
-
-Wenn in den <strong>Einstellungen</strong> (unter <strong>Allgemein</strong>) die Option
-<strong>Quelltext standardmäßig anzeigen</strong> gewählt wurde,
-wird das Quelltext-Panel beim Öffnen des Eintrags-Editors als erstes angezeigt. Wenn Sie
-lieber den Quelltext bearbeiten als die anderen Panels zu benutzen, sollten Sie diese Option wählen.
-
-<P><strong>Tip:</strong> Wenn Ihre Datei Felder enthält, die JabRef nicht kennt,
-erscheinen diese im Quelltext-Panel.
-
-<P><strong>Tip:</strong> Die <I>pdf</I> und <I>url</I>-Felder unterstützen Drag & Drop.
-Sie können z.B. ein URL aus Ihrem Browser dort einfügen.
-
-<H2>Überprüfung der Feldkonsistenz</H2>
-Wenn der Inhalt eines Feldes geändert wird, überprüft JabRef, ob der neue Inhalt
-akzeptiert werden kann. Bei Feldern, die von <em>BibTeX</em> genutzt werden, wird der Inhalt zum
-einen auf die richtige Klammerung mit geschweiften Klammern, aber auch auf die
-Benutzung des Zeichens '#' hin überprüft. Das "hash"-Symbol darf <em>nur</em>
-paarweise benutzt werden, um damit den Namen eines <em>BibTeX</em>-Strings einzuschließen.
-Beachten Sie, dass JabRef nicht überprüft, ob der angeführte String tatsächlich
-vorhanden ist (der <em>BibTeX</em>-Stil, den Sie benutzen, kann eine beliebige Anzahl von Strings
-definieren, die JabRef nicht kennt).
-<P>
-Falls die Inhalte nicht akzeptabel sind, wird das Feld mit roter Farbe hinterlegt, was auf einen Fehler
-hindeutet. In diesem Fall werden die Änderungen nicht gespeichert.
-
-<!--<H2>Autovervollständigung von Wörtern und Namen</H2>
-Der Eintragseditor bietet die Autovervollständigung von Wörtern.
-Im Dialog <em>Einstellungen</em> können Sie die Autovervollständigung
-ein- oder ausschalten und auswählen, in welchen Feldern die Autovervollständigung
-aktiviert werden soll.
-<P>Bei aktiver Autovervollständigung zeichnet JabRef alle Worte auf, die in jedem der
-ausgewählten Felder der Datei vorkommen. Immer wenn Sie den Anfang eines dieser
-Wörter schreiben, wird das Wort sichtbar vorgeschlagen. Sie können den
-Vorschlag ignorieren, indem Sie einfach weiterschreiben. Um den Vorschlag anzunehmen,
-drücken Sie entweder auf <em>ENTER</em> oder benutzen die Pfeiltasten oder
-andere Tasten, um die Auswahlbox um die vorgeschlagenen Buchstaben zu entfernen.
-<P><em>Anmerkung:</em> Bei den Wörtern, die für die Vorschläge berücksichtigt
-werden, handelt es sich nur um solche, die in demselben Feld in Einträgen der Datei vorkommen, die Sie
-gerade bearbeiten. Es gibt viele Möglichkeiten, um dieses Feature zu realisieren, und wenn Sie der
-Meinung sind, das es auf eine andere Art implementiert werden sollte, würden wir gerne Ihre
-Vorschläge hören.
-
-<H2><em>BibTeX</em> Key kopieren</H2>
-Mit STRG-K oder dem 'Key'-Knopf wird der <em>BibTeX</em> Key des ausgewählten Eintrags
-in die Zwischenablage kopiert.
--->
-<H2><em>BibTeX</em> Key automatisch generieren</H2>
-Um einen <em>BibTeX</em> Key für einen Eintrag automatisch erstellen zu lassen, drücken
-Sie STRG-G oder den entsprechenden (Zauberstab-)Knopf in der Toolbar-Leiste.
-<p>
-Für nähere Informationen, wie die <em>BibTeX</em> Keys generiert werden, schauen Sie
-bitte unter <a href="LabelPatterns.html">Anpassen der automatischen Generierung von BibTeX-keys</a> nach.
-
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Der Eintrags-Editor</h1>
+
+    <p><em>Geöffnet wird der
+    Eintrags-Editor im Hauptfenster durch einen Doppelklick auf die
+    Zeile eines Eintrags oder durch Drücken auf ENTER. Der
+    Eintrags-Editor wird geschlossen, indem man auf ESC
+    drückt.</em></p>
+
+    <p>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
+    <em>BibTeX</em> an. Darüber hinaus gibt es einige Felder,
+    die <em>Allgemeine Felder</em> genannt werden und für alle
+    Eintragstypen gelten.</p>
+
+    <p>Sie können die Felder, die für die einzelnen
+    Eintragstypen als benötigt und optional angesehen werden,
+    und auch die Allgemeinen Felder anpassen. Schlagen Sie unter
+    <a href="CustomEntriesHelp.html">Eintragstypen anpassen</a>
+    nach, wenn Sie mehr Informationen darüber erhalten
+    möchten.</p>
+
+    <p>Nähere Informationen darüber, was in die Felder
+    eingetragen werden soll, finden sie in der
+    <a href="BibtexHelp.html">Bibtex Hilfe</a>.</p>
+
+    <h2>Die Panels des Eintrags-Editors</h2>
+
+    <p>Der Eintrags-Editor
+    besteht in der Standardeinstellung aus fünf Panels:
+    <em>Benötigte Felder</em>, <em>Optionale Felder</em>,
+    <em>General</em>, <em>Abstract</em> und <em>BibTeX
+    Quelltext</em>, wobei <em>General</em> und <em>Abstract</em>
+    vom Benutzer angepasst werden können (siehe dazu
+    <a href="GeneralFields.html">Allgemeine Felder festlegen</a>).
+    In den ersten drei Panels können Sie mit TAB und SHIFT-TAB
+    zwischen den einzelnen Feldern hin- und herwechseln.</p>
+
+    <p>Zu einem anderen Panel gelangen Sie, indem Sie auf die Tabs
+    klicken. Mit den folgenden Tastaturkürzeln können Sie
+    ebenfalls zwischen den Panels navigieren: CTRL-TAB oder
+    CTRL-PLUS wechselt zum Panel rechts vom aktuellen Panel,
+    CTRL-SHIFT-TAB oder CTRL-MINUS wechselt dementsprechend zum
+    Panel links vom aktuellen Panel. Außerdem können Sie
+    zum nächsten oder vorherigen Eintrag wechseln, indem Sie
+    "STRG-SHIFT-Pfeil nach unten" bzw. "STRG-SHIFT-Pfeil nach oben"
+    oder die Pfeiltasten in der linken Toolbar drücken.</p>
+
+    <p>Das Panel <em>BibTeX Quelltext</em> zeigt, wie der Eintrag
+    aussehen wird, wenn die Datei im <em>bibtex</em>-Format
+    gespeichert wird. Wenn Sie wollen, können Sie den
+    <em>BibTeX</em> 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 Sie benachrichtigt und erhalten die
+    Möglichkeit, den Eintrag noch einmal zu überarbeiten
+    oder den vorherigen Inhalt wiederherzustellen. Wenn in den
+    <strong>Einstellungen</strong> (unter
+    <strong>Allgemein</strong>) die Option <strong>Quelltext
+    standardmäßig anzeigen</strong> gewählt wurde,
+    wird das Quelltext-Panel beim Öffnen des Eintrags-Editors
+    als erstes angezeigt. Wenn Sie lieber den Quelltext bearbeiten
+    als die anderen Panels zu benutzen, sollten Sie diese Option
+    wählen.</p>
+
+    <p><strong>Tip:</strong> Wenn Ihre Datei Felder enthält,
+    die JabRef nicht kennt, erscheinen diese im
+    Quelltext-Panel.</p>
+
+    <p><strong>Tip:</strong> Die <i>pdf</i> und <i>url</i>-Felder
+    unterstützen Drag & Drop. Sie können z.B. ein URL
+    aus Ihrem Browser dort einfügen.</p>
+
+    <h2>Überprüfung der Feldkonsistenz</h2>
+
+    <p>Wenn der
+    Inhalt eines Feldes geändert wird, überprüft
+    JabRef, ob der neue Inhalt akzeptiert werden kann. Bei Feldern,
+    die von <em>BibTeX</em> genutzt werden, wird der Inhalt zum
+    einen auf die richtige Klammerung mit geschweiften Klammern,
+    aber auch auf die Benutzung des Zeichens '#' hin
+    überprüft. Das "hash"-Symbol darf <em>nur</em>
+    paarweise benutzt werden, um damit den Namen eines
+    <em>BibTeX</em>-Strings einzuschließen. Beachten Sie,
+    dass JabRef nicht überprüft, ob der angeführte
+    String tatsächlich vorhanden ist (der
+    <em>BibTeX</em>-Stil, den Sie benutzen, kann eine beliebige
+    Anzahl von Strings definieren, die JabRef nicht kennt).</p>
+
+    <p>Falls die Inhalte nicht akzeptabel sind, wird das Feld mit
+    roter Farbe hinterlegt, was auf einen Fehler hindeutet. In
+    diesem Fall werden die Änderungen nicht gespeichert.
+
+    <h2>Autovervollständigung von Wörtern und Namen</h2>
+
+    <p>Der Eintragseditor bietet die Autovervollständigung von Wörtern.
+    Im Dialog <em>Optionen -> Einstellungen</em> können Sie auswählen,
+    in welchen Feldern die Autovervollständigung aktiviert werden soll.</p>
+
+    <p>Bei aktiver Autovervollständigung zeichnet JabRef alle Worte
+	auf, die in jedem der ausgewählten Felder der Datei vorkommen.
+	Immer wenn Sie den Anfang eines dieser Wörter schreiben, wird das
+	Wort sichtbar vorgeschlagen. Sie können den Vorschlag ignorieren,
+	indem Sie einfach weiterschreiben. Um den Vorschlag anzunehmen,
+	drücken Sie entweder auf <em>ENTER</em> oder benutzen die Pfeiltasten
+	oder andere Tasten, um die Auswahlbox um die vorgeschlagenen Buchstaben
+	zu entfernen.<p>
+
+    <p><em>Anmerkung:</em> Bei den Wörtern, die für
+    die Vorschläge berücksichtigt werden, handelt es sich nur um
+    solche, die in demselben Feld in Einträgen der Datei vorkommen, die Sie
+    gerade bearbeiten. Es gibt viele Möglichkeiten, um dieses Feature
+    zu realisieren, und wenn Sie der Meinung sind, das es auf eine andere
+    Art implementiert werden sollte, würden wir gerne Ihre
+    Vorschläge hören.</p>
+
+    <!--<h2><em>BibTeX</em> Key kopieren</h2>
+
+    <p>Mit STRG-K oder dem 'Key'-Knopf wird der <em>BibTeX</em> Key des
+    ausgewählten Eintrags in die Zwischenablage kopiert.</p>-->
+
+    <h2><em>BibTeX</em> Key automatisch generieren</h2>
+
+    <p>Um einen
+    <em>BibTeX</em> Key für einen Eintrag automatisch
+    erstellen zu lassen, drücken Sie STRG-G oder den
+    entsprechenden (Zauberstab-)Knopf in der Toolbar-Leiste.</p>
+
+    <p>Für nähere Informationen, wie die <em>BibTeX</em>
+    Keys generiert werden, schauen Sie bitte unter
+    <a href="LabelPatterns.html">Anpassen der automatischen
+    Generierung von BibTeX-keys</a> nach.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/ExternalFiles.html b/src/help/de/ExternalFiles.html
index b4d58ed..6cdcae9 100644
--- a/src/help/de/ExternalFiles.html
+++ b/src/help/de/ExternalFiles.html
@@ -1,88 +1,155 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Links zu PDF- und PS-Dateien, URLs und DOIs in JabRef</H1>
-
-<b>Anmerkung:</b> Ab JabRef 2.3 gibt es ein <a href="FileLinks.html">verbessertes System für Links zu externen Dateien</a>.
-<p>
-Mit JabRef können Sie Ihre Einträge mit den entsprechenden PDF- oder PS-Dateien,
-die sich auf Ihrem Computer befinden, verlinken. Ebenso ist es möglich, Dateien
-im Internet über ein URL oder DOI zu verlinken.
-
-<H2>Externe Betrachter einrichten</H2>
-
-JabRef benötigt Informationen darüber, welche Programme es für PDF- und PS-Dateien
-und Internetseiten benutzen soll. In der Standardeinstellung werden sie auf Werte gesetzt, die
-wahrscheinlich zu Ihrem Betriebssystem passen, so dass eine gute Chance besteht, dass Sie diese
-Werte nicht zu verändern brauchen.
-
-<p>Um die Einstellungen der externen Programme zu ändern, öffnen Sie den Unterpunkt
-<em>Externe Programme</em> im Dialog <em>Optionen -> Einstellungen</em>.
-
-<H2>Externe Dateien oder Links öffnen</H2>
-
-Es gibt verschiedene Möglichkeiten, wie man externe Dateien oder Internetseiten aus JabRef öffnen kann.
-Im Eintrags-Editor können Sie einfach auf das Textfeld, das ein DOI oder URL enthält, doppelklicken.
-In der Tabellenansicht können Sie einen Eintrag auswählen und die Menüeinträge (unter <em>Extras</em>),
-die Tastenkombinationen (in der Standardeinstellung F4 für PDF/PS und F3 für DOI/URL) oder das Kontextmenü
-(mit der rechten Maustaste) benutzen, um die Datei oder Internetseite zu öffnen. Schließlich können Sie
-auch auf ein PDF-, PS-, URL- oder DOI-Icon in der Tabelle klicken.
-
-<P>In der Standardeinstellung zeigt die Tabellenansicht zwei Spalten mit Icons für die Einträge, die mit
-externen Dateien oder URLs verlinkt sind. Beide Spalten können im Unterpunkt <em>Tabellenansicht</em> des
-Dialogs <em>Optionen -> Einstellungen</em> ausgeblendet werden. Die zweite Spalte zeigt Icons für PDF- oder PS-Dateien
-(nur PDF, wenn beide vorhanden sind), die dritte Spalte zeigt Icons für URL oder DOI (nur URL, wenn beide
-vorhanden sind).
-
-<H2>Der Standard-Ordner für PDF-Dateien</H2>
-
-PDF-Dateien erhalten von JabRef eine "Spezialbehandlung", um das Verlinken mit den entsprechenden Einträgen
-so einfach wie möglich zu gestalten. Um diese "Spezialbehandlung" nutzen zu können, müssen Sie im
-Unterpunkt <em>Externe Programme</em> des Dialogs <em>Optionen -> Einstellungen</em> einen Ordner als
-Standard-Ordner für Ihre PDF-Dateien angeben. Alle PDF-Dateien, die in diesem Ordner oder einem Unterordner
-gespeichert sind, werden mit einer relativen Pfadangabe referenziert, so dass Sie problemlos PDF-Verzeichnisse
-verschieben oder mit mehreren Benutzern von verschiedenen Netzwerkarbeitsplätzen aus an derselben
-Datei arbeiten können.
-
-<P>Wenn Sie Ihren PDF-Dateien dann noch Namen geben, die mit dem BibTeX Key des entsprechenden Eintrags
-übereinstimmen (plus '.pdf' im Dateinamen), sucht JabRef in Ihrem Standard-PDF-Ordner und dessen
-Unterordnern nach der richtigen PDF-Datei. Sobald die korrekt benannte PDF-Datei sich dort befindet, klicken
-Sie auf die Schaltfläche <em>Auto</em> neben dem PDF-Feld im Eintrags-Editor. Wenn die PDF-Datei gefunden wird,
-wird das Feld entsprechend gesetzt.
-
-<P>Wenn Sie eine PDF-Datei wie beschrieben benennen, können Sie sie auch öffnen, ohne das PDF-Feld
-überhaupt zu benutzen. Der Nachteil ist in diesem Fall allerdings, dass das PDF-Icon in der Tabellenansicht
-nicht angezeigt wird, solange das PDF-Feld leer bleibt.
-
-<H2>Dateispezifische PDF- und PS-Verzeichnisse</H2>
-<P>
-Sie können für jede Datei eigene PDF- und PS-Verzeichnisse angeben (<b>Datei -> Eigenschaften der Datei</b>). Diese Verzeichnisse ersetzen dann die Standardverzeichnisse.
-</P>
-
-<a name="RegularExpressionSearch">
-<H2>Die Suche mit regulären Ausdrücken für automatische Verknüpfungen nutzen</H2>
-</a>
-<p>
-Wenn Sie Dateinamen verwenden, die dem bibtexkey ergänzt um die Dateiendung entsprechen, findet JabRef diese Dateien automatisch.
-</p><p>
-Ab Version 2.2 ist mit Hilfe von regulären Ausdrücken eine größere Flexibilität beim Benennen der Dateien gewährleistet. In den meisten Fällen dürfte das Standardverhalten bereits ausreichend sein.
-</p><p>
-In den Einstellungen zu externen Programmen (<b>Optionen -> Einstellungen -> Externe Programme</b>) findet sich eine Option "Suche mit regulärem Ausdruck benutzen". Wenn Sie diese Option aktivieren, können Sie für die Suche in PDF-Verzeichnissen einen eigenen regulären Ausdruck angeben.
-</p><p>
-Die folgende Syntax wird verwendet:
-</p>
-<ul>
-  <li><code>*</code> - Suche in allen direkten Unterverzeichnissen, NICHT im aktuellen Verzeichnis und in Unterverzeichnissen zweiter oder tieferer Ebene.</li>
-  <li><code>**</code> - Rekursive Suche in allen Unterverzeichnissen UND im aktuellen Verzeichnis.</li>
-  <li><code>.</code> und <code>..</code> - Das aktuelle Verzeichnis und das Elternverzeichnis (eine Ebene höher).</li>
-  <li><code>[title]</code> - Alle Ausdrücke in eckigen Klammern werden durch den Inhalt des entsprechenden Felds ersetzt.</li>
-  <li><code>[extension]</code> - Wird durch die Dateiendung des Feldes, das Sie benutzen, ersetzt.</li>
-  <li>Anderer Text wird als regulärer Ausdruck interpretiert. Aber Vorsicht: <em>backslashes</em> müssen mit einem weiteren <em>backslash</em> <em>escaped</em> werden (<tt>\\</tt>), damit sie nicht mit Separatoren in Pfad-Angaben verwechselt werden.</li>
-</ul>
-<p>
-Der Standard ist <code>**/.*[bibtexkey].*\\.[extension]</code>. Damit wird in allen Unterverzeichnissen des Ordners der entsprechenden Dateiendung (z.B. das PDF-Verzeichnis) nach allen Dateien mit der richtigen Dateiendung gesucht, die den bibtexkey in ihrem Namen haben.
-</p>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Links zu PDF- und PS-Dateien, URLs und DOIs in
+    JabRef</h1>
+
+    <p><b>Anmerkung:</b> Ab JabRef 2.3 gibt es ein
+    <a href="FileLinks.html">verbessertes System für Links zu
+    externen Dateien</a>.</p>
+
+    <p>Mit JabRef können Sie Ihre Einträge mit den
+    entsprechenden PDF- oder PS-Dateien, die sich auf Ihrem
+    Computer befinden, verlinken. Ebenso ist es möglich,
+    Dateien im Internet über ein URL oder DOI zu
+    verlinken.</p>
+
+    <h2>Externe Betrachter einrichten</h2>
+
+    <p>JabRef benötigt
+    Informationen darüber, welche Programme es für PDF-
+    und PS-Dateien und Internetseiten benutzen soll. In der
+    Standardeinstellung werden sie auf Werte gesetzt, die
+    wahrscheinlich zu Ihrem Betriebssystem passen, so dass eine
+    gute Chance besteht, dass Sie diese Werte nicht zu
+    verändern brauchen.</p>
+
+    <p>Um die Einstellungen der externen Programme zu ändern,
+    öffnen Sie den Unterpunkt <em>Externe Programme</em> im
+    Dialog <em>Optionen -> Einstellungen</em>.</p>
+
+    <h2>Externe Dateien oder Links öffnen</h2>
+
+    <p>Es gibt
+    verschiedene Möglichkeiten, wie man externe Dateien oder
+    Internetseiten aus JabRef öffnen kann. Im Eintrags-Editor
+    können Sie einfach auf das Textfeld, das ein DOI oder URL
+    enthält, doppelklicken. In der Tabellenansicht können
+    Sie einen Eintrag auswählen und die Menüeinträge
+    (unter <em>Extras</em>), die Tastenkombinationen (in der
+    Standardeinstellung F4 für PDF/PS und F3 für DOI/URL)
+    oder das Kontextmenü (mit der rechten Maustaste) benutzen,
+    um die Datei oder Internetseite zu öffnen.
+    Schließlich können Sie auch auf ein PDF-, PS-, URL-
+    oder DOI-Icon in der Tabelle klicken.</p>
+
+    <p>In der Standardeinstellung zeigt die Tabellenansicht zwei
+    Spalten mit Icons für die Einträge, die mit externen
+    Dateien oder URLs verlinkt sind. Beide Spalten können im
+    Unterpunkt <em>Tabellenansicht</em> des Dialogs <em>Optionen
+    -> Einstellungen</em> ausgeblendet werden. Die zweite Spalte
+    zeigt Icons für PDF- oder PS-Dateien (nur PDF, wenn beide
+    vorhanden sind), die dritte Spalte zeigt Icons für URL
+    oder DOI (nur URL, wenn beide vorhanden sind).</p>
+
+    <h2>Der Standard-Ordner für PDF-Dateien</h2>
+
+    <p>PDF-Dateien
+    erhalten von JabRef eine "Spezialbehandlung", um das Verlinken
+    mit den entsprechenden Einträgen so einfach wie
+    möglich zu gestalten. Um diese "Spezialbehandlung" nutzen
+    zu können, müssen Sie im Unterpunkt <em>Externe
+    Programme</em> des Dialogs <em>Optionen ->
+    Einstellungen</em> einen Ordner als Standard-Ordner für
+    Ihre PDF-Dateien angeben. Alle PDF-Dateien, die in diesem
+    Ordner oder einem Unterordner gespeichert sind, werden mit
+    einer relativen Pfadangabe referenziert, so dass Sie problemlos
+    PDF-Verzeichnisse verschieben oder mit mehreren Benutzern von
+    verschiedenen Netzwerkarbeitsplätzen aus an derselben
+    Datei arbeiten können.</p>
+
+    <p>Wenn Sie Ihren PDF-Dateien dann noch Namen geben, die mit
+    dem BibTeX Key des entsprechenden Eintrags übereinstimmen
+    (plus '.pdf' im Dateinamen), sucht JabRef in Ihrem
+    Standard-PDF-Ordner und dessen Unterordnern nach der richtigen
+    PDF-Datei. Sobald die korrekt benannte PDF-Datei sich dort
+    befindet, klicken Sie auf die Schaltfläche <em>Auto</em>
+    neben dem PDF-Feld im Eintrags-Editor. Wenn die PDF-Datei
+    gefunden wird, wird das Feld entsprechend gesetzt.</p>
+
+    <p>Wenn Sie eine PDF-Datei wie beschrieben benennen,
+    können Sie sie auch öffnen, ohne das PDF-Feld
+    ü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.</p>
+
+    <h2>Dateispezifische PDF- und PS-Verzeichnisse</h2>
+
+    <p>Sie können für jede Datei eigene PDF- und
+    PS-Verzeichnisse angeben (<b>Datei -> Eigenschaften der
+    Datei</b>). Diese Verzeichnisse ersetzen dann die
+    Standardverzeichnisse.</p>
+
+    <h2><a name="RegularExpressionSearch"
+       id="RegularExpressionSearch">Die Suche mit regulären
+       Ausdrücken für automatische Verknüpfungen
+       nutzen</a></h2>
+
+    <p>Wenn Sie Dateinamen verwenden, die dem bibtexkey
+    ergänzt um die Dateiendung entsprechen, findet JabRef
+    diese Dateien automatisch.</p>
+
+    <p>Ab Version 2.2 ist mit Hilfe von regulären
+    Ausdrücken eine größere Flexibilität beim
+    Benennen der Dateien gewährleistet. In den meisten
+    Fällen dürfte das Standardverhalten bereits
+    ausreichend sein.</p>
+
+    <p>In den Einstellungen zu externen Programmen (<b>Optionen
+    -> Einstellungen -> Externe Programme</b>) findet sich
+    eine Option "Suche mit regulärem Ausdruck benutzen". Wenn
+    Sie diese Option aktivieren, können Sie für die Suche
+    in PDF-Verzeichnissen einen eigenen regulären Ausdruck
+    angeben.</p>
+
+    <p>Die folgende Syntax wird verwendet:</p>
+
+    <ul>
+        <li><code>*</code> - Suche in allen direkten
+        Unterverzeichnissen, NICHT im aktuellen Verzeichnis und in
+        Unterverzeichnissen zweiter oder tieferer Ebene.</li>
+
+        <li><code>**</code> - Rekursive Suche in allen
+        Unterverzeichnissen UND im aktuellen Verzeichnis.</li>
+
+        <li><code>.</code> und <code>..</code> - Das aktuelle
+        Verzeichnis und das Elternverzeichnis (eine Ebene
+        höher).</li>
+
+        <li><code>[title]</code> - Alle Ausdrücke in eckigen
+        Klammern werden durch den Inhalt des entsprechenden Felds
+        ersetzt.</li>
+
+        <li><code>[extension]</code> - Wird durch die Dateiendung
+        des Feldes, das Sie benutzen, ersetzt.</li>
+
+        <li>Anderer Text wird als regulärer Ausdruck
+        interpretiert. Aber Vorsicht: <em>backslashes</em>
+        müssen mit einem weiteren <em>backslash</em>
+        <em>escaped</em> werden (<tt>\\</tt>), damit sie nicht mit
+        Separatoren in Pfad-Angaben verwechselt werden.</li>
+    </ul>
+
+    <p>Der Standard ist
+    <code>**/.*[bibtexkey].*\\.[extension]</code>. Damit wird in
+    allen Unterverzeichnissen des Ordners der entsprechenden
+    Dateiendung (z.B. das PDF-Verzeichnis) nach allen Dateien mit
+    der richtigen Dateiendung gesucht, die den bibtexkey in ihrem
+    Namen haben.</p>
 </body>
-</HTML>
\ No newline at end of file
+</html>
\ No newline at end of file
diff --git a/src/help/de/FileLinks.html b/src/help/de/FileLinks.html
index f7f8074..449cac0 100644
--- a/src/help/de/FileLinks.html
+++ b/src/help/de/FileLinks.html
@@ -1,36 +1,87 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Datei-Links in JabRef</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-JabRef lässt Sie Ihre Einträge mit Dateien jeden Typs verlinken, die Sie auf Ihrem System gespeichert haben. Außerdem sind Links zu Dokumenten im Internet in der Form eines URL oder eines DOI möglich. Jedem Eintrag kann eine beliebige Anzahl von Datei-Links zugeordnet werden und jede verlinkte Datei kann schnell aus JabRef heraus geöffnet werden.
+    <h1>Datei-Links in JabRef</h1>
 
-<p>
-Was BibTeX angeht, werden die Datei-Links eines Eintrags in ein einzelnes Feld geschrieben. In JabRef erscheinen sie aber als editierbare Liste von Links, die im Eintrags-Editor zugänglich sind.
+    <p>JabRef lässt Sie Ihre
+    Einträge mit Dateien jeden Typs verlinken, die Sie auf
+    Ihrem System gespeichert haben. Außerdem sind Links zu
+    Dokumenten im Internet in der Form eines URL oder eines DOI
+    möglich. Jedem Eintrag kann eine beliebige Anzahl von
+    Datei-Links zugeordnet werden und jede verlinkte Datei kann
+    schnell aus JabRef heraus geöffnet werden.</p>
 
-<H2>Einrichten der Dateitypen</H2>
+    <p>Was BibTeX angeht, werden die Datei-Links eines Eintrags in
+    ein einzelnes Feld geschrieben. In JabRef erscheinen sie aber
+    als editierbare Liste von Links, die im Eintrags-Editor
+    zugänglich sind.</p>
 
-Für jeden Datei-Link muss ein Dateityp gewählt werden, damit das richtige Programm zum Öffnen der Datei und das entsprechende Icon gefunden werden. Die Liste der Dateitypen können Sie einsehen und bearbeiten, indem Sie <b>Optionen -> Externe Dateitypen verwalten</b> wählen oder auf die Schaltfläche <b>Externe Dateitypen verwalten</b> im Bereich <b>Externe Programme</b> des Einstellungs-Dialogs klicken.
-<p>
-Ein Dateityp besteht aus einem Namen, einem graphischen Icon, einer Dateierweiterung und einer Anwendung zum Öffnen der Dateien. Wenn Sie Windows benutzen, können Sie den Namen der Anwendung weglassen, wenn Sie das Standardprogramm verwenden wollen.
+    <h2>Einrichten der Dateitypen</h2>
 
-<h2>Datei-Links zu einem Eintrag hinzufügen</h2>
+    <p>Für jeden Datei-Link
+    muss ein Dateityp gewählt werden, damit das richtige
+    Programm zum Öffnen der Datei und das entsprechende Icon
+    gefunden werden. Die Liste der Dateitypen können Sie
+    einsehen und bearbeiten, indem Sie <b>Optionen -> Externe
+    Dateitypen verwalten</b> wählen oder auf die
+    Schaltfläche <b>Externe Dateitypen verwalten</b> im
+    Bereich <b>Externe Programme</b> des Einstellungs-Dialogs
+    klicken.</p>
 
-Wenn bei den <a href="GeneralFields.html">Allgemeinen Feldern</a> das Feld "file" eingetragen ist,
-können Sie die Liste der externen Links im <a href="EntryEditorHelp.html">Eintrags-Editor</a> bearbeiten.
-Der Editor hat dann Schaltflächen zum Einfügen, Bearbeiten, Löschen und Sortieren der Links.
+    <p>Ein Dateityp besteht aus einem Namen, einem graphischen
+    Icon, einer Dateierweiterung und einer Anwendung zum
+    Öffnen der Dateien. Wenn Sie Windows benutzen, können
+    Sie den Namen der Anwendung weglassen, wenn Sie das
+    Standardprogramm verwenden wollen.</p>
 
-<p>
-Eine Datei kann mit Hilfe der <b>Auto</b>-Schaltfläche automatisch verlinkt werden, falls sie in Ihrem Dateiverzeichnis (<b>Einstellungen -> Externe Programme -> Links zu externen Dateien -> Hauptverzeichnis</b>) oder einem Unterordner liegt, eine Dateierweiterung hat, die JabRef bekannt ist, und einen Namen hat, der mit dem BibTeX-Key des Eintrags übereinstimmt. Die Regeln, nach denen Dateinamen mit BibTeX-Keys automatisch verknüpft werden, können eingestellt werden  [...]
+    <h2>Datei-Links zu einem Eintrag hinzufügen</h2>
 
-<p>
-Um eine Datei herunterzuladen und mit einem Eintrag zu verlinken, benutzen Sie die Schaltfläche <b>Download</b> im Eintrags-Editor. Es erscheint ein Dialog, in dem Sie den URL eingeben müssen. Die Datei wird dann in Ihr Hauptverzeichnis gespeichert, anhand des BibTeX-Keys benannt und mit dem Eintrag verknüpft.
+    <p>Wenn bei
+    den <a href="GeneralFields.html">Allgemeinen Feldern</a> das
+    Feld "file" eingetragen ist, können Sie die Liste der
+    externen Links im
+    <a href="EntryEditorHelp.html">Eintrags-Editor</a> bearbeiten.
+    Der Editor hat dann Schaltflächen zum Einfügen,
+    Bearbeiten, Löschen und Sortieren der Links.</p>
 
-<h2>Externe Dateien öffnen</h2>
+    <p>Eine Datei kann mit Hilfe der <b>Auto</b>-Schaltfläche
+    automatisch verlinkt werden, falls sie in Ihrem
+    Dateiverzeichnis (<b>Einstellungen -> Externe Programme
+    -> Links zu externen Dateien -> Hauptverzeichnis</b>)
+    oder einem Unterordner liegt, eine Dateierweiterung hat, die
+    JabRef bekannt ist, und einen Namen hat, der mit dem BibTeX-Key
+    des Eintrags übereinstimmt. Die Regeln, nach denen
+    Dateinamen mit BibTeX-Keys automatisch verknüpft werden,
+    können eingestellt werden unter <b>Einstellungen ->
+    Externe Programme -> Links zu externen Dateien -> Suche
+    mit regulärem Ausdruck benutzen</b>.</p>
 
-Es gibt mehrere Möglichkeiten, externe Dateien oder Internetseiten zu öffnen. In der Tabellenansicht können Sie einen Eintrag auswählen und mit dem Menü, einem Tastenkürzel oder dem Kontextmenü den ersten externen Link öffnen. Falls in der Tabellenansicht die Spalte <b>file</b> angezeigt wird (<b>Einstellungen -> Tabellenansicht -> Spezielle Spalten -> Datei-Spalten anzeigen</b>), können Sie auch auf das Icon klicken, um den ersten Link eines  [...]
+    <p>Um eine Datei herunterzuladen und mit einem Eintrag zu
+    verlinken, benutzen Sie die Schaltfläche <b>Download</b>
+    im Eintrags-Editor. Es erscheint ein Dialog, in dem Sie den URL
+    eingeben müssen. Die Datei wird dann in Ihr
+    Hauptverzeichnis gespeichert, anhand des BibTeX-Keys benannt
+    und mit dem Eintrag verknüpft.</p>
 
+    <h2>Externe Dateien öffnen</h2>
+
+    <p>Es gibt mehrere
+    Möglichkeiten, externe Dateien oder Internetseiten zu
+    öffnen. In der Tabellenansicht können Sie einen
+    Eintrag auswählen und mit dem Menü, einem
+    Tastenkürzel oder dem Kontextmenü den ersten externen
+    Link öffnen. Falls in der Tabellenansicht die Spalte
+    <b>file</b> angezeigt wird (<b>Einstellungen ->
+    Tabellenansicht -> Spezielle Spalten -> Datei-Spalten
+    anzeigen</b>), können Sie auch auf das Icon klicken, um
+    den ersten Link eines Eintrags zu öffnen. Um weitere Links
+    zu öffnen, klicken Sie mit der rechten Maustaste auf das
+    Icon (Mac OS X: <b>Strg-Klick</b>); es erscheint dann ein
+    Menü mit allen Links.</p>
 </body>
 </html>
\ No newline at end of file
diff --git a/src/help/de/GeneralFields.html b/src/help/de/GeneralFields.html
index d721a56..00d1bf8 100644
--- a/src/help/de/GeneralFields.html
+++ b/src/help/de/GeneralFields.html
@@ -1,29 +1,33 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title></title>
-  </head>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-  <BODY text="#275856">
-    <basefont size="4" color="#2F4958" face="arial">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
     <h1>Allgemeine Felder festlegen</h1>
-    <p>
-    Sie können dem Eintragseditor eine beliebige Anzahl von Tabs hinzufügen, die bei allen Eintragstypen sichtbar sind.
-    Wählen Sie dazu den Menüeintrag "Optionen -> Allgemeine Felder festlegen".
-    
-    <p>
-    Jede Zeile repräsentiert einen Tab. Der Anfang der Zeile steht für den Namen des Tabs,
-    gefolgt von einem Doppelpunkt (:). Anschlie�end listen Sie die einzelnen Felder auf, die der
-    Tab enthalten soll, und trennen sie jeweils durch ein Semikolon (;).
-    
-    <p>
-    Das Beispiel<p><code>Allgemeine Felder:url;keywords;doi;pdf<BR>
-        Zusammenfassung:abstract;annote</CODE>
-    <P>
-    ergibt somit einen Tab mit dem Namen "Allgemeine Felder", der die Felder 
-    <em>url</em>, <em>keywords</em>, <em>doi</em> und <em>pdf</em> enthält,
-    sowie einen zweiten Tab namens "Zusammenfassung" mit den Feldern
-    <em>abstract</em> und <em>annote</em>.
-  </body>
-</html>
+
+    <p>Sie können dem Eintragseditor eine beliebige Anzahl von
+    Tabs hinzufügen, die bei allen Eintragstypen sichtbar
+    sind. Wählen Sie dazu den Menüeintrag "Optionen ->
+    Allgemeine Felder festlegen".</p>
+
+    <p>Jede Zeile repräsentiert einen Tab. Der Anfang der
+    Zeile steht für den Namen des Tabs, gefolgt von einem
+    Doppelpunkt (:). Anschließend listen Sie die einzelnen
+    Felder auf, die der Tab enthalten soll, und trennen sie jeweils
+    durch ein Semikolon (;).</p>
+
+    <p>Das Beispiel</p>
+
+    <p><code>Allgemeine Felder:url;keywords;doi;pdf<br />
+     Zusammenfassung:abstract;annote</code></p>
+
+    <p>ergibt somit einen Tab mit dem Namen "Allgemeine Felder",
+    der die Felder <em>url</em>, <em>keywords</em>, <em>doi</em>
+    und <em>pdf</em> enthält, sowie einen zweiten Tab namens
+    "Zusammenfassung" mit den Feldern <em>abstract</em> und
+    <em>annote</em>.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/GroupsHelp.html b/src/help/de/GroupsHelp.html
index c9b9164..5de74e5 100644
--- a/src/help/de/GroupsHelp.html
+++ b/src/help/de/GroupsHelp.html
@@ -1,136 +1,412 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Gruppen</H1>
-
-Mit Gruppen können Sie Ihre BibTeX-Datei in einer Baumstruktur anordnen, vergleichbar mit einer Dateistruktur in Ordnern und Unterordnern. Die beiden Hauptunterschiede sind:
-
-<ul>
-<li>Während eine Datei auf einer Festplatte immer in genau einem Ordner abgelegt ist, kann ein Literatureintrag in JabRef mehreren Gruppen angehören.</li>
-<li>Gruppen benutzen bestimmte Kriterien, um ihren Inhalt dynamisch zu bestimmen. Neue Einträge, die den Kriterien einer Gruppe entsprechen, gehören automatisch zu dieser Gruppe. Diese Funktionalität gibt es nicht in üblichen Dateisystemen, wohl aber in einigen E-Mail-Programmen (z.B. Thunderbird und Opera).</li>
-</ul>
-
-Wenn Sie eine Gruppe auswählen, werden die Einträge dieser Gruppe angezeigt. Wenn Sie mehrere Gruppen auswählen, werden entweder die Einträge angezeigt, die in einer der Gruppen sind (Vereinigung), oder solche, die in allen Gruppen vorhanden sind (Schnittmenge) -- das hängt von Ihren Einstellungen ab. All dies wird im Folgenden detailliert erläutert.
-<p>
-Gruppendefinitionen sind dateispezifisch; sie werden als <tt>@COMMENT</tt>-Block in der <tt>bib</tt>-Datei gespeichert und werden von allen Benutzern gemeinsam benutzt. (Künftige Versionen von JabRef werden möglicherweise benutzerabhängige Gruppen unterstützen.)
-
-<H2>Die Gruppenansicht</H2>
-
-Die Gruppenansicht wird im linken Bereich des Bildschirms angezeigt. Sie kann mit der Tastenkombination <tt>STRG-SHIFT-G</tt> 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.
-<p>
-<table cellspacing=0 cellpadding=5 border=0 bgcolor=#c0ffc0>
-<tr><td>
-<h2>Einige kurze Beispiele</h2>
-
-Sie möchten vielleicht...
-
-<h3>...einfach nur eine Gruppe anlegen und ihr einige Einträge zuordnen</h3>
-
-Vergewissern Sie sich, dass die Gruppenansicht eingeschaltet ist. Drücken Sie auf den Button <b>Neue Gruppe</b>, geben einen Namen für die Gruppe ein und drücken OK. Sie können alle Einstellungen auf ihren Standardwerten belassen. Jetzt wählen Sie die Einträge aus, die der Gruppe zugeordnet werden sollen, und ziehen diese mit der Maus auf die Gruppe oder wählen <b>Zu Gruppe hinzufügen</b> aus dem Kontextmenü. Jetzt können Sie die Gruppe a [...]
-
-<h3>...das Feld <tt>keywords</tt> benutzen, um die Einträge zu gruppieren</h3>
-
-Stellen Sie sicher, dass die Gruppenansicht aktiviert ist. Drücken Sie auf den Button <b>Neue Gruppe</b>, geben einen Namen für die Gruppe ein und wählen die Option <b>Dynamisches Gruppieren der Einträge anhand eines Stichworts in einem Feld</b>. Geben Sie das Stichwort, nach dem gesucht werden soll, ein und drücken OK. Jetzt können Sie die Gruppe anklicken, um sich ihren Inhalt anzeigen zu lassen (das sollten alle Einträge sein, deren <tt>keywords</tt> [...]
-
-<h3>...einen frei wählbaren Suchausdruck verwenden, um eine Gruppe zu definieren</h3>
-
-Stellen Sie sicher, dass die Gruppenansicht aktiviert ist. Drücken Sie auf den Button <b>Neue Gruppe</b>, geben einen Namen für die Gruppe ein und wählen die Option <b>Dynamisches Gruppieren der Einträge anhand eines beliebigen Suchausdrucks</b>. Geben Sie <tt>author=smith</tt> als Suchausdruck ein (ersetzen Sie <tt>smith</tt> mit einem Namen, der wirklich in Ihrer Datei vorkommt) und klicken <b>OK</b>. Jetzt können Sie die Gruppe anklicken, um sich ihren Inhalt  [...]
-
-<h3>...mehrere Gruppen kombinieren</h3>
-
-Erstellen sie zwei unterschiedliche Gruppen (z.B. so wie oben beschrieben). Klicken Sie auf den Button <b>Einstellungen</b> in der Gruppenansicht und wählen <b>Vereinigung</b>. Jetzt wählen Sie beide Gruppen aus (dazu klicken Sie auf eine Gruppe und anschließend bei gedrückter STRG-Taste auf die andere Gruppe). Sie sollten jetzt alle Einträge sehen, die in einer der beiden Gruppen aufgeführt sind. Klicken Sie noch einmal auf <b>Einstellungen</b> und wä [...]
-
-<h3>...sehen, welche Gruppen sich überschneiden</h3>
-
-Mit JabRef können Sie ganz einfach herausfinden, welche Gruppen sich mit den aktuell ausgewählten Gruppen überschneiden (d.h. welche Gruppen zumindest einen Eintrag enthalten, der auch in der aktuell ausgewählten Gruppe ist). Klicken Sie auf <b>Einstellungen</b> und aktivieren die Option <b>Sich überschneidende Gruppen markieren</b>. Wählen Sie dann eine Gruppe, die sich mit anderen überschneidet. Diese anderen Gruppen sollten nun markiert sein.
-
-</tr></td>
-</table>
-<p>
-
-<H2>Arten von Gruppen</H2>
-
-In JabRef 1.8 gibt es vier verschiedene Arten von Gruppen
-
-<ol>
-<li>Die Gruppe <b>Alle Einträge</b>, die -- wie der Name vermuten lässt -- alle Einträge beinhaltet, ist immer vorhanden und kann weder verändert noch gelöscht werden.</li>
-<li><b>Statische Gruppen</b> verhalten sich wie Ordner auf einer Festplatte und beinhalten nur die Einträge, die Sie ihnen explizit zuweisen.</li>
-<li><b>Dynamische Gruppen basierend auf einem Stichwort</b> beinhalten Einträge, die in einem bestimmten BibTeX-Feld (z.B. <tt>keywords</tt>) ein bestimmtes Stichwort (z.B. <tt>elektrisch</tt>) aufweisen. Diese Methode benötigt kein manuelles Zuweisen der Einträge, sondern nutzt die bereits in der Datei vorhandenen Informationen. Wenn alle Einträge in Ihrer Datenbank passende Stichwörter haben, könnte diese Art von Gruppe die beste Wahl für Sie sein.</li>
-<li><b>Dynamische Gruppen basierend auf einer freien Suche</b> beinhalten Einträge, die mit einem bestimmten Suchausdruck übereinstimmen. Dabei wird dieselbe Syntax verwendet wie beim <a href="SearchHelp.html">Suchen</a>. Diese <a href="SearchHelp.html#advanced">Syntax</a> unterstützt logische Operatoren (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) und erlaubt es, in einem oder mehreren BibTeX-Feldern zu suchen. Dadurch ist eine flexiblere Definition von Gruppen möglich  [...]
-</ol>
-
-Jede Gruppe, die Sie erstellen, ist von einer der drei letztgenannten Arten. Der Dialog "Gruppe bearbeiten", der mit einem Doppelklick auf eine Gruppe aufgerufen wird, zeigt eine kurze Beschreibung der ausgewählten Gruppe.
-
-<H2>Gruppenstrukturen, Erstellen und Löschen von Gruppen</H2>
-
-Vergleichbar mit Ordnern sind die Gruppen in einer Baumansicht strukturiert, wo die Gruppe <b>Alle Einträge</b> das Stammelement ist. Mit einem Rechtsklick auf eine Gruppe können Sie dem Baum eine neue Gruppe hinzufügen, entweder auf derselben Ebene wie die ausgewählte Gruppe oder als ihre Untergruppe. Der Button <b>Neue Gruppe</b> erzeugt eine neue Untergruppe der Gruppe <b>Alle Einträge</b>, egal ob Sie gerade Gruppen ausgewählt haben oder nicht. Im Kontex [...]
-
-<p>
-Rückgängig und Wiederholen wird für alle Bearbeitungsschritte unterstützt.
-
-<H3>Statische Gruppen</h3>
-
-Statische Gruppen werden nur durch manuelles Zuweisen von Einträgen "gefüttert". Nachdem Sie eine statische Gruppe erstellt haben, wählen Sie die Einträge aus, die Sie ihr zuweisen wollen, und nutzen entweder Drag & Drop oder das Kontextmenü in der Tabelle, um die Zuweisung durchzuführen. Um Einträge aus einer Gruppe zu entfernen, wählen Sie sie aus und benutzen das Kontextmenü in der Tabelle. Es können keine weiteren Option [...]
-<p>
-Diese Methode des Gruppierens setzt voraus, dass alle Einträge einen 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.
-
-<H3>Dynamische Gruppen</h3>
-
-Der Inhalt einer dynamischen Gruppe wird von einer logischen Bedingung bestimmt. Nur Einträge, die dieser Bedingung entsprechen, gehören zu dieser Gruppe. Diese Methode nutzt die bereits in der Datei vorhandenen Informationen und wird aktualisiert, sobald Sie Veränderungen in der Datei vornehmen.
-<p>
-Es gibt zwei mögliche Arten von Bedingungen:
-<dl>
-<dt><b>Ein Feld nach einem Stichwort durchsuchen</b></dt>
-<dd>
-Diese Methode gruppiert Einträge, bei denen ein bestimmtes BibTeX Feld (z.B. <tt>keywords</tt>) einen bestimmten Suchausdruck (z.B. <tt>elektrisch</tt>) enthält. Damit dies funktioniert, muss das Feld, nach dem sortiert wird, natürlich in jedem Eintrag vorhanden und sein Inhalt fehlerfrei sein. Das obige Beispiel würde alle Einträge zu einer Gruppe zusammenfassen, die sich auf etwas elektrisches beziehen. Benutzt man das Feld <tt>author</tt>, kann man sich Eintr& [...]
-</dd>
-<dt><b>Einen freien Suchausdruck verwenden</b></dt>
-<dd>
-Diese Vorgehensweise ist ganz ähnlich wie die eben beschriebene, aber statt nur ein Feld nach einem Suchausdruck zu durchsuchen, kann hierbei die <a href="SearchHelp.html#advanced">Syntax der Suche</a> angewendet werden, die logische Operatoren (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) und die Suche in mehreren Feldern gleichzeitig unterstützt. So fasst z.B. die Suchanfrage <tt>keywords=Regression AND NOT keywords=linear</tt> Einträge, die sich mit nicht-linearer Regressio [...]
-</dd>
-</dl>
-
-In der Gruppenansicht werden dynamische Gruppen standardmäßig <i>kursiv</i> dargestellt. Dies kann unter <strong>Optionen -> Einstellungen -> Gruppen</strong> abgestellt werden.
-
-<h3>Hierarchischer Kontext</h3>
-
-Standardmäßig ist eine Gruppe <b>unabhängig</b> von ihrer Position im Gruppenbaum. Ist eine Gruppe ausgewählt, wird nur der Inhalt dieser Gruppe angezeigt. Es ist jedoch -- besonders beim Verwenden dynamischer Gruppen -- oft nützlich, eine Untergruppe zu erstellen, die <b>ihre Obergruppe verfeinert</b>. Wenn diese Untergruppe ausgewählt wird, werden alle Einträge dieser Gruppe und ihrer Obergruppe angezeigt. Erstellen Sie z.B. eine Obergrupe, die Eintr [...]
-<p>
-Das logische Gegenstück zu einer solchen verfeinernden Untergruppe ist eine Gruppe, die <b>ihre Untergruppen berücksichtigt</b>. Wird sie ausgewählt, werden nicht nur die Einträge dieser Gruppe, sondern auch diejenigen aller Untergruppen angezeigt. Im Gruppenbaum hat auch diese Art von Gruppen ein spezielles Icon. (Dieses Verhalten kann in den Einstellungen abgestellt werden.)
-
-<h2>Einträge einer Gruppe anzeigen, mehrere Gruppen kombinieren</h2>
-
-Wenn Sie eine Gruppe auswählen, werden die Einträge, die dieser Gruppe zugeordnet sind, hervorgehoben und -- je nach Einstellung (die mit einem Klick auf den <b>Einstellungen</b>-Button vorgenommen werden kann) -- an den Anfang der Tabelle verschoben und/oder ausgewählt. Diese Optionen entsprechen denen für die normale Suche.
-<p>
-Wenn Sie meherere Gruppen auswählen (indem Sie die STRG-Taste gedrückt halten und mehrere Gruppen anklicken), wird -- je nach Einstellung -- entweder die Vereinigung oder die Schnittmenge ihrer Inhalte angezeigt. Damit können mehrere Bedingungen schnell miteinander kombiniert werden. Ein Beispiel: Wenn Sie eine statische Gruppe <tt>Sehr wichtig</tt> haben, in der alle sehr wichtigen Einträge sind, können Sie sich die sehr wichtigen Einträge jeder anderen Gru [...]
-
-<h2>Gruppen und Suche</h2>
-
-Wenn der Inhalt einer oder mehrerer Gruppen angezeigt wird, können Sie eine Suche innerhalb dieser Einträge durchführen. Benutzen Sie dazu die normalen Suchfunktionen.
-
-<h2>Sich überschneidende Gruppen markieren</h2>
-
-Der <b>Einstellungs</b>-Button bietet eine Option zum Markieren von sich überschneidenden Gruppen. Wenn diese Option aktiviert ist und Sie eine (oder mehrere) Gruppe(n) auswählen, werden alle Gruppen markiert, die mindestens einen Eintrag enthalten, der auch der ausgewählten Gruppe zugeordnet ist. Damit können Sie schnell Überschneidungen zwischen den Einträgen verschiedener Gruppen erkennen. Sie könnten beispielsweise eine Gruppe <tt>lesen</tt> erstell [...]
-
-<h2>Erweiterte Funktionen</h2>
-
-Wenn Sie sich mit dem oben beschriebenen Gruppenkonzept vertraut gemacht haben, könnten die folgenden erweiterten Funktionen nützlich sein.
-
-<h3>Dynamische Gruppen automatisch erstellen</h3>
-
-Mit einem Klick auf den Button <b>Automatisch Gruppen für die Datei anlegen</b> können Sie ganz schnell passende Gruppen für Ihre Datei erzeugen. Diese Funktion sammelt alle Wörter eines bestimmten Felds Ihrer Wahl und erstellt eine Gruppe für jedes Wort. Das ist zum Beispiel nützlich, wenn Ihre Datei geeignete Stichworte für alle Einträge enthält. Mit dem automatischen Erstellen von Gruppen basierend auf dem Feld <tt>keywords</tt> können [...]
-<p>
-Sie können auch Buchstaben angeben, die ignoriert werden sollen, z.B. Kommas, die zwischen einzelnen Stichworten stehen. Diese werden als Worttrenner behandelt und nicht als Teile des Wortes selbst. Dieser Schritt ist wichtig, damit kombinierte Stichworte wie etwa <tt>Gauß'sche Verteilung</tt> als semantische Einheit interpretiert werden können. (Sie können diese Option allerdings nicht verwenden, um ganze Wörter zu ignorieren. Sie müssen stattdessen die Gr [...]
-
-<h3>Ansicht aktualisieren</h3>
-
-Der <b>Aktualisieren</b>-Button aktualisiert die Tabelle in Bezug auf die aktuell ausgewählten Gruppen. Normalerweise erfolgt dies automatisch, aber in seltenen Fällen (z.B. nach einem Rückgängig- oder Wiederholen-Vorgang, der mit Gruppen zusammenhängt) ist ein händisches Aktualisieren nötig.
-
-<h3>Verfeinernde Untergruppen und einbeziehende Obergruppen mischen</h3>
-
-Wenn eine verfeinernde 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.
-
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Gruppen</h1>
+
+    <p>Mit Gruppen können Sie Ihre BibTeX-Datei
+    in einer Baumstruktur anordnen, vergleichbar mit einer
+    Dateistruktur in Ordnern und Unterordnern. Die beiden
+    Hauptunterschiede sind:</p>
+
+    <ul>
+        <li>Während eine Datei auf einer Festplatte immer in
+        genau einem Ordner abgelegt ist, kann ein Literatureintrag
+        in JabRef mehreren Gruppen angehören.</li>
+
+        <li>Gruppen benutzen bestimmte Kriterien, um ihren Inhalt
+        dynamisch zu bestimmen. Neue Einträge, die den
+        Kriterien einer Gruppe entsprechen, gehören
+        automatisch zu dieser Gruppe. Diese Funktionalität
+        gibt es nicht in üblichen Dateisystemen, wohl aber in
+        einigen E-Mail-Programmen (z.B. Thunderbird und
+        Opera).</li>
+    </ul>Wenn Sie eine Gruppe auswählen, werden die
+    Einträge dieser Gruppe angezeigt. Wenn Sie mehrere Gruppen
+    auswählen, werden entweder die Einträge angezeigt,
+    die in einer der Gruppen sind (Vereinigung), oder solche, die
+    in allen Gruppen vorhanden sind (Schnittmenge) -- das
+    hängt von Ihren Einstellungen ab. All dies wird im
+    Folgenden detailliert erläutert.
+
+    <p>Gruppendefinitionen sind dateispezifisch; sie werden als
+    <tt>@COMMENT</tt>-Block in der <tt>bib</tt>-Datei gespeichert
+    und werden von allen Benutzern gemeinsam benutzt.
+    (Künftige Versionen von JabRef werden möglicherweise
+    benutzerabhängige Gruppen unterstützen.)</p>
+
+    <h2>Die Gruppenansicht</h2>
+
+    <p>Die Gruppenansicht wird im linken
+    Bereich des Bildschirms angezeigt. Sie kann mit der
+    Tastenkombination <tt>STRG-SHIFT-G</tt> 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.</p>
+
+    <table cellspacing="0"
+           cellpadding="5"
+           border="0"
+           bgcolor="#C0FFC0">
+        <tr>
+            <td>
+                <h2>Einige kurze Beispiele</h2>
+
+                <p>Sie möchten vielleicht...</p>
+
+                <h3>...einfach nur eine Gruppe anlegen und ihr
+                einige Einträge zuordnen</h3>
+
+                <p>Vergewissern Sie
+                sich, dass die Gruppenansicht eingeschaltet ist.
+                Drücken Sie auf den Button <b>Neue Gruppe</b>,
+                geben einen Namen für die Gruppe ein und
+                drücken OK. Sie können alle Einstellungen
+                auf ihren Standardwerten belassen. Jetzt
+                wählen Sie die Einträge aus, die der
+                Gruppe zugeordnet werden sollen, und ziehen diese
+                mit der Maus auf die Gruppe oder wählen <b>Zu
+                Gruppe hinzufügen</b> aus dem
+                Kontextmenü. Jetzt können Sie die Gruppe
+                anklicken, um sich ihren Inhalt anzeigen zu lassen
+                (das sollten die Einträge sein, die Sie gerade
+                hinzugefügt haben).</p>
+
+                <h3>...das Feld <tt>keywords</tt> benutzen, um die
+                Einträge zu gruppieren</h3>
+
+                <p>Stellen Sie sicher,
+                dass die Gruppenansicht aktiviert ist. Drücken
+                Sie auf den Button <b>Neue Gruppe</b>, geben einen
+                Namen für die Gruppe ein und wählen die
+                Option <b>Dynamisches Gruppieren der Einträge
+                anhand eines Stichworts in einem Feld</b>. Geben
+                Sie das Stichwort, nach dem gesucht werden soll,
+                ein und drücken OK. Jetzt können Sie die
+                Gruppe anklicken, um sich ihren Inhalt anzeigen zu
+                lassen (das sollten alle Einträge sein, deren
+                <tt>keywords</tt>-Feld das Stichwort enthält,
+                das Sie angegeben haben).</p>
+
+                <h3>...einen frei wählbaren Suchausdruck
+                verwenden, um eine Gruppe zu definieren</h3>
+
+                <p>Stellen Sie sicher, dass die Gruppenansicht aktiviert ist.
+                Drücken Sie auf den Button <b>Neue Gruppe</b>,
+                geben einen Namen für die Gruppe ein und
+                wählen die Option <b>Dynamisches Gruppieren
+                der Einträge anhand eines beliebigen
+                Suchausdrucks</b>. Geben Sie <tt>author=smith</tt>
+                als Suchausdruck ein (ersetzen Sie <tt>smith</tt>
+                mit einem Namen, der wirklich in Ihrer Datei
+                vorkommt) und klicken <b>OK</b>. Jetzt können
+                Sie die Gruppe anklicken, um sich ihren Inhalt
+                anzeigen zu lassen (das sollten alle Einträge
+                sein, deren <tt>author</tt>-Feld den Namen
+                beinhaltet, den Sie angegeben haben).</p>
+
+                <h3>...mehrere Gruppen kombinieren</h3>
+
+                <p>Erstellen sie zwei unterschiedliche Gruppen
+                (z.B. so wie oben beschrieben).
+                Klicken Sie auf den Button
+                <b>Einstellungen</b> in der Gruppenansicht und
+                wählen <b>Vereinigung</b>. Jetzt wählen
+                Sie beide Gruppen aus (dazu klicken Sie auf eine
+                Gruppe und anschließend bei gedrückter
+                STRG-Taste auf die andere Gruppe). Sie sollten
+                jetzt alle Einträge sehen, die in einer der
+                beiden Gruppen aufgeführt sind. Klicken Sie
+                noch einmal auf <b>Einstellungen</b> und
+                wählen <b>Schnittmenge</b> aus. Nun sollten
+                Sie nur die Einträge sehen, die in beiden
+                Gruppen enthalten sind (das können auch keine
+                sein, oder aber genau dieselben Einträge wie
+                zuvor, sofern beide Gruppen dieselben Einträge
+                enthalten).</p>
+
+                <h3>...sehen, welche Gruppen sich
+                überschneiden</h3>
+
+                <p>Mit JabRef können Sie
+                ganz einfach herausfinden, welche Gruppen sich mit
+                den aktuell ausgewählten Gruppen
+                überschneiden (d.h. welche Gruppen zumindest
+                einen Eintrag enthalten, der auch in der aktuell
+                ausgewählten Gruppe ist). Klicken Sie auf
+                <b>Einstellungen</b> und aktivieren die Option
+                <b>Sich überschneidende Gruppen markieren</b>.
+                Wählen Sie dann eine Gruppe, die sich mit
+                anderen überschneidet. Diese anderen Gruppen
+                sollten nun markiert sein.</p>
+            </td>
+        </tr>
+    </table>
+
+    <h2>Arten von Gruppen</h2>
+
+    <p>In JabRef 1.8 gibt es vier verschiedene Arten von Gruppen</p>
+
+    <ol>
+        <li>Die Gruppe <b>Alle Einträge</b>, die -- wie der
+        Name vermuten lässt -- alle Einträge beinhaltet,
+        ist immer vorhanden und kann weder verändert noch
+        gelöscht werden.</li>
+
+        <li><b>Statische Gruppen</b> verhalten sich wie Ordner auf
+        einer Festplatte und beinhalten nur die Einträge, die
+        Sie ihnen explizit zuweisen.</li>
+
+        <li><b>Dynamische Gruppen basierend auf einem Stichwort</b>
+        beinhalten Einträge, die in einem bestimmten
+        BibTeX-Feld (z.B. <tt>keywords</tt>) ein bestimmtes
+        Stichwort (z.B. <tt>elektrisch</tt>) aufweisen. Diese
+        Methode benötigt kein manuelles Zuweisen der
+        Einträge, sondern nutzt die bereits in der Datei
+        vorhandenen Informationen. Wenn alle Einträge in Ihrer
+        Datenbank passende Stichwörter haben, könnte
+        diese Art von Gruppe die beste Wahl für Sie sein.</li>
+
+        <li><b>Dynamische Gruppen basierend auf einer freien
+        Suche</b> beinhalten Einträge, die mit einem
+        bestimmten Suchausdruck übereinstimmen. Dabei wird
+        dieselbe Syntax verwendet wie beim
+        <a href="SearchHelp.html">Suchen</a>. Diese
+        <a href="SearchHelp.html#advanced">Syntax</a>
+        unterstützt logische Operatoren (<tt>AND</tt>,
+        <tt>OR</tt>, <tt>NOT</tt>) und 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. <tt>author=smith AND
+        title=elektrisch</tt>).</li>
+    </ol>Jede Gruppe, die Sie erstellen, ist von einer der drei
+    letztgenannten Arten. Der Dialog "Gruppe bearbeiten", der mit
+    einem Doppelklick auf eine Gruppe aufgerufen wird, zeigt eine
+    kurze Beschreibung der ausgewählten Gruppe.
+
+    <h2>Gruppenstrukturen, Erstellen und Löschen von
+    Gruppen</h2>
+
+    <p>Vergleichbar mit Ordnern sind die Gruppen in einer
+    Baumansicht strukturiert, wo die Gruppe <b>Alle
+    Einträge</b> das Stammelement ist. Mit einem Rechtsklick
+    auf eine Gruppe können Sie dem Baum eine neue Gruppe
+    hinzufügen, entweder auf derselben Ebene wie die
+    ausgewählte Gruppe oder als ihre Untergruppe. Der Button
+    <b>Neue Gruppe</b> erzeugt eine neue Untergruppe der Gruppe
+    <b>Alle Einträge</b>, egal ob Sie gerade Gruppen
+    ausgewählt haben oder nicht. Im Kontextmenü
+    können Sie auch Gruppen und/oder Untergruppen
+    löschen, Untergruppen alphabetisch sortieren oder Gruppen
+    an eine andere Stelle des Baums verschieben. Letzteres
+    können Sie auch mit Drag & Drop machen,
+    allerdings mit der Einschränkung, dass bei
+    Drag & Drop die Reihenfolge der Untergruppen
+    einer Gruppe nicht verändert werden kann.</p>
+
+    <p>Rückgängig und Wiederholen wird für alle
+    Bearbeitungsschritte unterstützt.</p>
+
+    <h3>Statische Gruppen</h3>
+
+    <p>Statische Gruppen werden nur durch
+    manuelles Zuweisen von Einträgen "gefüttert". Nachdem
+    Sie eine statische Gruppe erstellt haben, wählen Sie die
+    Einträge aus, die Sie ihr zuweisen wollen, und nutzen
+    entweder Drag & Drop oder das Kontextmenü in
+    der Tabelle, um die Zuweisung durchzuführen. Um
+    Einträge aus einer Gruppe zu entfernen, wählen Sie
+    sie aus und benutzen das Kontextmenü in der Tabelle. Es
+    können keine weiteren Optionen angegeben werden.</p>
+
+    <p>Diese Methode des Gruppierens setzt voraus, dass alle
+    Einträge einen 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.</p>
+
+    <h3>Dynamische Gruppen</h3>
+
+    <p>Der Inhalt einer dynamischen Gruppe
+    wird von einer logischen Bedingung bestimmt. Nur Einträge,
+    die dieser Bedingung entsprechen, gehören zu dieser
+    Gruppe. Diese Methode nutzt die bereits in der Datei
+    vorhandenen Informationen und wird aktualisiert, sobald Sie
+    Veränderungen in der Datei vornehmen.</p>
+
+    <p>Es gibt zwei mögliche Arten von Bedingungen:</p>
+
+    <dl>
+        <dt><b>Ein Feld nach einem Stichwort durchsuchen</b></dt>
+
+        <dd>Diese Methode gruppiert Einträge, bei denen ein
+        bestimmtes BibTeX Feld (z.B. <tt>keywords</tt>) einen
+        bestimmten Suchausdruck (z.B. <tt>elektrisch</tt>)
+        enthält. Damit dies funktioniert, muss das Feld, nach
+        dem sortiert wird, natürlich in jedem Eintrag
+        vorhanden und sein Inhalt fehlerfrei sein. Das obige
+        Beispiel würde alle Einträge zu einer Gruppe
+        zusammenfassen, die sich auf etwas elektrisches beziehen.
+        Benutzt man das Feld <tt>author</tt>, kann man sich
+        Einträge eines bestimmten Autors gruppieren lassen,
+        usw. Die Suche ist als reine Textsuche oder mit einem
+        regulären Ausdruck möglich. Im ersten Fall
+        erlaubt JabRef das manuelle Zuweisen zu und Entfernen aus
+        einer Gruppe; dazu fügt JabRef den Suchausdruck dem
+        entsprechenden Feld zu bzw. entfernt ihn daraus. Das macht
+        nur für das Feld <tt>keywords</tt> oder für
+        selbstdefinierte Felder Sinn, aber offensichtlich nicht
+        für Felder wie <tt>author</tt> oder
+        <tt>year</tt>.</dd>
+
+        <dt><b>Einen freien Suchausdruck verwenden</b></dt>
+
+        <dd>Diese Vorgehensweise ist ganz ähnlich wie die eben
+        beschriebene, aber statt nur ein Feld nach einem
+        Suchausdruck zu durchsuchen, kann hierbei die
+        <a href="SearchHelp.html#advanced">Syntax der Suche</a>
+        angewendet werden, die logische Operatoren (<tt>AND</tt>,
+        <tt>OR</tt>, <tt>NOT</tt>) und die Suche in mehreren
+        Feldern gleichzeitig unterstützt. So fasst z.B. die
+        Suchanfrage <tt>keywords=Regression AND NOT
+        keywords=linear</tt> Einträge, die sich mit
+        nicht-linearer Regression beschäftigen, zu einer
+        Gruppe zusammen.</dd>
+    </dl>In der Gruppenansicht werden dynamische Gruppen
+    standardmäßig <i>kursiv</i> dargestellt. Dies kann
+    unter <strong>Optionen -> Einstellungen ->
+    Gruppen</strong> abgestellt werden.
+
+    <h3>Hierarchischer Kontext</h3>
+
+    <p>Standardmäßig ist
+    eine Gruppe <b>unabhängig</b> von ihrer Position im
+    Gruppenbaum. Ist eine Gruppe ausgewählt, wird nur der
+    Inhalt dieser Gruppe angezeigt. Es ist jedoch -- besonders beim
+    Verwenden dynamischer Gruppen -- oft nützlich, eine
+    Untergruppe zu erstellen, die <b>ihre Obergruppe
+    verfeinert</b>. Wenn diese Untergruppe ausgewählt wird,
+    werden alle Einträge dieser Gruppe und ihrer Obergruppe
+    angezeigt. Erstellen Sie z.B. eine Obergrupe, die Einträge
+    mit dem Stichwort <tt>Verteilung</tt> enthält, sowie eine
+    verfeinernde Untergruppe mit Einträgen, die das Stichwort
+    <tt>Gauß</tt> enthalten. Wenn Sie nun die Untergruppe
+    auswählen, werden alle Einträge angezeigt, die beiden
+    Bedingungen entsprechen, also alle, die mit Gauß'scher
+    Verteilung zu tun haben. Indem Sie nun eine weitere Untergruppe
+    für <tt>Laplace</tt> anlegen, die dieselbe Obergruppe
+    verfeinert, können Sie die Gruppierung einfach erweitern.
+    Im Gruppenbaum haben solche Gruppen, die ihre Obergruppen
+    verfeinern, ein spezielles Icon. (Dieses Verhalten kann in den
+    Einstellungen abgestellt werden.)</p>
+
+    <p>Das logische Gegenstück zu einer solchen verfeinernden
+    Untergruppe ist eine Gruppe, die <b>ihre Untergruppen
+    berücksichtigt</b>. Wird sie ausgewählt, werden nicht
+    nur die Einträge dieser Gruppe, sondern auch diejenigen
+    aller Untergruppen angezeigt. Im Gruppenbaum hat auch diese Art
+    von Gruppen ein spezielles Icon. (Dieses Verhalten kann in den
+    Einstellungen abgestellt werden.)</p>
+
+    <h2>Einträge einer Gruppe anzeigen, mehrere Gruppen
+    kombinieren</h2>
+
+    <p>Wenn Sie eine Gruppe auswählen, werden die
+    Einträge, die dieser Gruppe zugeordnet sind, hervorgehoben
+    und -- je nach Einstellung (die mit einem Klick auf den
+    <b>Einstellungen</b>-Button vorgenommen werden kann) -- an den
+    Anfang der Tabelle verschoben und/oder ausgewählt. Diese
+    Optionen entsprechen denen für die normale Suche.</p>
+
+    <p>Wenn Sie meherere Gruppen auswählen (indem Sie die
+    STRG-Taste gedrückt halten und mehrere Gruppen anklicken),
+    wird -- je nach Einstellung -- entweder die Vereinigung oder
+    die Schnittmenge ihrer Inhalte angezeigt. Damit können
+    mehrere Bedingungen schnell miteinander kombiniert werden. Ein
+    Beispiel: Wenn Sie eine statische Gruppe <tt>Sehr wichtig</tt>
+    haben, in der alle sehr wichtigen Einträge sind,
+    können Sie sich die sehr wichtigen Einträge jeder
+    anderen Gruppe anzeigen lassen, indem Sie beide Gruppen
+    auswählen (dazu muss <b>Schnittmenge</b> in den
+    Einstellungen aktiviert sein).</p>
+
+    <h2>Gruppen und Suche</h2>
+
+    <p>Wenn der Inhalt einer oder mehrerer
+    Gruppen angezeigt wird, können Sie eine Suche innerhalb
+    dieser Einträge durchführen. Benutzen Sie dazu die
+    normalen Suchfunktionen.</p>
+
+    <h2>Sich überschneidende Gruppen markieren</h2>
+
+    <p>Der <b>Einstellungs</b>-Button bietet eine Option zum Markieren von
+    sich überschneidenden Gruppen. Wenn diese Option aktiviert
+    ist und Sie eine (oder mehrere) Gruppe(n) auswählen,
+    werden alle Gruppen markiert, die mindestens einen Eintrag
+    enthalten, der auch der ausgewählten Gruppe zugeordnet
+    ist. Damit können Sie schnell Überschneidungen
+    zwischen den Einträgen verschiedener Gruppen erkennen. Sie
+    könnten beispielsweise eine Gruppe <tt>lesen</tt>
+    erstellen, die alle Einträge enthält, die sie lesen
+    wollen. Sobald Sie nun eine Gruppe auswählen, wird die
+    Gruppe <tt>lesen</tt> markiert, sofern die ausgewählte
+    Gruppe Einträge enthält, die Sie noch lesen wollten.</p>
+
+    <h2>Erweiterte Funktionen</h2>
+
+    <p>Wenn Sie sich mit dem oben
+    beschriebenen Gruppenkonzept vertraut gemacht haben,
+    könnten die folgenden erweiterten Funktionen nützlich
+    sein.</p>
+
+    <h3>Dynamische Gruppen automatisch erstellen</h3>
+
+    <p>Mit einem
+    Klick auf den Button <b>Automatisch Gruppen für die Datei
+    anlegen</b> können Sie ganz schnell passende Gruppen
+    für Ihre Datei erzeugen. Diese Funktion sammelt alle
+    Wörter eines bestimmten Felds Ihrer Wahl und erstellt eine
+    Gruppe für jedes Wort. Das ist zum Beispiel nützlich,
+    wenn Ihre Datei geeignete Stichworte für alle
+    Einträge enthält. Mit dem automatischen Erstellen von
+    Gruppen basierend auf dem Feld <tt>keywords</tt> können
+    Sie also ohne großen Aufwand ein Grundgerüst von
+    Gruppen anlegen.</p>
+
+    <p>Sie können auch Buchstaben angeben, die ignoriert
+    werden sollen, z.B. Kommas, die zwischen einzelnen Stichworten
+    stehen. Diese werden als Worttrenner behandelt und nicht als
+    Teile des Wortes selbst. Dieser Schritt ist wichtig, damit
+    kombinierte Stichworte wie etwa <tt>Gauß'sche
+    Verteilung</tt> als semantische Einheit interpretiert werden
+    können. (Sie können diese Option allerdings nicht
+    verwenden, um ganze Wörter zu ignorieren. Sie müssen
+    stattdessen die Gruppen, die Sie nicht wollen, nach dem
+    automatischen Erstellen von Hand löschen.)</p>
+
+    <h3>Ansicht aktualisieren</h3>
+
+    <p>Der <b>Aktualisieren</b>-Button
+    aktualisiert die Tabelle in Bezug auf die aktuell
+    ausgewählten Gruppen. Normalerweise erfolgt dies
+    automatisch, aber in seltenen Fällen (z.B. nach einem
+    Rückgängig- oder Wiederholen-Vorgang, der mit Gruppen
+    zusammenhängt) ist ein händisches Aktualisieren
+    nötig.</p>
+
+    <h3>Verfeinernde Untergruppen und einbeziehende Obergruppen
+    mischen</h3>
+
+    <p>Wenn eine verfeinernde 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.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/HelpHelp.html b/src/help/de/HelpHelp.html
index 4fb8264..e47343c 100644
--- a/src/help/de/HelpHelp.html
+++ b/src/help/de/HelpHelp.html
@@ -1,23 +1,42 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Das Hilfefenster</H1>
-<em>Das Hilfefenster �ffnet sich, wenn man den Hilfeknopf oder die Taste F1 dr�ckt.</em>
-<P>
-Das Hilfefenster soll Ihnen Informationen zur Nutzung von JabRef geben.
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H2>Navigation in den Hilfedateien</H2>
+    <h1>Das Hilfefenster</h1>
 
-Das Hilfefenster ist eigentlich ein kleiner HTML-Browser, die Hilfedateien sind normale HTML-Dateien. 
-<P>
-Wenn Sie die Hilfe �ffnen, zeigt das Hilfefenster unterschiedliche Dateien an, je nachdem, von welchem Programmfenster aus Sie die
-Hilfe aufgerufen haben. Falls diese Datei nicht das beinhaltet, was Sie erkl�rt haben wollten, k�nnen Sie mit dem <em>Inhalt</em>-Knopf in der Werkzeugleiste zu einer Liste aller verf�gbaren Hilfedateien gehen.
+    <p><em>Das Hilfefenster öffnet sich,
+    wenn man den Hilfeknopf oder die Taste F1 drückt.</em></p>
 
-<P>
-Au�erdem befinden sich in der Werkzeugleiste Kn�pfe zum Zeigen der n�chsten oder vorherigen Datei. Sie sind �hnlich den <em>Zur�ck</em>- und <em>Vorw�rts</em>-Kn�pfen eines gew�hnlichen HTML-Browsers. Die Tastenk�rzel zur Navigation sind STRG-SHIFT und Pfeil nach links f�r <em>Zur�ck</em> sowie Pfeil nach rechts f�r <em>Vorw�rts</em>.
+    <p>Das Hilfefenster soll Ihnen Informationen zur Nutzung von
+    JabRef geben.</p>
 
-<P>
-Sie k�nnen das Hilfefenster schlie�en, indem Sie ESCAPE dr�cken.
-</HTML>
\ No newline at end of file
+    <h2>Navigation in den Hilfedateien</h2>
+
+    <p>Das Hilfefenster ist
+    eigentlich ein kleiner HTML-Browser, die Hilfedateien sind
+    normale HTML-Dateien.</p>
+
+    <p>Wenn Sie die Hilfe öffnen, zeigt das Hilfefenster
+    unterschiedliche Dateien an, je nachdem, von welchem
+    Programmfenster aus Sie die Hilfe aufgerufen haben. Falls diese
+    Datei nicht das beinhaltet, was Sie erklärt haben wollten,
+    können Sie mit dem <em>Inhalt</em>-Knopf in der
+    Werkzeugleiste zu einer Liste aller verfügbaren
+    Hilfedateien gehen.</p>
+
+    <p>Außerdem befinden sich in der Werkzeugleiste
+    Knöpfe zum Zeigen der nächsten oder vorherigen Datei.
+    Sie sind ähnlich den <em>Zurück</em>- und
+    <em>Vorwärts</em>-Knöpfen eines gewöhnlichen
+    HTML-Browsers. Die Tastenkürzel zur Navigation sind
+    STRG-SHIFT und Pfeil nach links für <em>Zurück</em>
+    sowie Pfeil nach rechts für <em>Vorwärts</em>.</p>
+
+    <p>Sie können das Hilfefenster schließen, indem Sie
+    ESCAPE drücken.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/IEEEXploreHelp.html b/src/help/de/IEEEXploreHelp.html
index 39eed80..515b906 100644
--- a/src/help/de/IEEEXploreHelp.html
+++ b/src/help/de/IEEEXploreHelp.html
@@ -1,25 +1,34 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>IEEEXplore durchsuchen</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-IEEEXplore bietet Zugang zu Literatur in den Bereichen Elektrotechnik, Informatik und Elektronik.
-<p>
-JabRef kann Literaturangaben der IEEEXplore-Datenbank herunterladen.
-Um diese Funktion zu nutzen, wählen Sie <b>Internet -> IEEEXplore abfragen</b>
-und geben in dem Dialog, der im linken Bildschirmbereich erscheint, Ihre
-Suchausdrücke ein. Drücken Sie anschließend die
-<b>Enter</b>-Taste oder den <b>Abrufen</b>-Button.
-<p>
-Die Suche wird im Gäste-Modus durchgeführt, es werden also maximal 100 Ergebnisse
-angezeigt.
-<p>
-Sie können die <i>abstracts</i> zusammen mit den Literaturangaben herunterladen,
-indem Sie einen Haken bei <b>Abstracts berücksichtigen</b> setzen. Das verursacht
-eine deutlich höhere Anzahl von Netzwerk-Anfragen; um die Webseite von IEEEXplore
-nicht übermäßig zu belasten, lädt JabRef <i>abstracts</i> nur bei einer Suche,
-deren Ergebnis eine bestimmte Trefferanzahl nicht übersteigt.
+    <h1>IEEEXplore durchsuchen</h1>
 
-</HTML>
\ No newline at end of file
+    <p>IEEEXplore bietet Zugang zu
+    Literatur in den Bereichen Elektrotechnik, Informatik und
+    Elektronik.</p>
+
+    <p>JabRef kann Literaturangaben der IEEEXplore-Datenbank
+    herunterladen. Um diese Funktion zu nutzen, wählen Sie
+    <b>Internet -> IEEEXplore abfragen</b> und geben in dem
+    Dialog, der im linken Bildschirmbereich erscheint, Ihre
+    Suchausdrücke ein. Drücken Sie anschließend die
+    <b>Enter</b>-Taste oder den <b>Abrufen</b>-Button.</p>
+
+    <p>Die Suche wird im Gäste-Modus durchgeführt, es
+    werden also maximal 100 Ergebnisse angezeigt.</p>
+
+    <p>Sie können die <i>abstracts</i> zusammen mit den
+    Literaturangaben herunterladen, indem Sie einen Haken bei
+    <b>Abstracts berücksichtigen</b> setzen. Das verursacht
+    eine deutlich höhere Anzahl von Netzwerk-Anfragen; um die
+    Webseite von IEEEXplore nicht übermäßig zu
+    belasten, lädt JabRef <i>abstracts</i> nur bei einer
+    Suche, deren Ergebnis eine bestimmte Trefferanzahl nicht
+    übersteigt.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/ImportInspectionDialog.html b/src/help/de/ImportInspectionDialog.html
index 5f549b3..d71d4b5 100644
--- a/src/help/de/ImportInspectionDialog.html
+++ b/src/help/de/ImportInspectionDialog.html
@@ -1,16 +1,28 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>Import-Kontrollfenster</h1>
-
-Beim Importieren neuer Einträge aus einem unterstützten Format oder beim Herunterladen von Einträgen aus dem Internet werden diese Einträge zunächst im Import-Kontrollfenster gezeigt. Zu diesem Zeitpunkt wurden noch keine Einträge zu einer geöffneten Datei hinzugefügt.
-
-<p>Im Kontrollfenster können Sie Einträge entfernen, die nicht übernommen werden sollen, und einige einfache Arbeiten durchführen wie etwa das Generieren von BibTeX keys für die Einträge oder das Zuordnen von Einträgen zu <a href="GroupsHelp.html">Gruppen</a>. 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.
-
-<h2></h2>
-
-
-
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Import-Kontrollfenster</h1>
+
+    <p>Beim Importieren neuer
+    Einträge aus einem unterstützten Format oder beim
+    Herunterladen von Einträgen aus dem Internet werden diese
+    Einträge zunächst im Import-Kontrollfenster gezeigt.
+    Zu diesem Zeitpunkt wurden noch keine Einträge zu einer
+    geöffneten Datei hinzugefügt.</p>
+
+    <p>Im Kontrollfenster können Sie Einträge entfernen,
+    die nicht übernommen werden sollen, und einige einfache
+    Arbeiten durchführen wie etwa das Generieren von BibTeX
+    keys für die Einträge oder das Zuordnen von
+    Einträgen zu <a href="GroupsHelp.html">Gruppen</a>. 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.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/JabRef-UserManual_de.tex b/src/help/de/JabRef-UserManual_de.tex
index bdbe4f9..99f25a7 100644
--- a/src/help/de/JabRef-UserManual_de.tex
+++ b/src/help/de/JabRef-UserManual_de.tex
@@ -10,7 +10,7 @@
 \usepackage{xspace}
 
 %%%%% author, version of file %%%%%
-\newcommand{\versiondate}{in Bearb.}%8.\,6.\,2007 20:44
+\newcommand{\versiondate}{in Bearb.}%23.\,7.\,2007}
 \def\FileAuthor{Dominik Wa�enhoven}
 \def\FileTitle{\jabrefversion{} Benutzerhandbuch}
 
@@ -97,7 +97,7 @@
 %%% for Menu references
 \newcommand{\menu}[1]{\texorpdfstring{{\color{dkred}\textit{#1}}}{#1}}
 %%% Menu separator
-\newcommand{\msep}{{\color{dkred}\textit{\guilsinglright}}}
+\newcommand{\msep}{{\color{dkred}\textit{\guilsinglright}}\xspace}
 %%% yellow box with dark blue text
 \newcommand{\tip}[2][Tipp: ]{%
   \begin{center}%
@@ -105,6 +105,7 @@
     \color{dkblue}\textit{#1}#2}}%
   \end{center}%
 }%
+
 %%% for the FAQ 
 \newcounter{faq}
 \newcommand{\faq}[2]{\refstepcounter{faq}%
@@ -198,6 +199,7 @@ BibTeX
 Da-tei-na-men
 Me-n�-be-feh-le
 For-mat-erken-nung% verhindert Trennung "Formater-kennung"
+Werk-zeug-leis-te
 }
 
 \makeatother
@@ -252,7 +254,6 @@ Wa
 
 \newpage
 
-
 \section{Einleitung}
 \secttoc
 
@@ -280,7 +281,7 @@ mit dunkelblauer Schrift dargestellt. Hyperlinks sind ebenfalls dunkelblau
 und anklickbar~-- das gilt sowohl f�r die Navigation innerhalb des
 Dokuments als auch f�r Links ins Internet.
 
-Wenn Ihnen in diesem Handbuch Fehler auf"|fallen oder wenn Sie Anregungen zum Handbuch haben, w�rde ich mich �ber eine kurze Nachricht per \href{mailto:domwass at users.sourceforge.net}{E-Mail} freuen. �ber den Stand und die Versionen dieses Handbuchs gibt der Abschnitt ">\nameref{RevisionHistory}"< Auskunft.
+Wenn Ihnen in diesem Handbuch Fehler auf"|fallen oder wenn Sie Anregungen zum Handbuch haben, w�rde ich mich �ber eine kurze Nachricht per \href{mailto:domwass at users.sourceforge.net}{E-Mail} freuen. �ber den Stand und die einzelnen Versionen dieses Handbuchs gibt der Abschnitt ">\nameref{RevisionHistory}"< Auskunft.
 
 \subsection{Einf�hrung in \bibtex{}}
 
@@ -350,7 +351,7 @@ Die zweite Form sollte f
   \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).
+    Eine Kapitelnummer (oder Abschnittsnummer oder sonstige 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}\\
@@ -552,7 +553,7 @@ ihre Literaturquellen organisieren wollen.
 \subsection{Das Hauptfenster}
 
 \tip[]{Die meisten Men�funktionen, auf die im Folgenden hingewiesen
-wird, haben Tastenk�rzel, und viele Funktionen k�nnen �ber die Werkzeugleiste
+wird, haben Tastenk�rzel, und viele Funktionen k�nnen �ber die Werk\-zeug\-leiste
 aufgerufen werden.}
 \label{BaseFrameHelp}Im Hauptfenster, in dem Sie mit Ihrer Datei
 arbeiten, befindet sich unter der Men�leiste und der Werkzeugleiste
@@ -1508,9 +1509,12 @@ klicken Sie auf die Schaltfl
 \jabref den neuen Eintrag, der allerdings noch keinen \bibtex{}-Key
 hat.
 
-\subsection{Links zu externen Dateien}
+\subsection{Links zu PDF- und PS"=Dateien, URLs und DOIs}
+\label{ExternalFiles}
+
+\tip[Anmerkung: ]{Ab \jabref 2.3 gibt es ein verbessertes System f�r Links zu externen Dateien; siehe dazu den Abschnitt ">\nameref{FileLinks}"<.}
 
-\label{ExternalFiles}Mit \jabref k�nnen Sie Ihre Eintr�ge mit
+\noindent Mit \jabref k�nnen Sie Ihre Eintr�ge mit
 den entsprechenden PDF- oder PS-Dateien, die sich auf Ihrem Computer
 befinden, verlinken. Ebenso ist es m�glich, Dateien im Internet �ber
 einen URL oder DOI zu verlinken.
@@ -1603,6 +1607,31 @@ Die folgende Syntax wird verwendet:
 \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{Links zu externen Dateien (ab Version 2.3)}
+\label{FileLinks}
+
+\jabref l�sst Sie Ihre Eintr�ge mit Dateien jeden Typs verlinken, die Sie auf Ihrem System gespeichert haben. Au�erdem sind Links zu Dokumenten im Internet in der Form eines URL oder eines DOI m�glich. Jedem Eintrag kann eine beliebige Anzahl von Datei-Links zugeordnet werden und jede verlinkte Datei kann schnell aus JabRef heraus ge�ffnet werden.
+
+Was \bibtex angeht, werden die Datei"=Links eines Eintrags in ein einzelnes Feld geschrieben. In \jabref erscheinen sie aber als editierbare Liste von Links, die im Eintrags"=Editor zug�nglich sind.
+
+\subsubsection{Einrichten der Dateitypen}
+
+F�r jeden Datei"=Link muss ein Dateityp gew�hlt werden, damit das richtige Programm zum �ffnen der Datei und das entsprechende Icon gefunden werden. Die Liste der Dateitypen k�nnen Sie einsehen und bearbeiten, indem Sie \menu{Optionen \msep Externe Dateitypen verwalten} w�hlen oder auf die Schaltfl�che \menu{Externe Dateitypen verwalten} im Bereich \menu{Externe Programme} des Einstellungs"=Dialogs klicken.
+
+Ein Dateityp besteht aus einem Namen, einem graphischen Icon, einer Dateierweiterung und einer Anwendung zum �ffnen der Dateien. Wenn Sie Windows benutzen, k�nnen Sie den Namen der Anwendung weglassen, wenn Sie das Standardprogramm verwenden wollen.
+
+\subsubsection{Datei"=Links zu einem Eintrag hinzuf�gen}
+
+Wenn bei den Allgemeinen Feldern (siehe Abschnitt~\ref{GeneralFields}) das Feld \texttt{file} eingetragen ist, k�nnen Sie die Liste der externen Links im \nameref{EntryEditorHelp} bearbeiten. Der Editor hat dann Schaltfl�chen zum Einf�gen, Bearbeiten, L�schen und Sortieren der Links.
+
+Eine Datei kann mit Hilfe der \menu{Auto}"=Schaltfl�che automatisch verlinkt werden, falls sie in Ihrem Dateiverzeichnis (\menu{Einstellungen \msep Externe Programme \msep Links zu externen Dateien \msep Hauptverzeichnis}) oder einem Unterordner liegt, eine Dateierweiterung hat, die \jabref bekannt ist, und einen Namen hat, der mit dem BibTeX"=Key des Eintrags �bereinstimmt. Die Regeln, nach denen Dateinamen mit BibTeX"=Keys automatisch verkn�pft werden, k�nnen eingestellt werden unter \ [...]
+
+Um eine Datei herunterzuladen und mit einem Eintrag zu verlinken, benutzen Sie die Schaltfl�che \menu{Download} im Eintrags"=Editor. Es erscheint ein Dialog, in dem Sie den URL eingeben m�ssen. Die Datei wird dann in Ihr Hauptverzeichnis gespeichert, anhand des BibTeX-Keys benannt und mit dem Eintrag verkn�pft.
+
+\subsubsection{Externe Dateien �ffnen}
+
+Es gibt mehrere M�glichkeiten, externe Dateien oder Internetseiten zu �ffnen. In der Tabellenansicht k�nnen Sie einen Eintrag ausw�hlen und mit dem Men�, einem Tastenk�rzel oder dem Kontextmen� den ersten externen Link �ffnen. Falls in der Tabellenansicht die Spalte \texttt{file} angezeigt wird (\menu{Einstellungen \msep Tabellenansicht \msep Spezielle Spalten \msep Datei"=Spalten anzeigen}), k�nnen Sie auch auf das Icon klicken, um den ersten Link eines Eintrags zu �ffnen. Um weitere Li [...]
+
 \subsection{XMP-Metadaten}
 \label{XMPHelp}
 
@@ -2102,6 +2131,7 @@ k
 
 
 \subsubsection{Spezielle Feldmarken}
+\label{subsub:SpezielleFeldmarken}
 
 \begin{labeling}{auth.auth.eaMM}
 \item [\texttt{{[}auth{]}}]Der Nachname des ersten Autors.
@@ -2146,6 +2176,7 @@ mehr als ein Herausgeber vorhanden ist. Ein Plus (+) wird angeh
 falls es mehr als drei Herausgeber gibt.
 \item [\texttt{{[}firstpage{]}}]Die erste Seitenzahl einer Ver�ffentlichung
 (pages).
+\item [\texttt{{[}keywordN{]}}]Stichwort Nummer N aus dem Feld ">keywords"<, gesetzt den Fall, dass die Stichworte durch Komma oder Semikolon voneinander getrennt sind.
 \item [\texttt{{[}lastpage{]}}]Die letzte Seitenzahl einer Ver�ffentlichung
 (pages).
 \item [\texttt{{[}shorttitle{]}}]Die ersten 3 Worte eines Titels (title).
@@ -2218,7 +2249,7 @@ mit der Endung \texttt{.layout} vorhanden ist. Um einen neuen, eigenen
 Exportfilter hinzuzuf�gen, �ffnen Sie das Dialogfenster \menu{Optionen}
 \msep{} \menu{Verwalte externe Exportfilter} und klicken auf die
 Schaltfl�che \menu{Neu}. Es �ffnet sich ein neues Fenster, in dem
-Sie einen Namen (der als Auswahl im Dateityp"=Dropdownmen� erscheint, wenn man \menu{Datei \msep{} Exportieren} im JabRef"=Hauptfenster w�hlt), eine Pfadangabe zur \texttt{.layout}-Datei und die
+Sie einen Namen (der als Auswahl im Dateityp"=Dropdownmen� erscheint, wenn man \menu{Datei \msep{} Exportieren} im \jabref"=Hauptfenster w�hlt), eine Pfadangabe zur \texttt{.layout}-Datei und die
 gew�nschte Dateiendung f�r den Exportfilter angeben k�nnen. Wenn Sie
 den Exportfilter benutzen, wird diese Endung im Datei"=Dialog automatisch
 vorgeschlagen.
@@ -2361,6 +2392,7 @@ und >>\}<<).
 \texttt{\textbackslash{}textbf} etc. Zusammen mit \texttt{HTMLChars}
 oder \texttt{XMLChars} sollte dieser Formatierer zuletzt aufgerufen
 werden.
+\item [\texttt{RemoveTilde}]ersetzt das Tilde-Zeichen (\lstinline{~}), das in \LaTeX\ als festes Leerzeichen dient, durch ein normales Leerzeichen. N�tzlich in Kombination mit dem Namens"=Formatierer (siehe Abschnitt \nameref{NameFormatter}).
 \item [\texttt{ToLowerCase}]macht aus allen Buchstaben Kleinbuchstaben.
 \item [\texttt{CompositeFormat}]\emph{Dokumentation folgt.}
 \item [\texttt{GetOpenOfficeType}]\emph{Dokumentation folgt.}
@@ -2376,6 +2408,51 @@ mit seinem vollen Namen aufrufen (inklusive Paketname). In jedem Fall
 muss der Formatierer in ihrem classpath sein, wenn Sie \jabref
 starten.
 
+\paragraph{Eigene Namens"=Formatierer verwenden}
+\label{NameFormatter}
+
+Mit \jabref~2.2 ist es jetzt m�glich, eigene Namens"=Formatierer zu definieren. Dazu wird die Syntax der Bibliographie"=Stile (bst) verwendet. Das erlaubt �u�erste Flexibilit�t, ist allerdings aufw�ndig in der Schreibweise.
+
+Sie k�nnen unter \menu{Optionen \msep Einstellungen \msep Namens"=Formatierer} Ihren eigenen Formatierer schreiben. Benutzen Sie das folgende Format:
+\begin{lstlisting}
+  <Fall1>@<Bereich11>@<Format>@<Bereich12>@<Format>@<Bereich13>(*\ldots*)@@<br>
+  <Fall2>@<Bereich21>@(*\ldots*)
+\end{lstlisting}
+Dieses Format teilt die Aufgabe, eine Liste von Autoren zu formatieren, in unterschiedliche F�lle abh�ngig von der Zahl der Autoren (das ist n�tig, weil manche Formate sich je nach der Zahl der Autoren unterscheiden). Die einzelnen F�lle werden durch \texttt{@@} voneinander getrennt und enthalten Anweisungen, wie jeder einzelne Autor in diesem Fall zu formatieren ist. Diese Anweisungen werden durch \texttt{@} getrennt.
+
+F�lle werden durch Ganzzahlen (1, 2, 3, etc.) oder das Zeichen \texttt{*} (alle Autoren) definiert. Sie geben die nachfolgenden Anweisungen an den Formatierer weiter, falls weniger oder gleich viele Autoren vorhanden sind.
+
+Bereiche sind entweder \texttt{<Ganzzahl>..<Ganzzahl>}, \texttt{<Ganzzahl>} oder das Zeichen \texttt{*}. Die Liste der Autoren f�ngt bei 1 an. Die Ganzzahlen k�nnen einen negativen Wert haben, um vom letzten Autor der Liste zu starten, wobei -1 der Wert f�r den letzten Autor ist.
+
+Als Beispiel dient die Autorenliste ">Joe Doe and Mary Jane and Bruce Bar and Arthur Kay"<:
+\begin{itemize}
+  \item 1..3 betrifft Joe, Mary und Bruce
+  \item 4..4 betrifft Arthur 
+  \item * betrifft alle
+  \item 2..-1 betrifft Mary, Bruce und Arthur
+\end{itemize}
+
+Die \texttt{<Format>}-Strings nutzen das BibTeX-Namensschema: Die vier Buchstaben v, f, l, j stehen f�r die Namensteile von, Vorname (first), Nachname (last) und Junior und werden in geschweiften Klammern gesetzt. Ein einzelner Buchstabe v, f, l, j bedeutet, dass der Name abgek�rzt werden soll. Wenn einer dieser Buchstaben oder Buchstabenpaare vorkommen, gibt \jabref alle entsprechenden Namen (eventuell abgek�rzt) aus, aber der Ausdruck in geschweiften Klammern wird nur ausgegeben, wenn  [...]
+
+Beispielsweise wird beim Format ">\texttt{\{ll\} \{vv \{von Part\}\} \{ff\}}"< die Autorenliste ">Mary Kay and John von Neumann"< von \jabref als ">Kay~~Mary"< (mit zwei Leerzeichen) und ">Neumann von von Part John"< ausgegeben.
+
+Zwei weitere Beispiele sollen das Ganze verdeutlichen; die Dokumentation von \bibtex gibt weitere Hinweise.
+
+Kurzes Beispiel: ">\texttt{\{ll\}, \{f.\}}"< formatiert ">\lstinline{Joe Doe}"< als ">\lstinline{Doe, J.}"<
+
+Ausf�hrliches Beispiel: Um 
+\begin{quote}
+">Joe Doe and Mary Jane and Bruce Bar and Arthur Kay"<
+\end{quote}
+als
+\begin{quote}
+">Doe, J., Jane, M., Bar, B. and Kay, A."<
+\end{quote}
+zu formatieren, nutzt man
+\begin{lstlisting}
+1@*@{ll}, {f}.@@2 at 1@{ll}, {f}. at 2@ and {ll}, {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}. at -1@ and {ll}, {f}.
+\end{lstlisting}
+Falls jemand eine bessere Dokumentation hierzu verfassen m�chte: Wenden Sie sich einfach an die \jabref"=Maililnglisten!
 
 \paragraph{Bedingte Ausgabe}
 
@@ -2546,7 +2623,7 @@ Nun sollte dort auch eine Datei \texttt{/mypath/SimpleCsvImporter.class} liegen.
 
 �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 
-klicken Sie \menu{Klassenpfad ausw�hlen}. W�hlen Sie dann die Datei \texttt{SimpleCsvImporter.class}
+klicken Sie \menu{Klassenpfad ausw�hlen}. W�hlen Sie anschlie�end 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{} 
@@ -2797,14 +2874,21 @@ geworden ist, was es ist. Wer zum Entwicklerteam geh
 %\end{revhist}
 
 \begin{revhist}{\versiondate}%endg�ltiges Datum}
+\item Abschnitt ">\nameref{NameFormatter}"< hinzugef�gt
+\item Abschnitte ">\nameref{par:Feldformatierer}"< und ">\nameref{subsub:SpezielleFeldmarken}"< erg�nzt
+\end{revhist}
+
+\begin{revhist}{4.\,7.\,2007}
+\item Abschnitt ">\nameref{FileLinks}"< hinzugef�gt
+\item Abschnitt ">Links zu externen Dateien"< in \nameref{ExternalFiles} umbenannt
 \item Kleine �nderungen
 \end{revhist}
 
 \begin{revhist}{8.\,6.\,2007}
 \item Abschnitt ">Import und Export"< in zwei Abschnitte unterteilt
-\item Abschnitt \nameref{sec:faq} erg�nzt
-\item Abschnitte \nameref{EntryEditorHelp} und \nameref{subsec:System-Voraussetzungen} angepasst
-\item Fehler im Abschnitt \nameref{PreviewHelp} korrigiert
+\item Abschnitt ">\nameref{sec:faq}"< erg�nzt
+\item Abschnitte ">\nameref{EntryEditorHelp}"< und ">\nameref{subsec:System-Voraussetzungen}"< angepasst
+\item Fehler im Abschnitt ">\nameref{PreviewHelp}"< korrigiert
 \item Versionsnummer angepasst
 \item Beschreibung der Felder ">doi"< und ">eid"< hinzugef�gt
 \item Fehler im Link zum Mail-Archiv beseitigt
@@ -2813,19 +2897,19 @@ geworden ist, was es ist. Wer zum Entwicklerteam geh
 \end{revhist}
 
 \begin{revhist}{18.\,4.\,2007}
-\item Abschnitte \nameref{LabelPatterns}, \nameref{par:Feldformatierer} und \nameref{StringEditorHelp} aktualisiert
-\item Fehler in Abschnitt \nameref{subsec:Starten-Kommandozeile} entfernt
+\item Abschnitte ">\nameref{LabelPatterns}"<, ">\nameref{StringEditorHelp}"< und ">\nameref{par:Feldformatierer}"< aktualisiert
+\item Fehler in Abschnitt ">\nameref{subsec:Starten-Kommandozeile}"< entfernt
 \item \jabref-Logo ge�ndert
 \item Ein paar Kleinigkeiten
 \end{revhist}
 
 \begin{revhist}{20.\,3.\,2007}
-\item Abschnitt \nameref{subsubsec:Hinzufuegen-Exportfilter} angepasst
+\item Abschnitt ">\nameref{subsubsec:Hinzufuegen-Exportfilter}"< angepasst
 \item Kleinere �nderungen
 \end{revhist}
 
 \begin{revhist}{1.\,2.\,2007}
-\item Abschnitte \nameref{EndnoteFilters}, \nameref{subsubsec:endnote-jabref}, \nameref{subsec:about} und \nameref{sec:faq} �berarbeitet
+\item Abschnitte ">\nameref{EndnoteFilters}"<, ">\nameref{subsubsec:endnote-jabref}"<, ">\nameref{subsec:about}"< und ">\nameref{sec:faq}"< �berarbeitet
 \item Literaturverzeichnis um Eintrag von \cite{btxfaq} erg�nzt
 \item Und noch ein paar kleine �nderungen
 \end{revhist}
diff --git a/src/help/de/JabRefHelp.html b/src/help/de/JabRefHelp.html
index d421b2b..b93d48f 100644
--- a/src/help/de/JabRefHelp.html
+++ b/src/help/de/JabRefHelp.html
@@ -1,20 +1,41 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>JabRef</H1>
-
-<P><strong>Anmerkung:</strong> Das Programm <em>BibTeX</em> wird in den Hilfedateien h�ufig erw�hnt. <em>BibTeX</em> ist ein Hilfsprogramm zur Erstellung bibliographischer Angaben in LaTeX-Dokumenten, das Oren Patashnik entwickelt hat. Dasselbe Dateiformat wird von CiteMaker benutzt, einem Hilfsprogramm zur Erstellung von Bibliographien mit Adobe FrameMaker.
-
-<P>JabRef ist ein Programm zur Verwaltung von <em>BibTeX</em>-Dateien. Es benutzt kein eigenes Dateiformat, d.h. dass Sie Ihre Dateien direkt im <em>BibTeX</em>-Format (Dateiendung .bib) laden und speichern. Sie k�nnen aber auch bibliographische Datenbanken in anderen Formaten in JabRef importieren. 
-
-<P>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 <em>BibTeX</em> keys automatisch generieren. 
-JabRef ist sehr n�tzlich, wenn Sie <em>BibTeX</em> oder CiteMaker benutzen, kann aber auch f�r diejenigen sinnvoll sein, die andere Bibliographie-Systeme benutzen oder schlicht und einfach ihre Literaturquellen organisieren wollen.
-
-<P>
-<a href="BaseFrameHelp.html">Das Hauptfenster von JabRef</a>
-
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>JabRef</h1>
+
+    <p><strong>Anmerkung:</strong> Das Programm <em>BibTeX</em>
+    wird in den Hilfedateien häufig erwähnt.
+    <em>BibTeX</em> ist ein Hilfsprogramm zur Erstellung
+    bibliographischer Angaben in LaTeX-Dokumenten, das Oren
+    Patashnik entwickelt hat. Dasselbe Dateiformat wird von
+    CiteMaker benutzt, einem Hilfsprogramm zur Erstellung von
+    Bibliographien mit Adobe FrameMaker.</p>
+
+    <p>JabRef ist ein Programm zur Verwaltung von
+    <em>BibTeX</em>-Dateien. Es benutzt kein eigenes Dateiformat,
+    d.h. dass Sie Ihre Dateien direkt im <em>BibTeX</em>-Format
+    (Dateiendung .bib) laden und speichern. Sie können aber
+    auch bibliographische Datenbanken in anderen Formaten in JabRef
+    importieren.</p>
+
+    <p>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 <em>BibTeX</em> keys automatisch
+    generieren. JabRef ist sehr nützlich, wenn Sie
+    <em>BibTeX</em> oder CiteMaker benutzen, kann aber auch
+    für diejenigen sinnvoll sein, die andere
+    Bibliographie-Systeme benutzen oder schlicht und einfach ihre
+    Literaturquellen organisieren wollen.</p>
+
+    <p><a href="BaseFrameHelp.html">Das Hauptfenster von
+    JabRef</a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/JournalAbbreviations.html b/src/help/de/JournalAbbreviations.html
index 5d9028e..34ec6d8 100644
--- a/src/help/de/JournalAbbreviations.html
+++ b/src/help/de/JournalAbbreviations.html
@@ -1,53 +1,120 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Zeitschriftentitel abkürzen</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-Diese Funktion kann unter <b>Optionen -> Abkürzungen der Zeitschriften verwalten</b> eingestellt werden.
+    <h1>Zeitschriftentitel abkürzen</h1>
 
-<p>JabRef kann automatisch zwischen Zeitschriftentiteln in abgekürzter und ausführlicher Form hin- und herschalten, sofern die Titel in einer Ihrer Zeitschriftenlisten enthalten ist. Sie können mehrere dieser Listen benutzen, die Sie als externe Textdateien anlegen.
+    <p>Diese Funktion kann
+    unter <b>Optionen -> Abkürzungen der Zeitschriften
+    verwalten</b> eingestellt werden.</p>
 
-<H2>Benutzungshinweise</H2>
-<p>
-Die Abkürzung von Zeitschriftentiteln können Sie von Eintragseditor oder vom Menü <b>Extras</b> aus ein- und ausschalten. Im Eintragseditor benutzen Sie dazu den Button <b>Abkürzung an-/abschalten</b> neben dem <b>Journal</b>-Feld. Es wird zwischen drei Modi hin- und hergeschaltet:
-<ul>
-    <li>Kompletter Name, z.B. "Aquacultural Engineering"</li>
-    <li>ISO-Abkürzung, z.B. "Aquacult. Eng."</li>
-    <li>MEDLINE-Abkürzung, z.B. "Aquacult Eng"</li>
-</ul>
-Falls der Zeitschriftenname sich nicht in Ihren Zeitschriftenlisten findet, wird das Feld nicht verändert.
+    <p>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.</p>
 
-<p>
-Um die Zeitschriftennamen mehrerer Einträge auf einmal zu konvertieren, können Sie eine beliebige Anzahl von Einträgen auswählen und im Menü <b>Extras</b> einen der Einträge <b>Zeitschriftennamen abkürzen (ISO)</b>, <b>Zeitschriftennamen abkürzen (MEDLINE)</b> und <b>Abkürzung der Zeitschriften aufheben</b> wählen.
-Diese drei Aktionen sorgen dafür, dass bei allen ausgewählten Einträgen die Zeitschriftennamen, die in den Zeitschriftenlisten gefunden werden konnten, abgekürzt oder komplett ausgeschrieben werden.
+    <h2>Benutzungshinweise</h2>
 
-<h2>Zeitschriftenlisten verwalten</h2>
+    <p>Die Abkürzung von Zeitschriftentiteln können Sie
+    von Eintragseditor oder vom Menü <b>Extras</b> aus ein-
+    und ausschalten. Im Eintragseditor benutzen Sie dazu den Button
+    <b>Abkürzung an-/abschalten</b> neben dem
+    <b>Journal</b>-Feld. Es wird zwischen drei Modi hin- und
+    hergeschaltet:</p>
 
-Sie können mehrere Zeitschriftenlisten als externe Textdateien benutzen, die mit JabRef verlinkt sind. Die primäre Liste kann in JabRef selbst verwaltet werden.
-
-<H3>Ihre persönliche Zeitschriften-Abkürzungsliste</H3>
-
-Ihre persönliche Liste verwalten Sie im oberen Teil des <b>Abkürzung der Zeitschriftennamen</b>-Dialogs.
-Wählen Sie <b>Neue Datei</b> und geben einen Dateinamen ein oder klicken auf den <b>Durchsuchen</b>-Button. Wenn Sie bereits eine Datei haben, die Sie als Grundlage nehmen wollen, wählen Sie stattdessen <b>Bestehende Datei</b> und benutzen den <b>Durchsuchen</b>-Button zum Auswählen dieser Datei. Die Tabelle zeigt dann den Inhalt der Liste, die Sie ausgewählt haben.
-
-<p>Sie können mit Hilfe der <b>+</b> und <b>-</b> Buttons an der rechten Seite Einträge hinzufügen oder entfernen. Für jeden Eintrag müssen Sie den vollständigen Zeitschriftennamen und die ISO-Abkürzung angeben (z.B. "Aquacultural Engineering" und "Aquacult. Eng."). Mit einem Doppelklick auf die Tabellenzeile können Sie die Einträge bearbeiten.
-
-<p>Sobald Sie auf <b>OK</b> klicken (oder wenn Sie eine bestehende Datei ausgewält haben), enthält die Tabelle mindestens eine Zeile. Der Tabelleninhalt wird in die ausgewählte Datei geschrieben und die Zeitschriftenliste von JabRef wird aktualisiert.
-
-<h3>Externe Zeitschriftenlisten</h3>
-
-Zusätzlich zu Ihrer persönlichen Liste können Sie mehrere externe Listen verlinken. Diese Verknüpfungen werden im unteren Teil des <b>Abkürzung der Zeitschriftennamen</b>-Dialogs verwaltet. Externe Listen sind den persönlichen Listen ähnlich - der einzige Unterschied ist, dass Sie nicht mit JabRef selbst verwaltet werden können.
-<p>
-Um eine externe Liste hinzuzufügen, klicken Sie zunächst auf den <b>+</b> Knopf, falls nötig (das fügt eine weitere Zeile hinzu). Dann benutzen Sie entweder den <b>Durchsuchen</b>- oder den <b>Herunterladen</b>-Button.
     <ul>
-    <li>Mit dem <b>Durchsuchen</b>-Knopf können Sie eine auf Ihrem Computer bestehende Datei auswählen.</li>
-    <li>Mit dem <b>Herunterladen</b>-Knopf können Sie eine Liste aus dem Internet herunterladen, indem Sie eine URL angeben. Die Datei wird auf Ihrem Computer gespeichert und mit JabRef verlinkt.
-    Die URL ist standardmäßig die Adresse einer Zeitschriftenliste auf der JabRef-Homepage. Diese Liste ist unvollständig, wird in Zukunft aber ausgebaut.</li>
-    </ul>
+        <li>Kompletter Name, z.B. "Aquacultural Engineering"</li>
+
+        <li>ISO-Abkürzung, z.B. "Aquacult. Eng."</li>
+
+        <li>MEDLINE-Abkürzung, z.B. "Aquacult Eng"</li>
+    </ul>Falls der Zeitschriftenname sich nicht in Ihren
+    Zeitschriftenlisten findet, wird das Feld nicht verändert.
+
+
+    <p>Um die Zeitschriftennamen mehrerer Einträge auf einmal
+    zu konvertieren, können Sie eine beliebige Anzahl von
+    Einträgen auswählen und im Menü <b>Extras</b>
+    einen der Einträge <b>Zeitschriftennamen abkürzen
+    (ISO)</b>, <b>Zeitschriftennamen abkürzen (MEDLINE)</b>
+    und <b>Abkürzung der Zeitschriften aufheben</b>
+    wählen. Diese drei Aktionen sorgen dafür, dass bei
+    allen ausgewählten Einträgen die Zeitschriftennamen,
+    die in den Zeitschriftenlisten gefunden werden konnten,
+    abgekürzt oder komplett ausgeschrieben werden.</p>
+
+    <h2>Zeitschriftenlisten verwalten</h2>
+
+    <p>Sie können mehrere
+    Zeitschriftenlisten als externe Textdateien benutzen, die mit
+    JabRef verlinkt sind. Die primäre Liste kann in JabRef
+    selbst verwaltet werden.</p>
+
+    <h3>Ihre persönliche
+    Zeitschriften-Abkürzungsliste</h3>
+
+    <p>Ihre persönliche
+    Liste verwalten Sie im oberen Teil des <b>Abkürzung der
+    Zeitschriftennamen</b>-Dialogs. Wählen Sie <b>Neue
+    Datei</b> und geben einen Dateinamen ein oder klicken auf den
+    <b>Durchsuchen</b>-Button. Wenn Sie bereits eine Datei haben,
+    die Sie als Grundlage nehmen wollen, wählen Sie
+    stattdessen <b>Bestehende Datei</b> und benutzen den
+    <b>Durchsuchen</b>-Button zum Auswählen dieser Datei. Die
+    Tabelle zeigt dann den Inhalt der Liste, die Sie
+    ausgewählt haben.</p>
+
+    <p>Sie können mit Hilfe der <b>+</b> und <b>-</b> Buttons
+    an der rechten Seite Einträge hinzufügen oder
+    entfernen. Für jeden Eintrag müssen Sie den
+    vollständigen Zeitschriftennamen und die
+    ISO-Abkürzung angeben (z.B. "Aquacultural Engineering" und
+    "Aquacult. Eng."). Mit einem Doppelklick auf die Tabellenzeile
+    können Sie die Einträge bearbeiten.</p>
+
+    <p>Sobald Sie auf <b>OK</b> klicken (oder wenn Sie eine
+    bestehende Datei ausgewält haben), enthält die
+    Tabelle mindestens eine Zeile. Der Tabelleninhalt wird in die
+    ausgewählte Datei geschrieben und die Zeitschriftenliste
+    von JabRef wird aktualisiert.</p>
+
+    <h3>Externe Zeitschriftenlisten</h3>
+
+    <p>Zusätzlich zu Ihrer
+    persönlichen Liste können Sie mehrere externe Listen
+    verlinken. Diese Verknüpfungen werden im unteren Teil des
+    <b>Abkürzung der Zeitschriftennamen</b>-Dialogs verwaltet.
+    Externe Listen sind den persönlichen Listen ähnlich -
+    der einzige Unterschied ist, dass Sie nicht mit JabRef selbst
+    verwaltet werden können.</p>
+
+    <p>Um eine externe Liste hinzuzufügen, klicken Sie
+    zunächst auf den <b>+</b> Knopf, falls nötig (das
+    fügt eine weitere Zeile hinzu). Dann benutzen Sie entweder
+    den <b>Durchsuchen</b>- oder den
+    <b>Herunterladen</b>-Button.</p>
 
-Jeder Eintrag in Ihrer persönlichen Liste überschreibt einen Eintrag mit demselben vollständigen Zeitschriftennamen in einer Ihrer externen Listen. In ähnlicher Weise werden die externen Listen in der Reihenfolge, wie sie aufgelistet werden, abgearbeitet.
-
-</BODY>
-</HTML>
\ No newline at end of file
+    <ul>
+        <li>Mit dem <b>Durchsuchen</b>-Knopf können Sie eine
+        auf Ihrem Computer bestehende Datei auswählen.</li>
+
+        <li>Mit dem <b>Herunterladen</b>-Knopf können Sie eine
+        Liste aus dem Internet herunterladen, indem Sie eine URL
+        angeben. Die Datei wird auf Ihrem Computer gespeichert und
+        mit JabRef verlinkt. Die URL ist standardmäßig
+        die Adresse einer Zeitschriftenliste auf der
+        JabRef-Homepage. Diese Liste ist unvollständig, wird
+        in Zukunft aber ausgebaut.</li>
+    </ul>Jeder Eintrag in Ihrer persönlichen Liste
+    überschreibt einen Eintrag mit demselben
+    vollständigen Zeitschriftennamen in einer Ihrer externen
+    Listen. In ähnlicher Weise werden die externen Listen in
+    der Reihenfolge, wie sie aufgelistet werden, abgearbeitet.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/LabelPatterns.html b/src/help/de/LabelPatterns.html
index 297a13f..b791590 100644
--- a/src/help/de/LabelPatterns.html
+++ b/src/help/de/LabelPatterns.html
@@ -1,91 +1,188 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Anpassen der automatischen Erstellung von BibTeX-Keys</H1>
-
-Im Tab "Key-Muster" im Dialog "Einstellungen" kann man  die Felder bestimmen, die
-zur automatischen Generierung der BibTeX-Labels (bibtexkey) herangezogen werden.
-Das Muster kann für jeden der vorgegebenen Eintragstypen bestimmt werden.
-<P>
-<h2>Key-Muster</h2>
-Das Muster kann beliebigen Text enthalten, unabhängig von und zusätzlich zu
-den Feldmarken, die angeben, dass ein bestimmtes Feld des Eintrags an dieser Stelle des
-Keys eingefügt werden soll. Eine Feldmarke besteht gewöhnlich aus dem
-Feldnamen in eckigen Klammern, z.B. <b>[volume]</b>. Wenn dieses Feld zum Zeitpunkt
-der Erstellung des Keys leer ist, wird kein Text eingefügt.
-<P>
-Es gibt außerdem mehrere spezielle Feldmarken, die nur einen bestimmten Teil aus einem
-Feld extrahieren. Sie werden unten aufgelistet. Natürlich können Sie auch neue
-spezielle Feldmarken vorschlagen.
-
-<P>
-Spezielle Feldmarken:
-<ul>
-<li><b>[<code>auth</code>]</b>: Der Nachname des ersten Autors.<BR>
-<li><b>[<code>authors</code>]</b>: Die Nachnamen aller Autoren.<BR>
-<li><b>[<code>authorsN</code>]</b>: Die Nachnamen von bis zu N Autoren. Falls es mehr Autoren gibt, wird EtAl angehängt.<BR>
-<li><b>[<code>authIniN</code>]</b>: Der Anfang des Nachnamens von jedem Autoren,
-	wobei nicht mehr als N Buchstaben verwendet werden.<BR>
-<li><b>[<code>authorIni</code>]</b>: Die ersten 5 Buchstaben des Nachnamens des ersten Autors
-	und die Initialen der Nachnamen der restlichen Autoren.<BR>
-<li><b>[<code>authN</code>]</b>: Die ersten N Buchstaben des Nachnamens des ersten Autors.<BR>
-<li><b>[<code>authN_M</code>]</b>: Die ersten N Buchstaben des Nachnamens des M. Autors.<BR>
-<li><b>[<code>auth.auth.ea</code>]</b>: Die Nachnamen der beiden ersten Autoren und ".ea", falls
-	es mehr als zwei Autoren sind.<BR>
-<li><b>[<code>auth.etal</code>]</b>: Der Nachname des ersten Autors und der Nachname des zweiten Autors bei zwei Autoren bzw. ".etal" bei mehr als zwei Autoren.
-<li><b>[<code>authshort</code>]</b>: Der Nachname bei einem Autor; der erste Buchstabe der Nachnamen von bis zu drei Autoren, falls mehr als ein Autor vorhanden ist. Ein Plus (+) wird angehängt, falls es mehr als drei Autoren gibt.<BR></ul>
-<b>Anmerkung:</b>Falls es keinen Autor gibt (z.B. bei einem Buch mit Herausgeber), benutzen die genannten [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 <b>pureauth</b> statt <b>auth</b> verwenden, z. [...]
-<ul>
-<li><b>[<code>edtr</code>]</b>: Der Nachname des ersten Editors.<BR>
-<li><b>[<code>editors</code>]</b>: Die Nachnamen aller Editoren.<BR>
-<li><b>[<code>edtrIniN</code>]</b>: Der Anfang des Nachnamens von jedem Editor,
-	wobei nicht mehr als N Buchstaben verwendet werden.<BR>
-<li><b>[<code>editorIni</code>]</b>: Die ersten 5 Buchstaben des Nachnamens des Editors
-	und die Initialen der Nachnamen der restlichen Editoren.<BR>
-<li><b>[<code>edtrN</code>]</b>: Die ersten N Buchstaben des Nachnamens des ersten Editors.<BR>
-<li><b>[<code>edtrN_M</code>]</b>: Die ersten N Buchstaben des Nachnamens des M. Editors.<BR>
-<li><b>[<code>edtr.edtr.ea</code>]</b>: Der Nachname der ersten beiden Editoren
-	und ".ea", falls es mehr als zwei Editoren sind.<BR>
-<li><b>[<code>edtrshort</code>]</b>: Der Nachname bei einem Editor; der erste Buchstabe der Nachnamen von bis zu drei Editoren, falls mehr als ein Editor vorhanden ist. Ein Plus (+) wird angehängt, falls es mehr als drei Editoren gibt.<BR>
-<li><b>[<code>firstpage</code>]</b>: Die erste Seitenzahl einer Veröffentlichung (pages).<BR>
-<li><b>[<code>lastpage</code>]</b>: Die letzte Seitenzahl einer Veröffentlichung (pages).<BR>
-<li><b>[<code>shorttitle</code>]</b>: Die ersten 3 Worte eines Titels (title).<BR>
-<li><b>[<code>shortyear</code>]</b>: Die letzten 2 Ziffern des Jahrgangs (year).<BR>
-<li><b>[<code>veryshorttitle</code>]</b>: Die ersten beiden Worte des Titels (title), wobei 'the', 'a' und
-	'an' ausgelassen werden.<BR>
- </ul>
-
-<P>
-Hinter einem Feldnamen (oder einem der oben aufgeführten Pseudo-Feldnamen) kann ein
-Modifikator stehen. Modifikatoren werden in der Reihenfolge angewendet, in der sie angegeben wurden.
-<ul>
-<li><b>:abbr</b>: Kürzt den Text, der von einem Feldnamen oder speziellen Feldmarken gebildet wird. Nur der erste Buchstabe und weitere Buchstaben, die auf ein Leerzeichen folgen, werden berücksichtigt. Zum Beispiel würde <b>[journal:abbr]</b> die Zeitschrift "Jorunal of Fish Biology" zu "JoFB" wandeln.<br>
-<li><b>:lower</b>: Wandelt den von der Feldmarke eingefügten Text in Kleinbuchstaben. So wird beispielsweise bei <b>[auth:lower]</b> der Nachname des ersten Autors in Kleinbuchstaben ausgegeben.
-</ul>
-<P>
-Wenn Sie keine Key-Muster für einen bestimmten Eintragstyp angeben, wird das vorgegebene
-Muster (default pattern) verwendet. Sie können das vorgegebene Muster natürlich ebenfalls
-anpassen - seine Einstellung befindet sich über der Liste der Eintragstypen im Tab <b>Key-Muster</b>
-des Dialogs <b>Einstellungen</b>.
-
-<P>
-Das vorgegebene Key-Muster ist [auth][year], das Keys wie z.B. <code>Yared1998</code> generiert.
-Falls der 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:
-
-<blockquote> <code>Yared1998</code><BR> <code>Yared1998a</code><BR>
-<code>Yared1998b</code> </blockquote>
-
-<h2>Ersetzen eines regulären Ausdrucks</h2>
-
-Nachdem das Key-Muster angewendet wurde, um einen BibTeX-Key zu erstellen, können Sie den Key-Generator nach einem bestimmten regulären Ausdruck suchen und ihn durch eine Zeichenfolge ersetzen lassen. Der reguläre Ausdruck und die Zeichenfolge, die ihn ersetzen soll, werden in den Textfeldern unter der Liste der Key-Muster eingegeben.
-
-Falls das Feld zur Ersetzung des regulären Ausdrucks leer ist, werden die mit der Suche übereinstimmenden regulären Ausdrücke einfach gelöscht.
-
-</font>
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Anpassen der automatischen Erstellung von
+    BibTeX-Keys</h1>
+
+    <p>Im Tab "Key-Muster" im Dialog "Einstellungen"
+    kann man die Felder bestimmen, die zur automatischen
+    Generierung der BibTeX-Labels (bibtexkey) herangezogen werden.
+    Das Muster kann für jeden der vorgegebenen Eintragstypen
+    bestimmt werden.</p>
+
+    <h2>Key-Muster</h2>
+
+    <p>Das Muster kann beliebigen Text enthalten,
+    unabhängig von und zusätzlich zu den Feldmarken, die
+    angeben, dass ein bestimmtes Feld des Eintrags an dieser Stelle
+    des Keys eingefügt werden soll. Eine Feldmarke besteht
+    gewöhnlich aus dem Feldnamen in eckigen Klammern, z.B.
+    <b>[volume]</b>. Wenn dieses Feld zum Zeitpunkt der Erstellung
+    des Keys leer ist, wird kein Text eingefügt.</p>
+
+    <p>Es gibt außerdem mehrere spezielle Feldmarken, die nur
+    einen bestimmten Teil aus einem Feld extrahieren. Sie werden
+    unten aufgelistet. Natürlich können Sie auch neue
+    spezielle Feldmarken vorschlagen.</p>
+
+    <p>Spezielle Feldmarken:</p>
+
+    <ul>
+        <li><b>[<code>auth</code>]</b>: Der Nachname des ersten
+        Autors.<br /></li>
+
+        <li><b>[<code>authors</code>]</b>: Die Nachnamen aller
+        Autoren.<br /></li>
+
+        <li><b>[<code>authorsN</code>]</b>: Die Nachnamen von bis
+        zu N Autoren. Falls es mehr Autoren gibt, wird EtAl
+        angehängt.<br /></li>
+
+        <li><b>[<code>authIniN</code>]</b>: Der Anfang des
+        Nachnamens von jedem Autoren, wobei nicht mehr als N
+        Buchstaben verwendet werden.<br /></li>
+
+        <li><b>[<code>authorIni</code>]</b>: Die ersten 5
+        Buchstaben des Nachnamens des ersten Autors und die
+        Initialen der Nachnamen der restlichen Autoren.<br /></li>
+
+        <li><b>[<code>authN</code>]</b>: Die ersten N Buchstaben
+        des Nachnamens des ersten Autors.<br /></li>
+
+        <li><b>[<code>authN_M</code>]</b>: Die ersten N Buchstaben
+        des Nachnamens des M. Autors.<br /></li>
+
+        <li><b>[<code>auth.auth.ea</code>]</b>: Die Nachnamen der
+        beiden ersten Autoren und ".ea", falls es mehr als zwei
+        Autoren sind.<br /></li>
+
+        <li><b>[<code>auth.etal</code>]</b>: Der Nachname des
+        ersten Autors und der Nachname des zweiten Autors bei zwei
+        Autoren bzw. ".etal" bei mehr als zwei Autoren.</li>
+
+        <li><b>[<code>authshort</code>]</b>: Der Nachname bei einem
+        Autor; der erste Buchstabe der Nachnamen von bis zu drei
+        Autoren, falls mehr als ein Autor vorhanden ist. Ein Plus
+        (+) wird angehängt, falls es mehr als drei Autoren
+        gibt.<br /></li>
+    </ul><b>Anmerkung:</b>Falls es keinen Autor gibt (z.B. bei
+    einem Buch mit Herausgeber), benutzen die genannten
+    [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 <b>pureauth</b> statt
+    <b>auth</b> verwenden, z.B.: <b>[pureauth]</b> oder
+    <b>[pureauthors3]</b>.
+
+    <ul>
+        <li><b>[<code>edtr</code>]</b>: Der Nachname des ersten
+        Editors.<br /></li>
+
+        <li><b>[<code>editors</code>]</b>: Die Nachnamen aller
+        Editoren.<br /></li>
+
+        <li><b>[<code>edtrIniN</code>]</b>: Der Anfang des
+        Nachnamens von jedem Editor, wobei nicht mehr als N
+        Buchstaben verwendet werden.<br /></li>
+
+        <li><b>[<code>editorIni</code>]</b>: Die ersten 5
+        Buchstaben des Nachnamens des Editors und die Initialen der
+        Nachnamen der restlichen Editoren.<br /></li>
+
+        <li><b>[<code>edtrN</code>]</b>: Die ersten N Buchstaben
+        des Nachnamens des ersten Editors.<br /></li>
+
+        <li><b>[<code>edtrN_M</code>]</b>: Die ersten N Buchstaben
+        des Nachnamens des M. Editors.<br /></li>
+
+        <li><b>[<code>edtr.edtr.ea</code>]</b>: Der Nachname der
+        ersten beiden Editoren und ".ea", falls es mehr als zwei
+        Editoren sind.<br /></li>
+
+        <li><b>[<code>edtrshort</code>]</b>: Der Nachname bei einem
+        Editor; der erste Buchstabe der Nachnamen von bis zu drei
+        Editoren, falls mehr als ein Editor vorhanden ist. Ein Plus
+        (+) wird angehängt, falls es mehr als drei Editoren
+        gibt.<br /></li>
+
+        <li><b>[<code>firstpage</code>]</b>: Die erste Seitenzahl
+        einer Veröffentlichung (pages).<br /></li>
+
+        <li><b>[<code>keywordN</code>]</b>: Stichwort Nummer N aus
+        dem Feld "keywords", gesetzt den Fall, dass die Stichworte
+        durch Komma oder Semikolon voneinander getrennt
+        sind.<br /></li>
+
+        <li><b>[<code>lastpage</code>]</b>: Die letzte Seitenzahl
+        einer Veröffentlichung (pages).<br /></li>
+
+        <li><b>[<code>shorttitle</code>]</b>: Die ersten 3 Worte
+        eines Titels (title).<br /></li>
+
+        <li><b>[<code>shortyear</code>]</b>: Die letzten 2 Ziffern
+        des Jahrgangs (year).<br /></li>
+
+        <li><b>[<code>veryshorttitle</code>]</b>: Die ersten beiden
+        Worte des Titels (title), wobei 'the', 'a' und 'an'
+        ausgelassen werden.<br /></li>
+    </ul>
+
+    <p>Hinter einem Feldnamen (oder einem der oben
+    aufgeführten Pseudo-Feldnamen) kann ein Modifikator
+    stehen. Modifikatoren werden in der Reihenfolge angewendet, in
+    der sie angegeben wurden.</p>
+
+    <ul>
+        <li><b>:abbr</b>: Kürzt den Text, der von einem
+        Feldnamen oder speziellen Feldmarken gebildet wird. Nur der
+        erste Buchstabe und weitere Buchstaben, die auf ein
+        Leerzeichen folgen, werden berücksichtigt. Zum
+        Beispiel würde <b>[journal:abbr]</b> die Zeitschrift
+        "Jorunal of Fish Biology" zu "JoFB" wandeln.<br /></li>
+
+        <li><b>:lower</b>: Wandelt den von der Feldmarke
+        eingefügten Text in Kleinbuchstaben. So wird
+        beispielsweise bei <b>[auth:lower]</b> der Nachname des
+        ersten Autors in Kleinbuchstaben ausgegeben.</li>
+    </ul>
+
+    <p>Wenn Sie keine Key-Muster für einen bestimmten
+    Eintragstyp angeben, wird das vorgegebene Muster (default
+    pattern) verwendet. Sie können das vorgegebene Muster
+    natürlich ebenfalls anpassen - seine Einstellung befindet
+    sich über der Liste der Eintragstypen im Tab
+    <b>Key-Muster</b> des Dialogs <b>Einstellungen</b>.</p>
+
+    <p>Das vorgegebene Key-Muster ist [auth][year], das Keys wie
+    z.B. <code>Yared1998</code> generiert. Falls der 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:</p>
+
+    <blockquote>
+        <code>Yared1998</code><br />
+         <code>Yared1998a</code><br />
+        <code>Yared1998b</code>
+    </blockquote>
+
+    <h2>Ersetzen eines regulären Ausdrucks</h2>
+
+    <p>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.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/MarkingHelp.html b/src/help/de/MarkingHelp.html
index b8fda43..f09b75f 100644
--- a/src/help/de/MarkingHelp.html
+++ b/src/help/de/MarkingHelp.html
@@ -1,24 +1,38 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Einträge markieren</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-Mit der Tastenkombination STRG-M können Sie Einträge <em>markieren</em> und diese
-Markierung mit STRG-SHIFT-M wieder aufheben. Diese Aktionen sind auch im Menü "Bearbeiten" zu finden.
+    <h1>Einträge markieren</h1>
 
-<p>Das Markieren ist nicht dasselbe wie das Auswählen eines Eintrags. Markierte Einträge verhalten
-sich in zweierlei Hinsicht anders als die restlichen Einträge:
-<ol>
-	<li>Markierte Einträge werden immer mit einem gelben Hintergrund in der Tabelle angezeigt.</li>
-	<li>Markierte Einträge werden an den Anfang der Eintragsliste verschoben, falls Ihre Tabelle
-	nicht nach Gruppen oder aufgrund einer Suche sortiert ist.</li>
-</ol>
+    <p>Mit der Tastenkombination
+    STRG-M können Sie Einträge <em>markieren</em> und
+    diese Markierung mit STRG-SHIFT-M wieder aufheben. Diese
+    Aktionen sind auch im Menü "Bearbeiten" zu finden.</p>
 
-<p>Wenn Sie Ihre Datei speichern, werden die Markierungen beibehalten.
+    <p>Das Markieren ist nicht dasselbe wie das Auswählen
+    eines Eintrags. Markierte Einträge verhalten sich in
+    zweierlei Hinsicht anders als die restlichen Einträge:</p>
 
-<p>Das Markieren von Einträgen ist z.B. nützlich, wenn Sie verschiedene Suchvorgänge durchführen wollen,
-ohne das erste Suchergebnis zu verlieren, oder wenn Sie sich merken wollen, welche Artikel oder Bücher Sie 
-noch einmal genauer ansehen müssen.
-</HTML>
+    <ol>
+        <li>Markierte Einträge werden immer mit einem gelben
+        Hintergrund in der Tabelle angezeigt.</li>
+
+        <li>Markierte Einträge werden an den Anfang der
+        Eintragsliste verschoben, falls Ihre Tabelle nicht nach
+        Gruppen oder aufgrund einer Suche sortiert ist.</li>
+    </ol>
+
+    <p>Wenn Sie Ihre Datei speichern, werden die Markierungen
+    beibehalten.</p>
+
+    <p>Das Markieren von Einträgen ist z.B. nützlich,
+    wenn Sie verschiedene Suchvorgänge durchführen
+    wollen, ohne das erste Suchergebnis zu verlieren, oder wenn Sie
+    sich merken wollen, welche Artikel oder Bücher Sie noch
+    einmal genauer ansehen müssen.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/MedlineHelp.html b/src/help/de/MedlineHelp.html
index 914fb2a..aeec5a7 100644
--- a/src/help/de/MedlineHelp.html
+++ b/src/help/de/MedlineHelp.html
@@ -1,36 +1,55 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Einträge von Medline abrufen</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-MEDLINE ist die wichtigste Datenbank der <em>U.S. National Library of Medicine</em>. Sie enthält Literaturangaben von Zeitschriftenartikeln der Lebenswissenschaften, vornehmlich der Biomedizin.
-<p>
-JabRef kann Literaturangaben von der Medline-Datenbank herunterladen. Um diese Funktion
-zu nutzen, wählen Sie <b>Extras -> Medline abrufen</b>, so dass der Medline-Dialog
-im linken Seitenfeld erscheint.
-<P>
-Es gibt zwei Möglichkeiten, die Auswahl der Einträge vorzunehmen, die heruntergeladen werden sollen:
+    <h1>Einträge von Medline abrufen</h1>
 
-<ol>
-<li> Geben Sie eine oder mehr Medline IDs (getrennt durch Komma/Semikolon) in das Textfeld ein.
-<li> Geben Sie Namen oder Wörter ein, nach denen gesucht werden soll. Sie können dazu die Operatoren
-<em>and</em> und <em>or</em> sowie Klammern benutzen, um Ihren Suchbegriff zu verfeinern.
-</ol>
+    <p>MEDLINE ist die
+    wichtigste Datenbank der <em>U.S. National Library of
+    Medicine</em>. Sie enthält Literaturangaben von
+    Zeitschriftenartikeln der Lebenswissenschaften, vornehmlich der
+    Biomedizin.</p>
 
-In beiden Fällen drücken Sie dann <b>Enter</b> oder die Schaltfläche <b>Abrufen</b>.
-Wenn Sie eine Textsuche durchführen, wird Ihnen die Anzahl der gefundenen Einträge angezeigt, und
-Sie können wählen, wie viele Sie herunterladen möchten.
+    <p>JabRef kann Literaturangaben von der Medline-Datenbank
+    herunterladen. Um diese Funktion zu nutzen, wählen Sie
+    <b>Extras -> Medline abrufen</b>, so dass der Medline-Dialog
+    im linken Seitenfeld erscheint.</p>
 
-<p>Die abgerufenen Einträge werden Ihrer zu diesem Zeitpunkt aktivierten Datei zugeordnet.
+    <p>Es gibt zwei Möglichkeiten, die Auswahl der
+    Einträge vorzunehmen, die heruntergeladen werden
+    sollen:</p>
 
-<H2>Benutzung eines Proxy-Servers</H2>
+    <ol>
+        <li>Geben Sie eine oder mehr Medline IDs (getrennt durch
+        Komma/Semikolon) in das Textfeld ein.</li>
 
-Wenn Sie einen HTTP-Proxy-Server benutzen müssen, übergeben Sie den Servernamen und die Portnummer
-an Java. Diese Umgebungseinstellungen sind dokumentiert unter
- <p> http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html
+        <li>Geben Sie Namen oder Wörter ein, nach denen
+        gesucht werden soll. Sie können dazu die Operatoren
+        <em>and</em> und <em>or</em> sowie Klammern benutzen, um
+        Ihren Suchbegriff zu verfeinern.</li>
+    </ol>In beiden Fällen drücken Sie dann <b>Enter</b>
+    oder die Schaltfläche <b>Abrufen</b>. Wenn Sie eine
+    Textsuche durchführen, wird Ihnen die Anzahl der
+    gefundenen Einträge angezeigt, und Sie können
+    wählen, wie viele Sie herunterladen möchten.
 
-<p><code>java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"</code>
+    <p>Die abgerufenen Einträge werden Ihrer zu diesem
+    Zeitpunkt aktivierten Datei zugeordnet.</p>
 
-</HTML>
\ No newline at end of file
+    <h2>Benutzung eines Proxy-Servers</h2>
+
+    <p>Wenn Sie einen
+    HTTP-Proxy-Server benutzen müssen, übergeben Sie den
+    Servernamen und die Portnummer an Java. Diese
+    Umgebungseinstellungen sind dokumentiert unter<br />
+
+    <a href="http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html">http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html</a></p>
+
+    <p><code>java -Dhttp.proxyHost="hostname"
+    -Dhttp.proxyPort="portnumber"</code></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/OpenOfficeHelp.html b/src/help/de/OpenOfficeHelp.html
index 93aefe7..5315ec9 100644
--- a/src/help/de/OpenOfficeHelp.html
+++ b/src/help/de/OpenOfficeHelp.html
@@ -1,47 +1,89 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>JabRef-Bibliographien in OpenOffice.org benutzen</H1>
-
-JabRef kann Ihre Datei sowohl in das OpenOffice.org 1.1 <b>.sxc</b>-Tabellenkalkulationsformat als auch in das OpenDocument <b>.ods</b>-Tabellenkalkulationsformat, das von OpenOffice.org 2.0 benutzt wird, exportieren.
-<p>
-In beiden fällen besteht die exportierte Tabelle aus einem Arbeitsblatt, das die Einträge in Reihen
-und die unterschiedlichen Felder in Spalten enthält. Die Reihenfolge und Bennung der Spalten ist kompatibel
-zu den Literaturverzeichnis-Funktionen von OpenOffice.org (OOo 1.1: <b>.sxc</b>, OOo 2.0: <b>.ods</b>).
-
-<h2>Die exportierte Datei als Bibliographiedatenbank in OpenOffice 2.0 (oder neuer) benutzen</h2>
-Gehen Sie folgendermaßen vor, um eine Tabelle, die von JabRef exportiert wurde, als Bibliographiedatenbank in OpenOffice.org zu benutzen:
-
-<ul>
-    <li>Exportieren Sie Ihre Datenbank in das <b>.ods</b> -Format</li>
-    <li>Starten Sie OpenOffice.org</li>
-    <li>Wählen Sie <b>Extras -> Optionen -> OpenOffice.org Base -> Datenbanken</b></li>
-    <li>Bearbeiten Sie die <i>Bibliography</i>-Datenbank und ändern ihren Namen z.B. in <i>Bibliographie-alt</i></li>
-    <li>Schließen Sie das Fenster <b>Optionen</b> und gehen Sie zu <b>Datei -> Neu -> Datenbank</b></li>
-    <li>Wählen Sie <b>Verbindung zu einer bestehenden Datenbank herstellen</b>, wählen <b>Tabellendokument</b> als
-    Datenbanktyp und wählen die <b>.ods</b>-Datei, die Sie exportiert haben</li>
-    <li>Klicken Sie auf <b>Fertig stellen</b> und wählen den Namen <i>Bibliography</i> im Speicherdialog</li>
-</ul>
-Anschließend wählen Sie <b>Extras -> Literaturdatenbank</b>. Ihre Datenbank sollte nun angezeigt werden.
-<p>
-
-<h2>Eine exportierte Datei als Datenbank in OpenOffice 1.1.x benutzen</h2>
-
- <ul>
-    <li>Exportieren Sie Ihre Datei in das <b>.sxc</b>-Format</li>
-    <li>Starten Sie OpenOffice.org</li>
-    <li>Wählen Sie <b>Extras -> Datenquellen</b></li>
-    <li>Wählen Sie die <i>Bibliography</i>-Datei und ändern ihren Namen z.B. in <i>Bibliographie-alt</i>.</li>
-    <li>Drücken Sie <b>Anwenden</b>.
-    <li>Klicken Sie <b>Neue Datenquelle</b>. Ein neuer Eintrag erscheint. Ändern Sie den Namen zu
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>JabRef-Bibliographien in OpenOffice.org benutzen</h1>
+
+    <p>JabRef kann Ihre Datei sowohl in das OpenOffice.org 1.1
+    <b>.sxc</b>-Tabellenkalkulationsformat als auch in das
+    OpenDocument <b>.ods</b>-Tabellenkalkulationsformat, das von
+    OpenOffice.org 2.0 benutzt wird, exportieren.</p>
+
+    <p>In beiden fällen besteht die exportierte Tabelle aus
+    einem Arbeitsblatt, das die Einträge in Reihen und die
+    unterschiedlichen Felder in Spalten enthält. Die
+    Reihenfolge und Bennung der Spalten ist kompatibel zu den
+    Literaturverzeichnis-Funktionen von OpenOffice.org (OOo 1.1:
+    <b>.sxc</b>, OOo 2.0: <b>.ods</b>).</p>
+
+    <h2>Die exportierte Datei als Bibliographiedatenbank in
+    OpenOffice 2.0 (oder neuer) benutzen</h2>
+
+    <p>Gehen Sie folgendermaßen vor, um eine Tabelle, die von JabRef
+    exportiert wurde, als Bibliographiedatenbank in OpenOffice.org
+    zu benutzen:</p>
+
+    <ul>
+        <li>Exportieren Sie Ihre Datenbank in das <b>.ods</b>
+        -Format</li>
+
+        <li>Starten Sie OpenOffice.org</li>
+
+        <li>Wählen Sie <b>Extras -> Optionen ->
+        OpenOffice.org Base -> Datenbanken</b></li>
+
+        <li>Bearbeiten Sie die <i>Bibliography</i>-Datenbank und
+        ändern ihren Namen z.B. in
+        <i>Bibliographie-alt</i></li>
+
+        <li>Schließen Sie das Fenster <b>Optionen</b> und
+        gehen Sie zu <b>Datei -> Neu -> Datenbank</b></li>
+
+        <li>Wählen Sie <b>Verbindung zu einer bestehenden
+        Datenbank herstellen</b>, wählen
+        <b>Tabellendokument</b> als Datenbanktyp und wählen
+        die <b>.ods</b>-Datei, die Sie exportiert haben</li>
+
+        <li>Klicken Sie auf <b>Fertig stellen</b> und wählen
+        den Namen <i>Bibliography</i> im Speicherdialog</li>
+    </ul>Anschließend wählen Sie <b>Extras ->
+    Literaturdatenbank</b>. Ihre Datenbank sollte nun angezeigt
+    werden.
+
+    <h2>Eine exportierte Datei als Datenbank in OpenOffice 1.1.x
+    benutzen</h2>
+
+    <ul>
+        <li>Exportieren Sie Ihre Datei in das
+        <b>.sxc</b>-Format</li>
+
+        <li>Starten Sie OpenOffice.org</li>
+
+        <li>Wählen Sie <b>Extras -> Datenquellen</b></li>
+
+        <li>Wählen Sie die <i>Bibliography</i>-Datei und
+        ändern ihren Namen z.B. in
+        <i>Bibliographie-alt</i>.</li>
+
+        <li>Drücken Sie <b>Anwenden</b>.</li>
+
+        <li>Klicken Sie <b>Neue Datenquelle</b>. Ein neuer Eintrag
+        erscheint. Ändern Sie den Namen zu
         <i>Bibliography</i>.</li>
-     <li>Ändern Sie den <b>Dateityp</b> zu <b>Tabelle</b>. Klicken Sie den <b>...</b>-Button
-     in der Zeile <b>Datenquellen URL</b>. Wählen Sie die <b>.sxc</b>-Datei, die Sie exportiert haben.</li>
-     <li>Klicken Sie auf <b>OK</b>, um das Fenster <b>Datenquellen</b> zu schließen.</li>
-</ul>
-Anschließend wählen Sie <b>Extras -> Literaturdatenbank</b>.
-Ihre Datenbank sollte nun angezeigt werden.
-
-</HTML>
\ No newline at end of file
+
+        <li>Ändern Sie den <b>Dateityp</b> zu <b>Tabelle</b>.
+        Klicken Sie den <b>...</b>-Button in der Zeile
+        <b>Datenquellen URL</b>. Wählen Sie die
+        <b>.sxc</b>-Datei, die Sie exportiert haben.</li>
+
+        <li>Klicken Sie auf <b>OK</b>, um das Fenster
+        <b>Datenquellen</b> zu schließen.</li>
+    </ul>Anschließend wählen Sie <b>Extras ->
+    Literaturdatenbank</b>. Ihre Datenbank sollte nun angezeigt
+    werden.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/OwnerHelp.html b/src/help/de/OwnerHelp.html
index 7e06a07..86c088a 100644
--- a/src/help/de/OwnerHelp.html
+++ b/src/help/de/OwnerHelp.html
@@ -1,16 +1,24 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Das 'Besitzer' (owner) Feld</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-JabRef kann allen neuen Einträgen, die zu einer Datei hinzugefügt oder in sie importiert werden,
-Ihren Benutzernamen beigeben. Dieses Feature können Sie im Menü <b>Einstellungen -> Allgemein</b>
-ein- und ausschalten. Dort können Sie auch den Namen angeben, der in den Einträgen erscheinen soll.
-In der Standardeinstellung wird Ihr (System-)Benutzername verwendet.
+    <h1>Das 'Besitzer' (owner) Feld</h1>
 
-<p>Der Name wird in dem Feld 'owner' eingetragen, das in der Standardeinstellung im Tab <b>General fields</b>
-des Eintragseditors angezeigt wird.
+    <p>JabRef kann allen neuen
+    Einträgen, die zu einer Datei hinzugefügt oder in sie
+    importiert werden, Ihren Benutzernamen beigeben. Dieses Feature
+    können Sie im Menü <b>Einstellungen ->
+    Allgemein</b> ein- und ausschalten. Dort können Sie auch
+    den Namen angeben, der in den Einträgen erscheinen soll.
+    In der Standardeinstellung wird Ihr (System-)Benutzername
+    verwendet.</p>
 
-</HTML>
+    <p>Der Name wird in dem Feld 'owner' eingetragen, das in der
+    Standardeinstellung im Tab <b>General fields</b> des
+    Eintragseditors angezeigt wird.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/PreviewHelp.html b/src/help/de/PreviewHelp.html
index 7f3535d..99013e6 100644
--- a/src/help/de/PreviewHelp.html
+++ b/src/help/de/PreviewHelp.html
@@ -1,12 +1,22 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Eintragsvorschau einstellen</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-Die Eintragsvorschau wird mit denselben Mechanismen erstellt, die auch bei den <a href="CustomExports.html">Exportfiltern</a> angewendet werden. Bei der Vorschau durchläuft ein Eintrag eins von zwei möglichen Layouts (die sie mit F9 wechseln können) und erstellt HTML-Code, der im Vorschaudialog angezeigt wird.
+    <h1>Eintragsvorschau einstellen</h1>
 
-Aussehen und Inhalt der Vorschau können mit derselben Syntax verändert werden, die in der Hilfe zur Anpassung der <a href="CustomExports.html">Exportfilter</a> beschrieben wird.
-
-</HTML>
\ No newline at end of file
+    <p>Die Eintragsvorschau wird
+    mit denselben Mechanismen erstellt, die auch bei den
+    <a href="CustomExports.html">Exportfiltern</a> angewendet
+    werden. Bei der Vorschau durchläuft ein Eintrag eins von
+    zwei möglichen Layouts (die sie mit F9 wechseln
+    können) und erstellt HTML-Code, der im Vorschaudialog
+    angezeigt wird. Aussehen und Inhalt der Vorschau können
+    mit derselben Syntax verändert werden, die in der Hilfe
+    zur Anpassung der <a href="CustomExports.html">Exportfilter</a>
+    beschrieben wird.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/RemoteHelp.html b/src/help/de/RemoteHelp.html
index f31127e..470fb60 100644
--- a/src/help/de/RemoteHelp.html
+++ b/src/help/de/RemoteHelp.html
@@ -1,22 +1,46 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Externer Zugriff</H1>
-
-Diese Funktion kann unter <b>Einstellungen -> Erweitert</b> eingestellt werden.
-
-<p><i>Beachten Sie, dass das Aktivieren dieser Funktion mit Windows XP SP2 (und möglicherweise auch mit anderen Konfigurationen) zu einer Meldung führen kann, die besagt, dass bestimmte Funktionen des Programms von der Windows-Firewall geblockt wurden. Sie können die Firewall anweisen, weiterhin zu blocken, denn die Firewall beeinträchtigt den Externen Zugriff von JabRef nicht.</i>
-
-<p>Falls das Abhören von externen Zugriffen aktiviert ist, versucht JabRef beim Programmstart, den entsprechenden Port abzuhören. Das bedeutet, dass andere Anwendungen Informationen durch diesen Port an JabRef senden können. JabRef akzeptiert dabei nur lokale Verbindungen, um das Risiko eines Eingriffs von außerhalb auszuschließen.
-
-<p>
-Mit dem externen Zugriff kann eine zweite Instanz von JabRef erkennen, dass eine erste Instanz bereits läuft. In diesem Fall leitet die zweite Instanz ihre Kommandozeilen-Optionen an die erste Instanz weiter und beendet sich selbst direkt im Anschluss - sofern die zweite Instanz nicht ausdrücklich instruiert wurde, im Stand-Alone-Modus (als selbständige Instanz) zu starten.
-
-<p>Die erste JabRef-Instanz liest die Kommandozeilenoptionen und führt die erforderlichen Aktionen aus, z.B. das Lesen oder Importieren einer Datei oder das Anhängen einer Datei an die aktive Datenbank. Falls eine Datei mit der Option <code>--importToOpen</code> importiert wird, werden die Einträge an die aktive Datei angehängt. Falls keine Datei geöffnet ist, wird eine neue Datei angelegt.
-
-
-
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Externer Zugriff</h1>
+
+    <p>Diese Funktion kann unter
+    <b>Einstellungen -> Erweitert</b> eingestellt werden.</p>
+
+    <p><i>Beachten Sie, dass das Aktivieren dieser Funktion mit
+    Windows XP SP2 (und möglicherweise auch mit anderen
+    Konfigurationen) zu einer Meldung führen kann, die besagt,
+    dass bestimmte Funktionen des Programms von der
+    Windows-Firewall geblockt wurden. Sie können die Firewall
+    anweisen, weiterhin zu blocken, denn die Firewall
+    beeinträchtigt den Externen Zugriff von JabRef
+    nicht.</i></p>
+
+    <p>Falls das Abhören von externen Zugriffen aktiviert ist,
+    versucht JabRef beim Programmstart, den entsprechenden Port
+    abzuhören. Das bedeutet, dass andere Anwendungen
+    Informationen durch diesen Port an JabRef senden können.
+    JabRef akzeptiert dabei nur lokale Verbindungen, um das Risiko
+    eines Eingriffs von außerhalb auszuschließen.</p>
+
+    <p>Mit dem externen Zugriff kann eine zweite Instanz von JabRef
+    erkennen, dass eine erste Instanz bereits läuft. In diesem
+    Fall leitet die zweite Instanz ihre Kommandozeilen-Optionen an
+    die erste Instanz weiter und beendet sich selbst direkt im
+    Anschluss - sofern die zweite Instanz nicht ausdrücklich
+    instruiert wurde, im Stand-Alone-Modus (als selbständige
+    Instanz) zu starten.</p>
+
+    <p>Die erste JabRef-Instanz liest die Kommandozeilenoptionen
+    und führt die erforderlichen Aktionen aus, z.B. das Lesen
+    oder Importieren einer Datei oder das Anhängen einer Datei
+    an die aktive Datenbank. Falls eine Datei mit der Option
+    <code>--importToOpen</code> importiert wird, werden die
+    Einträge an die aktive Datei angehängt. Falls keine
+    Datei geöffnet ist, wird eine neue Datei angelegt.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/SearchHelp.html b/src/help/de/SearchHelp.html
index 678def5..2f925f8 100644
--- a/src/help/de/SearchHelp.html
+++ b/src/help/de/SearchHelp.html
@@ -1,52 +1,114 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Suchfunktionen</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<!--Es gibt drei verschiedene Suchmethoden in JabRef.-->
+    <h1>Suchfunktionen</h1>
 
-<p>
-<em>STRG-F</em> öffnet oder aktiviert den Suchdialog. Drückt man mehrmals auf <em>STRG-F</em>, so werden die verschiedenen Suchmodi ausgewählt. Bei der direkten Suche springt man mit <em>STRG-F</em> zum nächsten Treffer.
-<p>
-<em>STRG-SHIFT-F</em> öffnet oder aktiviert den Suchdialog und wählt die direkte Suche aus. Bei der direkten Suche springt man mit <em>STRG-SHIFT-F</em> ebenfalls zum nächsten Treffer.
+    <p><em>STRG-F</em> öffnet oder aktiviert den Suchdialog.
+    Drückt man mehrmals auf <em>STRG-F</em>, so werden die
+    verschiedenen Suchmodi ausgewählt. Bei der direkten Suche
+    springt man mit <em>STRG-F</em> zum nächsten Treffer.</p>
 
-<H2>Direkte Suche</H2>
+    <p><em>STRG-SHIFT-F</em> öffnet oder aktiviert den
+    Suchdialog und wählt die direkte Suche aus. Bei der
+    direkten Suche springt man mit <em>STRG-SHIFT-F</em> ebenfalls
+    zum nächsten Treffer.</p>
 
-Bei der direkten Suche sucht das Programm sofort, sobald Sie einen Buchstaben eingeben. Die Statuszeile informiert Sie über den Sucherfolg. Mit den Tastaturkürzeln wird das Programm dazu veranlasst, nach dem nächsten Vorkommen des aktuellen Suchbegriffs zu suchen. Falls es keine weiteren Vorkommen gibt, informiert die Statuszeile sie darüber. Bei erneuter Wiederholung startet die Suche vom Anfang der Datei. Die Suchreihenfolge richtet sich nach der aktuellen Sortierun [...]
+    <h2>Direkte Suche</h2>
 
-<H2>Normale Suche</H2>
+    <p>Bei der direkten Suche sucht das Programm
+    sofort, sobald Sie einen Buchstaben eingeben. Die Statuszeile
+    informiert Sie über den Sucherfolg. Mit den
+    Tastaturkürzeln wird das Programm dazu veranlasst, nach
+    dem nächsten Vorkommen des aktuellen Suchbegriffs zu
+    suchen. Falls es keine weiteren Vorkommen gibt, informiert die
+    Statuszeile sie darüber. Bei erneuter Wiederholung startet
+    die Suche vom Anfang der Datei. Die Suchreihenfolge richtet
+    sich nach der aktuellen Sortierung Ihrer Datei. Um die direkte
+    Suche zu verlassen, drücken Sie ESC oder klicken Sie auf
+    "Zurücksetzen".</p>
 
-Hierbei sucht das Programm nach allen Vorkommen der Wörter ihres Suchausdrucks, sobald Sie ENTER drücken. Nur Einträge, die alle Wörter enthalten, gelten als Treffer. Um nach festen Ausdrücken zu suchen, müssen Sie die Wörter in doppelte Anführungszeichen einfassen. Zum Beispiel findet die Suchanfrage <b>progress "marine acquaculture"</b> Einträge, die sowohl das wort "progress" als auch den Ausdruck "marine acquaculture" aufweisen. Alle Eintr [...]
+    <h2>Normale Suche</h2>
 
-<a name="advanced"><H2>Feldbezeichner und logische Operatoren</H2></a>
+    <p>Hierbei sucht das Programm nach allen
+    Vorkommen der Wörter ihres Suchausdrucks, sobald Sie ENTER
+    drücken. Nur Einträge, die alle Wörter
+    enthalten, gelten als Treffer. Um nach festen Ausdrücken
+    zu suchen, müssen Sie die Wörter in doppelte
+    Anführungszeichen einfassen. Zum Beispiel findet die
+    Suchanfrage <b>progress "marine acquaculture"</b>
+    Einträge, die sowohl das wort "progress" als auch den
+    Ausdruck "marine acquaculture" aufweisen. Alle Einträge,
+    die keine Treffer sind, werden entweder ausgeblendet, so dass
+    nur die Treffer sichtbar sind (Option <b>Filter</b>), oder sie
+    werden grau dargestellt, während die Treffer oben
+    angezeigt werden (Option <b>Oben einsortieren</b>). Um die
+    Trefferanzeige zu beenden, drücken Sie ESC oder klicken
+    auf die Schaltfläche <b>Zurücksetzen</b> im
+    Suchen-Dialog.</p>
 
-Um nur einige bestimmte Felder zu durchsuchen und/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
-<p>
-author = miller
-<p>
-in das Suchfeld ein (Achtung! Das funktioniert nicht bei der direkten Suche!). Falls der Suchbegriff Leerzeichen enthält, schließen Sie ihn in Anführungszeichen ein. Benutzen Sie <i>nie</i> Leerzeichen in dem Feldbezeichner. Um beispielsweise nach Einträgen über Karl den Großen zu suchen, geben Sie folgendes ein:
-<p>
-title|keywords = "Karl der Große"
-<p>
-Sie können "and", "or", "not" und Klammern verwenden:
-<p>
-(author = miller or title|keywords = "Karl der Große") and not author = brown
-<p>
-... sucht nach Einträgen, in denen entweder der Autor "Miller" heißt oder im title- oder keywords-Feld der Begriff "Karl der Große" steht; gleichzeitig werden die Einträge mit dem Autor "Brown" nicht angezeigt.
-<p>
-Das "="-Zeichen ist eigentlich eine Abkürzung für "enthält" ("contains"). Wenn man nach genauen Treffern suchen möchte, muss man "==" oder "matches" ("übereinstimmen") eingeben. "!=" sucht nach Einträgen, bei denen der Suchbegriff <i>nicht</i> enthalten ist. Die Auswahl von Feldern, die durchsucht werden sollen (benötigte, optionale, allgemeine Felder), wird ignoriert, wenn man im Suchausdruck Feldbezeichner verwendet. Um nach Einträgen eines besti [...]
-<p>
-entrytype = thesis
-<p>
-… findet z.B. Einträge, deren Typ (wie in der Spalte "Entrytype" dargestellt) das Wort "thesis" enthält (z.B. "phdthesis" und "mastersthesis"). Ebenso erlaubt das Pseudofeld "bibtexkey" die Suche nach BibTeX-Keys, z.B.:
-<p>
-bibtexkey = miller2005
+    <h2><a name="advanced"
+       id="advanced">Feldbezeichner und logische
+       Operatoren</a></h2>
 
-<H2>Suchoptionen</H2>
+       <p>Um nur einige bestimmte Felder zu
+       durchsuchen und/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</p>
 
-Der <em>Einstellungen</em>-Knopf öffnet ein Menü mit mehreren Optionen: das Beachten von Groß- und Kleinschreibung, das Nutzen regulärer Ausdrücke sowie das Auswählen der Suchergebnisse in der Tabelle.
+    <p>author = miller</p>
 
-</BODY>
-</HTML>
\ No newline at end of file
+    <p>in das Suchfeld ein (Achtung! Das funktioniert nicht bei der
+    direkten Suche!). Falls der Suchbegriff Leerzeichen
+    enthält, schließen Sie ihn in Anführungszeichen
+    ein. Benutzen Sie <i>nie</i> Leerzeichen in dem Feldbezeichner.
+    Um beispielsweise nach Einträgen über Karl den
+    Großen zu suchen, geben Sie folgendes ein:</p>
+
+    <p>title|keywords = "Karl der Große"</p>
+
+    <p>Sie können "and", "or", "not" und Klammern
+    verwenden:</p>
+
+    <p>(author = miller or title|keywords = "Karl der Große")
+    and not author = brown</p>
+
+    <p>... sucht nach Einträgen, in denen entweder der Autor
+    "Miller" heißt oder im title- oder keywords-Feld der
+    Begriff "Karl der Große" steht; gleichzeitig werden die
+    Einträge mit dem Autor "Brown" nicht angezeigt.</p>
+
+    <p>Das "="-Zeichen ist eigentlich eine Abkürzung für
+    "enthält" ("contains"). Wenn man nach genauen Treffern
+    suchen möchte, muss man "==" oder "matches"
+    ("übereinstimmen") eingeben. "!=" sucht nach
+    Einträgen, bei denen der Suchbegriff <i>nicht</i>
+    enthalten ist. Die Auswahl von Feldern, die durchsucht werden
+    sollen (benötigte, optionale, allgemeine Felder), wird
+    ignoriert, wenn man im Suchausdruck Feldbezeichner verwendet.
+    Um nach Einträgen eines bestimmten Typs zu suchen, gibt es
+    ein Pseudofeld namens "entrytype":</p>
+
+    <p>entrytype = thesis</p>
+
+    <p>… findet z.B. Einträge, deren Typ (wie in der
+    Spalte "Entrytype" dargestellt) das Wort "thesis" enthält
+    (z.B. "phdthesis" und "mastersthesis"). Ebenso erlaubt das
+    Pseudofeld "bibtexkey" die Suche nach BibTeX-Keys, z.B.:</p>
+
+    <p>bibtexkey = miller2005</p>
+
+    <h2>Suchoptionen</h2>
+
+    <p>Der <em>Einstellungen</em>-Knopf
+    öffnet ein Menü mit mehreren Optionen: das Beachten
+    von Groß- und Kleinschreibung, das Nutzen regulärer
+    Ausdrücke sowie das Auswählen der Suchergebnisse in
+    der Tabelle.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/ShortAuxImport.html b/src/help/de/ShortAuxImport.html
index ac0690c..3298197 100644
--- a/src/help/de/ShortAuxImport.html
+++ b/src/help/de/ShortAuxImport.html
@@ -1,8 +1,11 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
 
 <body>
-<basefont size="-1" color="#2F4958" face="arial">
-Dieses Modul erstellt eine neue Datenbank, welche nur die im TeX Projekt 
-vorkommenden Verweise/Einträge enthält.
-</body></html>
\ No newline at end of file
+    <basefont size="-1"
+          color="#2F4958"
+          face="arial" /> Dieses Modul erstellt eine neue
+          Datenbank, welche nur die im TeX Projekt vorkommenden
+          Verweise/Einträge enthält.
+</body>
+</html>
diff --git a/src/help/de/ShortIntegrityCheck.html b/src/help/de/ShortIntegrityCheck.html
index 18f9d5a..9a77178 100644
--- a/src/help/de/ShortIntegrityCheck.html
+++ b/src/help/de/ShortIntegrityCheck.html
@@ -1,8 +1,13 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
 <body>
-<basefont size="-1" color="#2F4958" face="arial">
-Die Integritätsprüfung überprüft alle Einträge auf
-deren Gültigkeit und versucht Fehler aufzudecken. Mit dem
-"Überprüfen" Button kann der Vorgang gestartet werden.
-</body></html>
\ No newline at end of file
+    <basefont size="-1"
+          color="#2F4958"
+          face="arial" /> Die Integritätsprüfung
+          überprüft alle Einträge auf deren
+          Gültigkeit und versucht Fehler aufzudecken. Mit dem
+          "Überprüfen" Button kann der Vorgang gestartet
+          werden.
+</body>
+</html>
diff --git a/src/help/de/ShortPlainImport.html b/src/help/de/ShortPlainImport.html
index fb9e476..0219660 100644
--- a/src/help/de/ShortPlainImport.html
+++ b/src/help/de/ShortPlainImport.html
@@ -1,8 +1,13 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
 <body>
-<basefont size="-1" color="#2F4958" face="arial">
-Dieser Dialog ermöglicht das schnelle Einfügen von Einträgen
-aus normalen Text. Die gewünschten Textstellen werden markiert und
-z.B. durch Doppelklick einem selektierten BibTeX Eintrag zugeordnet.
-</body></html>
\ No newline at end of file
+    <basefont size="-1"
+          color="#2F4958"
+          face="arial" /> Dieser Dialog ermöglicht das
+          schnelle Einfügen von Einträgen aus normalen
+          Text. Die gewünschten Textstellen werden markiert
+          und z.B. durch Doppelklick einem selektierten BibTeX
+          Eintrag zugeordnet.
+</body>
+</html>
diff --git a/src/help/de/StringEditorHelp.html b/src/help/de/StringEditorHelp.html
index 38db98a..a5fdf83 100644
--- a/src/help/de/StringEditorHelp.html
+++ b/src/help/de/StringEditorHelp.html
@@ -1,42 +1,60 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Der String-Editor</H1>
-<em>Zugriff über das Menü <b>BibTeX -> Strings bearbeiten</b>
-oder durch Klick auf die Schaltfläche <b>Strings bearbeiten</b></em>.
-
-<P>
-<em>Strings</em> sind das <em>BibTeX</em>-Äquivalent zu Konstanten in einer
-Programmiersprache. Jeder String wird durch einen eindeutigen <em>Namen</em> und einen
-<em>Inhalt</em> festgelegt. Der Name kann an anderer Stelle in der Datei benutzt werden,
-um den Inhalt wiederzugeben.
-
-<P>
-Ein Beispiel: Wenn viele Einträge aus einer Zeitschrift stammen, deren Abkürzung
-schwer zu behalten ist, wie etwa 'J. Theor. Biol.' (Journal of
-Theroretical Biology), könnte ein String mit dem Namen 'JTB' angelegt werden,
-um den Namen der Zeitschrift zu repräsentieren. Statt nun in jedem Eintrag den
-exakten Namen der Zeitschrift einzutragen, genügt die Zeichenfolge <code>#JTB#</code> im Feld
-<em>journal</em>, und es ist sichergestellt, dass der Name jedesmal in identischer Schreibweise
-ausgegeben wird.
-
-<P>
-Der Verweis auf einen String kann an jeder Stelle eines Feldes erscheinen, wobei
-der Name des Strings immer von einem Paar '#'-Zeichen eingeschlossen werden muss. Diese Syntax
-gilt nur für JabRef und weicht ein wenig von der <em>BibTeX</em>-Syntax ab, die erzeugt wird,
-wenn Sie Ihre Datei speichern. Strings können für alle Standard-BibTeX-Felder verwendet werden.
-Unter <b>Optionen -> Einstellungen -> Allgemein</b> können Sie im Bereich <b>Datei</b> festlegen, ob Strings auch in Nicht-Standard-Feldern benutzt werden dürfen. In diesem Fall können Sie Felder bestimmen, die von der Auflösung der Strings ausgenommen werden; hierbei wird empfohlen, das Feld 'url' und andere Felder anzugeben, die das Zeichen '#' enthalten können und die von BibTeX/LaTeX abgearbeitet werden können.
-
-<P>
-In derselben Weise kann man auch im Inhalt eines Strings auf einen anderen String verweisen,
-vorausgesetzt, dass der String, auf den verwiesen wird, bereits <em>vorher</em> definiert ist.
-
-<p>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 BibTeX verlangt wird.
-
-</BODY>
-</HTML>
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Der String-Editor</h1>
+
+    <p><em>Zugriff über das Menü
+    <b>BibTeX -> Strings bearbeiten</b> oder durch Klick auf die
+    Schaltfläche <b>Strings bearbeiten</b></em>.</p>
+
+    <p><em>Strings</em> sind das <em>BibTeX</em>-Äquivalent zu
+    Konstanten in einer Programmiersprache. Jeder String wird durch
+    einen eindeutigen <em>Namen</em> und einen <em>Inhalt</em>
+    festgelegt. Der Name kann an anderer Stelle in der Datei
+    benutzt werden, um den Inhalt wiederzugeben.</p>
+
+    <p>Ein Beispiel: Wenn viele Einträge aus einer Zeitschrift
+    stammen, deren Abkürzung schwer zu behalten ist, wie etwa
+    'J. Theor. Biol.' (Journal of Theroretical Biology),
+    könnte ein String mit dem Namen 'JTB' angelegt werden, um
+    den Namen der Zeitschrift zu repräsentieren. Statt nun in
+    jedem Eintrag den exakten Namen der Zeitschrift einzutragen,
+    genügt die Zeichenfolge <code>#JTB#</code> im Feld
+    <em>journal</em>, und es ist sichergestellt, dass der Name
+    jedesmal in identischer Schreibweise ausgegeben wird.</p>
+
+    <p>Der Verweis auf einen String kann an jeder Stelle eines
+    Feldes erscheinen, wobei der Name des Strings immer von einem
+    Paar '#'-Zeichen eingeschlossen werden muss. Diese Syntax gilt
+    nur für JabRef und weicht ein wenig von der
+    <em>BibTeX</em>-Syntax ab, die erzeugt wird, wenn Sie Ihre
+    Datei speichern. Strings können für alle
+    Standard-BibTeX-Felder verwendet werden. Unter <b>Optionen
+    -> Einstellungen -> Allgemein</b> können Sie im
+    Bereich <b>Datei</b> festlegen, ob Strings auch in
+    Nicht-Standard-Feldern benutzt werden dürfen. In diesem
+    Fall können Sie Felder bestimmen, die von der
+    Auflösung der Strings ausgenommen werden; hierbei wird
+    empfohlen, das Feld 'url' und andere Felder anzugeben, die das
+    Zeichen '#' enthalten können und die von BibTeX/LaTeX
+    abgearbeitet werden können.</p>
+
+    <p>In derselben Weise kann man auch im Inhalt eines Strings auf
+    einen anderen String verweisen, vorausgesetzt, dass der String,
+    auf den verwiesen wird, bereits <em>vorher</em> definiert
+    ist.</p>
+
+    <p>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
+    BibTeX verlangt wird.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/TimeStampHelp.html b/src/help/de/TimeStampHelp.html
index f626295..77dfa0a 100644
--- a/src/help/de/TimeStampHelp.html
+++ b/src/help/de/TimeStampHelp.html
@@ -1,35 +1,53 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
 
-<H1>Zeitstempel</H1>
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-Die Benutzung des Zeitstempels kann unter <b>Einstellungen -> Allgemeines</b> an- und abgestellt sowie verändert werden.
+    <h1>Zeitstempel</h1>
 
-<p>JabRef kann automatisch ein Feld setzen, das das Datum enthält, an dem der Eintrag zur Datei hinzugefügt wurde.
+    <p>Die Benutzung des Zeitstempels kann unter
+    <b>Einstellungen -> Allgemeines</b> an- und abgestellt sowie
+    verändert werden.</p>
 
-<H2>Formatierung</H2>
+    <p>JabRef kann automatisch ein Feld setzen, das das Datum
+    enthält, an dem der Eintrag zur Datei hinzugefügt
+    wurde.</p>
 
-Die Formatierung des Zeitstempels wird von einem Ausdruck mit Bezeichnern bestimmt, die die Position verschiedener Bestandteile des Datums angeben.
-<p>
-Hier einige der verfügbaren Bezeichner (die Beispiele in Klammern beziehen sich auf Mittwoch, den 14. September 2005, 17:45 Uhr):
-<ul>
-    <li><b>yy</b>: Jahr (05)</li>
-    <li><b>yyyy</b>: Jahr (2005)</li>
-    <li><b>MM</b>: Monat (09)</li>
-    <li><b>dd</b>: Tag (14)</li>
-    <li><b>HH</b>: Stunde (17)</li>
-    <li><b>mm</b>: Minute (45)</li>
-</ul>
+    <h2>Formatierung</h2>
 
-Diese Bezeichner können mit Interpunktion und Leerzeichen kombiniert werden. Hier einige Beispiele:
+    <p>Die Formatierung des Zeitstempels wird von
+    einem Ausdruck mit Bezeichnern bestimmt, die die Position
+    verschiedener Bestandteile des Datums angeben.</p>
 
-<ul>
-<li><b>yyyy.MM.dd</b> ergibt <b>2005.09.14</b></li>
-<li><b>yy.MM.dd</b> ergibt <b>05.09.14</b></li>
-<li><b>yyyy.MM.dd HH:mm</b> ergibt <b>2005.09.14 17:45</b></li>
-</ul>
+    <p>Hier einige der verfügbaren Bezeichner (die Beispiele
+    in Klammern beziehen sich auf Mittwoch, den 14. September 2005,
+    17:45 Uhr):</p>
 
-</BODY>
-</HTML>
\ No newline at end of file
+    <ul>
+        <li><b>yy</b>: Jahr (05)</li>
+
+        <li><b>yyyy</b>: Jahr (2005)</li>
+
+        <li><b>MM</b>: Monat (09)</li>
+
+        <li><b>dd</b>: Tag (14)</li>
+
+        <li><b>HH</b>: Stunde (17)</li>
+
+        <li><b>mm</b>: Minute (45)</li>
+    </ul>Diese Bezeichner können mit Interpunktion und
+    Leerzeichen kombiniert werden. Hier einige Beispiele:
+
+    <ul>
+        <li><b>yyyy.MM.dd</b> ergibt <b>2005.09.14</b></li>
+
+        <li><b>yy.MM.dd</b> ergibt <b>05.09.14</b></li>
+
+        <li><b>yyyy.MM.dd HH:mm</b> ergibt <b>2005.09.14
+        17:45</b></li>
+    </ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/de/XMPHelp.html b/src/help/de/XMPHelp.html
index c75510c..fef434b 100644
--- a/src/help/de/XMPHelp.html
+++ b/src/help/de/XMPHelp.html
@@ -1,50 +1,107 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Unterstützung von XMP-Metadaten in JabRef</H1>
-<p>
-XMP ist ein Standard, der von Adobe Systems entwickelt wurde, um Metadaten (Daten, die Informationen über andere Daten enthalten) in Dateien zu speichern. Ein bekanntes Beispiel für Metadaten sind ID3-Tags, die zur Beschreibung von Künstlern, Albumtiteln und Liednamen einer MP3-Datei verwendet werden. Mit Hilfe von Metadaten können MP3-Dateien unabhängig von ihrem Dateinamen identifiziert und z.B. von MP3-Playern ausgelesen und angezeigt werden.
-</p>
-<p>
-Mit der XMP-Unterstützung versucht das JabRef-Team, die Vorteile von Metadaten in die Welt der Literaturmanager einzuführen.
-Sie können <b>XMP schreiben</b> im <b>Allgemein</b>-Tab des Eintragseditors wählen und damit alle BibTeX-Informationen in die verlinkte PDF-Datei schreiben. Wenn Sie diese PDF-Datei mit anderen austauschen, können diese die Datei in das JabRef-Fenster ziehen und haben damit alle Informationen zur Verfügung, die Sie eingegeben haben.
-</p>
-
-<H2>Benutzung</H2>
-
-Um die XMP-Funktionen in JabRef zu nutzen, gehen Sie folgendermaßen vor:
-
-<ul>
-  <li>Zum <i>Importieren einer einzelnen PDF-Datei mit Metadaten</i> wählen Sie <b>Datei -> Importieren in [neue|aktuelle] Datenbank</b> und im anschließenden Dialog als Dateiformat <b>PDF mit XMP-Anmerkungen</b> aus. Sie können die PDF-Datei stattdessen auch mit der Maus auf das Hauptfenster von JabRef ziehen.
-</li>
-  <li>Um <i>bibliographische Informationen in eine verlinkte PDF-Datei zu schreiben</i>, klicken Sie auf <b>XMP schreiben</b> im <b>Allgemein</b>-Tab des Eintragseditors.</li>
-  <li>Wenn Sie <i>alle PDFs einer Datei mit Metadaten versehen</i> wollen, wählen Sie <b>Extras -> XMP-Metadaten in PDFs schreiben</b>.</li>
-  <li>Um zu überprüfen, ob das Schreiben der Metadaten funktioniert hat, öffnen Sie die Datei in Adobe Acrobat und wählen <b>Datei -> Dokumenteigenschaften</b> und dann unter dem Reiter <b>Beschreibung</b> die Schaltfläche <b>Zusätzliche Metadaten</b>. Wenn Sie links "Erweitert" auswählen, sollten Sie im rechten Teil des Dialogs einen Eintrag "http://jabref.sourceforge.net/bibteXMP" sehen, der die entsprechenden Metadaten enthält. Dies geht nur mit [...]
-  <li>Wer kein Adobe Acrobat zur Verfügung hat, kann stattdessen das Programm <i>pdfinfo</i> verwenden, um die XMP-Metadaten zu überprüfen. <i>pdfinfo</i> ist Teil von Xpdf (<code>www.foolabs.com/xpdf</code>) und Poppler (<code>http://poppler.freedesktop.org</code>).</li>
-</ul>
-
-<h2>BibteXmp Dateiformat</h2>
-
-<p>
-XMP nutzt zum Speichern der Daten eine Teilmenge des <i>Resource Description Framework</i> (RDF). Für JabRef wird ein neues Metadatenformat benutzt, das BibTeX sehr gut abbildet. Alle Felder und Werte werden in Knoten eines XML-Dokuments verwandelt. Nur Autoren und Herausgeber werden als rdf:Seq-Strukturen gespeichert, so dass die trennenden 'and's weggelassen werden können. Alle Strings und crossrefs werden in den Metadaten aufgelöst.
-</p>
-<p>
-Das folgende einfache Minimal-Schema wird benutzt:
-</p>
-<p>
-<ul>
-  <li>Der BibTeX-Key wird als <code>bibtexkey</code> gespeichert.</li>
-  <li>Der Eintragstyp wird als <code>entrytype</code> gespeichert.</li>
-  <li><code>author</code> und <code>editor</code> sind kodiert als <code>rdf:Seq</code>s, wobei die einzelnen Autoren und Herausgeber als <code>rdf:li</code>s dargestellt werden.</li>
-  <li>Alle anderen Felder werden unter ihrem Feld-Namen gespeichert.</li>
-</ul>
-</p>
-<p>
-Es folgt ein Beispiel:
-</p>
-<pre>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Unterstützung von XMP-Metadaten in JabRef</h1>
+
+    <p>XMP ist ein Standard, der von Adobe Systems entwickelt
+    wurde, um Metadaten (Daten, die Informationen über andere
+    Daten enthalten) in Dateien zu speichern. Ein bekanntes
+    Beispiel für Metadaten sind ID3-Tags, die zur Beschreibung
+    von Künstlern, Albumtiteln und Liednamen einer MP3-Datei
+    verwendet werden. Mit Hilfe von Metadaten können
+    MP3-Dateien unabhängig von ihrem Dateinamen identifiziert
+    und z.B. von MP3-Playern ausgelesen und angezeigt werden.</p>
+
+    <p>Mit der XMP-Unterstützung versucht das JabRef-Team, die
+    Vorteile von Metadaten in die Welt der Literaturmanager
+    einzuführen. Sie können <b>XMP schreiben</b> im
+    <b>Allgemein</b>-Tab des Eintragseditors wählen und damit
+    alle BibTeX-Informationen in die verlinkte PDF-Datei schreiben.
+    Wenn Sie diese PDF-Datei mit anderen austauschen, können
+    diese die Datei in das JabRef-Fenster ziehen und haben damit
+    alle Informationen zur Verfügung, die Sie eingegeben
+    haben.</p>
+
+    <h2>Benutzung</h2>
+
+    <p>Um die XMP-Funktionen in JabRef zu nutzen,
+    gehen Sie folgendermaßen vor:</p>
+
+    <ul>
+        <li>Zum <i>Importieren einer einzelnen PDF-Datei mit
+        Metadaten</i> wählen Sie <b>Datei -> Importieren in
+        [neue|aktuelle] Datenbank</b> und im anschließenden
+        Dialog als Dateiformat <b>PDF mit XMP-Anmerkungen</b> aus.
+        Sie können die PDF-Datei stattdessen auch mit der Maus
+        auf das Hauptfenster von JabRef ziehen.</li>
+
+        <li>Um <i>bibliographische Informationen in eine verlinkte
+        PDF-Datei zu schreiben</i>, klicken Sie auf <b>XMP
+        schreiben</b> im <b>Allgemein</b>-Tab des
+        Eintragseditors.</li>
+
+        <li>Wenn Sie <i>alle PDFs einer Datei mit Metadaten
+        versehen</i> wollen, wählen Sie <b>Extras ->
+        XMP-Metadaten in PDFs schreiben</b>.</li>
+
+        <li>Um zu überprüfen, ob das Schreiben der
+        Metadaten funktioniert hat, öffnen Sie die Datei in
+        Adobe Acrobat und wählen <b>Datei ->
+        Dokumenteigenschaften</b> und dann unter dem Reiter
+        <b>Beschreibung</b> die Schaltfläche
+        <b>Zusätzliche Metadaten</b>. Wenn Sie links
+        "Erweitert" auswählen, sollten Sie im rechten Teil des
+        Dialogs einen Eintrag
+        "http://jabref.sourceforge.net/bibteXMP" sehen, der die
+        entsprechenden Metadaten enthält. Dies geht nur mit
+        dem Vollprogramm Adobe Acrobat, nicht mit dem Adobe
+        Reader.</li>
+
+        <li>Wer kein Adobe Acrobat zur Verfügung hat, kann
+        stattdessen das Programm <i>pdfinfo</i> verwenden, um die
+        XMP-Metadaten zu überprüfen. <i>pdfinfo</i> ist
+        Teil von Xpdf (<code>www.foolabs.com/xpdf</code>) und
+        Poppler (<code>http://poppler.freedesktop.org</code>).</li>
+    </ul>
+
+    <h2>BibteXmp Dateiformat</h2>
+
+    <p>XMP nutzt zum Speichern der Daten eine Teilmenge des
+    <i>Resource Description Framework</i> (RDF). Für JabRef
+    wird ein neues Metadatenformat benutzt, das BibTeX sehr gut
+    abbildet. Alle Felder und Werte werden in Knoten eines
+    XML-Dokuments verwandelt. Nur Autoren und Herausgeber werden
+    als rdf:Seq-Strukturen gespeichert, so dass die trennenden
+    'and's weggelassen werden können. Alle Strings und
+    crossrefs werden in den Metadaten aufgelöst.</p>
+
+    <p>Das folgende einfache Minimal-Schema wird benutzt:</p>
+
+    <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><br />
+    <br />
+
+
+    <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},
@@ -54,19 +111,16 @@ Es folgt ein Beispiel:
   timestamp = {2006.05.29},
   url = {http://james.howison.name/publications.html}
 }
-</pre>
-
-wird umgewandelt in
-
-<pre>
-<rdf:Description xmlns:bibtex="http://jabref.sourceforge.net/bibteXMP/"
-    bibtex:bibtexkey="CroAnnHow05"
-    bibtex:year="2005"
-    bibtex:title="Effective work practices for floss development: A model and propositions"
-    bibtex:owner="oezbek"
-    bibtex:url="http://james.howison.name/publications.html"
-    bibtex:booktitle="Hawaii International Conference On System Sciences (HICSS)"
-    bibtex:timestamp="2006.05.29">
+</pre>wird umgewandelt in
+    <pre>
+<rdf:Description xmlns:bibtex="http://jabref.sourceforge.net/bibteXMP/"
+    bibtex:bibtexkey="CroAnnHow05"
+    bibtex:year="2005"
+    bibtex:title="Effective work practices for floss development: A model and propositions"
+    bibtex:owner="oezbek"
+    bibtex:url="http://james.howison.name/publications.html"
+    bibtex:booktitle="Hawaii International Conference On System Sciences (HICSS)"
+    bibtex:timestamp="2006.05.29">
         <bibtex:author>
             <rdf:Seq>
                 <rdf:li>K. Crowston</rdf:li>
@@ -77,29 +131,45 @@ wird umgewandelt in
         </bibtex:author>
     <bibtex:entrytype>Inproceedings</bibtex:entrytype>
 </rdf:Description>
-</pre></td></tr>
-</table>
-
-<p>
-Beachten Sie die folgenden Warnungen, wenn Sie bibteXMP parsen möchten:
-</p>
-<p>
-<ul>
-  <li>In RDF können Attribut-Wert-Paare auch als Knoten wiedergegeben werden und vice versa.</li>
-</ul>
-</p>
-<H2>Weiterführende Links</H2>
-<p>
-Einige Links zu XMP und PDFs mit Anmerkungen (englisch):
-</p>
-<p>
-<ul>
-  <li><a href="http://freelancepropaganda.com/themp/">James Howison's Blog "Themp---Managing Academic Papers like MP3s"</a></li>
-  <li><a href="http://www.xml.com/pub/a/2004/09/22/xmp.html">XML.com-Artikel zu XMP</a></li>
-  <li><a href="http://jempbox.org">JempBox</a> und <a href="http://pdfbox.org">PDFBox</a> von Ben Litchfield (Java libraries zum Zugriff auf die PDFs und die Metadaten)</a></li>
-  <li><a href="http://episteme.arstechnica.com/eve/ubb.x/a/tpc/f/8300945231/m/377001889631">Gute Diskussion bei ArsTechnica zum Management von PDFs.</a></li>
-  <li><a href="http://partners.adobe.com/public/developer/en/xmp/sdk/xmpspecification.pdf">Adobe XMP Spezifikation</a></li>
-</ul>
-</p>
+</pre>
+
+    <p>Beachten Sie die folgenden Warnungen, wenn Sie bibteXMP
+    parsen möchten:</p>
+
+    <ul>
+        <li>In RDF können Attribut-Wert-Paare auch als Knoten
+        wiedergegeben werden und vice versa.</li>
+    </ul><br />
+    <br />
+
+
+    <h2>Weiterführende Links</h2>
+
+    <p>Einige Links zu XMP und PDFs mit Anmerkungen (englisch):</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)</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><br />
+    <br />
 </body>
-</HTML>
\ No newline at end of file
+</html>
\ No newline at end of file
diff --git a/src/help/fr/About.html b/src/help/fr/About.html
index da39854..3cb2c7c 100644
--- a/src/help/fr/About.html
+++ b/src/help/fr/About.html
@@ -1,112 +1,139 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-<CENTER>
-<H1>JabRef version @version@</H1>
-
-(c) 2007
-<p>
-<img src="/images/JabRef-icon-48.png"></img>
-
-
-<P>
-JabRef est librement distribuable selon les termes de la GNU
-<a href="../License.html">General Public License</a>, version 2.
-
-<H2>Développeurs :</H2>
-Morten O. Alver,
-Nizar N. Batada,
-Michel Baylac,
-Guillaume Gardey,
-Cyrille d'Haese,
-S M Mahbub Murshed,
-Raik Nagel,
-Christopher Oezbek,
-Ellen Reitmayr,
-Gert Renckens,
-Andreas Rudert,
-Michael Spiegel,
-Ulrik Stervbo,
-Dominik Waßenhoven,
-Joerg K. Wegner,
-Michael Wrighton,
-Egon Willighagen,
-Jörg Zieren
-
-<H2>Contributions de :</H2>
-Michael Beckmann,
-Oliver B�ckmann,
-Kolja Brix,
-Frédéric Darboux,
-Fabrice Dessaint,
-Nathan Dunn,
-Brian Van Essen,
-Alexis Gallagher,
-David Gleich,
-Sascha Hunold,
-Bernd Kalbfuss,
-Martin Kähmer,
-Ervin Kolenovic,
-Krzysztof A. Kościuszkiewicz,
-Christian Kopf,
-Jeffrey Kuhn,
-Alex Montgomery,
-S. M. Mahbub Murshed,
-Ambrogio Oliva,
-Stephan Rave,
-John Relph,
-Hannes Restel,
-Moritz Ringler,
-Andreas Rudert,
-Mark Schenk,
-Rudolf Seemann,
-Toralf Senger,
-Manuel Siebeneicher
-Mike Smoot,
-Ulrich Stärk,
-Martin Stolle,
-David Weitzman,
-Seb Wills,
-John Zedlewski
-
-<H2>Remerciements à :</H2>
-Samin Muhammad Ridwanul Karim,
-Stefan Robert
-
-<H2>Logiciels tiers utilisés :</H2>
-JabRef utilise JGoodies Looks 2.0.4 et JGoodies Forms 1.0.5 distribués par JGoodies
-(<code>http://www.jgoodies.com</code>) selon les termes de la License BSD (voir
-<code>http://www.opensource.org/licenses/bsd-license.html</code> pour plus de détails).
-<P>
-Deux classes additionnelles sont aussi incluses (SimpleInternalFrame et UIFSplitPane), de Karsten
-Lentzsch, qui sont distribuées sous <A HREF="../jgoodies.html">ces termes</A>.
-
-<P>
-Les options de la ligne de commande sont traitées en utilisant RitOpt (<code>http://ritopt.sourceforge.net</code>). RitOpt
-est distribuée selon les termes de la GNU <a href="../License.html">General Public License</a>,
-version 2.
-<P>
-JabRef utilise le générateur d'analyseur syntaxique ANTLR pour interpréter les chaînes de recherche. ANTLR est un logiciel du domaine public
- - voir <code>http://www.antlr.org/license.html</code> pour les termes de la license.
-<p>
-Pour la présentation de la table et le filtrage, JabRef utilise la bibliothèque Glazed Lists
-(<code>http://publicobject.com/glazedlists</code>), qui est distribuée sous la license "Lesser General Public License".
-<P>
-JabRef utilise aussi la bibliothèque de threading Spin 1.3.1, qui est distribuée selon les termes de la Lesser GNU Public License.
-
-<P>
-Certains composants de l'interface graphique de la biblioth�que Microba sont utilis�s. Elle est distribu�e sous une license de type BSD. Voir <code>http://sourceforge.net/projects/microba/</code> pour plus d'informations.
-
-<P>
-La majorit� des ic�nes proviennent de l'ensemble d'ic�nes Crystal Clear par Everaldo
-(<code>http://www.everaldo.com</code>), qui est distribu�e sous les termes de la
-Lesser General Public License.
-
-<P>
-JabRef utilise les bibliothèques JempBox et PDFBox pour gérer manipuler les PDF, les deux étant
-ées sous une licence de style BSD.
-
-</CENTER>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <center>
+        <h1>JabRef version @version@</h1>
+
+        <p>(c) 2007</p>
+
+        <p><img src="/images/JabRef-icon-48.png" /></p>
+
+        <p>JabRef est librement distribuable selon les termes de la
+        GNU <a href="../License.html">General Public License</a>,
+        version 2.</p>
+
+        <h2>Développeurs :</h2>
+
+        <p>Morten O. Alver,
+        Nizar N. Batada,
+        Michel Baylac,
+        Kolja Brix,
+        Frédéric Darboux,
+        Guillaume Gardey,
+        Cyrille d'Haese,
+        S M Mahbub Murshed,
+        Raik Nagel,
+        Christopher Oezbek,
+        Ellen Reitmayr,
+        Gert Renckens,
+        Andreas Rudert,
+        Michael Spiegel,
+        Ulrik Stervbo,
+        Dominik Waßenhoven,
+        Joerg K. Wegner,
+        Michael Wrighton,
+        Egon Willighagen,
+        Jörg Zieren</p>
+
+        <h2>Contributions de :</h2>
+
+        <p>Michael Beckmann,
+        Oliver Beckmann,
+        Fabrice Dessaint,
+        Nathan Dunn,
+        Brian Van Essen,
+        Alexis Gallagher,
+        David Gleich,
+        Sascha Hunold,
+        Bernd Kalbfuss,
+        Martin Kähmer,
+        Ervin Kolenovic,
+        Krzysztof A. Kościuszkiewicz,
+        Christian Kopf,
+        Jeffrey Kuhn,
+        Alex Montgomery,
+        Ambrogio Oliva,
+        Stephan Rave,
+        John Relph,
+        Hannes Restel,
+        Moritz Ringler,
+        Andreas Rudert,
+        Mark Schenk,
+        Rudolf Seemann,
+        Toralf Senger,
+        Manuel Siebeneicher,
+        Mike Smoot,
+        Ulrich Stärk,
+        Martin Stolle,
+        David Weitzman,
+        Seb Wills,
+        John Zedlewski</p>
+
+        <h2>Remerciements à :</h2>
+
+        <p>Samin Muhammad Ridwanul Karim,
+        Stefan Robert</p>
+
+        <h2>Logiciels tiers utilisés :</h2>
+
+        <p>JabRef
+        utilise JGoodies Looks 2.0.4 et JGoodies Forms 1.0.5
+        distribués par JGoodies
+        (<code>http://www.jgoodies.com</code>) selon les termes de
+        la License BSD (voir
+        <code>http://www.opensource.org/licenses/bsd-license.html</code>
+        pour plus de détails).</p>
+
+        <p>Deux classes additionnelles sont aussi incluses
+        (SimpleInternalFrame et UIFSplitPane), de Karsten Lentzsch,
+        qui sont distribuées sous
+        <a href="../jgoodies.html">ces termes</a>.</p>
+
+        <p>Les options de la ligne de commande sont traitées
+        en utilisant RitOpt
+        (<code>http://ritopt.sourceforge.net</code>). RitOpt est
+        distribuée selon les termes de la GNU
+        <a href="../License.html">General Public License</a>,
+        version 2.</p>
+
+        <p>JabRef utilise le générateur d'analyseur
+        syntaxique ANTLR pour interpréter les chaînes
+        de recherche. ANTLR est un logiciel du domaine public -
+        voir <code>http://www.antlr.org/license.html</code> pour
+        les termes de la license.</p>
+
+        <p>Pour la présentation de la table et le filtrage,
+        JabRef utilise la bibliothèque Glazed Lists
+        (<code>http://publicobject.com/glazedlists</code>), qui est
+        distribuée sous la license "Lesser General Public
+        License".</p>
+
+        <p>JabRef utilise aussi la bibliothèque de threading
+        Spin 1.3.1, qui est distribuée selon les termes de
+        la Lesser GNU Public License.</p>
+
+        <p>Certains composants de l'interface graphique de la
+        bibliothï¿&frac12;que Microba sont
+        utilisï¿&frac12;s. Elle est
+        distribuï¿&frac12;e sous une license de type
+        BSD. Voir
+        <code>http://sourceforge.net/projects/microba/</code> pour
+        plus d'informations.</p>
+
+        <p>La majoritï¿&frac12; des
+        icï¿&frac12;nes proviennent de l'ensemble
+        d'icï¿&frac12;nes Crystal Clear par Everaldo
+        (<code>http://www.everaldo.com</code>), qui est
+        distribuï¿&frac12;e sous les termes de la
+        Lesser General Public License.</p>
+
+        <p>JabRef utilise les bibliothèques JempBox et
+        PDFBox pour gérer manipuler les PDF, les deux
+        étant ées sous une licence de style BSD.</p>
+    </center>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/BaseFrameHelp.html b/src/help/fr/BaseFrameHelp.html
index 1d7b662..96383c4 100644
--- a/src/help/fr/BaseFrameHelp.html
+++ b/src/help/fr/BaseFrameHelp.html
@@ -1,90 +1,149 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>La fenêtre principale de JabRef</H1>
-
-<em>Note :</em> La plupart des menus dont il est question dans les
-paragraphes suivants ont des raccourcis claviers, et beaucoup sont accessibles
-depuis la barre d'outils. Les raccourcis clavier sont affichés dans les menus
-déroulants.
-
-<p>
-Ceci est la fenêtre principale à partir de laquelle vous travaillez avec vos
-bases de données. En dessous de la barre de menus et de la barre d'outils se
-trouve un panneau à onglets contenant un onglet pour chacune de vos
-bases de données actuellement ouvertes. Quand vous sélectionnez un de ces
-onglets, un tableau apparaît, listant toutes les entrées de la base de
-données, ainsi qu'une sélection configurable de leurs champs.
-<ul>
-<li>Vous décidez des champs affichés dans ce tableau en cochant les
-champs que vous voulez voir dans la fenêtre de dialogue <strong>Préférences</strong>.</li>
-<li>Pour éditér la valeur d'un champ, double-cliquez sur la ligne que vous voulez modifiez. Vous pouvez naviguer dans le tableau en utilisant les flèches du clavier.</li>
-<li>Le tableau est trié selon une série de champs de votre choix.
-L'ordre de tri par défaut est configuré dans <strong>Options -> Préférences -> Table des entrées</strong>
-mais pour changer rapidement cet ordre,
-    cliquez l'entête d'une colonne pour la définir comme critère de tri principal, ou
-    inverser l'ordre du tri s'il est déj� défini. Un clic supplémentaire désélectionnera la colonne
-    comme critère de tri. Maintenez la touche <b>CONTROL</b> enfoncée et cliquez sur un autre entête de colonne pour l'ajouter, l'inverser
-    ou l'enlever comme critère de tri auxiliaire. Vous pouvez ajouter un nombre arbitraire
-    de critères auxiliaires.
-<li>Vous pouvez ajuster la largeur des colonnes en faisant glisser les limites
-entre les entêtes.</li>
-<li>Dans la fenêtre de dialogue <strong>Préférences</strong>, choisissez si le tableau
-doit être redimensionné pour s'ajuster à la fenêtre. Sélectionnez cette option
-pour toujours voir l'ensemble du tableau, et désélectionnez là pour permettre
-l'affichage de plus d'informations.</li>
-<li>Les codes de couleurs vous aident à visualiser l'état
-de votre base de données. Les cellules sont colorées de la
-façon suivante :
-  <ul>
-  <li>Une cellule <font color="red">rouge</font> dans la colonne
-  la plus à gauche signale une entrée incomplète.</li>
-  <li>Une cellule <font color="#909000">jaune</font> dans la colonne
-  la plus à gauche signale une entrée qui ne définit pas par elle-même
-  l'ensemble des champs requis, mais qui contient un renvoi.</li>
-  <li>Une cellule <font color="blue">bleue</font> correspond à un champ requis.</li>
-  <li>Une cellule <font color="green">verte</font> correspond à un champ optionnel.</li>
-  <li>Une cellule sans couleur correspond à un champ qui n'est pas utilisé
-  par le programme <em>BibTeX</em> pour ce type d'entrée. Le champ peut cependant
-  être édité dans JabRef.</li>
-  </ul>
-</li>
-Les codes de couleurs peuvent être modifiés dans la fenêtre de dialogue
-<strong>Préférences</strong>.
-
-</ul>
-
-<H2>Ajouter une nouvelle entrée</H2>
-Il y a plusieurs façons d'ajouter une nouvelle entrée. L'activation du menu
-<strong>BibTeX/ Nouvelle entrée</strong> affiche une fenêtre de dialogue où vous pouvez
-choisir le type d'entrée à partir d'une liste. Pour éviter cette fenêtre
-de dialogue, vous pouvez utilisez le menu <strong>BibTeX/ Nouvelle entrée...</strong>
-ainsi que des raccourcis clavier pour les types les plus courants.
-
-<P>Lorsqu'une nouvelle entrée est ajoutée, par défaut, une
-<a href="EntryEditorHelp.html">fenêtre d'édition</a> s'ouvre. Ce comportement
-peut être modifié dans la fenêtre de dialogue <strong>Préférences</strong>.
-<P><em>Note :</em> Nous vous recommandons fortement d'apprendre les
-raccourcis clavier des types d'entrées que vous utilisez le plus souvent,
-tel que CTRL-SHIFT-A pour l'ajout d'une entrée <em>article</em>.
-
-<H2>Editer une entrée</H2> Pour ouvrir la <a
-href="EntryEditorHelp.html">fenêtre d'édition</a> sur une entrée existante,
-double-cliquez simplement sur la ligne correspondant à l'entrée (ou appuyez sur ENTREE après avoir sélectionner l'entrée).
-
-<H2>Référencer une chaîne <em>BibTeX</em> dans un champ</H2>
-Dans JabRef vous écrivez le contenu de tous les champs de la même
-façon que dans un éditeur de texte, à une exception près : pour
-référencer une chaîne, entourer le nom de la chaîne avec le caractère #,
-tel que dans :<BR>
-  '#jan# 1997',<BR>
-ce qui sera interprété comme la chaîne nommée 'jan' suivie de '1997'.
-<P>Voir aussi : <a href="StringEditorHelp.html">Editeur de chaîne</a>.
-
-</font>
-
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>La fenêtre principale de
+    JabRef</h1>
+
+    <p><em>Note :</em> La plupart des menus dont il
+    est question dans les paragraphes suivants ont des raccourcis
+    claviers, et beaucoup sont accessibles depuis la barre
+    d'outils. Les raccourcis clavier sont affichés dans les
+    menus déroulants.</p>
+
+    <p>Ceci est la fenêtre principale à partir de
+    laquelle vous travaillez avec vos bases de données. En
+    dessous de la barre de menus et de la barre d'outils se trouve
+    un panneau à onglets contenant un onglet pour chacune de
+    vos bases de données actuellement ouvertes. Quand vous
+    sélectionnez un de ces onglets, un tableau
+    apparaît, listant toutes les entrées de la base de
+    données, ainsi qu'une sélection configurable de
+    leurs champs.</p>
+
+    <ul>
+        <li>Vous décidez des champs affichés dans ce
+        tableau en cochant les champs que vous voulez voir dans la
+        fenêtre de dialogue
+        <strong>Préférences</strong>.</li>
+
+        <li>Pour éditér la valeur d'un champ,
+        double-cliquez sur la ligne que vous voulez modifiez. Vous
+        pouvez naviguer dans le tableau en utilisant les
+        flèches du clavier.</li>
+
+        <li>Le tableau est trié selon une série de
+        champs de votre choix. L'ordre de tri par défaut est
+        configuré dans <strong>Options ->
+        Préférences -> Table des
+        entrées</strong> mais pour changer rapidement cet
+        ordre, cliquez l'entête d'une colonne pour la
+        définir comme critère de tri principal, ou
+        inverser l'ordre du tri s'il est déjà
+        défini. Un clic supplémentaire
+        désélectionnera la colonne comme
+        critère de tri. Maintenez la touche <b>CONTROL</b>
+        enfoncée et cliquez sur un autre entête de
+        colonne pour l'ajouter, l'inverser ou l'enlever comme
+        critère de tri auxiliaire. Vous pouvez ajouter un
+        nombre arbitraire de critères auxiliaires.</li>
+
+        <li>Vous pouvez ajuster la largeur des colonnes en faisant
+        glisser les limites entre les entêtes.</li>
+
+        <li>Dans la fenêtre de dialogue
+        <strong>Préférences</strong>, choisissez si
+        le tableau doit être redimensionné pour
+        s'ajuster à la fenêtre. Sélectionnez
+        cette option pour toujours voir l'ensemble du tableau, et
+        désélectionnez là pour permettre
+        l'affichage de plus d'informations.</li>
+
+        <li>
+            Les codes de couleurs vous aident à visualiser
+            l'état de votre base de données. Les
+            cellules sont colorées de la façon
+            suivante :
+
+            <ul>
+                <li>Une cellule <font color="red">rouge</font> dans
+                la colonne la plus à gauche signale une
+                entrée incomplète.</li>
+
+                <li>Une cellule <font color="#909000">jaune</font>
+                dans la colonne la plus à gauche signale une
+                entrée qui ne définit pas par
+                elle-même l'ensemble des champs requis, mais
+                qui contient un renvoi.</li>
+
+                <li>Une cellule <font color="blue">bleue</font>
+                correspond à un champ requis.</li>
+
+                <li>Une cellule <font color="green">verte</font>
+                correspond à un champ optionnel.</li>
+
+                <li>Une cellule sans couleur correspond à un
+                champ qui n'est pas utilisé par le programme
+                <em>BibTeX</em> pour ce type d'entrée. Le
+                champ peut cependant être édité
+                dans JabRef.</li>
+            </ul>
+        </li>
+
+        <li style="list-style: none">Les codes de couleurs peuvent
+        être modifiés dans la fenêtre de
+        dialogue <strong>Préférences</strong>.</li>
+    </ul>
+
+    <h2>Ajouter une nouvelle entrée</h2>
+
+    <p>Il y a plusieurs
+    façons d'ajouter une nouvelle entrée.
+    L'activation du menu <strong>BibTeX/ Nouvelle
+    entrée</strong> affiche une fenêtre de dialogue
+    où vous pouvez choisir le type d'entrée à
+    partir d'une liste. Pour éviter cette fenêtre de
+    dialogue, vous pouvez utilisez le menu <strong>BibTeX/ Nouvelle
+    entrée...</strong> ainsi que des raccourcis clavier pour
+    les types les plus courants.</p>
+
+    <p>Lorsqu'une nouvelle entrée est ajoutée, par
+    défaut, une <a href="EntryEditorHelp.html">fenêtre
+    d'édition</a> s'ouvre. Ce comportement peut être
+    modifié dans la fenêtre de dialogue
+    <strong>Préférences</strong>.</p>
+
+    <p><em>Note :</em> Nous vous recommandons fortement
+    d'apprendre les raccourcis clavier des types d'entrées
+    que vous utilisez le plus souvent, tel que CTRL-SHIFT-A pour
+    l'ajout d'une entrée <em>article</em>.</p>
+
+    <h2>Editer une entrée</h2>
+
+    <p>Pour ouvrir la
+    <a href="EntryEditorHelp.html">fenêtre
+    d'édition</a> sur une entrée existante,
+    double-cliquez simplement sur la ligne correspondant à
+    l'entrée (ou appuyez sur ENTREE après avoir
+    sélectionner l'entrée).</p>
+
+    <h2>Référencer une chaîne <em>BibTeX</em>
+    dans un champ</h2>
+
+    <p>Dans JabRef vous écrivez le contenu de
+    tous les champs de la même façon que dans un
+    éditeur de texte, à une exception
+    près : pour référencer une
+    chaîne, entourer le nom de la chaîne avec le
+    caractère #, tel que dans :<br />
+      '#jan# 1997',<br />
+    ce qui sera interprété comme la chaîne
+    nommée 'jan' suivie de '1997'.</p>
+
+    <p>Voir aussi : <a href="StringEditorHelp.html">Editeur de
+    chaîne</a>. </p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/BibtexHelp.html b/src/help/fr/BibtexHelp.html
index 73eaed0..3c33183 100644
--- a/src/help/fr/BibtexHelp.html
+++ b/src/help/fr/BibtexHelp.html
@@ -1,359 +1,309 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR">
-<html><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
 <body style="color: rgb(39, 88, 86);">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>A propos de <em>BibTeX</em></h1>
-
-
-JabRef vous aide à travailler avec vos bases de données <em>BibTeX</em>,
-mais certaines règles doivent être gardées à l'esprit lorsque vous
-éditez vos entrées afin d'obtenir un traitement correct de vos bases de données par le programme <em>BibTeX</em>.
-
-
-<h2>Les champs <em>BibTeX</em></h2>
-
-Il y a un grand nombre de champs possibles dans <em>BibTeX</em>, et
-quelques champs en plus que vous pouvez paramétrer dans JabRef.
-<p>
-Généralement, vous pouvez utiliser des commandes LaTeX à l'intérieur
-de champs contenant du texte. <em>BibTeX</em> formatera automatiquement
-vos listes de références et les champs qui sont inclus dans ces
-listes seront mis en majuscules/minuscules selon votre style bibliographique. Pour être certain que certains caractères restent en majuscules, encadrez-les
-par des accolades, comme dans le mot {B}elgique.
-
-</p>
-
-
-
-<p>
-Notes à propos de certains types de champs :
-</p>
-
-
-
-<ul>
-
-
-
-<li><strong style="font-style: italic;">Bibtexkey</strong>
-C'est une chaîne unique utilisée pour référencer
-l'entrée dans les documents LaTeX. Notez que lorsque vous référencez une entrée
-dans LaTeX, la clef doit respecter la casse (majuscules/minuscules) de la chaîne
-de référence.
-    <br>
-</li>
-
-  <li><strong>address<br>
-    </strong>Habituellement l'adresse de l'<tt>�diteur commercial</tt> ("publisher" en anglais) ou d'un autre type d'institution.
-Pour les principales maisons d'�dition,
-van Leunen recommande d'omettre compl�tement cette information.
-Pour les petites maisons d'�dition, d'un autre cot�, vous pouvez aider le lecteur en donnant l'adresse compl�te.
-    <p>
-    </p>
-  </li>
-  <li><strong>annote<br>
-    </strong>Une annotation.
-Ce champ n'est pas utilis� par les styles bibliographiques standards, mais peut �tre utilis� par d'autres styles qui produisent une bibliographie annot�e.
-    <p>
-    </p>
-  </li>
-  <li><strong>author<br>
-    </strong>Ce champ doit contenir la liste compl�te des auteurs de votre entr�e. Les noms sont s�par�s par le mot <em>and</em>, m�me si il y a plus de deux auteurs. Chaque nom peut �tre �crit dans deux formes �quivalentes :<br>
-
- Donald E. Knuth <em>ou</em> Knuth, Donald E.<br>
-
- Eddie van Halen <em>ou</em> van Halen, Eddie<br>
-
-La seconde forme devrait �tre utilis�e pour les auteurs ayants plus de deux noms afin de diff�rencier les seconds pr�noms et les noms de famille [NDT: pas sur de la traduction...].
-<br>
-    <br>
-    <span style="font-weight: bold;"></span></li>
-  <li><span style="font-weight: bold;"></span><strong>booktitle<br>
-    </strong>Titre d'un livre, dont une partie est cit�e.
-Pour les entr�es du type "book", utilisez le champ <tt>title</tt>.
-    <p>
-    </p>
-  </li>
-  <li><strong>chapter<br>
-    </strong>Un num�ro de chapitre (ou de partie, ou d'autre chose).
-    <p>
-    </p>
-  </li>
-  <li><strong>crossref<br>
-    </strong>La clef de l'entr�e vers laquelle on effectue le renvoi.
-    <p>
-    </p>
-  </li>
-  <li><strong>edition<br>
-    </strong>Le num�ro d'�dition d'un livre -- par exemple "Troisi�me".
-Cela doit �tre un nombre, et la premi�re lettre doit �tre capitalis�e, comme montr� ici ;
-les styles standards la convertisse en minuscule si n�cessaire.
-    <p>
-    </p>
-  </li>
-  <li><strong>editor<br>
-    </strong>Ce champ est analogue au champ <em>author</em>.
-    Il permet d'indiquer le nom des �diteurs scientifiques, coordonateurs, etc.
-
-    <p>
-    </p>
-  </li>
-  <li><strong>howpublished<br>
-    </strong>Comment quelque chose de non-standard a �t� publi�e.
-Le premier mot prend une majuscule.
-    <p>
-    </p>
-  </li>
-  <li><strong>institution<br>
-    </strong>L'institution ayant promue un rapport technique.
-    <p>
-    </p>
-  </li>
-  <li><strong>journal<br>
-    </strong>Un nom de journal.
-Le nom d'un journal peut �tre abr�g� en utilisant une "cha�ne".
-Pour d�finir une cha�ne, utilisez <a href="StringEditorHelp.html">l'�diteur de cha�nes</a>.
-    <p>
-    </p>
-  </li>
-  <li><strong>key<br>
-    </strong>utilis� pour alphab�tiser, renvoyer et cr�er une �tiquette quand l'information sur "author" est manquante.
-Ce champ ne doit pas �tre confondu avec la clef qui est fournie dans la commande
-    <code>\cite</code> et au d�but de l'entr�e.
-    <p>
-    </p>
-  </li>
-  <li><strong>month<br>
-    </strong>Le mois au cours duquel le travail a �t�
-publi� ou, pour un travail non publi�, au cours duquel il a �t� �crit.
-Vous devriez utiliser l'abr�viation standard � trois lettres (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
-    <p>
-    </p>
-  </li>
-  <li><strong>note<br>
-    </strong>Toute information additionnelle qui peut aider le lecteur.
-Le premier mot doit prendre une majuscule.
-    <p>
-    </p>
-  </li>
-  <li><strong>number</strong><br>
-Le num�ro d'un journal, d'un magazine, d'un rapport technique
-ou d'un travail dans une s�rie.
-Les journaux et les magazines sont habituellement
-identifi�s par leur volume et leur num�ro ;
-l'organisation qui publie un
-rapport technique lui donne en g�n�ral un num�ro ;
-et parfois les livres portent des num�ros
-lorsqu'ils appartiennent � une s�rie nomm�e.
-    <p>
-    </p>
-  </li>
-  <li><strong>organization<br>
-    </strong>L'organisation ayant promue une conf�rence ou qui publie un manuel.
-    <p>
-    </p>
-  </li>
-  <li><strong>pages<br>
-    </strong>Un ou plusieurs num�ros de page, ou une gamme de num�ros,
-tel que <tt>42-111</tt> ou <tt>7,41,73-97</tt> ou <tt>43+</tt>
-(le `<tt>+</tt>' dans le dernier exemple indique des pages suivantes
-qui ne sont pas dans un ordre simple).
-Pour garder facilement la compatibilit� avec les bases de donn�es compatibles
-<em>Scribe</em>, les styles standards convertissent le tiret simple
-(comme dans <tt>7-33</tt>)
-en un tiret double utilis� par TeX pour d�finir une gamme de nombres
-(comme dans <tt>7-33</tt>).
-    <p>
-    </p>
-  </li>
-  <li><strong>publisher<br>
-    </strong>Le nom de l'�diteur commercial.
-    <p>
-    </p>
-  </li>
-  <li><strong>school<br>
-    </strong>Le nom de l'�cole o� a �t� �crite une th�se.
-    <p>
-    </p>
-  </li>
-  <li><strong>series<br>
-    </strong>Le nom d'une s�rie ou d'un ensemble de livres.
-Quand on cite un livre entier, le champ <tt>title</tt>
-donne son titre et le champ optionnel <tt>series</tt> donne le
-nom de la s�rie ou de l'ensemble de volumes
-dans lequel le livre est publi�.
-    <p>
-    </p>
-  </li>
-  <li><strong>title<br>
-    </strong>Le titre du travail. La capitalisation d�pend du
-style bibliographique et de la langue utilis�s. Pour les mots qui
-doivent �tre capitalis�s (tel un nom propre), mettre le mot
-(ou sa premi�re lettre) entre accolades.
-    <p>
-    </p>
-  </li>
-  <li><strong>type<br>
-    </strong>Le type de rapport technique -- par exemple,
-"Note de recherche".
-    <p>
-    </p>
-  </li>
-  <li><strong>volume<br>
-    </strong>Le volume d'un journal ou d'un livre en plusieurs tomes.
-    <p>
-    </p>
-  </li>
-  <li><strong>year<br>
-    </strong>L'ann�e de publication ou, pour
-un travail non publi�, l'ann�e o� il a �t� �crit.
-G�n�ralement, elle doit prendre quatre chiffres, tel que <tt>1984</tt>,
-cependant les styles standards peuvent g�rer toute valeur de <tt>year</tt>
-dont les quatre derniers caract�res sont des chiffres (hors caract�res de ponctuation),
-tel que `(autour de 1984)'. Ce champ est requis par la plupart des types d'entr�es.
-</li>
-</ul>
-
-
-<br>
-
-
-<h2>Autres champs</h2>
-
-BibTeX est tr�s populaire, et beaucoup de gens l'ont utilis� pour stocker
-des informations. Voici une liste de quelque uns des champs les plus communs :
-
-<dl>
-
-
-</dl>
-
-<ul>
-
-  <li><strong><span style="font-weight: normal; font-style: italic;">affiliation*</span><br>
-    </strong>L'affiliation des auteurs.<br>
-    <br>
-
-  </li>
-  <li><strong>abstract<br>
-    </strong>Le r�sum� d'un travail.<br>
-    <br>
-
-  </li>
-
-  <li><strong>doi<br>
-    </strong>Le Digital Object Identifier ("identifiant d'objet num�rique") est l'identifiant permanent donn� � un document num�rique.<br>
-    <br>
-
-  </li>
-  <li><strong>eid<br>
-    </strong>L'Electronic IDentifier ("identifiant �lectronique") est utilis� par les journaux �lectroniques qui ont aussi une version papier. Ce num�ro remplace le nombre de pages et est utilis� pour trouver un article dans un volume imprim�. Il est parfois aussi appel� <em>citation number</em>.<br>
-    <br>
-
-  <li><strong><span style="font-weight: normal; font-style: italic;">contents*</span><br>
-    </strong>La table des mati�res<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">copyright*</span><br>
-    </strong>Informations sur les droits d'auteur (copyright).<br>
-    <br>
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">ISBN*</span><br>
-    </strong>L'"International Standard Book Number".<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">ISSN*</span><br>
-    </strong>L'"International Standard Serial Number".  Utilis� pour identifier un journal.<br>
-    <br>
-
-  </li>
-  <li><strong>keywords<br>
-    </strong>Mots-clefs utilis�s pour la recherche, ou pour annotation.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">language*</span><br>
-    </strong>La langue du document.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">location*</span><br>
-    </strong>Une localisation associ�e avec l'entr�e, telle que la ville o� la conf�rence a eu lieu.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">LCCN*</span><br>
-    </strong>Le "Library of Congress Call Number".  Champ parfois nomm� <tt>lib-congress</tt>.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">mrnumber*</span><br>
-    </strong>Le num�ro de <i>Mathematical Reviews</i>.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">price*</span><br>
-    </strong>Le prix du document.<br>
-    <br>
-
-  </li>
-  <li><strong><span style="font-weight: normal; font-style: italic;">size*</span><br>
-    </strong>La taille physique d'un travail.<br>
-    <br>
-
-  </li>
-  <li><strong>URL<br>
-    </strong>Le "WWW Universal Resource Locator" (adresse URL)
-    qui pointe vers l'�l�ment r�f�renc�.
-    C'est souvent utilis� pour les rapports techniques afin d'indiquer
-    le site ftp o� la source postscript du rapport est localis�e.
-  </li>
-</ul>
-
-<dl>
-
-
-</dl>
-
-
-
-
-
-
-<h3><br>
-</h3>
-
-
-
-<h3>JuraBib</h3>
-
-
-
-
-<ul>
-
-  <li><strong>urldate<br>
-    </strong>La date de la derni�re visite de la page.</li>
-
-</ul>
-
-
-<br>
-
-*) non support� directement par JabRef<br>
-
-
-
-
-
-
-
-<br>
-
-
-
-</body></html> 
\ No newline at end of file
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>A propos de <em>BibTeX</em></h1>
+
+    <p>JabRef vous aide à
+    travailler avec vos bases de données <em>BibTeX</em>,
+    mais certaines règles doivent être gardées
+    à l'esprit lorsque vous éditez vos entrées
+    afin d'obtenir un traitement correct de vos bases de
+    données par le programme <em>BibTeX</em>.</p>
+
+    <h2>Les champs <em>BibTeX</em></h2>
+
+    <p>Il y a un grand nombre de
+    champs possibles dans <em>BibTeX</em>, et quelques champs en
+    plus que vous pouvez paramétrer dans JabRef.</p>
+
+    <p>Généralement, vous pouvez utiliser des
+    commandes LaTeX à l'intérieur de champs contenant
+    du texte. <em>BibTeX</em> formatera automatiquement vos listes
+    de références et les champs qui sont inclus dans
+    ces listes seront mis en majuscules/minuscules selon votre
+    style bibliographique. Pour être certain que certains
+    caractères restent en majuscules, encadrez-les par des
+    accolades, comme dans le mot {B}elgique.</p>
+
+    <p>Notes à propos de certains types de champs :</p>
+
+    <ul>
+        <li><strong style="font-style: italic;">Bibtexkey</strong>
+        C'est une chaîne unique utilisée pour
+        référencer l'entrée dans les documents
+        LaTeX. Notez que lorsque vous référencez une
+        entrée dans LaTeX, la clef doit respecter la casse
+        (majuscules/minuscules) de la chaîne de
+        référence.<br /></li>
+
+        <li><strong>address<br /></strong> Habituellement l'adresse
+        de l'<tt>éditeur commercial</tt> ("publisher" en
+        anglais) ou d'un autre type d'institution. Pour les
+        principales maisons d'édition, van Leunen
+        recommande d'omettre complètement cette information.
+        Pour les petites maisons d'édition, d'un autre
+        coté, vous pouvez aider le lecteur en donnant
+        l'adresse complète.</li>
+
+        <li><strong>annote<br /></strong> Une annotation. Ce champ
+        n'est pas utilisé par les styles bibliographiques
+        standards, mais peut être utilisé par d'autres
+        styles qui produisent une bibliographie
+        annotée.</li>
+
+        <li><strong>author<br /></strong> Ce champ doit contenir la
+        liste complète des auteurs de votre entrée.
+        Les noms sont séparés par le mot
+        <em>and</em>, même si il y a plus de deux auteurs.
+        Chaque nom peut être écrit dans deux formes
+        équivalentes :<br />
+         Donald E. Knuth <em>ou</em> Knuth, Donald E.<br />
+         Eddie van Halen <em>ou</em> van Halen, Eddie<br />
+         La seconde forme devrait être utilisée pour
+        les auteurs ayants plus de deux noms afin de
+        différencier les seconds prénoms et les noms
+        de famille [NDT: pas sur de la traduction...].<br />
+        <br /></li>
+
+        <li><strong>booktitle<br /></strong> Titre d'un livre, dont
+        une partie est citée. Pour les entrées du
+        type "book", utilisez le champ <tt>title</tt>.</li>
+
+        <li><strong>chapter<br /></strong> Un numéro de
+        chapitre (ou de partie, ou d'autre chose).</li>
+
+        <li><strong>crossref<br /></strong> La clef de
+        l'entrée vers laquelle on effectue le renvoi.</li>
+
+        <li><strong>edition<br /></strong> Le numéro
+        d'édition d'un livre -- par exemple
+        "Troisième". Cela doit être un nombre, et la
+        première lettre doit être capitalisée,
+        comme montré ici ; les styles standards la
+        convertisse en minuscule si nécessaire.</li>
+
+        <li><strong>editor<br /></strong> Ce champ est analogue au
+        champ <em>author</em>. Il permet d'indiquer le nom des
+        éditeurs scientifiques, coordonateurs, etc.</li>
+
+        <li><strong>howpublished<br /></strong> Comment quelque
+        chose de non-standard a été publiée.
+        Le premier mot prend une majuscule.</li>
+
+        <li><strong>institution<br /></strong> L'institution ayant
+        promue un rapport technique.</li>
+
+        <li><strong>journal<br /></strong> Un nom de journal. Le
+        nom d'un journal peut être abrégé en
+        utilisant une "chaîne". Pour définir une
+        chaîne, utilisez
+        <a href="StringEditorHelp.html">l'éditeur de
+        chaînes</a>.</li>
+
+        <li><strong>key<br /></strong> utilisé pour
+        alphabétiser, renvoyer et créer une
+        étiquette quand l'information sur "author" est
+        manquante. Ce champ ne doit pas être confondu avec la
+        clef qui est fournie dans la commande <code>\cite</code> et
+        au début de l'entrée.</li>
+
+        <li><strong>month<br /></strong> Le mois au cours duquel le
+        travail a été publié ou, pour un
+        travail non publié, au cours duquel il a
+        été écrit. Vous devriez utiliser
+        l'abréviation standard à trois lettres (jan,
+        feb, mar, apr, may, jun, jul, aug, sep, oct, nov,
+        dec).</li>
+
+        <li><strong>note<br /></strong> Toute information
+        additionnelle qui peut aider le lecteur. Le premier mot
+        doit prendre une majuscule.</li>
+
+        <li><strong>number</strong><br />
+        Le numéro d'un journal, d'un magazine, d'un rapport
+        technique ou d'un travail dans une série. Les
+        journaux et les magazines sont habituellement
+        identifiés par leur volume et leur
+        numéro ; l'organisation qui publie un rapport
+        technique lui donne en général un
+        numéro ; et parfois les livres portent des
+        numéros lorsqu'ils appartiennent à une
+        série nommée.</li>
+
+        <li><strong>organization<br /></strong> L'organisation
+        ayant promue une conférence ou qui publie un
+        manuel.</li>
+
+        <li><strong>pages<br /></strong> Un ou plusieurs
+        numéros de page, ou une gamme de numéros, tel
+        que <tt>42-111</tt> ou <tt>7,41,73-97</tt> ou <tt>43+</tt>
+        (le `<tt>+</tt>' dans le dernier exemple indique des pages
+        suivantes qui ne sont pas dans un ordre simple). Pour
+        garder facilement la compatibilité avec les bases de
+        données compatibles <em>Scribe</em>, les styles
+        standards convertissent le tiret simple (comme dans
+        <tt>7-33</tt>) en un tiret double utilisé par TeX
+        pour définir une gamme de nombres (comme dans
+        <tt>7-33</tt>).</li>
+
+        <li><strong>publisher<br /></strong> Le nom de
+        l'éditeur commercial.</li>
+
+        <li><strong>school<br /></strong> Le nom de l'école
+        où a été écrite une
+        thèse.</li>
+
+        <li><strong>series<br /></strong> Le nom d'une série
+        ou d'un ensemble de livres. Quand on cite un livre entier,
+        le champ <tt>title</tt> donne son titre et le champ
+        optionnel <tt>series</tt> donne le nom de la série
+        ou de l'ensemble de volumes dans lequel le livre est
+        publié.</li>
+
+        <li><strong>title<br /></strong> Le titre du travail. La
+        capitalisation dépend du style bibliographique et de
+        la langue utilisés. Pour les mots qui doivent
+        être capitalisés (tel un nom propre), mettre
+        le mot (ou sa première lettre) entre accolades.</li>
+
+        <li><strong>type<br /></strong> Le type de rapport
+        technique -- par exemple, "Note de recherche".</li>
+
+        <li><strong>volume<br /></strong> Le volume d'un journal ou
+        d'un livre en plusieurs tomes.</li>
+
+        <li><strong>year<br /></strong> L'année de
+        publication ou, pour un travail non publié,
+        l'année où il a été
+        écrit. Généralement, elle doit prendre
+        quatre chiffres, tel que <tt>1984</tt>, cependant les
+        styles standards peuvent gérer toute valeur de
+        <tt>year</tt> dont les quatre derniers caractères
+        sont des chiffres (hors caractères de ponctuation),
+        tel que `(autour de 1984)'. Ce champ est requis par la
+        plupart des types d'entrées.</li>
+    </ul><br />
+
+
+    <h2>Autres champs</h2>
+
+    <p>BibTeX est très populaire, et
+    beaucoup de gens l'ont utilisé pour stocker des
+    informations. Voici une liste de quelque uns des champs les
+    plus communs :</p>
+
+    <ul>
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        affiliation*</span><br /></strong> L'affiliation des
+        auteurs.<br />
+        <br /></li>
+
+        <li><strong>abstract<br /></strong> Le résumé
+        d'un travail.<br />
+        <br /></li>
+
+        <li><strong>doi<br /></strong> Le Digital Object Identifier
+        ("identifiant d'objet numérique") est l'identifiant
+        permanent donné à un document
+        numérique.<br />
+        <br /></li>
+
+        <li><strong>eid<br /></strong> L'Electronic IDentifier
+        ("identifiant électronique") est utilisé par
+        les journaux électroniques qui ont aussi une version
+        papier. Ce numéro remplace le nombre de pages et est
+        utilisé pour trouver un article dans un volume
+        imprimé. Il est parfois aussi appelé
+        <em>citation number</em>.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        contents*</span><br /></strong> La table des
+        matières<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        copyright*</span><br /></strong> Informations sur les
+        droits d'auteur (copyright).<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        ISBN*</span><br /></strong> L'"International Standard Book
+        Number".<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        ISSN*</span><br /></strong> L'"International Standard
+        Serial Number". Utilisé pour identifier un
+        journal.<br />
+        <br /></li>
+
+        <li><strong>keywords<br /></strong> Mots-clefs
+        utilisés pour la recherche, ou pour
+        annotation.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        language*</span><br /></strong> La langue du
+        document.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        location*</span><br /></strong> Une localisation
+        associée avec l'entrée, telle que la ville
+        où la conférence a eu lieu.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        LCCN*</span><br /></strong> Le "Library of Congress Call
+        Number". Champ parfois nommé
+        <tt>lib-congress</tt>.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        mrnumber*</span><br /></strong> Le numéro de
+        <i>Mathematical Reviews</i>.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        price*</span><br /></strong> Le prix du document.<br />
+        <br /></li>
+
+        <li>
+        <strong><span style="font-weight: normal; font-style: italic;">
+        size*</span><br /></strong> La taille physique d'un
+        travail.<br />
+        <br /></li>
+
+        <li><strong>URL<br /></strong> Le "WWW Universal Resource
+        Locator" (adresse URL) qui pointe vers
+        l'élément référencé.
+        C'est souvent utilisé pour les rapports techniques
+        afin d'indiquer le site ftp où la source postscript
+        du rapport est localisée.</li>
+    </ul>
+
+    <h3>JuraBib</h3>
+
+    <ul>
+        <li><strong>urldate<br /></strong> La date de la
+        dernière visite de la page.</li>
+    </ul><br />
+     *) non supporté directement par JabRef<br />
+     <br />
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/CiteSeerHelp.html b/src/help/fr/CiteSeerHelp.html
index 6aad68a..279e769 100644
--- a/src/help/fr/CiteSeerHelp.html
+++ b/src/help/fr/CiteSeerHelp.html
@@ -1,51 +1,73 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="fr-fr"><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      lang="fr-fr">
 
 <body style="color: rgb(39, 88, 86); direction: ltr;">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>Récupération depuis CiteSeer</h1>
-
-
-CiteSeer est une bibliothèque numérique et un moteur de
-recherche qui s'intéresse principalement à la
-littérature scientifique en informatique et science de
-l'information.
-
-
-<h2>Récupération d'une entrée depuis CiteSeer</h2>
-
-<p>
-JabRef peut récupérer de l'information sur une entrée particulière à partir de la base de données CiteSeer. Pour initier ce processus, ajoutez une nouvelle entrée dans votre base de données et renseignez le champ citeseerurl avec un lien vers la page de contenu sur CiteSeer. Le champ citeseerurl doit être rempli avec l'un des formats suivants :
-</p>
-<p>
-http://citeseer.ist.psu.edu/DDDDDD[.html], ou <br>
-oai:CiteSeerPSU:DDDDDD, ou <br>
-DDDDDD
-</p>
-<p>
-où DDDDD est une séquence de chiffres. Pour trouver la séquence de chiffres (DDDDD) pour une entrée CiteSeer, allez sur la page contenant le document cité avec l'adresse http://citeseer.ist.psu.edu/<i>nomAnnéeTitre</i>.html et cliquez sur le lien (update) pour cette citation. L'URL pour le lien update devrait contenir l'ID numérique de la citation.
-</p>
-<p>
-Une fois que vous avez renseigné le champ citeseerurl, vous pouvez télécharger les champs sur CiteSeer en sélectionnant le menu <b>BibTeX -> Importer les champs depuis CiteSeer</b>. Vérifier que vous avez bien sélectionné la (les) lignes(s) que vous voulez mettre à jour.
-</p>
-
-<h2>Génération d'une base de citations</h2>
-
-<p>
-A partir d'une série de références, vous pouvez générer une liste de documents qui citent les éléments de cette liste. Pour faciliter cette opération, chaque citation de la base de données doit avoir son champ citeseerurl rempli selon l'un des formats indiqués dans <b>Récupération d'une entrée depuis CiteSeer</b>. Pour réaliser cette opération, sélectionnez <b>Recherche interne [...]
-</p>
-
-<h2>Utilisation d'un serveur proxy</h2>
-
-<p>
-Si vous avez besoin d'utiliser un serveur de proxy, passez le nom du serveur et le numéro de port au lancement de java. Ces paramètres d'environnement sont documentés sur
-</p>
-<p>
-http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html
-</p>
-<p>
-<code>java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"</code>
-</p>
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Récupération depuis CiteSeer</h1>
+
+    <p>CiteSeer est
+    une bibliothèque numérique et un moteur de
+    recherche qui s'intéresse principalement à la
+    littérature scientifique en informatique et science de
+    l'information.</p>
+
+    <h2>Récupération d'une entrée depuis
+    CiteSeer</h2>
+
+    <p>JabRef peut récupérer de l'information sur une
+    entrée particulière à partir de la base de
+    données CiteSeer. Pour initier ce processus, ajoutez une
+    nouvelle entrée dans votre base de données et
+    renseignez le champ citeseerurl avec un lien vers la page de
+    contenu sur CiteSeer. Le champ citeseerurl doit être
+    rempli avec l'un des formats suivants :</p>
+
+    <p>http://citeseer.ist.psu.edu/DDDDDD[.html], ou<br />
+    oai:CiteSeerPSU:DDDDDD, ou<br />
+    DDDDDD</p>
+
+    <p>où DDDDD est une séquence de chiffres. Pour
+    trouver la séquence de chiffres (DDDDD) pour une
+    entrée CiteSeer, allez sur la page contenant le document
+    cité avec l'adresse
+    http://citeseer.ist.psu.edu/<i>nomAnnéeTitre</i>.html et
+    cliquez sur le lien (update) pour cette citation. L'URL pour le
+    lien update devrait contenir l'ID numérique de la
+    citation.</p>
+
+    <p>Une fois que vous avez renseigné le champ
+    citeseerurl, vous pouvez télécharger les champs
+    sur CiteSeer en sélectionnant le menu <b>BibTeX ->
+    Importer les champs depuis CiteSeer</b>. Vérifier que
+    vous avez bien sélectionné la (les) lignes(s) que
+    vous voulez mettre à jour.</p>
+
+    <h2>Génération d'une base de citations</h2>
+
+    <p>A partir d'une série de références,
+    vous pouvez générer une liste de documents qui
+    citent les éléments de cette liste. Pour
+    faciliter cette opération, chaque citation de la base de
+    données doit avoir son champ citeseerurl rempli selon
+    l'un des formats indiqués dans
+    <b>Récupération d'une entrée depuis
+    CiteSeer</b>. Pour réaliser cette opération,
+    sélectionnez <b>Recherche internet -> Recherche de
+    citations dans CiteSeer</b>.</p>
+
+    <h2>Utilisation d'un serveur proxy</h2>
+
+    <p>Si vous avez besoin d'utiliser un serveur de proxy, passez
+    le nom du serveur et le numéro de port au lancement de
+    java. Ces paramètres d'environnement sont
+    documentés sur</br />
+
+    <a href="http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html">http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html</a></p>
+
+    <p><code>java -Dhttp.proxyHost="hostname"
+    -Dhttp.proxyPort="portnumber"</code></p>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/CommandLine.html b/src/help/fr/CommandLine.html
index b4f5b93..2e51e2b 100644
--- a/src/help/fr/CommandLine.html
+++ b/src/help/fr/CommandLine.html
@@ -1,116 +1,150 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="fr-fr"><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      lang="fr-fr">
 
 <body style="color: rgb(39, 88, 86); direction: ltr;">
-<basefont size="4" color="#2F4958" face="arial">
-<h1>Les options de la ligne de commande</h1>
-
-Bien que JabRef soit d'abord une application graphique, il offre
-plusieurs options pour la ligne de commande qui peuvent être
-utiles et qui peuvent réaliser des opérations de
-conversion de fichiers sans avoir à ouvrir l'interface
-graphique.
-<p>Vous pouvez
-spécifier le chargement d'un ou de plusieurs fichiers BibTeX
-en indiquant simplement leurs noms. Prenez la précaution de
-spécifier l'ensemble des options avant la liste des
-fichiers. Vous devez toujours vérifier que le premier nom de
-fichier ne sera pas compris comme l'argument d'une option - cela
-veut simplement dire que si une option de type logique comme <code>-n</code> ou <code>-l</code>
-précède immédiatement un nom de
-fichier, il faut ajouter le mot "true" comme argument. Par
-exemple, la commande </p>
-<p><code>jabref -o filetoexport.xml,docbook -n true original.bib</code>
-
-</p>
-<p> va charger correctement le fichier <code>original.bib</code> et l'exporter au format docbook dans le fichier <code>filetoexport.xml</code> sans afficher l'interface graphique. Le mot <em>true</em> évite que le nom de fichier ne soit interpréter comme un argument de l'option <code>-n</code>
-
-</p>
-<h2>Aide : -h</h2>
-
-Cette option demande à JabRef d'afficher un
-résumé des options possibles avec la ligne de
-commande et de quitter immédiatement.
-<h2>No-GUI mode : -n</h2>
-Cette
-option supprime le lancement de l'interface graphique et du logo JabRef
-qui apparaît normalement au démarrage de l'application. Elle
-permet la sortie du programme immédiatement après
-l'exécution des autres options.
-
-<p>Cette option est quelque fois utile pour réaliser
-des opérations de conversion à partir de la ligne de
-commande ou dans un script.</p>
-
-<h2>Chargement d'une session : -l</h2>
-
-Cette option demande à JabRef de charger la session
-sauvegardée, si elle existe, avant d'ouvrir la
-fenêtre principale.<br>
-
-<h2>Importation de fichier : -i nomdefichier[,format]</h2>
-
-Cette option demande à JabRef d'importer ou de charger le
-fichier indiqué. Si on n'indique que le nom du fichier, il
-est chargé comme un fichier BibTeX. Si le fichier est suivi
-d'une virgule et d'un format d'importation, le filtre d'importation
-correspondant est utilisé. Utilisez l'option <code>-h</code> pour obtenir la liste des formats d'importations disponibles.<br>
-
-<br>
-
-Si une option de sortie est ajoutée, l'importation aura
-toujours lieu avant et le fichier importé ou
-chargé sera ensuite converti selon le format d'exportation.
-Si l'interface graphique (GUI) n'est pas supprimée avec
-l'option <code>-n</code>, les fichiers importés ou chargés seront affichés dans la fenêtre principale.<br>
-
-<br>
-
-L'option <code>-i</code>  ne peut être spécifiée qu'une seule fois et pour un seul fichier.<br>
-
-<h2>Exportation de fichier : -o nomdefichier[,format]</h2>
-
-Cette option demande à JabRef de sauvegarder ou d'exporter
-un fichier chargé ou importé par la
-même commande ligne. Si le fichier importé l'est
-via une option <code>-i</code>, alors la
-base de données sera exportée. Autrement, le
-fichier spécifié (et chargé avec
-succès) sans l'option <code>-i</code> sera exporté. <br>
-<br>
-Si seul le nom du fichier est indiqué, il est sauvegardé
-au format BibTeX. Si le fichier est suivi par une virgule et un format
-d'exportation, le filtre d'exportation demandé sera
-utilisé. Un filtre d'exportation personnel peut ainsi être
-utilisé et sera systématiquement
-préféré au style d'exportation standard de
-même nom.<br>
-<br>
-Utilisez l'option <code>-h</code> pour avoir la liste des formats disponibles.<br>
-<br>
-Si l'option <code>-n</code> n'a pas été
-utilisée, les opérations d'exportation sont faites avant
-l'ouverture de la fenêtre JabRef et la base importée ou
-chargée sera présente dans la fenêtre principale.<br>
-<br>
-L'option <code>-o</code> ne peut être utilisée qu'une seule fois et pour un seul fichier.<br>
-<h2>Exportation des préférences : -x nomdefichier</h2>
-Cette option indique à JabRef d'exporter sous forme d'un
-fichier .xml, l'ensemble des préférences de
-l'utilisateur. Après l'exportation, JabRef est lancé
-normalement.<br>
-<h2>Importation des préférences : -p nomdefichier</h2>
-Cette option indique à JabRef d'importer les
-préférences de l'utilisateur préalablement
-exportées avec l'option <code>-x</code>. Après l'importation, JabRef démarre normalement.<br>
-<h2>Exportation des entrées utilisées : -a nomdefichier[.aux],nouvelleBaseBib[.bib]</h2>
-Il est quelques fois utile d'avoir un fichier BibTeX qui ne contienne
-que les références BibTeX utilisées. Une liste de
-ces entrées utilisées est stockée dans un fichier
-.aux. JabRef peut analyser ce fichier pour générer
-un nouveau fichier BibTeX qui ne contiendra que les entrées
-connues et utilisées. Cela veut dire que si une entrée
-n'est pas définie dans le fichier BibTeX courant, elle ne sera
-pas intégrée dans le nouveau fichier.
-
-</body></html>
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Les options de la ligne de commande</h1>
+
+    <p>Bien que JabRef
+    soit d'abord une application graphique, il offre plusieurs
+    options pour la ligne de commande qui peuvent être utiles
+    et qui peuvent réaliser des opérations de
+    conversion de fichiers sans avoir à ouvrir l'interface
+    graphique.</p>
+
+    <p>Vous pouvez spécifier le chargement d'un ou de
+    plusieurs fichiers BibTeX en indiquant simplement leurs noms.
+    Prenez la précaution de spécifier l'ensemble des
+    options avant la liste des fichiers. Vous devez toujours
+    vérifier que le premier nom de fichier ne sera pas
+    compris comme l'argument d'une option - cela veut simplement
+    dire que si une option de type logique comme <code>-n</code> ou
+    <code>-l</code> précède immédiatement un
+    nom de fichier, il faut ajouter le mot "true" comme argument.
+    Par exemple, la commande</p>
+
+    <p><code>jabref -o filetoexport.xml,docbook -n true
+    original.bib</code></p>
+
+    <p>va charger correctement le fichier <code>original.bib</code>
+    et l'exporter au format docbook dans le fichier
+    <code>filetoexport.xml</code> sans afficher l'interface
+    graphique. Le mot <em>true</em> évite que le nom de
+    fichier ne soit interpréter comme un argument de
+    l'option <code>-n</code></p>
+
+    <h2>Aide : -h</h2>
+
+    <p>Cette option demande à JabRef
+    d'afficher un résumé des options possibles avec
+    la ligne de commande et de quitter immédiatement.</p>
+
+    <h2>No-GUI mode : -n</h2>
+
+    <p>Cette option supprime le
+    lancement de l'interface graphique et du logo JabRef qui
+    apparaît normalement au démarrage de
+    l'application. Elle permet la sortie du programme
+    immédiatement après l'exécution des autres
+    options.</p>
+
+    <p>Cette option est quelque fois utile pour réaliser des
+    opérations de conversion à partir de la ligne de
+    commande ou dans un script.</p>
+
+    <h2>Chargement d'une session : -l</h2>
+
+    <p>Cette option demande
+    à JabRef de charger la session sauvegardée, si
+    elle existe, avant d'ouvrir la fenêtre principale.</p>
+
+    <h2>Importation de fichier : -i
+    nomdefichier[,format]</h2>
+
+    <p>Cette option demande à JabRef
+    d'importer ou de charger le fichier indiqué. Si on
+    n'indique que le nom du fichier, il est chargé comme un
+    fichier BibTeX. Si le fichier est suivi d'une virgule et d'un
+    format d'importation, le filtre d'importation correspondant est
+    utilisé. Utilisez l'option <code>-h</code> pour obtenir
+    la liste des formats d'importations disponibles.</p>
+
+    <p>Si une option de sortie est ajoutée, l'importation aura
+    toujours lieu avant et le fichier importé ou
+    chargé sera ensuite converti selon le format
+    d'exportation. Si l'interface graphique (GUI) n'est pas
+    supprimée avec l'option <code>-n</code>, les fichiers
+    importés ou chargés seront affichés dans
+    la fenêtre principale.</p>
+
+    <p>L'option <code>-i</code>  ne peut être
+    spécifiée qu'une seule fois et pour un seul
+    fichier.</p>
+
+    <h2>Exportation de fichier : -o
+    nomdefichier[,format]</h2>
+
+    <p>Cette option demande à JabRef
+    de sauvegarder ou d'exporter un fichier chargé ou
+    importé par la même commande ligne. Si le fichier
+    importé l'est via une option <code>-i</code>, alors la
+    base de données sera exportée. Autrement, le
+    fichier spécifié (et chargé avec
+    succès) sans l'option <code>-i</code> sera
+    exporté. </p>
+
+    <p>Si seul le nom du fichier est indiqué, il est
+    sauvegardé au format BibTeX. Si le fichier est suivi par
+    une virgule et un format d'exportation, le filtre d'exportation
+    demandé sera utilisé. Un filtre d'exportation
+    personnel peut ainsi être utilisé et sera
+    systématiquement préféré au style
+    d'exportation standard de même nom.</p>
+
+    <p>Utilisez l'option <code>-h</code> pour avoir la liste des
+    formats disponibles.</p>
+
+    <p>Si l'option <code>-n</code> n'a pas été
+    utilisée, les opérations d'exportation sont
+    faites avant l'ouverture de la fenêtre JabRef et la base
+    importée ou chargée sera présente dans la
+    fenêtre principale.</p>
+
+    <p>L'option <code>-o</code> ne peut être utilisée
+    qu'une seule fois et pour un seul fichier.</p>
+
+    <h2>Exportation des préférences : -x
+    nomdefichier</h2>
+
+    <p>Cette option indique à JabRef
+    d'exporter sous forme d'un fichier .xml, l'ensemble des
+    préférences de l'utilisateur. Après
+    l'exportation, JabRef est lancé normalement.</p>
+
+    <h2>Importation des préférences : -p
+    nomdefichier</h2>
+
+    <p>Cette option indique à JabRef
+    d'importer les préférences de l'utilisateur
+    préalablement exportées avec l'option
+    <code>-x</code>. Après l'importation, JabRef
+    démarre normalement.</p>
+
+    <h2>Exportation des entrées utilisées : -a
+    nomdefichier[.aux],nouvelleBaseBib[.bib]</h2>
+
+    <p>Il est quelques
+    fois utile d'avoir un fichier BibTeX qui ne contienne que les
+    références BibTeX utilisées. Une liste de
+    ces entrées utilisées est stockée dans un
+    fichier .aux. JabRef peut analyser ce fichier pour
+    générer un nouveau fichier BibTeX qui ne
+    contiendra que les entrées connues et utilisées.
+    Cela veut dire que si une entrée n'est pas
+    définie dans le fichier BibTeX courant, elle ne sera pas
+    intégrée dans le nouveau fichier.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/ContentSelectorHelp.html b/src/help/fr/ContentSelectorHelp.html
index bf33f41..8679d50 100644
--- a/src/help/fr/ContentSelectorHelp.html
+++ b/src/help/fr/ContentSelectorHelp.html
@@ -1,24 +1,32 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="fr-fr">
-<head>
-    <title>Sélecteur de mots</title>
-  </head>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      lang="fr-fr">
 
 <body style="color: rgb(39, 88, 86); direction: ltr;">
-<basefont size="4" color="#2F4958" face="arial">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<h1>Sélecteur de contenu de champ</h1>
+    <h1>Sélecteur de contenu de champ</h1>
 
-<p>
-Cette opération vous permet d'enregistrer une sélection de mots et de phrases que vous utilisez souvent dans votre base de données. Par défaut, c'est possible avec les champs <em>Journal</em>, <em>Author</em>, <em>Keywords</em> et <em>Publisher</em> mais vous pouvez aussi ajouter des sélecteurs à d'autres champs, en utilisant la partie supérieure de la fenêtre <i>Gérer les sélecteurs</i> (menu <strong> Outils --> G&eacu [...]
-</p>
+    <p>Cette opération vous permet d'enregistrer une
+    sélection de mots et de phrases que vous utilisez
+    souvent dans votre base de données. Par défaut,
+    c'est possible avec les champs <em>Journal</em>,
+    <em>Author</em>, <em>Keywords</em> et <em>Publisher</em> mais
+    vous pouvez aussi ajouter des sélecteurs à
+    d'autres champs, en utilisant la partie supérieure de la
+    fenêtre <i>Gérer les sélecteurs</i> (menu
+    <strong>Outils --> Gérer les sélecteurs de
+    contenu</strong>).</p>
 
-<p>
-La sélection des mots est spécifique à la base de données et sauvegardée avec vos références dans le fichier .bib.
-</p>
+    <p>La sélection des mots est spécifique à
+    la base de données et sauvegardée avec vos
+    références dans le fichier .bib.</p>
 
-<p>
-Pour ajouter un nouveau mot, vous pouvez simplement l'écrire dans la boite de sélection des mots et appuyer sur la touche Enter. A partir de la fenêtre <i>Gérer les sélecteurs</i>, vous pouvez aussi supprimer les mots que vous avez ajoutés.
-</p>
+    <p>Pour ajouter un nouveau mot, vous pouvez simplement
+    l'écrire dans la boite de sélection des mots et
+    appuyer sur la touche Enter. A partir de la fenêtre
+    <i>Gérer les sélecteurs</i>, vous pouvez aussi
+    supprimer les mots que vous avez ajoutés.</p>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/Contents.html b/src/help/fr/Contents.html
index 451c0ae..73e1933 100644
--- a/src/help/fr/Contents.html
+++ b/src/help/fr/Contents.html
@@ -1,49 +1,68 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-    <BODY text="#275856">
-    <basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-    <H1>Contenu de l'aide</H1>
+    <h1>Contenu de l'aide</h1>
 
-    <a href="HelpHelp.html">A propos de la fenêtre d'aide</a><br>
-    <a href="JabRefHelp.html">Informations générales</a><br>
-    <p>
-    <a href="BibtexHelp.html">Aide sur <em>BibTeX</em></a><br>
-    <a href="CommandLine.html">Options de la ligne de commande</a><br>
-    <a href="CustomExports.html">Filtres d'exportation personnalisés</a><br>
-    <a href="CustomImports.html">Filtres d'importation personnalisés</a><br>
-    <a href="LabelPatterns.html">Personnalisation du générateur de clefs BibTeX</a><br>
-    <a href="CustomEntriesHelp.html">Personnalisation des types d'entrées</a><br>
-    <a href="GeneralFields.html">Personnalisation des champs généraux</a><br>
-    <a href="EndNoteFilters.html">Filtres d'importation/exportation d'EndNote</a><br>
-    <a href="EntryEditorHelp.html">�diteur d'entrées</a><br>
-    <a href="TimeStampHelp.html">Horodatage des entrées</a><br>
-    <a href="CiteSeerHelp.html">Récupération des entrées depuis <em>CiteSeer</em></a><br>
-    <a href="MedlineHelp.html">Récupération des entrées depuis <em>Medline</em></a><br>
-    <a href="IEEEXploreHelp.html">Récupération des entrées depuis <em>IEEExplore</em></a><br>
-    <a href="ContentSelectorHelp.html">Sélecteur de contenu de champ</a><br>
-    <a href="GroupsHelp.html">Utilisation des <em>Groupes</em></a><br>
-    <a href="ImportInspectionDialog.html">Fenêtre de vérification des importations</a><br>
-    <a href="JournalAbbreviations.html">Abréviations de journaux</a><br>
-    <a href="BaseFrameHelp.html">La fenêtre principale de JabRef</a><br>
-    <a href="OwnerHelp.html">Le champ 'owner' (propriétaire)</a><br>
-    <a href="MarkingHelp.html">�tiqueter des entrées</a><br>
-    <a href="OpenOfficeHelp.html">Utiliser les bibliographies JabRef dans OpenOffice.org</a><br>
-    <a href="ExternalFiles.html">Liens PDF/PS/URL/DOI dans JabRef</a><br>
-    <a href="SearchHelp.html">Recherche dans JabRef</a><br>
-    <a href="StringEditorHelp.html">�diteur de chaînes</a><br>
-    <a href="PreviewHelp.html">Configuration de l'aperçu des entrées</a><br>
-    <a href="XMPHelp.html">Support des metadonn�es XMP dans JabRef</a>
+    <p><a href="HelpHelp.html">A propos de
+    la fenêtre d'aide</a><br />
+     <a href="JabRefHelp.html">Informations
+    générales</a></p>
 
 
-
-
-
-
-
-
-
-
-
-
-</HTML>
+    <p><a href="BibtexHelp.html">Aide sur <em>BibTeX</em></a><br />
+     <a href="CommandLine.html">Options de la ligne de
+    commande</a><br />
+     <a href="CustomExports.html">Filtres d'exportation
+    personnalisés</a><br />
+     <a href="CustomImports.html">Filtres d'importation
+    personnalisés</a><br />
+     <a href="LabelPatterns.html">Personnalisation du
+    générateur de clefs BibTeX</a><br />
+     <a href="CustomEntriesHelp.html">Personnalisation des types
+    d'entrées</a><br />
+     <a href="GeneralFields.html">Personnalisation des champs
+    généraux</a><br />
+     <a href="EndNoteFilters.html">Filtres
+    d'importation/exportation d'EndNote</a><br />
+     <a href="EntryEditorHelp.html">Éditeur
+    d'entrées</a><br />
+     <a href="FileLinks.html">Liens de fichiers externes</a><br />
+     <a href="TimeStampHelp.html">Horodatage des
+    entrées</a><br />
+     <a href="CiteSeerHelp.html">Récupération des
+    entrées depuis <em>CiteSeer</em></a><br />
+     <a href="MedlineHelp.html">Récupération des
+    entrées depuis <em>Medline</em></a><br />
+     <a href="IEEEXploreHelp.html">Récupération des
+    entrées depuis <em>IEEExplore</em></a><br />
+     <a href="ContentSelectorHelp.html">Sélecteur de contenu
+    de champ</a><br />
+     <a href="GroupsHelp.html">Utilisation des
+    <em>Groupes</em></a><br />
+     <a href="ImportInspectionDialog.html">Fenêtre de
+    vérification des importations</a><br />
+     <a href="JournalAbbreviations.html">Abréviations de
+    journaux</a><br />
+     <a href="BaseFrameHelp.html">La fenêtre principale de
+    JabRef</a><br />
+     <a href="OwnerHelp.html">Le champ 'owner'
+    (propriétaire)</a><br />
+     <a href="MarkingHelp.html">Étiqueter des
+    entrées</a><br />
+     <a href="OpenOfficeHelp.html">Utiliser les bibliographies
+    JabRef dans OpenOffice.org</a><br />
+     <a href="ExternalFiles.html">Liens PDF/PS/URL/DOI dans
+    JabRef</a><br />
+     <a href="SearchHelp.html">Recherche dans JabRef</a><br />
+     <a href="StringEditorHelp.html">Éditeur de
+    chaînes</a><br />
+     <a href="PreviewHelp.html">Configuration de l'aperçu
+    des entrées</a><br />
+     <a href="XMPHelp.html">Support des
+    metadonnées XMP dans JabRef</a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/CustomEntriesHelp.html b/src/help/fr/CustomEntriesHelp.html
index 5fc1536..37af71c 100644
--- a/src/help/fr/CustomEntriesHelp.html
+++ b/src/help/fr/CustomEntriesHelp.html
@@ -1,80 +1,100 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Personnaliser les types d'entrées</title>
-  </head>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-  <BODY text="#275856">
-    <basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
     <h1>Personnaliser les types d'entrées</h1>
-    <p>
-    Pour accéder à cette fonction, cliquez sur le menu 
-    <strong>Options --> Personnaliser les types d'entrées</strong>.
-    <p>
-    Lors de la personnalisation d'un type d'entrée, vous définissez à la fois son apparence
-    dans l'éditeur d'entrées et ce qui est nécessaire pour que JabRef considère une entrée comme
-    complète. Vous pouvez aussi bien changer les types d'entrée existants qu'en définir de nouveaux.
-    <p>
-    
-    Notez qu'aucune des modifications que vous effectuez dans cette fenêtre ne sera stockée tant
-    que vous n'aurez pas cliqué sur <b>Apply</b> ou <b>OK</b>. Si vous cliquez sur <b>Cancel</b>
-    ou si vous fermez simplement la fenêtre, les changements non-appliqués seront perdus.
-    
-    <h2>Utiliser la fenêtre de personnalisation des entrées</h2> 
-    
-La fenêtre de personnalisation des entrées est divisée en 3 panneaux principaux.
-Le panneau de gauche vous permet de sélectionner l'entrée à modifier, et d'en
-ajouter de nouvelles. Le panneau central est utilisé pour paramétrer les champs requis
-du type d'entrée sélectionné. Le panneau de droite est utilisé pour paramétrer les
-champs optionnels du type d'entrée sélectionné.
 
-
-<h3>Ajouter et supprimer des types d'entrées</h3>
-
-<p>Les types d'entrées actuellement disponibles sont listés dans le panneau de gauche.
-Lorsque vous sélectionnez un type d'entrée, les autres panneaux sont mis à jour afin
-d'afficher les champs requis et optionnels pour ce type d'entrée.
-
-<p>Pour ajouter un nouveau type d'entrées, vous devez entrer son nom dans le
-champ de texte situé sous la liste des types et cliquer sur <b>Ajouter</b>
-Le nouveau type d'entrées sera ajouté à la liste et sélectionné pour pouvoir être
-modifié.
-
-<p>Pour supprimer un type d'entrées personnalisé, sélectionnez-le et cliquez sur
-<b>Supprimer</b>. Cette opération n'est possible que pour les types d'entrées
-personnalisés qui ne sont pas de simples modifications des types standards. Il n'est
-pas possible de supprimer les types standards.
-
-
-<p>Pour qu'un type standard modifié reprenne ses valeurs par défaut, sélectionnez-le et 
-cliquez sur <b>Défaut</b>. Cette opération n'est possible que pour les types d'entrées
-personnalisés qui modifient un type standard.
-
-
-<h2>Editer les types d'entrées</h2>
-
-
-Quand un type d'entrées est sélectionné, ses champs requis et optionnels sont listés dans
-les panneaux du centre et de droite. La méthode d'édition des listes de champs est la même
-pour les champs requis et optionnels.
-
-
-<p>Pour ajouter un nouveau champ, éditez le champ de texte situé sous la liste,
-ou sélectionnez un nom de champ à partir du menu déroulant, puis cliquez sur 
-<b>Ajouter</b>. Le nom du champ sélectionné sera ajouté à la fin de la liste.
-
-<p>Pour supprimer un ou plusieurs champs, sélectionnez-les dans la liste et cliquez
-sur <b>Supprimer</b>.
-
-<p>Pour changer l'ordre des champs, sélectionner le nom d'un champ et cliquer sur les boutons
-en forme de flèches pour le déplacer vers le haut ou vers le bas de la liste.
-
-Il y a une limitation à la personnalisation des entrées ; certains
-types ont une condition "et/ou" dans les champs requis. Par exemple, 
-une entrée <em>book</em> est complète lorsque au moins un des champs
-<em>author</em> ou <em>editor</em> est rempli. Ce type de condition
-ne peut pas être introduite dans une entrée personnalisée.
-
-  </body>
-</html>
+    <p>Pour accéder à cette fonction, cliquez sur le
+    menu <strong>Options --> Personnaliser les types
+    d'entrées</strong>.</p>
+
+    <p>Lors de la personnalisation d'un type d'entrée, vous
+    définissez à la fois son apparence dans
+    l'éditeur d'entrées et ce qui est
+    nécessaire pour que JabRef considère une
+    entrée comme complète. Vous pouvez aussi bien
+    changer les types d'entrée existants qu'en
+    définir de nouveaux.</p>
+
+    <p>Notez qu'aucune des modifications que vous effectuez dans
+    cette fenêtre ne sera stockée tant que vous
+    n'aurez pas cliqué sur <b>Apply</b> ou <b>OK</b>. Si
+    vous cliquez sur <b>Cancel</b> ou si vous fermez simplement la
+    fenêtre, les changements non-appliqués seront
+    perdus.</p>
+
+    <h2>Utiliser la fenêtre de personnalisation des
+    entrées</h2>
+
+    <p>La fenêtre de personnalisation des
+    entrées est divisée en 3 panneaux principaux. Le
+    panneau de gauche vous permet de sélectionner
+    l'entrée à modifier, et d'en ajouter de
+    nouvelles. Le panneau central est utilisé pour
+    paramétrer les champs requis du type d'entrée
+    sélectionné. Le panneau de droite est
+    utilisé pour paramétrer les champs optionnels du
+    type d'entrée sélectionné.</p>
+
+    <h3>Ajouter et supprimer des types d'entrées</h3>
+
+    <p>Les types d'entrées actuellement disponibles sont
+    listés dans le panneau de gauche. Lorsque vous
+    sélectionnez un type d'entrée, les autres
+    panneaux sont mis à jour afin d'afficher les champs
+    requis et optionnels pour ce type d'entrée.</p>
+
+    <p>Pour ajouter un nouveau type d'entrées, vous devez
+    entrer son nom dans le champ de texte situé sous la
+    liste des types et cliquer sur <b>Ajouter</b> Le nouveau type
+    d'entrées sera ajouté à la liste et
+    sélectionné pour pouvoir être
+    modifié.</p>
+
+    <p>Pour supprimer un type d'entrées personnalisé,
+    sélectionnez-le et cliquez sur <b>Supprimer</b>. Cette
+    opération n'est possible que pour les types
+    d'entrées personnalisés qui ne sont pas de
+    simples modifications des types standards. Il n'est pas
+    possible de supprimer les types standards.</p>
+
+    <p>Pour qu'un type standard modifié reprenne ses valeurs
+    par défaut, sélectionnez-le et cliquez sur
+    <b>Défaut</b>. Cette opération n'est possible que
+    pour les types d'entrées personnalisés qui
+    modifient un type standard.</p>
+
+    <h2>Editer les types d'entrées</h2>
+
+    <p>Quand un type
+    d'entrées est sélectionné, ses champs
+    requis et optionnels sont listés dans les panneaux du
+    centre et de droite. La méthode d'édition des
+    listes de champs est la même pour les champs requis et
+    optionnels.</p>
+
+    <p>Pour ajouter un nouveau champ, éditez le champ de
+    texte situé sous la liste, ou sélectionnez un nom
+    de champ à partir du menu déroulant, puis cliquez
+    sur <b>Ajouter</b>. Le nom du champ sélectionné
+    sera ajouté à la fin de la liste.</p>
+
+    <p>Pour supprimer un ou plusieurs champs,
+    sélectionnez-les dans la liste et cliquez sur
+    <b>Supprimer</b>.</p>
+
+    <p>Pour changer l'ordre des champs, sélectionner le nom
+    d'un champ et cliquer sur les boutons en forme de
+    flèches pour le déplacer vers le haut ou vers le
+    bas de la liste. Il y a une limitation à la
+    personnalisation des entrées ; certains types ont
+    une condition "et/ou" dans les champs requis. Par exemple, une
+    entrée <em>book</em> est complète lorsque au
+    moins un des champs <em>author</em> ou <em>editor</em> est
+    rempli. Ce type de condition ne peut pas être introduite
+    dans une entrée personnalisée.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/CustomExports.html b/src/help/fr/CustomExports.html
index 24f928f..f32721f 100644
--- a/src/help/fr/CustomExports.html
+++ b/src/help/fr/CustomExports.html
@@ -1,181 +1,485 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>Filtres d'exportation personnalisés</h1>
-
-<p>
-JabRef vous permet de définir et d'utiliser vos propres filtres d'exportation de la même manière que les filtres d'exportation standards. Un filtre d'exportation est défini par un ou plusieurs <i>fichiers gabarit</i> qui, avec l'aide d'un certain nombre de routines internes de formatage, définissent le format des fichiers exportés. Vos fichiers gabarit doivent être préparés avec un éditeur de texte à l'exté [...]
-</p>
-
-<h2>Ajout d'un filtre d'exportation personnalisé </h2>
-
-<p>
-La seule obligation pour avoir un filtre d'exportation valide est l'existence d'un fichier avec l'extension <b>.layout</b>. Pour ajouter un nouveau filtre d'exportation, on utilise le menu <b>Options -> Gérer les exportations personnalisées</b>, et on clique sur <b>Ajouter nouvelle</b>. Une nouvelle boite de dialogue apparaît et vous permet de spécifier le nom du nouveau filtre d'exportation (ce nom apparaîtra ensuite comme l'un des choix du menu d&eacute [...]
-</p>
-
-
-<h2>Création d'un filtre d'exportation</h2>
-
-<p>
-Pour voir des exemples de constitution de filtres d'exportation, recherchez le répertoire contenant les fichiers gabarit des filtres d'exportation standards sur notre page de téléchargement.
-</p>
-
-<h3>Les fichiers gabarit</h3>
-
-<p>
-On suppose que l'on veut créer un filtre d'exportation pour une sortie HTML.
-</p>
-
-<p>
-Bien que le filtre d'exportation ne nécessite qu'un seul fichier <b>.layout</b>, qui dans ce cas pourrait s'appeler <i>html.layout</i>, vous pouvez désirer ajouter deux autres fichiers appelés <i>html.begin.layout</i> et <i>html.end.layout</i>. Le premier contient le début de la sortie et le dernier la fin. JabRef recherche ces deux fichiers quelque soit le fichier d'exportation utilisé et, s'il les trouve, les recopie tel quel dans la sortie avant et a [...]
-</p>
-
-<p>
-Il faut noter que ces fichiers doivent être dans le même répertoire que le fichier <i>html.layout</i>, et que leur nom doit comporter <b>.begin</b> pour l'un et <b>.end</b> pour l'autre.
-</p>
-
-<p>
-Dans notre exemple de fichier d'exportation, cela pourrait ressembler à
-</p>
-
-<p>
-<i>html.begin.layout</i> :<br>
-<code>
-<HTML><br>
-  <BODY> text="#275856"><br>
-<basefont size="4" color="#2F4958" face="arial">
-</code>
-</p>
-
-<p>
-<i>html.end.layout</i> :<br>
-<code>
-</BODY><br>
-  </HTML>
-</code>
-</p>
-
-<p>
-Le fichier <i>html.layout</i> fournit le gabarit par défaut pour l'exportation  d'une seule entrée. Si vous devez utiliser différents gabarits pour les différentes entrées, vous pouvez le faire en ajoutant des fichiers <b>.layout</b> spécifiques.
-Les fichiers doivent aussi être dans le même répertoire que le gabarit principal et ils sont nommés en insérant <b>.entrytype</b> dans le nom du fichier gabarit principal. Le nom de l'entrée doit être en minuscules.
-Dans notre exemple, on peut vouloir ajouter un gabarit différent pour les livres et cela se fera via le fichier <i>html.book.layout</i>. Pour une thèse, on ajoutera le fichier <i>html.phdthesis.layout</i>.
-Ces fichiers sont similaires au gabarit principal, si ce n'est qu'ils sont utilisés pour des entrées spécifiques. A noter que le gabarit général peut aisément être créé suffisamment général pour être utilisable avec la plupart des entrées dans la majorité des filtres d'exportation.
-</p>
-
-<h3>Le format des fichiers gabarit</h3>
-
-<p>
-Les fichiers gabarit utilisent un simple langage de balisage dans lequel les commandes sont identifiées par l'antislash (\) les précédant. Tout texte non identifié comme faisant partie d'une entrée est recopié tel quel dans le fichier de sortie.
-</p>
-
-<h3>Les commandes relatives aux champs</h3>
-
-<p>
-Les mots précédés d'un antislash, par exemple <code>\author</code>, <code>\editor</code>, <code>\title</code> ou <code>\year</code>, sont interprétés comme des références aux champs correspondants et le contenu du champ est copié directement dans la sortie.
-</p>
-
-<h3>Les formateurs de champs</h3>
-
-<p>
-Souvent, on a besoin de faire subir au contenu d'un champ un pré-traitement avant de le copier dans le fichier de sortie. Cela est réalisé en utilisant un <i>formateur de champ</i> - une classe java contenant une seule méthode qui manipule le contenu du champ.
-</p>
-
-<p>
-Le formateur est utilisé en insérant la commande <code>\format</code> suivie du nom du formateur entre crochets et du nom du champ entre accolades, par exemple
-</p>
-<p>
-<code>\format[ToLowerCase]{\author}</code>
-</p>
-
-<p>
-Vous pouvez aussi indiquer plusieurs formateurs séparés par des virgules. Ils seront alors appelés séquentiellement de la gauche vers la droite, par exemple :
-</p>
-<p>
-<code>\format[ToLowerCase,HTMLChars]{\author}</code>
-</p>
-<p>
-va d'abord appliquer le formateur <b>ToLowerCase</b> puis <b>HTMLChars</b> sur le résultat. Vous pouvez lister un nombre arbitraire de formateurs de cette manière.
-</p>
-
-<p>Le paramètre des formateurs, entre les accolades, n'est pas obligatoirement une commande de champ. Vous pouvez y insérer du texte normal, qui sera alors passé comme argument au formateur. Cela peut-être utile avec certains formateurs, par exemple le formateur CurrentDate (voir ci-dessous).
-</p>
-
-<p>
-JabRef fournit les formateurs suivants, certains d'entre eux dépendant d'autres formateurs :
-</p>
-
-<ul>
-<li><code>HTMLChars</code> : remplace les caractères spéciaux spécifiques à TeX  (par exemple : {\^a} ou {\"{o}}) par leur représentation HTML.
-<li><code>XMLChars</code> : remplace les caractères spéciaux spécifiques à TeX  (par exemple : {\^a} ou {\"{o}}) par leur représentation XML.
-<li><code>CreateDocBookAuthors</code> : formate le contenu du champ author selon le style DocBook.
-<li><code>CurrentDate</code> : renvoie la date actuelle. Sans argument, ce formateur renvoie la date et l'heure actuelle au format "yyyy.MM.dd hh:mm:ss z" (date, heure et fuseau horaire). En donnant une chaîne de format différent comme argument, le format de la date peut-être adapté. Par exemple,
-<code>\format[CurrentDate]{yyyy.MM.dd}</code> renverra uniquement la date, comme par exemple 2005.11.30.
-<li><code>AuthorFirstFirst</code> : formate le contenu des champs author/editor en mettant les prénoms en premier.
-<li><code>AuthorFirstFirstCommas</code> : formate le contenu des champs author/editor en mettant les prénoms en premier et des virgules comme séparateurs.
-<li><code>AuthorLastFirst</code> : formate le contenu des champs author/editor en mettant le nom de famille en premier.
-<li><code>AuthorLastFirstAbbreviator</code> : réduit les prénoms de tous les auteurs à leurs initiales. Ce formateur nécessite d'avoir préalablement utilisé AuthorLastFirst.
-<li><code>AuthorAndsReplacer</code> : remplace "and" par ";" entre les premiers noms et par "&" entre les deux derniers.
-<li><code>AuthorAndsCommaReplacer</code> : remplace "and" entre les noms par une virgule (",") et "&" entre les deux derniers.
-<li><code>AuthorOrgSci</code> : premier auteur selon "nom, pr�nom" et tous les autres selon "prénom nom". Les pr�noms sont abr�g�s.
-<li><code>AuthorAbbreviator</code> : A documenter.
-<li><code>AuthorNatBib</code> : Formats des noms d'auteurs dans le style NatBin, avec les noms propres séparés par "and" s'il y a deux auteurs, ou le premier nom suivi de "et al." s'il y en a plus de deux.
-<li><code>FormatPagesForHTML</code> : remplace "--" par "-".
-  <li><code>FormatPagesForXML</code> : remplace "--" par un tiret XML.
-<li><code>RemoveBrackets</code> : supprime toutes les accolades "{" ou "}".
-<li><code>RemoveLatexCommands</code> : supprime toutes les commandes LaTeX comme <code>\em</code>, <code>\textbf</code>, etc. Lorsqu'il est utilisé avec <code>HTMLChars</code> ou <code>XMLChars</code>, ce formateur doit être appelé en dernier.
-<li><code>RemoveTilde</code> : remplace le caractère tilde (utilisé dans LaTeX comme un espace ins�cable) par un espace normal. Utile en combinaison avec NameFormatter comme discuté dans la prochaine section.
-<li><code>ToLowerCase</code> : bascule tous les caractères en minuscules.
-</ul>
-
-<p>
-Si aucun des formateurs disponibles ne peut faire ce que vous désirez, vous pouvez ajouter le votre à l'interface <code> net.sf.jabref.export.layout.LayoutFormatter</code>. Si vous insérez votre propre classe dans <code>net.sf.jabref.export.layout.format</code>, vous pouvez appeler votre formateur en utilisant son nom de classe, comme pour les formateurs standards. Sinon, vous devez appeler le formateur par son nom complet (incluant le nom du package). Dans les deux  [...]
-</p>
-
-<h3>Les sorties conditionnelles</h3>
-<p>
-Certaines informations dans les sorties ne prennent de sens que si un certain champ est utilisé. Par exemple, disons que l'on veuille faire suivre le nom de l'éditeur par le texte <code>(Ed.)</code>. Cela peut être réalisé avec le code suivant :
-</p>
-
-<p>
-<code>\format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)</code>
-</p>
-
-<p>
-Cependant, si le champs <code>editor</code> n'a pas été renseigné - il n'a pas de sens pour l'entrée exportée - le texte <code>(Ed.)</code> doit être ignoré. Cela peut être effectué en utilisant les commandes <code>\begin</code> et <code>\end</code> :
-</p>
-
-<p>
-<code>\begin{editor}<br>\format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)
-<br>\end{editor}</code>
-</p>
-
-<p>Les commandes <code>\begin</code> et <code>\end</code> assure que le texte contenu entre les deux commandes ne sera imprimé que si et seulement si le champ spécifié entre accolades est renseigné dans l'entrée que l'on veut exporter.
-</p>
-
-<p>
-<b>Note :</b> L'utilisation des commandes <code>\begin</code> et <code>\end</code> est une manière astucieuse de créer des gabarits qui sont communs à une grande variété d'entrées.
-</p>
-
-<h3>Les sorties groupées</h3>
-
-<p>
-Si vous désirez séparer vos entrées en groupes basés sur un certain champ, vous pouvez utiliser les commandes de sorties groupées. La sortie groupée est assez similaire aux sorties conditionnelles, excepté que le texte spécifié n'est imprimé que si le champ indiqué dans les accolades change de valeur.
-</p>
-
-<p>
-Par exemple, on suppose que l'on désire faire des groupes à partir de mots-clefs. Avant l'exportation, on s'assure que les entrées sont triées selon les mots-clefs. Ensuite, on utilise les commandes suivantes pour les grouper par mot-clefs :
-</p>
-<p>
-<code>\begingroup{keywords}New Category: \format[HTMLChars]{\keywords}
-<br>    \endgroup{keywords}</code>
-</p>
-
-<h2>Partage de votre travail </h2>
-
-<p>
-Avec les fichiers gabarit externes, il est relativement simple de partager des formats d'exportation entre utilisateurs. Si vous écrivez un filtre d'exportation pour un format non supporté par JabRef, ou si vous améliorez un filtre déjà existant, nous vous encourageons à déposer votre travail sur notre page SourceForge.net. La même chose est possible pour les nouvelles classes de formateur que vous avez écrites. Nous serons he [...]
-</p>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Filtres d'exportation personnalisés</h1>
+
+    <p>JabRef vous permet de définir et d'utiliser vos
+    propres filtres d'exportation de la même manière
+    que les filtres d'exportation standards. Un filtre
+    d'exportation est défini par un ou plusieurs <i>fichiers
+    gabarit</i> qui, avec l'aide d'un certain nombre de routines
+    internes de formatage, définissent le format des
+    fichiers exportés. Vos fichiers gabarit doivent
+    être préparés avec un éditeur de
+    texte à l'extérieur de JabRef.</p>
+
+    <h2>Ajout d'un filtre d'exportation personnalisé</h2>
+
+    <p>La seule obligation pour avoir un filtre d'exportation
+    valide est l'existence d'un fichier avec l'extension
+    <b>.layout</b>. Pour ajouter un nouveau filtre d'exportation,
+    on utilise le menu <b>Options -> Gérer les
+    exportations personnalisées</b>, et on clique sur
+    <b>Ajouter nouvelle</b>. Une nouvelle boite de dialogue
+    apparaît et vous permet de spécifier le nom du
+    nouveau filtre d'exportation (ce nom apparaîtra ensuite
+    comme l'un des choix du menu déroulant "Type de fichier"
+    de la fenêtre de dialogue affectée au menu
+    <b>Fichier -> Exporter</b> de la fenêtre principale de
+    JabRef), le chemin du fichier <b>.layout</b>, et l'extension de
+    fichier préférée par le filtre
+    d'exportation (c'est cette extension qui sera
+    suggérée dans la boite de dialogue lorsque le
+    filtre sera utilisé).</p>
+
+    <h2>Création d'un filtre d'exportation</h2>
+
+    <p>Pour voir des exemples de constitution de filtres
+    d'exportation, recherchez le répertoire contenant les
+    fichiers gabarit des filtres d'exportation standards sur notre
+    page de téléchargement.</p>
+
+    <h3>Les fichiers gabarit</h3>
+
+    <p>On suppose que l'on veut créer un filtre
+    d'exportation pour une sortie HTML.</p>
+
+    <p>Bien que le filtre d'exportation ne nécessite qu'un
+    seul fichier <b>.layout</b>, qui dans ce cas pourrait s'appeler
+    <i>html.layout</i>, vous pouvez désirer ajouter deux
+    autres fichiers appelés <i>html.begin.layout</i> et
+    <i>html.end.layout</i>. Le premier contient le début de
+    la sortie et le dernier la fin. JabRef recherche ces deux
+    fichiers quelque soit le fichier d'exportation utilisé
+    et, s'il les trouve, les recopie tel quel dans la sortie avant
+    et après l'écriture des entrées
+    individuelles.</p>
+
+    <p>Il faut noter que ces fichiers doivent être dans le
+    même répertoire que le fichier <i>html.layout</i>,
+    et que leur nom doit comporter <b>.begin</b> pour l'un et
+    <b>.end</b> pour l'autre.</p>
+
+    <p>Dans notre exemple de fichier d'exportation, cela pourrait
+    ressembler à</p>
+
+    <p><i>html.begin.layout</i> :<br />
+    <code><HTML><br />
+     <BODY> text="#275856"><br />
+    <basefont size="4" color="#2F4958"
+    face="arial"></code></p>
+
+    <p><i>html.end.layout</i> :<br />
+    <code></BODY><br />
+     </HTML></code></p>
+
+    <p>Le fichier <i>html.layout</i> fournit le gabarit par
+    défaut pour l'exportation d'une seule entrée. Si
+    vous devez utiliser différents gabarits pour les
+    différentes entrées, vous pouvez le faire en
+    ajoutant des fichiers <b>.layout</b> spécifiques. Les
+    fichiers doivent aussi être dans le même
+    répertoire que le gabarit principal et ils sont
+    nommés en insérant <b>.entrytype</b> dans le nom
+    du fichier gabarit principal. Le nom de l'entrée doit
+    être en minuscules. Dans notre exemple, on peut vouloir
+    ajouter un gabarit différent pour les livres et cela se
+    fera via le fichier <i>html.book.layout</i>. Pour une
+    thèse, on ajoutera le fichier
+    <i>html.phdthesis.layout</i>. Ces fichiers sont similaires au
+    gabarit principal, si ce n'est qu'ils sont utilisés pour
+    des entrées spécifiques. A noter que le gabarit
+    général peut aisément être
+    créé suffisamment général pour
+    être utilisable avec la plupart des entrées dans
+    la majorité des filtres d'exportation.</p>
+
+    <h3>Le format des fichiers gabarit</h3>
+
+    <p>Les fichiers gabarit utilisent un simple langage de balisage
+    dans lequel les commandes sont identifiées par
+    l'antislash (\) les précédant. Tout texte non
+    identifié comme faisant partie d'une entrée est
+    recopié tel quel dans le fichier de sortie.</p>
+
+    <h3>Les commandes relatives aux champs</h3>
+
+    <p>Les mots précédés d'un antislash, par
+    exemple <code>\author</code>, <code>\editor</code>,
+    <code>\title</code> ou <code>\year</code>, sont
+    interprétés comme des références
+    aux champs correspondants et le contenu du champ est
+    copié directement dans la sortie.</p>
+
+    <h3>Les formateurs de champs</h3>
+
+    <p>Souvent, on a besoin de faire subir au contenu d'un champ un
+    pré-traitement avant de le copier dans le fichier de
+    sortie. Cela est réalisé en utilisant un
+    <i>formateur de champ</i> - une classe java contenant une seule
+    méthode qui manipule le contenu du champ.</p>
+
+    <p>Le formateur est utilisé en insérant la
+    commande <code>\format</code> suivie du nom du formateur entre
+    crochets et du nom du champ entre accolades, par exemple</p>
+
+    <p><code>\format[ToLowerCase]{\author}</code></p>
+
+    <p>Vous pouvez aussi indiquer plusieurs formateurs
+    séparés par des virgules. Ils seront alors
+    appelés séquentiellement de la gauche vers la
+    droite, par exemple :</p>
+
+    <p><code>\format[ToLowerCase,HTMLChars]{\author}</code></p>
+
+    <p>va d'abord appliquer le formateur <b>ToLowerCase</b> puis
+    <b>HTMLChars</b> sur le résultat. Vous pouvez lister un
+    nombre arbitraire de formateurs de cette manière.</p>
+
+    <p>Le paramètre des formateurs, entre les accolades,
+    n'est pas obligatoirement une commande de champ. Vous pouvez y
+    insérer du texte normal, qui sera alors passé
+    comme argument au formateur. Cela peut-être utile avec
+    certains formateurs, par exemple le formateur CurrentDate (voir
+    ci-dessous).</p>
+
+    <p>JabRef fournit les formateurs suivants, certains d'entre eux
+    dépendant d'autres formateurs :</p>
+
+    <ul>
+        <li><code>HTMLChars</code> : remplace les
+        caractères spéciaux spécifiques
+        à TeX (par exemple : {\^a} ou {\"{o}}) par leur
+        représentation HTML.</li>
+
+        <li><code>HTMLParagraphs</code> : interprète
+        deux retours-chariot consécutifs (comme \n \n) comme
+        le début d'un nouveau paragraphe et crée les
+        balises html de paragraphes appropriées.</li>
+
+        <li><code>XMLChars</code> : remplace les
+        caractères spéciaux spécifiques
+        à TeX (par exemple : {\^a} ou {\"{o}}) par leur
+        représentation XML.</li>
+
+        <li><code>CreateDocBookAuthors</code> : formate le
+        contenu du champ author selon le style DocBook.</li>
+
+        <li><code>CreateDocBookEditors</code> : à
+        documenter.</li>
+
+        <li><code>CurrentDate</code> : renvoie la date
+        actuelle. Sans argument, ce formateur renvoie la date et
+        l'heure actuelle au format "yyyy.MM.dd hh:mm:ss z" (date,
+        heure et fuseau horaire). En donnant une chaîne de
+        format différent comme argument, le format de la
+        date peut-être adapté. Par exemple,
+        <code>\format[CurrentDate]{yyyy.MM.dd}</code> renverra
+        uniquement la date, comme par exemple 2005.11.30.</li>
+
+        <li><code>AuthorFirstFirst</code> : formate le contenu
+        des champs author/editor en mettant les prénoms en
+        premier.</li>
+
+        <li><code>AuthorFirstFirstCommas</code> : formate le
+        contenu des champs author/editor en mettant les
+        prénoms en premier et des virgules comme
+        séparateurs.</li>
+
+        <li><code>AuthorFirstAbbrLastCommas</code> : à
+        documenter.</li>
+
+        <li><code>AuthorFirstAbbrLastOxfordCommas</code> :
+        à documenter.</li>
+
+        <li><code>AuthorFirstLastOxfordCommas</code> :
+        à documenter.</li>
+
+        <li><code>AuthorLastFirst</code> : formate le contenu
+        des champs author/editor en mettant le nom de famille en
+        premier.</li>
+
+        <li><code>AuthorLastFirstAbbreviator</code> :
+        réduit les prénoms de tous les auteurs
+        à leurs initiales. Ce formateur nécessite
+        d'avoir préalablement utilisé
+        AuthorLastFirst.</li>
+
+        <li><code>AuthorLastFirstCommas</code> : à
+        documenter.</li>
+
+        <li><code>AuthorLastFirstOxfordCommas</code> :
+        à documenter.</li>
+
+        <li><code>AuthorLastFirstAbbrCommas</code> : à
+        documenter.</li>
+
+        <li><code>AuthorLastFirstAbbrOxfordCommas</code> :
+        à documenter.</li>
+
+        <li><code>AuthorAndsReplacer</code> : remplace "and"
+        par ";" entre les premiers noms et par "&" entre les
+        deux derniers.</li>
+
+        <li><code>AuthorAndsCommaReplacer</code> : remplace
+        "and" entre les noms par une virgule (",") et "&" entre
+        les deux derniers.</li>
+
+        <li><code>AuthorOrgSci</code> : premier auteur selon
+        "nom, prénom" et tous les autres selon
+        "prénom nom". Les prénoms sont
+        abrégés.</li>
+
+        <li><code>AuthorAbbreviator</code> : A
+        documenter.</li>
+
+        <li><code>AuthorNatBib</code> : Formats des noms
+        d'auteurs dans le style NatBib, avec les noms propres
+        séparés par "and" s'il y a deux auteurs, ou
+        le premier nom suivi de "et al." s'il y en a plus de
+        deux.</li>
+
+        <li><code>NoSpaceBetweenAbbreviations</code> : Les espaces
+        entre les initiales des prénoms sont
+        supprimés.</li>
+
+        <li><code>FileLink</code> : sans argument, ce formateur renvoie
+        le premier lien apparaissant dans le champ. Pour fonctionner, ce formateur doit
+        être alimenté par le contenu du champ "file" (fichier).
+        <p>Ce formateur prend comme argument optionnel l'extension du type de fichier externe
+            spécifié entre parenthèses après le nom du formateur. Par exemple,
+            <code>\format[FileLink(pdf)]{\file}</code> spécifie <code>pdf</code> comme un
+            argument. Quand un argument est fourni, le formateur sélectionne le premier lien
+            vers un fichier du type spécifié. Dans l'exemple, le chemin vers le premier lien PDF
+            sera renvoyé.</p></li>
+
+        <li><code>FormatPagesForHTML</code> : remplace "--"
+        par "-".</li>
+
+        <li><code>FormatPagesForXML</code> : remplace "--" par
+        un tiret XML.</li>
+
+        <li><code>RemoveBrackets</code> : supprime toutes les
+        accolades "{" ou "}".</li>
+
+        <li><code>RemoveBracketsAddComma</code> : à
+        documenter.</li>
+
+        <li><code>RemoveWhitespace</code> : à
+        documenter.</li>
+
+        <li><code>RemoveLatexCommands</code> : supprime toutes
+        les commandes LaTeX comme <code>\em</code>,
+        <code>\textbf</code>, etc. Lorsqu'il est utilisé
+        avec <code>HTMLChars</code> ou <code>XMLChars</code>, ce
+        formateur doit être appelé en dernier.</li>
+
+        <li><code>RemoveTilde</code> : remplace le
+        caractère tilde (utilisé dans LaTeX comme un
+        espace insécable) par un espace normal. Utile en
+        combinaison avec NameFormatter comme discuté dans la
+        prochaine section.</li>
+
+        <li><code>ToLowerCase</code> : bascule tous les
+        caractères en minuscules.</li>
+
+        <li><code>CompositeFormat</code> : à
+        documenter.</li>
+
+        <li><code>GetOpenOfficeType</code> : à
+        documenter.</li>
+
+        <li><code>RTFChars</code> : à documenter.</li>
+
+        <li><code>ResolvePDF</code> : à
+        documenter.</li>
+    </ul>
+
+    <p>Si aucun des formateurs disponibles ne peut faire ce que
+    vous désirez, vous pouvez ajouter le votre à
+    l'interface
+    <code>net.sf.jabref.export.layout.LayoutFormatter</code>. Si
+    vous insérez votre propre classe dans
+    <code>net.sf.jabref.export.layout.format</code>, vous pouvez
+    appeler votre formateur en utilisant son nom de classe, comme
+    pour les formateurs standards. Sinon, vous devez appeler le
+    formateur par son nom complet (incluant le nom du package).
+    Dans les deux cas, le formateur doit être dans votre
+    chemin de classe lorsque vous lancez JabRef</p>
+
+    <h2 id="NameFormatter">Utiliser des formateurs de nom
+    personnalisé</h2>
+
+    <p>Avec JabRef 2.2, il est maintenant possible de
+    définir des formateurs de nom personnalisés et
+    utilisant la syntaxe des fichiers de style BibTeX. Cela permet
+    une flexibilité totale, mais c'est fastidieux à
+    écrire</p>
+
+    <p>Vous pouvez définir votre propre formateur dans
+    l'onglet "Formateur de nom" des préférences en
+    utilisant le format suivant et en l'utilisant ensuite avec le
+    nom que vous avez défini comme de n'importe quel autre
+    formateur</p>
+    <code><cas1>@<gamme11>@<format>@<gamme12>@<format>@<gamme13>...@@<br />
+
+     <cas2>@<gamme21>@... et ainsi de suite.</code>
+
+    <p>Ce format commence par séparer la tache de formatage
+    de la liste d'auteurs dans des cas dépendant du nombre
+    d'auteurs qu'il y a (c'est ainsi car certains formats
+    diffèrent en fonction du nombre d'auteurs). Chaque cas
+    individuel est séparé par @@ et contient les
+    instructions sur la façon de formater chaque auteur dans
+    le cas considéré. Ces instructions sont
+    séparées par un @.</p>
+
+    <p>Les cas sont identifiés en utilisant des entiers (1,
+    2, 3, etc.) ou le caractère * (correspondant à
+    n'importe quel nombre d'auteurs) et spécifieront le
+    formateur à appliquer s'il y a un nombre
+    inférieur ou égal d'auteurs.</p>
+
+    <p>Les gammes sont soit
+    <code><entier>..<entier></code>,
+    <code><entier></code> ou le caractère
+    <code>*</code> en utilisant un index basé sur 1 pour
+    indexer les auteurs d'une liste donnée d'auteurs. Les
+    index entiers peuvent être négatif afin de
+    signifier qu'ils commencent par la fin de la liste où -1
+    est le dernier auteur.</p>
+
+    <p>Par exemple, avec une liste d'auteurs comme "Joe Doe and
+    Mary Jane and Bruce Bar and Arthur Kay":</p>
+
+    <ul>
+        <li>1..3 affectera Joe, Mary and Bruce</li>
+
+        <li>4..4 affectera Arthur</li>
+
+        <li>* les affectera tous</li>
+
+        <li>2..-1 affectera Mary, Bruce and Arthur</li>
+    </ul>
+
+    <p>Les chaînes de <code><format></code> utilisent
+    le format du formateur BibTeX :</p>
+
+    <p>Les quatre lettres v, f, l et j indiquent les parties du nom
+    von, first, last et jr qui sont utilisées entre
+    accolades. Une unique lettre v, f, l ou j indique que le nom
+    doit être abrégé. Si l'une de ces lettres
+    ou paires de lettres sont rencontrées, JabRef retournera
+    tous les noms respectifs (potentiellement
+    abrégés), mais l'expression totale entre
+    accolades est uniquement imprimée si la partie du nom
+    existe.</p>
+
+    <p>Par exemple, si le format est "{ll} {vv {von Part}} {ff}" et
+    si les noms sont "Mary Kay and John von Neumann", alors JabRef
+    retournera "Kay Mary" (avec deux espaces entre le nom propre et
+    le prénom) et "Neuman von von Part John".</p>
+
+    <p>Je donne ici deux exemples, mais je préfèrerai
+    vous diriger vers la documentations BibTeX.</p>
+
+    <p>Exemple court : <code>"{ll}, {f.}"</code> va convertir
+    <code>"Joe Doe"</code> en <code>"Doe, J."</code></p>
+
+    <p>Exemple long :</p>
+
+    <blockquote>
+        <p>Pour convertir :</p>
+
+        <p><code>"Joe Doe and Mary Jane and Bruce Bar and Arthur
+        Kay"</code></p>
+
+        <p>en</p>
+
+        <p><code>"Doe, J., Jane, M., Bar, B. and Kay,
+        A."</code></p>
+
+        <p>vous devrez utiliser</p>
+
+        <p><code>1@*@{ll}, {f}.@@2 at 1@{ll}, {f}. at 2@ and {ll},
+        {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}. at -1@ and {ll},
+        {f}.</code></p>
+    </blockquote>
+
+    <p>Si quelqu'un souhaite écrire un meilleur didacticiel
+    sur ce sujet, envoyez un courriel sur l'une des listes de
+    diffusion de JabRef !</p>
+
+    <h3>Les sorties conditionnelles</h3>
+
+    <p>Certaines informations dans les sorties ne prennent de sens
+    que si un certain champ est utilisé. Par exemple, disons
+    que l'on veuille faire suivre le nom de l'éditeur par le
+    texte <code>(Ed.)</code>. Cela peut être
+    réalisé avec le code suivant :</p>
+
+    <p><code>\format[HTMLChars,AuthorFirstFirst]{\editor}
+    (Ed.)</code></p>
+
+    <p>Cependant, si le champs <code>editor</code> n'a pas
+    été renseigné - il n'a pas de sens pour
+    l'entrée exportée - le texte <code>(Ed.)</code>
+    doit être ignoré. Cela peut être
+    effectué en utilisant les commandes <code>\begin</code>
+    et <code>\end</code> :</p>
+
+    <p><code>\begin{editor}<br />
+    \format[HTMLChars,AuthorFirstFirst]{\editor} (Ed.)<br />
+     \end{editor}</code></p>
+
+    <p>Les commandes <code>\begin</code> et <code>\end</code>
+    assure que le texte contenu entre les deux commandes ne sera
+    imprimé que si et seulement si le champ
+    spécifié entre accolades est renseigné
+    dans l'entrée que l'on veut exporter.</p>
+
+    <p><b>Note :</b> L'utilisation des commandes
+    <code>\begin</code> et <code>\end</code> est une manière
+    astucieuse de créer des gabarits qui sont communs
+    à une grande variété d'entrées.</p>
+
+    <h3>Les sorties groupées</h3>
+
+    <p>Si vous désirez séparer vos entrées en
+    groupes basés sur un certain champ, vous pouvez utiliser
+    les commandes de sorties groupées. La sortie
+    groupée est assez similaire aux sorties conditionnelles,
+    excepté que le texte spécifié n'est
+    imprimé que si le champ indiqué dans les
+    accolades change de valeur.</p>
+
+    <p>Par exemple, on suppose que l'on désire faire des
+    groupes à partir de mots-clefs. Avant l'exportation, on
+    s'assure que les entrées sont triées selon les
+    mots-clefs. Ensuite, on utilise les commandes suivantes pour
+    les grouper par mot-clefs :</p>
+
+    <p><code>\begingroup{keywords}New Category:
+    \format[HTMLChars]{\keywords}<br />
+     \endgroup{keywords}</code></p>
+
+    <h2>Partage de votre travail</h2>
+
+    <p>Avec les fichiers gabarit externes, il est relativement
+    simple de partager des formats d'exportation entre
+    utilisateurs. Si vous écrivez un filtre d'exportation
+    pour un format non supporté par JabRef, ou si vous
+    améliorez un filtre déjà existant, nous
+    vous encourageons à déposer votre travail sur
+    notre page SourceForge.net. La même chose est possible
+    pour les nouvelles classes de formateur que vous avez
+    écrites. Nous serons heureux de distribuer une
+    collection des fichiers gabarit soumis ou de les ajouter
+    à la série des filtres d'exportation standard ou
+    des formateurs.</p>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/CustomImports.html b/src/help/fr/CustomImports.html
index ef9ec19..9760bbf 100644
--- a/src/help/fr/CustomImports.html
+++ b/src/help/fr/CustomImports.html
@@ -1,36 +1,109 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Filtres d'importation personnalisés</H1>
-
-<p>JabRef vous permet de définir et d'utiliser vos propres formats d'importation, d'une façon très similaire aux filtres d'importation standard qui sont définis. Un filtre d'importation est défini par une ou plusieurs <i>classes</i> Java qui analyse le contenu d'un fichier à partir d'un flux d'entrée et crée des entrées BibTeX. Ainsi, avec un peu de programmation de base en Java, vous pouvez ajouter un format d'importation co [...]
-
-<p>Les formats d'importation personnalisés sont prioritaires sur les formats d'importation standard. De cette façon, vous pouvez remplacer les formats d'importations existants pour les fonctions d'auto-détection et de ligne de commande de JabRef. Les formats d'importation personnalisés sont classés par nom.
-
-<H2>Ajouter un filtre d'importation personnalisé</H2>
-
-<p>Assurez-vous que vous avez un filtre d'importation personnalisé compilé (un ou plusieurs fichiers <code>.class</code> sont décrits ci-dessous) et que les fichiers de classe soient dans la structure des répertoires selon la structure de leur paquetage. Pour ajouter un nouveau filtre d'importation personnalisé, ouvrez la boîte de dialogue <b>Options -> Gérer les importations personnalisées</b>, et cliquez  <b>Ajouter &agrave [...]
-
-
-<H2>Créer un filtre d'importation</H2>
-
-Pour des exemples et quelques fichiers utiles sur la façon de construire vos propres filtres d'importation, consultez s'il vous plaît la page de téléchargement.
-
-
-<H3>Un exemple simple</H3>
-
-<p>Supposons que vous vouliez importer des fichiers de la forme suivante :
-<pre>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Filtres d'importation personnalisés</h1>
+
+    <p>JabRef vous permet de définir et d'utiliser vos
+    propres formats d'importation, d'une façon très
+    similaire aux filtres d'importation standard qui sont
+    définis. Un filtre d'importation est défini par
+    une ou plusieurs <i>classes</i> Java qui analyse le contenu
+    d'un fichier à partir d'un flux d'entrée et
+    crée des entrées BibTeX. Ainsi, avec un peu de
+    programmation de base en Java, vous pouvez ajouter un format
+    d'importation correspondant à votre source de
+    références favorite ou enregistrer une version
+    améliorée d'un format d'importation existant. De
+    plus, cela vous permet d'ajouter des formats d'importation
+    personnalisés compilés que vous pourriez obtenir
+    à partir de SourceForge (par exemple) sans avoir
+    à recompiler JabRef (voir plus bas "Partager votre
+    travail").</p>
+
+    <p>Les formats d'importation personnalisés sont
+    prioritaires sur les formats d'importation standard. De cette
+    façon, vous pouvez remplacer les formats d'importations
+    existants pour les fonctions d'auto-détection et de
+    ligne de commande de JabRef. Les formats d'importation
+    personnalisés sont classés par nom.</p>
+
+    <h2>Ajouter un filtre d'importation personnalisé</h2>
+
+    <p>Assurez-vous que vous avez un filtre d'importation
+    personnalisé compilé (un ou plusieurs fichiers
+    <code>.class</code> sont décrits ci-dessous) et que les
+    fichiers de classe soient dans la structure des
+    répertoires selon la structure de leur paquetage. Pour
+    ajouter un nouveau filtre d'importation personnalisé,
+    ouvrez la boîte de dialogue <b>Options -> Gérer
+    les importations personnalisées</b>, et cliquez 
+    <b>Ajouter à partir du répertoire</b>. Une
+    fenêtre de sélection de fichier apparaîtra,
+    vous permettant de sélectionner le chemin de classe de
+    votre filtre d'importation, c'est à dire le
+    répertoire où se trouve le répertoire
+    supérieur de votre structure de paquetage. Vous ouvrirez
+    autant de  fenêtres que nécessaire pour
+    sélectionner votre fichier de classe de filtre
+    d'importation, lequel doit dériver de
+    <code>ImportFormat</code>. Cela permettra ainsi d'indiquer le
+    chemin complet d'accès au fichier de classe. En cliquant
+    sur <b>Sélectionner une nouvelle sous-classe de format
+    d'importation</b>, votre nouveau filtre d'importation
+    apparaîtra dans la liste des filtres d'importation
+    personnalisés. Tous les filtres d'importations
+    personnalisés apparaîtront dans le menu <b>Fichier
+    -> Importer -> Filtres d'importation
+    personnalisés</b> et <b>Fichier -> Importer et
+    joindre -> Filtres d'importation personnalisés</b> de
+    la fenêtre de JabRef.</p>
+
+    <p>S'il vous plaît, notez que si vous déplacez la
+    classe vers un autre répertoire, vous aurez à
+    supprimer et à ré-ajouter le filtre
+    d'importation. Si vous ajoutez un filtre d'importation
+    personnalisé sous un nom qui existe déjà,
+    le filtre d'importation existant sera remplacé. De plus,
+    dans certains cas, il est possible de mettre à jour un
+    filtre d'importation personnali sé existant sans
+    redémarrer JabRef (lorsque le filtre d'importation n'est
+    pas dans le chemin de classe). Cependant, nous recommandons de
+    redémarrer JabRef après la mise à jour
+    d'un filtre d'importation personnalisé. Vous pouvez
+    aussi ajouter des filtres d'importation contenu dans un fichier
+    ZIP ou JAR ; sélectionnez simplement l'archive Zip
+    ou Jar, puis l'entrée (fichier de classe) qui correspond
+    au nouveau filtre d'importation.</p>
+
+    <h2>Créer un filtre d'importation</h2>
+
+    <p>Pour des exemples
+    et quelques fichiers utiles sur la façon de construire
+    vos propres filtres d'importation, consultez s'il vous
+    plaît la page de téléchargement.</p>
+
+    <h3>Un exemple simple</h3>
+
+    <p>Supposons que vous vouliez importer des fichiers de la forme
+    suivante :</p>
+    <pre>
 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
-</pre></p>
+</pre>
 
-<p>Dans votre outil de développement ou éditeur de texte préféré, créez une classe dérivée de <code>ImportFormat</code> qui implémente les méthodes <code>getFormatName()</code>, <code>isRecognizedFormat</code>
-and <code>importEntries()</code>. En voici un exemple :
-<pre>
+    <p>Dans votre outil de développement ou éditeur
+    de texte préféré, créez une classe
+    dérivée de <code>ImportFormat</code> qui
+    implémente les méthodes
+    <code>getFormatName()</code>, <code>isRecognizedFormat</code>
+    and <code>importEntries()</code>. En voici un
+    exemple :</p>
+    <pre>
 import java.io.*;
 import java.util.*;
 import net.sf.jabref.*;
@@ -46,11 +119,11 @@ public class SimpleCsvImporter extends ImportFormat {
   public boolean isRecognizedFormat(InputStream stream) throws IOException {
     return true; // ceci est déconseillé sauf pour les besoins de la démonstration
   }
-  
-  public List importEntries(InputStream stream) throws IOException {    
-  	ArrayList bibitems = new ArrayList();
+
+  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())) {
@@ -62,28 +135,52 @@ public class SimpleCsvImporter extends ImportFormat {
         be.setField("title", fields[2]);
         bibitems.add(be);
         line = in.readLine();
-      }     
+      }
     }
-  	return bibitems;	  	
+        return bibitems;
   }
 }
-</pre></p>
-
-<p>Notez que l'exemple est dans le paquetage par défaut. Supposez que vous l'avez sauvé sous <code>/mypath/SimpleCsvImporter.java</code>. Supposez aussi que JabRef-2.0.jar est dans le même répertoire que <code>SimpleCsvImporter.java</code> et que Java est dans votre chemin d'exécutables. 
-Compilez-le en utilisant par exemple JSDK 1.4 avec
-<pre>
-javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
 </pre>
-A présent il doit y avoir un fichier <code>/mypath/SimpleCsvImporter.class</code>.</p>
-
-<p>Dans JabRef, ouvrez <b>Options -> Gérer les importations personnalisées</b>, et cliquez sur <b>Ajouter à partir du répertoire</b>.
-Allez dans <code>/mypath</code> et cliquez le bouton <b>Sélectionner...</b>. Sélectionnez 
-<code>SimpleCsvImporter.class</code> et cliquez sur le bouton <b>Sélectionner...</b>.
-Votre filtre d'importation devrait maintenant apparaître dans la liste des filtres d'importation personnalisés sous le nom "Simple CSV Importer" et, après avoir cliqué sur <b>Fermer</b>, aussi dans les menus <b>Fichier -> Importer -> Filtres d'importation personnalisés</b> et <b>Fichier -> Importer et joindre -> Filtres d'importation personnalisés</b> de la fenêtre de JabRef.</p>
-
-<H2>Partager votre travail</H2>
 
-<p>Avec des fichiers de filtres d'importation personnalisés, il est vraiment simple de partager des formats d'importation personnalisés entre utilisateurs. Si vous écrivez un filtre d'importation pour un format non supporté par JabRef, ou l'amélioration d'un filtre existant, nous vous encourageons à soumettre votre travail sur notre page SourceForge.net. Nous serons heureux de distribuer la collection des fichiers d'importation soumis, ou d'en aj [...]
-
-</BODY>
-</HTML>
+    <p>Notez que l'exemple est dans le paquetage par défaut.
+    Supposez que vous l'avez sauvé sous
+    <code>/mypath/SimpleCsvImporter.java</code>. Supposez aussi que
+    JabRef-2.0.jar est dans le même répertoire que
+    <code>SimpleCsvImporter.java</code> et que Java est dans votre
+    chemin d'exécutables. Compilez-le en utilisant par
+    exemple JSDK 1.4 avec</p>
+    <pre>
+javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
+</pre>A présent il doit y avoir un fichier
+<code>/mypath/SimpleCsvImporter.class</code>.
+
+    <p>Dans JabRef, ouvrez <b>Options -> Gérer les
+    importations personnalisées</b>, et cliquez sur
+    <b>Ajouter à partir du répertoire</b>. Allez dans
+    <code>/mypath</code> et cliquez le bouton
+    <b>Sélectionner...</b>. Sélectionnez
+    <code>SimpleCsvImporter.class</code> et cliquez sur le bouton
+    <b>Sélectionner...</b>. Votre filtre d'importation
+    devrait maintenant apparaître dans la liste des filtres
+    d'importation personnalisés sous le nom "Simple CSV
+    Importer" et, après avoir cliqué sur
+    <b>Fermer</b>, aussi dans les menus <b>Fichier -> Importer
+    -> Filtres d'importation personnalisés</b> et
+    <b>Fichier -> Importer et joindre -> Filtres
+    d'importation personnalisés</b> de la fenêtre de
+    JabRef.</p>
+
+    <h2>Partager votre travail</h2>
+
+    <p>Avec des fichiers de filtres d'importation
+    personnalisés, il est vraiment simple de partager des
+    formats d'importation personnalisés entre utilisateurs.
+    Si vous écrivez un filtre d'importation pour un format
+    non supporté par JabRef, ou l'amélioration d'un
+    filtre existant, nous vous encourageons à soumettre
+    votre travail sur notre page SourceForge.net. Nous serons
+    heureux de distribuer la collection des fichiers d'importation
+    soumis, ou d'en ajouter à la sélection de filtres
+    d'importation standard.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/EndNoteFilters.html b/src/help/fr/EndNoteFilters.html
index 4747782..b9f170c 100644
--- a/src/help/fr/EndNoteFilters.html
+++ b/src/help/fr/EndNoteFilters.html
@@ -1,128 +1,144 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>Filtre d'exportation EndNote</h1>
-
-<h2>Exportation à partir de JabRef</h2>
-
-JabRef peut exporter des bases de données dans des fichiers
-lisibles par EndNote. Pour utiliser cette fonction,
-choisissez <b>Fichier -> Export</b>, choisissez le type de fichier
-<b>Endnote (*.txt)</b> et spécifiez le nom du fichier d'exportation.
-
-<h2>Importer dans EndNote</h2>
-
-Le fichier par défaut d'importation d'EndNote ne traite
-pas proprement les auteurs ou les éditeurs multiples.
-Il y a deux façons de contourner cela :
-
-<ol>
-
-<li>Utiliser le filtre interne et corriger ensuite le fichier.
-Pour ouvrir le fichier dans EndNote, créez une nouvelle base de
-données ou ouvrez une ancienne base de données dans EndNote.
-Ensuite, sélectionnez <b>Fichier -> Importer</b>, cliquer
-sur <b>Choisir le filtre</b>, puis sélectionnez le fichier
-exporté et cliquez sur <b>Choisir</b>. Cliquez sur
-<b>Options d'importation</b> et sélectionnez
-<b>Importation EndNote</b>.  Cliquez sur <b>Importer</b> pour
-démarrer l'importation. Après l'importation, sélectionnez
-<b>Edition-> Changer le texte</b>. Changez <b>N'importe
-quel champ</b> en <b>Author</b>. Entrez " and " à l'intérieur
-du champ de recherche (sans les guillemets). Entrez un
-retour chariot dans le champ Remplacer
-(option-return pour Mac OS X, ctrl-return pour Windows
-XP). Cliquez sur <b>Remplacer</b>. Répétez avec le champ
-<b>Secondary Author</b>. [NdT: difficile à traduire sans
-avoir EndNote... oui]
-
-<li>Installer le <i>filtre d'importation d'EndNote depuis
-JabRef</i> dans le <i>EndNote Extras</i>. Suivez les instructions
-dans la section <i>Utilisation avancée</i> ci-dessous.
-Pour ouvrir le fichier dans EndNote, créez une nouvelle base
-de données ou ouvrez une ancienne base de données dans EndNote.
-Ensuite, sélectionnez <b>Fichier -> Importer</b>, cliquez
-sur <b>Choisir le filtre</b>, puis sélectionnez le fichier
-exporté et cliquez sur <b>Choisir</b>. Cliquez sur
-<b>Options d'importation</b> et sélectionnez
-<b>Filtre d'importation d'EndNote depuis
-JabRef</b> (s'il n'est pas présent, sélectionnez Autres
-filtres. S'il n'apparaît toujours pas, il n'a pas été installé
-correctement). Cliquer sur <b>Importer</b> pour démarrer
-l'importation.
-
-</ol>
-
-<h2>Notes</h2>
-
-Le filtre d'exportation EndNote fait correspondre les types
-d'entrées BibTeX avec les types de référence d'EndNote de la
-façon suivante :
-
-<pre>
-Type d'entrée BibTeX -> Type de référence d'EndNote
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Filtre d'exportation EndNote</h1>
+
+    <h2>Exportation à partir de JabRef</h2>
+
+    <p>JabRef peut
+    exporter des bases de données dans des fichiers lisibles
+    par EndNote. Pour utiliser cette fonction, choisissez
+    <b>Fichier -> Export</b>, choisissez le type de fichier
+    <b>Endnote (*.txt)</b> et spécifiez le nom du fichier
+    d'exportation.</p>
+
+    <h2>Importer dans EndNote</h2>
+
+    <p>Le fichier par défaut
+    d'importation d'EndNote ne traite pas proprement les auteurs ou
+    les éditeurs multiples. Il y a deux façons de
+    contourner cela :</p>
+
+    <ol>
+        <li>Utiliser le filtre interne et corriger ensuite le
+        fichier. Pour ouvrir le fichier dans EndNote, créez
+        une nouvelle base de données ou ouvrez une ancienne
+        base de données dans EndNote. Ensuite,
+        sélectionnez <b>Fichier -> Importer</b>, cliquer
+        sur <b>Choisir le filtre</b>, puis sélectionnez le
+        fichier exporté et cliquez sur <b>Choisir</b>.
+        Cliquez sur <b>Options d'importation</b> et
+        sélectionnez <b>Importation EndNote</b>. Cliquez sur
+        <b>Importer</b> pour démarrer l'importation.
+        Après l'importation, sélectionnez
+        <b>Edition-> Changer le texte</b>. Changez <b>N'importe
+        quel champ</b> en <b>Author</b>. Entrez " and " à
+        l'intérieur du champ de recherche (sans les
+        guillemets). Entrez un retour chariot dans le champ
+        Remplacer (option-return pour Mac OS X, ctrl-return pour
+        Windows XP). Cliquez sur <b>Remplacer</b>.
+        Répétez avec le champ <b>Secondary
+        Author</b>. [NdT: difficile à traduire sans avoir
+        EndNote... oui]</li>
+
+        <li>Installer le <i>filtre d'importation d'EndNote depuis
+        JabRef</i> dans le <i>EndNote Extras</i>. Suivez les
+        instructions dans la section <i>Utilisation
+        avancée</i> ci-dessous. Pour ouvrir le fichier dans
+        EndNote, créez une nouvelle base de données
+        ou ouvrez une ancienne base de données dans EndNote.
+        Ensuite, sélectionnez <b>Fichier -> Importer</b>,
+        cliquez sur <b>Choisir le filtre</b>, puis
+        sélectionnez le fichier exporté et cliquez
+        sur <b>Choisir</b>. Cliquez sur <b>Options
+        d'importation</b> et sélectionnez <b>Filtre
+        d'importation d'EndNote depuis JabRef</b> (s'il n'est pas
+        présent, sélectionnez Autres filtres. S'il
+        n'apparaît toujours pas, il n'a pas été
+        installé correctement). Cliquer sur <b>Importer</b>
+        pour démarrer l'importation.</li>
+    </ol>
+
+    <h2>Notes</h2>
+
+    <p>Le filtre d'exportation EndNote fait correspondre
+    les types d'entrées BibTeX avec les types de
+    référence d'EndNote de la façon
+    suivante :</p>
+    <pre>
+Type d'entrée BibTeX -> Type de référence d'EndNote
 ---------------------------------------------------
-misc, other -> Generic
-unpublished -> Manuscript
-manual -> Computer Program
-article -> Journal Article
-book -> Book
-booklet -> Personal Communication
-inbook,incollection -> Book Section
-inproceedings -> Conference Proceedings
-techreport -> Report
-mastersthesis, phdthesis -> Thesis
-</pre>
-
-<h2>Auteurs collectifs</h2>
-
-Par défaut, le filtre d'exportation suppose que le contenu
-des champs author ou editor qui sont dans des accolades
-sont des auteurs collectifs et remplace les accolades par
-une virgule. Cependant, cela signifie que les champs qui
-contiennent du code LaTeX entre accolades seront supposés
-être des auteurs collectifs et seront donc improprement
-formatés.
-
-<H2>Utilisation avancée : Suppléments EndNote</h2>
-
-<h3>Installation du filtre d'importation d'EndNote depuis JabRef</h3>
-
-Le filtre par défaut d'importation d'EndNote ne traite pas
-correctement les auteurs. Le filtre d'importation d'EndNote depuis
-JabRef le fait proprement. De plus, ce filtre reconnaîtra
-un champ EndNotereftype qui supplantera la table des correspondances
-par défaut. Pour installer ce filtre, extraire les suppléments
-pour EndNote (<b>Outils - > Décompacter la série de
-filtres EndNote</b>) et décompresser le fichier Zip qui est crée.
-Ensuite, suivez les instructions du fichier readme.txt.<p>
-
-<h3>Modification des types de référence d'EndNote</h3>
-
-Plusieurs champs utilisés par BibTeX ne font pas partie
-des Types de Référence par défaut d'EndNote. Alors que
-l'importation depuis JabRef et l'exportation à partir
-de JabRef fonctionneront correctement sans modifier
-les types de références, les noms de champs ne seront
-pas affichés correctement dans EndNote (par exemple,
-une fenêtre d'entrée appellera le champ PDF
-<i>"Custom 1"</i> au lieu de <i>"pdf"</i>. De plus,
-puisque ces champs n'apparaîtront pas dans la fenêtre
-d'édition, ces champs ne pourront pas être ajoutés à
-de nouvelles entrées dans EndNote. Pour modifier les
-Types de Références d'EndNote, extrayez les Suppléments
-EndNote et suivez les instructions du fichier readme.txt.<p>
-
-<h3>Exportation vers JabRef</h3>
-
-EndNote est fourni avec un style d'exportation BibTeX.
-Cependant, il ne prend pas en compte tous les types et les champs BibTeX
-et ne prend pas non plus en compte les Champs Généraux additionnels supportés
-par JabRef (<i>pdf, owner, key,</i> etc.). Si vous souhaitez
-que ces champs soient pris en compte, extrayez les Suppléments EndNote
-(<b>Outils - > Décompacter la série de filtres EndNote</b>)
-et suivez les instructions du fichier readme.txt.<p>
-
-</HTML>
+misc, other -> Generic
+unpublished -> Manuscript
+manual -> Computer Program
+article -> Journal Article
+book -> Book
+booklet -> Personal Communication
+inbook,incollection -> Book Section
+inproceedings -> Conference Proceedings
+techreport -> Report
+mastersthesis, phdthesis -> Thesis</pre>
+
+    <h2>Auteurs collectifs</h2>
+
+    <p>Par défaut, le filtre
+    d'exportation suppose que le contenu des champs author ou
+    editor qui sont dans des accolades sont des auteurs collectifs
+    et remplace les accolades par une virgule. Cependant, cela
+    signifie que les champs qui contiennent du code LaTeX entre
+    accolades seront supposés être des auteurs
+    collectifs et seront donc improprement formatés.</p>
+
+    <h2>Utilisation avancée : Suppléments
+    EndNote</h2>
+
+    <h3>Installation du filtre d'importation d'EndNote depuis
+    JabRef</h3>
+
+    <p>Le filtre par défaut d'importation d'EndNote
+    ne traite pas correctement les auteurs. Le filtre d'importation
+    d'EndNote depuis JabRef le fait proprement. De plus, ce filtre
+    reconnaîtra un champ EndNotereftype qui supplantera la
+    table des correspondances par défaut. Pour installer ce
+    filtre, extraire les suppléments pour EndNote (<b>Outils
+    - > Décompacter la série de filtres
+    EndNote</b>) et décompresser le fichier Zip qui est
+    crée. Ensuite, suivez les instructions du fichier
+    readme.txt.</p>
+
+    <h3>Modification des types de référence
+    d'EndNote</h3>
+
+    <p>Plusieurs champs utilisés par BibTeX ne
+    font pas partie des Types de Référence par
+    défaut d'EndNote. Alors que l'importation depuis JabRef
+    et l'exportation à partir de JabRef fonctionneront
+    correctement sans modifier les types de
+    références, les noms de champs ne seront pas
+    affichés correctement dans EndNote (par exemple, une
+    fenêtre d'entrée appellera le champ PDF <i>"Custom
+    1"</i> au lieu de <i>"pdf"</i>. De plus, puisque ces champs
+    n'apparaîtront pas dans la fenêtre
+    d'édition, ces champs ne pourront pas être
+    ajoutés à de nouvelles entrées dans
+    EndNote. Pour modifier les Types de Références
+    d'EndNote, extrayez les Suppléments EndNote et suivez
+    les instructions du fichier readme.txt.</p>
+
+    <h3>Exportation vers JabRef</h3>
+
+    <p>EndNote est fourni avec un
+    style d'exportation BibTeX. Cependant, il ne prend pas en
+    compte tous les types et les champs BibTeX et ne prend pas non
+    plus en compte les Champs Généraux additionnels
+    supportés par JabRef (<i>pdf, owner, key,</i> etc.). Si
+    vous souhaitez que ces champs soient pris en compte, extrayez
+    les Suppléments EndNote (<b>Outils - >
+    Décompacter la série de filtres EndNote</b>) et
+    suivez les instructions du fichier readme.txt.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/EntryEditorHelp.html b/src/help/fr/EntryEditorHelp.html
index 38816bf..bc9b713 100644
--- a/src/help/fr/EntryEditorHelp.html
+++ b/src/help/fr/EntryEditorHelp.html
@@ -1,112 +1,153 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>L'éditeur d'entrées</H1>
-
-<em>On l'ouvre à partir de la fenêtre principale en double-cliquant n'importe où
-sur la ligne de l'entrée,
-ou en sélectionnant l'entrée et en appuyant sur ENTREE. L'éditeur d'entrées se ferme en appuyant sur ESC.</em>
-<P>
-Dans l'éditeur d'entrées, vous pouvez spécifier toutes les informations pertinentes
-pour une entrée donnée. L'éditeur d'entrées vérifie le type de votre entrée et
-affiche tous les champs qui sont requis ou optionnels pour que <em>BibTeX</em>
-traite l'entrée. De plus, il y a plusieurs champs, appelés <em>Champs
-généraux</em>, qui sont communs à tous les types d'entrées.
-
-<P>Vous pouvez personnaliser complètement les champs qui doivent être considérés comme
-requis ou optionnel pour chaque type d'entrée, ainsi que les champs apparaissant dans
-l'onglet Général. Voir <a href="CustomEntriesHelp.html">Personnaliser les types
-d'entrées</a> pour plus d'informations à ce sujet.
-
-<P>Pour des informations sur la façon de remplir les champs,
-voir <a href="BibtexHelp.html">Aide sur BibTeX</a>.
-
-<H2>Le panneau à onglets de l'éditeur d'entrées</H2>
-
-L'éditeur d'entrée contient six onglets :
-<em>Champs requis</em>, <em>Champs optionnels</em>,
-<em>Général</em>, <em>Abstract</em>, <em>Review</em>
-et <em>Source BibTeX</em>. Les onglets <em>Général</em>,
-<em>Abstract</em> et <em>Review</em> peuvent être personnalisés (voir <a href="GeneralFields.html">Personnalisation des champs généraux</a> pour plus de détails). A l'intérieur des trois premiers onglets, TAB et MAJ-TAB sont utilisés pour naviguer entre les champs de texte.
-
-<P>Naviguez entre les onglets en cliquant sur les onglets
-ou en utilisant les combinaisons de touches suivantes pour vous déplacer
-vers la gauche ou la droite : CTRL-TAB ou CTRL-PLUS
-affiche l'onglet à droite, et CTRL-MAJ-TAB ou CTRL-MOINS
-affiche l'onglet à gauche. Vous pouvez aussi afficher l'entrée précédente ou
-suivante en appuyant respectivement sur CTRL-MAJ-DOWN ou
-CTRL-MAJ-UP, ainsi qu'en cliquant sur les boutons de la barre
-d'outils de l'éditeur d'entrées.
-
-<P>L'onglet <em>Source BibTeX</em> montre comment l'entrée
-apparaîtra lorsque la base de données sera sauvegardée au format
-<em>BibTeX</em>. Si vous le souhaitez, vous pouvez éditer la source
-<em>BibTeX</em> directement dans cet onglet. Lorsque vous changez
-d'onglet, que vous appuyez sur CTRL-S ou que vous fermez
-l'éditeur d'entrées, JabRef essayera de traiter le contenu de l'onglet
-<em>Source BibTeX</em>. S'il y a des problèmes, vous
-en serez informé ; vous pourrez alors éditer à nouveau votre
-entrée ou rétablir son contenu initial.
-
-Si <strong>Par défaut, afficher l'onglet Source BibTeX</strong>
-est coché dans les options <strong>Général</strong> de la fenêtre de
-dialogue <strong>Préférences</strong>, l'onglet <em>Source
-BibTeX</em> sera affiché par défaut chaque fois que l'éditeur d'entrées
-sera ouvert. Si vous préférez éditer la source au lieu d'utiliser
-les quatre autres onglets, vous devez cocher
-cette option.
-
-<P><strong>Astuce :</strong> Si votre base contient des champs que JabRef
-ne connaît pas, ils seront visibles dans l'onglet <em>Source
-BibTeX</em>.
-
-<P><strong>Astuce :</strong> les champs <I>pdf</I> et <I>url</I>
-supportent les opérations de Glisser-Déplacer.
-Vous pouvez faire glisser une url depuis votre navigateur.
-Ensuite, vous aurez le choix entre insérer l'URL et
-télécharger le fichier.
-
-<H2>Vérification de la cohérence des champs</H2>
-Quand le contenu d'un champ est modifié, JabRef vérifie que le nouveau
-contenu est acceptable. Pour les champs qui sont utilisés par
-<em>BibTeX</em>, le contenu est vérifié par rapport à l'utilisation
-du caractére '#'. Le symbole dièse doit <em>toujours</em> être
-utilisé par paires, encadrant le nom d'une chaîne <em>BibTeX</em>
-existante. Notez que JabRef ne vérifie pas si la chaîne <em>BibTeX</em>
-est vraiment définie (ce n'est pas trivial, puisque le style
-<em>BibTeX</em> que vous utilisez peut définir une série
-arbitraire de chaînes dont JabRef n'a pas connaissance).
-<P>
-Si le contenu n'est pas valide, le champ sera affiché en rouge,
-indiquant ainsi une erreur. Dans ce cas, le changement ne
-sera pas sauvé.
-
-<!--<H2>Word/name autocompletion</H2>
-The entry editor offers autocompletion of words. In the Preferences dialog
-you can enable or disable autocompletion, and choose for which fields
-autocompletion is active.
-<P>With autocompletion, JabRef records all words that appear in
-each of the chosen fields throughout your database. Whenever you write
-the beginning of one of these words, it will be suggested visually. To
-ignore the suggestion, simply write on. To accept the suggestion,
-either press <em>ENTER</em> or use your arrow keys or other keys to
-remove the selection box around the suggested characters.
-<P><em>Note:</em> the words considered for suggestion are only the ones
-appearing in the same field in entries of the same database as the one you
-are editing. There are many ways to realise this kind of feature, and if you feel
-it should have been implemented differently, we'd like to hear your suggestions!
-
-<H2>Copy <em>bibtex</em> key</H2>
-Pressing CTRL-K or the 'key' button causes the <em>bibtex</em> key for your entry
-to be copied to the clipboard.
--->
-<H2>Génération automatique des clefs <em>BibTeX</em></H2>
-Appuyez sur CTRL-G ou sur le bouton 'Créer la clef BibTeX' (la baguette magique)
-pour générer automatiquement une clef <em>BibTeX</em> à partir du contenu des champs requis.
-
-<p>
-Pour plus d'informations sur la façon dont JabRef génère les clefs <em>BibTeX</em>, voir <a href="LabelPatterns.html">Personnalisation du générateur de clefs BibTeX</a>.
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>L'éditeur d'entrées</h1>
+
+    <p><em>On l'ouvre
+    à partir de la fenêtre principale en
+    double-cliquant n'importe où sur la ligne de
+    l'entrée, ou en sélectionnant l'entrée et
+    en appuyant sur ENTREE. L'éditeur d'entrées se
+    ferme en appuyant sur ESC.</em></p>
+
+    <p>Dans l'éditeur d'entrées, vous pouvez
+    spécifier toutes les informations pertinentes pour une
+    entrée donnée. L'éditeur d'entrées
+    vérifie le type de votre entrée et affiche tous
+    les champs qui sont requis ou optionnels pour que
+    <em>BibTeX</em> traite l'entrée. De plus, il y a
+    plusieurs champs, appelés <em>Champs
+    généraux</em>, qui sont communs à tous les
+    types d'entrées.</p>
+
+    <p>Vous pouvez personnaliser complètement les champs qui
+    doivent être considérés comme requis ou
+    optionnel pour chaque type d'entrée, ainsi que les
+    champs apparaissant dans l'onglet Général. Voir
+    <a href="CustomEntriesHelp.html">Personnaliser les types
+    d'entrées</a> pour plus d'informations à ce
+    sujet.</p>
+
+    <p>Pour des informations sur la façon de remplir les
+    champs, voir <a href="BibtexHelp.html">Aide sur BibTeX</a>.</p>
+
+    <h2>Le panneau à onglets de l'éditeur
+    d'entrées</h2>
+
+    <p>L'éditeur d'entrée contient
+    six onglets : <em>Champs requis</em>, <em>Champs
+    optionnels</em>, <em>Général</em>,
+    <em>Abstract</em>, <em>Review</em> et <em>Source BibTeX</em>.
+    Les onglets <em>Général</em>, <em>Abstract</em>
+    et <em>Review</em> peuvent être personnalisés
+    (voir <a href="GeneralFields.html">Personnalisation des champs
+    généraux</a> pour plus de détails). A
+    l'intérieur des trois premiers onglets, TAB et MAJ-TAB
+    sont utilisés pour naviguer entre les champs de texte.</p>
+
+    <p>Naviguez entre les onglets en cliquant sur les onglets ou en
+    utilisant les combinaisons de touches suivantes pour vous
+    déplacer vers la gauche ou la droite : CTRL-TAB ou
+    CTRL-PLUS affiche l'onglet à droite, et CTRL-MAJ-TAB ou
+    CTRL-MOINS affiche l'onglet à gauche. Vous pouvez aussi
+    afficher l'entrée précédente ou suivante
+    en appuyant respectivement sur CTRL-MAJ-DOWN ou CTRL-MAJ-UP,
+    ainsi qu'en cliquant sur les boutons de la barre d'outils de
+    l'éditeur d'entrées.</p>
+
+    <p>L'onglet <em>Source BibTeX</em> montre comment
+    l'entrée apparaîtra lorsque la base de
+    données sera sauvegardée au format
+    <em>BibTeX</em>. Si vous le souhaitez, vous pouvez
+    éditer la source <em>BibTeX</em> directement dans cet
+    onglet. Lorsque vous changez d'onglet, que vous appuyez sur
+    CTRL-S ou que vous fermez l'éditeur d'entrées,
+    JabRef essayera de traiter le contenu de l'onglet <em>Source
+    BibTeX</em>. S'il y a des problèmes, vous en serez
+    informé ; vous pourrez alors éditer à
+    nouveau votre entrée ou rétablir son contenu
+    initial. Si <strong>Par défaut, afficher l'onglet Source
+    BibTeX</strong> est coché dans les options
+    <strong>Général</strong> de la fenêtre de
+    dialogue <strong>Préférences</strong>, l'onglet
+    <em>Source BibTeX</em> sera affiché par défaut
+    chaque fois que l'éditeur d'entrées sera ouvert.
+    Si vous préférez éditer la source au lieu
+    d'utiliser les quatre autres onglets, vous devez cocher cette
+    option.</p>
+
+    <p><strong>Astuce :</strong> Si votre base contient des
+    champs que JabRef ne connaît pas, ils seront visibles
+    dans l'onglet <em>Source BibTeX</em>.</p>
+
+    <p><strong>Astuce :</strong> les champs <i>pdf</i> et
+    <i>url</i> supportent les opérations de
+    Glisser-Déplacer. Vous pouvez faire glisser une url
+    depuis votre navigateur. Ensuite, vous aurez le choix entre
+    insérer l'URL et télécharger le
+    fichier.</p>
+
+    <h2>Vérification de la cohérence des
+    champs</h2>
+
+    <p>Quand le contenu d'un champ est modifié,
+    JabRef vérifie que le nouveau contenu est acceptable.
+    Pour les champs qui sont utilisés par <em>BibTeX</em>,
+    le contenu est vérifié par rapport à
+    l'utilisation du caractére '#'. Le symbole dièse
+    doit <em>toujours</em> être utilisé par paires,
+    encadrant le nom d'une chaîne <em>BibTeX</em> existante.
+    Notez que JabRef ne vérifie pas si la chaîne
+    <em>BibTeX</em> est vraiment définie (ce n'est pas
+    trivial, puisque le style <em>BibTeX</em> que vous utilisez
+    peut définir une série arbitraire de
+    chaînes dont JabRef n'a pas connaissance).</p>
+
+    <p>Si le contenu n'est pas valide, le champ sera affiché
+    en rouge, indiquant ainsi une erreur. Dans ce cas, le
+    changement ne sera pas sauvé.</p>
+
+    <!--<h2>Word/name autocompletion</h2>
+
+    <p>The entry editor offers
+    autocompletion of words. In the Preferences dialog you can enable or
+    disable autocompletion, and choose for which fields autocompletion is
+    active.</p>
+
+    <p>With autocompletion, JabRef records all words that appear in
+    each of the chosen fields throughout your database. Whenever you write
+    the beginning of one of these words, it will be suggested visually. To
+    ignore the suggestion, simply write on. To accept the suggestion, either
+    press <em>ENTER</em> or use your arrow keys or other keys to remove the
+    selection box around the suggested characters.</p>
+
+    <p><em>Note:</em> the
+    words considered for suggestion are only the ones appearing in the same
+    field in entries of the same database as the one you are editing. There
+    are many ways to realise this kind of feature, and if you feel it should
+    have been implemented differently, we'd like to hear your suggestions!
+
+    <h2>Copy <em>bibtex</em> key</h2>
+
+    <p>Pressing CTRL-K or the 'key' button
+    causes the <em>bibtex</em> key for your entry to be copied to the
+    clipboard.</p>-->
+
+    <h2>Génération automatique des clefs
+    <em>BibTeX</em></h2>
+
+    <p>Appuyez sur CTRL-G ou sur le bouton
+    'Créer la clef BibTeX' (la baguette magique) pour
+    générer automatiquement une clef <em>BibTeX</em>
+    à partir du contenu des champs requis.</p>
+
+    <p>Pour plus d'informations sur la façon dont JabRef
+    génère les clefs <em>BibTeX</em>, voir
+    <a href="LabelPatterns.html">Personnalisation du
+    générateur de clefs BibTeX</a>.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/ExternalFiles.html b/src/help/fr/ExternalFiles.html
index d0896df..3153cbf 100644
--- a/src/help/fr/ExternalFiles.html
+++ b/src/help/fr/ExternalFiles.html
@@ -1,120 +1,180 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Les liens PDF/PS/URL/DOI dans JabRef</H1>
-
-JabRef vous permet de lier vos entrées avec des fichiers PDF ou PS stockés
-sur votre ordinateur, ainsi que de créer des liens vers des documents sur
-internet par l'intermédiaire d'une URL ou d'un identifiant DOI.
-
-<H2>Configurer les visionneurs externes</H2>
-
-Le programme doit savoir quels visionneurs externes utiliser pour les fichiers
-PDF et PS ainsi que pour les pages internet. Ils sont par défaut configurés
-avec des valeurs qui fonctionnent probablement avec votre système d'exploitation ;
-aussi, il est très possible que vous n'ayez pas besoin de changer ces valeurs
-<p>Pour changer la configuration des visionneurs externes, allez dans le menu
-<b>Options -> Préférences -> Programmes externes</b>.
-
-<H2>Ouvrir des fichiers externes ou des liens</H2>
-
-Il y a plusieurs façons d'ouvrir un fichier externe ou une page internet.
-Dans l'éditeur d'entrées, vous pouvez double-cliquer sur le texte du champ
-contenant le nom du fichier, le DOI ou l'URL. Dans le tableau des entrées,
-vous pouvez sélectionner une entrée et utiliser le menu (<b>Outils/ Ouvrir
-PS ou PDF</b> et <b>Outils/ Ouvrir URL ou DOI</b>), le raccourci clavier
-ou le menu contextuel (avec un clic droit). Enfin, vous pouvez cliquer
-sur les icônes PDF, PS, URL ou DOI de la barre d'outils.
-
-<P>Par défaut, le tableau des entrées contient deux colonnes dans
-lesquelles des icônes s'affichent pour les entrées possédant un lien
-vers un fichier externe ou une URL. La seconde colonne du tableau
-montre les icônes qui ouvrent les fichiers PDF et PS (uniquement
-le fichier PDF si les deux fichiers sont présents),
-et la troisième colonne montre les icônes
-ouvrant les URL et les DOI (uniquement l'URL si les deux liens sont
-présents). Vous ouvrez le fichier ou la page internet en cliquant
-sur une de ces icônes. Vous pouvez désactiver n'importe laquelle de ces
-fonctions en utilisant le menu <b>Options/ Préférences -> Table des
-entrées</b>.
-
-<P><b>Remarque:</b> Si le champ n'apparaît pas dans l'éditeur d'entrée (dans l'onglet 'General'),
-Vous pourriez avoir à <a href="GeneralFields.html">personnaliser les champs généraux</a>.
-</P>
-
-
-<H2>Les répertoires PDF et PS principaux</H2>
-
-JabRef permet de lier facilement les fichiers PDF et PS � vos entr�es. Pour bénéficier de cette fonction,
-vous devez définir dans le menu <b>Options -> Préférences -> Programmes externes</b>
-vos répertoires principaux pour les fichiers PDF et PS.
-Tous les fichiers PDF et PS qui sont stockés dans (ou en-dessous de) chacun de ces répertoires
-seront référencés par un chemin relatif. Il vous sera ainsi facile
-de déplacer les répertoires PDF et PS principaux ou de partager votre base de données
-avec d'autres utilisateurs situés en des points différents du réseau.
-
-<P>De plus, si vous donnez à vos fichiers PDF et PS des noms qui correspondent à
-la clef BibTeX des entrées (plus '.pdf' ou '.ps'), JabRef sera capable de rechercher
-dans vos répertoires principaux et leurs sous-répertoires le bon fichier PDF ou PS.
-Lorsqu'un fichier PDF ou PS (nommé correctement) est déjà dans le répertoire principal,
-vous accédez à cette fonction en cliquant sur le bouton 'Auto' situé à
-coté des champs PDF et PS de l'éditeur d'entrées. Si le fichier PDF ou PS est trouvé,
-le champ sera immédiatement rempli.
-
-<P>Si vous nommez un fichier PDF ou PS comme mentionné ci-dessus, vous pourrez aussi
-ouvrir le fichier sans configurer préalablement le champ PDF ou PS de l'entrée.
-Cependant, dans ce cas, l'icône PDF ou PS n'apparaîtra pas dans le tableau
-des entrées.
-
-<H2>Les répertoires PDF et PS sp�cifiques à la base de données</H2>
-<P>
-Vous pouvez définir des répertoires PDF et PS spécifiques à une base de données
-(<b>Fichier -> Propriétés de la base de données</b>).
-Ces répertoires remplacent alors les répertoires principaux.
-</P>
-
-<a name="RegularExpressionSearch">
-<H2>Utiliser la recherche d'expressions régulières pour les liaisons automatiques</H2>
-</a>
-<p>
-Dans les sections précédentes, la fonction de liaison automatique de JabRef était décrite : si vous
-choisissiez des noms de fichiers qui correspondaient à la clef BibTex suivi de l'extension,
-JabRef était capable de trouver les fichiers automatiquement.
-
-</p><p>
-A partir de JabRef 2.2, il est possible d'avoir une plus grande flexibilité dans la forme du nom grâce à l'utilisation
-d'une expression régulière pour la recherche. Dans la plupart des cas, adapter l'expression régulière donnée par défaut devrait suffire.
-
-</p><p>
-Si vous ouvrez les préférences pour les programmes externes (Options -> Préférences -> Programmes externes),
-vous  y trouverez une option nommée "Rechercher l'expression régulière".
-Cocher cette option vous permettra d'entrer votre propre expression régulière pour la recherche dans les
-répertoires PDF.
-
-</p><p>
-Voici la syntaxe à utiliser :
-</p>
-<ul>
-  <li><code>*</code> - Rechercher dans tous les sous-répertoires directs en excluant le répertoire courant
-  et tout autre sous-répertoire.</li>
-  <li><code>**</code> - Rechercher récursivement dans tous les sous-répertoires ET dans le répertoire courant.</li>
-  <li><code>.</code> et <code>..</code> - Le répertoire courant et le répertoire parent.</li>
-  <li><code>[title]</code> - Toutes les expressions entre crochets sont remplacées par le champ correspondant dans l'entrée courante.</li>
-  <li><code>[extension]</code> - Remplacement par l'extension de fichier du champ que vous utilisez.</li>
-  <li>Tout autre texte est interprété comme une expression régulière. Mais attention : vous devez remplacer
-  chaque caractère anti-slash (\) par deux anti-slashs (\\) afin d'éviter la confusion avec un séparateur de répertoire .</li>
-</ul>
-<p>
-Par défaut, l'expression régulière de recherche est <code>**/.*[bibtexkey].*\\.[extension]</code>. Comme vous pouvez le voir cela effectuera
-la recherche dans tous les sous-répertoires du répertoire défini pour l'extension (par exemple dans le répertoire PDF) de tout nom de fichier qui possède la bonne extension et
-qui contient quelque part la clef BibTeX.
-
-
-
-
-
-</p>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Les liens PDF/PS/URL/DOI dans JabRef</h1>
+
+    <p><b>Note:</b>
+    JabRef 2.3 et suivants offrent un
+    <a href="FileLinks.html">système amélioré pour les liens vers les
+    fichiers externes</a>.</p>
+
+    <p>JabRef vous permet de lier vos entrées avec des
+    fichiers PDF ou PS stockés sur votre ordinateur, ainsi
+    que de créer des liens vers des documents sur internet
+    par l'intermédiaire d'une URL ou d'un identifiant
+    DOI.</p>
+
+    <h2>Configurer les visionneurs externes</h2>
+
+    <p>Le programme doit
+    savoir quels visionneurs externes utiliser pour les fichiers
+    PDF et PS ainsi que pour les pages internet. Ils sont par
+    défaut configurés avec des valeurs qui
+    fonctionnent probablement avec votre système
+    d'exploitation ; aussi, il est très possible que
+    vous n'ayez pas besoin de changer ces valeurs</p>
+
+    <p>Pour changer la configuration des visionneurs externes,
+    allez dans le menu <b>Options -> Préférences
+    -> Programmes externes</b>.</p>
+
+    <h2>Ouvrir des fichiers externes ou des liens</h2>
+
+    <p>Il y a
+    plusieurs façons d'ouvrir un fichier externe ou une page
+    internet. Dans l'éditeur d'entrées, vous pouvez
+    double-cliquer sur le texte du champ contenant le nom du
+    fichier, le DOI ou l'URL. Dans le tableau des entrées,
+    vous pouvez sélectionner une entrée et utiliser
+    le menu (<b>Outils/ Ouvrir PS ou PDF</b> et <b>Outils/ Ouvrir
+    URL ou DOI</b>), le raccourci clavier ou le menu contextuel
+    (avec un clic droit). Enfin, vous pouvez cliquer sur les
+    icônes PDF, PS, URL ou DOI de la barre d'outils.</p>
+
+    <p>Par défaut, le tableau des entrées contient
+    deux colonnes dans lesquelles des icônes s'affichent pour
+    les entrées possédant un lien vers un fichier
+    externe ou une URL. La seconde colonne du tableau montre les
+    icônes qui ouvrent les fichiers PDF et PS (uniquement le
+    fichier PDF si les deux fichiers sont présents), et la
+    troisième colonne montre les icônes ouvrant les
+    URL et les DOI (uniquement l'URL si les deux liens sont
+    présents). Vous ouvrez le fichier ou la page internet en
+    cliquant sur une de ces icônes. Vous pouvez
+    désactiver n'importe laquelle de ces fonctions en
+    utilisant le menu <b>Options/ Préférences ->
+    Table des entrées</b>.</p>
+
+    <p><b>Remarque:</b> Si le champ n'apparaît pas dans
+    l'éditeur d'entrée (dans l'onglet 'General'),
+    Vous pourriez avoir à
+    <a href="GeneralFields.html">personnaliser les champs
+    généraux</a>.</p>
+
+    <h2>Les répertoires PDF et PS principaux</h2>
+
+    <p>JabRef
+    permet de lier facilement les fichiers PDF et PS
+    ï¿&frac12; vos entrï¿&frac12;es. Pour
+    bénéficier de cette fonction, vous devez
+    définir dans le menu <b>Options ->
+    Préférences -> Programmes externes</b> vos
+    répertoires principaux pour les fichiers PDF et PS. Tous
+    les fichiers PDF et PS qui sont stockés dans (ou
+    en-dessous de) chacun de ces répertoires seront
+    référencés par un chemin relatif. Il vous
+    sera ainsi facile de déplacer les répertoires PDF
+    et PS principaux ou de partager votre base de données
+    avec d'autres utilisateurs situés en des points
+    différents du réseau.</p>
+
+    <p>De plus, si vous donnez à vos fichiers PDF et PS des
+    noms qui correspondent à la clef BibTeX des
+    entrées (plus '.pdf' ou '.ps'), JabRef sera capable de
+    rechercher dans vos répertoires principaux et leurs
+    sous-répertoires le bon fichier PDF ou PS. Lorsqu'un
+    fichier PDF ou PS (nommé correctement) est
+    déjà dans le répertoire principal, vous
+    accédez à cette fonction en cliquant sur le
+    bouton 'Auto' situé à coté des champs PDF
+    et PS de l'éditeur d'entrées. Si le fichier PDF
+    ou PS est trouvé, le champ sera immédiatement
+    rempli.</p>
+
+    <p>Si vous nommez un fichier PDF ou PS comme mentionné
+    ci-dessus, vous pourrez aussi ouvrir le fichier sans configurer
+    préalablement le champ PDF ou PS de l'entrée.
+    Cependant, dans ce cas, l'icône PDF ou PS
+    n'apparaîtra pas dans le tableau des entrées.</p>
+
+    <h2>Les répertoires PDF et PS
+    spï¿&frac12;cifiques à la base de
+    données</h2>
+
+    <p>Vous pouvez définir des répertoires PDF et PS
+    spécifiques à une base de données
+    (<b>Fichier -> Propriétés de la base de
+    données</b>). Ces répertoires remplacent alors
+    les répertoires principaux.</p>
+
+    <h2><a name="RegularExpressionSearch"
+       id="RegularExpressionSearch">Utiliser la recherche
+       d'expressions régulières pour les liaisons
+       automatiques</a></h2>
+
+    <p>Dans les sections précédentes, la fonction de
+    liaison automatique de JabRef était
+    décrite : si vous choisissiez des noms de fichiers
+    qui correspondaient à la clef BibTex suivi de
+    l'extension, JabRef était capable de trouver les
+    fichiers automatiquement.</p>
+
+    <p>A partir de JabRef 2.2, il est possible d'avoir une plus
+    grande flexibilité dans la forme du nom grâce
+    à l'utilisation d'une expression régulière
+    pour la recherche. Dans la plupart des cas, adapter
+    l'expression régulière donnée par
+    défaut devrait suffire.</p>
+
+    <p>Si vous ouvrez les préférences pour les
+    programmes externes (Options -> Préférences
+    -> Programmes externes), vous y trouverez une option
+    nommée "Rechercher l'expression
+    régulière". Cocher cette option vous permettra
+    d'entrer votre propre expression régulière pour
+    la recherche dans les répertoires PDF.</p>
+
+    <p>Voici la syntaxe à utiliser :</p>
+
+    <ul>
+        <li><code>*</code> - Rechercher dans tous les
+        sous-répertoires directs en excluant le
+        répertoire courant et tout autre
+        sous-répertoire.</li>
+
+        <li><code>**</code> - Rechercher récursivement dans
+        tous les sous-répertoires ET dans le
+        répertoire courant.</li>
+
+        <li><code>.</code> et <code>..</code> - Le
+        répertoire courant et le répertoire
+        parent.</li>
+
+        <li><code>[title]</code> - Toutes les expressions entre
+        crochets sont remplacées par le champ correspondant
+        dans l'entrée courante.</li>
+
+        <li><code>[extension]</code> - Remplacement par l'extension
+        de fichier du champ que vous utilisez.</li>
+
+        <li>Tout autre texte est interprété comme une
+        expression régulière. Mais attention :
+        vous devez remplacer chaque caractère anti-slash (\)
+        par deux anti-slashs (\\) afin d'éviter la confusion
+        avec un séparateur de répertoire .</li>
+    </ul>
+
+    <p>Par défaut, l'expression régulière de
+    recherche est <code>**/.*[bibtexkey].*\\.[extension]</code>.
+    Comme vous pouvez le voir cela effectuera la recherche dans
+    tous les sous-répertoires du répertoire
+    défini pour l'extension (par exemple dans le
+    répertoire PDF) de tout nom de fichier qui
+    possède la bonne extension et qui contient quelque part
+    la clef BibTeX.</p>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/FileLinks.html b/src/help/fr/FileLinks.html
new file mode 100644
index 0000000..cbca1a7
--- /dev/null
+++ b/src/help/fr/FileLinks.html
@@ -0,0 +1,104 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Liens de fichier dans JabRef</h1>
+
+    <p>JabRef vous permet de lier
+    vos entrées avec des fichiers de n'importe quel type
+    stockés sur votre système, ainsi qu'avec des
+    documents sur internet sous forme d'une URL ou d'un identifiant
+    DOI. Chaque entrée peut contenir un nombre arbitraire de
+    liens de fichier et chaque fichier lié peut être
+    ouvert rapidement depuis JabRef.</p>
+
+    <p>En termes BibTeX, dans une entrée, les liens de
+    fichier sont encodés dans un unique champ. Cependant,
+    à l'intérieur de JabRef, ils apparaissent comme
+    une liste modifiable de liens à laquelle on
+    accède depuis l'éditeur d'entrées, comme
+    pour les autres champs BibTeX.</p>
+
+    <h2>Configurer les types de fichiers externes</h2>
+
+    <p>Pour chaque
+    lien de fichier, un type de fichier doit être choisi afin
+    de déterminer quel icône devra être
+    utilisé et quelle application devra être
+    appelée pour ouvrir le fichier. La liste des types de
+    fichier peut être affichée et éditée
+    en choisissant <b>Options -> Gérer les types de
+    fichiers externes</b> ou en cliquant sur le bouton
+    <b>Gérer les types de fichiers externes</b> dans
+    l'onglet <b>Programmes externes</b> des
+    préférences.</p>
+
+    <p>Un type de fichier est défini par un nom, un
+    icône, une extension de fichier et une application pour
+    afficher les fichiers. Sous Windows, le nom de l'application
+    peut être omis afin d'utiliser l'afficheur par
+    défaut de Windows.</p>
+
+    <h2>Ajouter des liens externes à une
+    entrée</h2>
+
+    <p>Si le champ "fichier" est inclus dans les
+    <a href="GeneralFields.html">champs généraux</a>,
+    vous pouvez éditer la liste des liens externes d'une
+    entrée dans
+    l'<a href="EntryEditorHelp.html">éditeur
+    d'entrées</a>. L'éditeur d'entrée inclut
+    des boutons pour insérer, éditer et supprimer des
+    liens, ainsi que des boutons pour ré-ordonner la liste
+    de liens.</p>
+
+    <p>Si vous avez un fichier à l'intérieur ou en
+    aval de votre répertoire de fichiers (configuré
+    dans <b>Préférences -> Programmes externes
+    -> Liens vers les fichiers externes -> Répertoire
+    de fichiers principal</b>), si son extension correspondant
+    à l'un des types de fichiers externes définis, et
+    si son nom contient la clef d'une entrée BibTeX, le
+    fichier pourra être lié automatiquement en
+    cliquant sur le bouton <b>Auto</b> dans l'éditeur
+    d'entrées. Les règles décrivant les noms
+    de fichiers pouvant être liés automatiquement
+    à une clef BibTeX peuvent être configurées
+    dans <b>Préférences -> Programmes externes
+    -> Liens vers les fichiers externes -> Utiliser une
+    recherche par expression régulière</b>.</p>
+
+    <p>Si vous voulez télécharger un fichier et le
+    lier à partir d'une entrée BibTeX, vous pouvez le
+    faire en cliquant sur le bouton
+    <b>Télécharger</b> de l'éditeur
+    d'entrées. Une boîte de dialogue va s'afficher,
+    vous demandant d'entrer l'URL. Le fichier sera
+    téléchargé dans votre répertoire de
+    fichiers principal, renommé selon la clef BibTeX de
+    l'entrée et finalement lié depuis cette
+    entrée.</p>
+
+    <h2>Ouvrir les fichiers externes</h2>
+
+    <p>Il y a plusieurs
+    façons d'ouvrir un fichier externe ou une page web. Dans
+    la table d'entrées, vous pouvez sélectionner une
+    entrée et utiliser le menu, le raccourci-clavier ou le
+    menu déroulant pour ouvrir le premier lien externe d'une
+    entrée. Alternativement, si la table d'entrées
+    est configurée pour afficher la colonne <b>Fichier</b>
+    (configuré dans <b>Préférences -> Table
+    des entrées -> Colonnes de tableau
+    particulières -> Afficher la colonne Fichier</b>),
+    vous pouvez cliquer sur l'icône fichier pour ouvrir le
+    premier lien externe d'une entrée. Pour accéder
+    à un lien particulier d'une entrée, cliquez sur
+    l'icône avec le bouton droit de la souris (ou
+    <b>Ctrl-clic</b> sur Max OS X) pour afficher un menu montrant
+    tous les liens.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/GeneralFields.html b/src/help/fr/GeneralFields.html
index 9775d51..5e46967 100644
--- a/src/help/fr/GeneralFields.html
+++ b/src/help/fr/GeneralFields.html
@@ -1,25 +1,29 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="fr-fr"><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      lang="fr-fr">
 
 <body style="color: rgb(39, 88, 86); direction: ltr;">
-<basefont size="4" color="#2F4958" face="arial">
-<h1>Personnalisation des champs généraux</h1>
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<p>
-Vous pouvez ajouter un nombre arbitraire d'onglets dans l'éditeur d'entrées. Ceux-ci seront alors présents pour tous les types d'entrées. Pour personnaliser ces onglets, allez dans "Options -> Configurer les champs généraux".
-</p>
-<p>
-Vous devez spécifier un onglet par ligne. La ligne doit commencer par le nom de l'onglet suivi par 2 points (:) puis par les champs séparés par un point-virgule (;), devant être contenus. 
-</p>
-<p>
-Exemple :
-</p>
-<code>
-General:url;keyword;doi;pdf<BR>
-Abstract:abstract;annote
-</code>
-<p>
-produit un onglet appelé "General" contenant les champs url, keywords, doi et pdf et un onglet appelé "Abstract" contenant les champs abstract et annote.
-</p>
-  </body>
-</html>
+    <h1>Personnalisation des champs généraux</h1>
+
+    <p>Vous pouvez ajouter un nombre arbitraire d'onglets dans
+    l'éditeur d'entrées. Ceux-ci seront alors
+    présents pour tous les types d'entrées. Pour
+    personnaliser ces onglets, allez dans "Options -> Configurer
+    les champs généraux".</p>
+
+    <p>Vous devez spécifier un onglet par ligne. La ligne
+    doit commencer par le nom de l'onglet suivi par 2 points (:)
+    puis par les champs séparés par un point-virgule
+    (;), devant être contenus.</p>
+
+    <p>Exemple :</p><code>General:url;keyword;doi;pdf<br />
+    Abstract:abstract;annote</code>
+
+    <p>produit un onglet appelé "General" contenant les
+    champs url, keywords, doi et pdf et un onglet appelé
+    "Abstract" contenant les champs abstract et annote.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/GroupsHelp.html b/src/help/fr/GroupsHelp.html
index ec231ae..0341fd8 100644
--- a/src/help/fr/GroupsHelp.html
+++ b/src/help/fr/GroupsHelp.html
@@ -1,136 +1,426 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-
-<H1>Les groupes</H1>
-
-Les groupes permettent de structurer une base de données BibTeX selon une arborescence rappelant l'organisation des fichiers sur un disque dur dans des répertoires et sous-répertoires. Les deux principales différences sont :
-
-<ul>
-<li> Alors qu'un fichier est toujours localisé dans un seul répertoire, une entrée peut être incluse dans plus d'un groupe.
-<li> Les groupes peuvent utiliser certains critères pour définir dynamiquement leur contenu. Les nouvelles entrées qui correspondent à ces critères sont automatiquement incluses à ces groupes. Cette caractéristique n'est pas disponible dans les systèmes de fichiers habituels, mais est présente dans certains logiciels de messagerie électronique (tel que Thunderbird et Opera).
-</ul>
-
-Sélectionner un groupe montre les entrées contenues dans ce groupe. Sélectionner plusieurs groupes montre les entrées contenues dans au moins un des groupes (union) ou dans tous les groupes (intersection), selon le paramétrage en cours. Tout ceci est expliqué en détail ci-dessous.
-<p>
-Les définitions de groupes sont spécifiques à chaque base de données ; Elles sont sauvées comme un bloc <tt>@COMMENT</tt> dans le fichier <tt>.bib</tt> et sont communes à tous les utilisateurs (des futures versions de JabRef pourrait supporter des groupes dépendants des utilisateurs).
-
-<H2>Interface</H2>
-
-L'interface des groupes se trouve dans le panneau latéral sur la gauche de l'écran. Il peut être affiché ou masqué en appuyant sur <tt>CTRL-MAJ-G</tt> ou sur le bouton des groupes dans la barre d'outils. L'interface a plusieurs boutons, mais la plupart des fonctions sont accessibles par un menu contextuel ("clic droit"). La fonction Glisser-Déplacer est aussi disponible.
-<p>
-
-<table cellspacing=0 cellpadding=5 border=0 bgcolor=#c0ffc0>
-<tr><td>
-<h2>Quelques exemples rapides</h2>
-
-Vous pourriez vouloir...
-
-<h3>...uniquement créer un groupe et lui assigner quelques entrées.</h3>
-
-Assurez-vous que l'interface des groupes est visible. Appuyez sur le bouton <b>Nouveau Groupe</b>, entrez un nom pour ce groupe puis appuyez sur OK en conservant les valeurs par défaut. Maintenant, sélectionnez les entrées qui doivent être assignées à ce groupe et utiliser un Glisser-Déplacer vers le groupe, ou l'option <b>Ajouter au groupe</b> du menu contextuel. Enfin, sélectionnez le groupe pour voir son contenu (qui doit correspo [...]
-
-<h3>...utiliser le champ <tt>keywords</tt> pour grouper les entrées</h3>
-
-Assurez-vous que l'interface des groupes est visible. Appuyez sur le bouton <b>Nouveau Groupe</b>, entrez un nom pour ce groupe et sélectionner l'option qui groupe dynamiquement les entrées en cherchant un mot-clef dans un champ. Entrez le mot-clef à rechercher, puis cliquer sur OK. Enfin, sélectionnez le groupe pour voir son contenu (qui doit correspondre aux entrées dont le champ <tt>keywords</tt> contient le mot-clef que vous avez spécifié).
-
-<h3>...utiliser une expression de recherche de forme libre pour définir un groupe</h3>
-
-Assurez-vous que l'interface des groupes est visible. Appuyez sur le bouton <b>Nouveau Groupe</b>, entrez un nom pour ce groupe et sélectionner l'option qui groupe dynamiquement les entrées en utilisant une expression de recherche de forme libre. Entrez <tt>author=smith</tt> comme expression de recherche (remplacez <tt>smith</tt> avec un nom d'auteur présent dans votre base et cliquez sur OK. Enfin, sélectionnez le groupe pour voir son contenu (qui doit corres [...]
-
-<h3>...combiner plusieurs groupes</h3>
-
-Créez deux groupes différents (par exemple, tel que décrit ci-dessus). Cliquez sur le bouton <b>Paramètres</b> et assurez-vous que <b>Union</b> est sélectionné. Maintenant, sélectionnez les deux groupes. Vous devriez voir uniquement les entrées appartenant aux deux groupes (ce qui peut en faire aucune ou exactement les mêmes entrées que précédemment si les deux groupes contiennent les mêmes entrées).
-
-<h3>...identifier les groupes se chevauchant</h3>
-
-JabRef vous permet d'identifier facilement les groupes qui se chevauchent parmi les groupes actuellement sélectionnés (c-à-d ceux qui contiennent au moins une entrée qui est aussi contenu dans les groupes actuellement sélectionnés). Cliquez sur le bouton <b>Paramètres</b> et activé l'option pour montrer les groupes qui se chevauchent. Ensuite sélectionnez un groupe qui chevauche d'autres groupes. Les noms de ces groupes s'aff [...]
-
-</tr></td>
-</table>
-<p>
-
-<H2>Les types de groupes</H2>
-
-Dans JabRef, il y a quatre types de groupes différents :
-
-<ol>
-<li> Le groupe <b>Toutes les entrées</b>, qui -- comme son nom le suggère -- contient toutes les entrées, est toujours présent et ne peut pas être édité ou supprimé.
-<li> <b>Les groupes manuels</b> se comportent comme les répertoires d'un disque et contiennent uniquement les entrées que vous leur avez explicitement assignées.
-<li> <b>Les groupes dynamiques basés sur la recherche d'un mot-clef</b> contiennent des entrées pour lesquelles un champ BibTeX donné (par ex. <tt>keywords</tt>) contient un certain mot-clef (par ex. <tt>électrique</tt>). Cette méthode ne nécessite pas d'assignation manuelle des entrées, mais utilise les informations qui sont déjà présentes dans la base de données. Si toutes les entrées de votre base de d [...]
-<li> <b>Les groupes dynamiques basés sur des expressions de recherche de forme libre</b> contiennent les entrées qui correspondent à l'expression de recherche spécifiée et suivant la même syntaxe que <a href="SearchHelp.html">l'interface de recherche</a> dans le panneau latéral. Cette <a href="SearchHelp.html#advanced">syntaxe</a> supportent les opérateurs logiques (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) et permet de spécifi [...]
-</ol>
-
-Chaque groupe que vous créez fait partie de ces trois derniers types. La fenêtre d'édition des groupes, qui s'ouvre en double-cliquant sur un groupe, montre une description succincte (en français de tous les jours) de la définition du groupe sélectionné/édité.
-
-<H2>La structure des groupes, créer et supprimer des groupes</H2>
-
-Comme pour les répertoires, les groupes sont structurés selon une arborescence, avec le groupe <b>Toutes les entrées</b> à la racine. En faisant un clic droit sur un groupe, vous pouvez ajoutez un nouveau groupe à l'arbre, soit au même niveau que le groupe sélectionné, soit comme un sous-groupe. Le bouton <b>Nouveau groupe</b> vous permet de créer un nouveau sous-groupe au groupe <b>Toutes les entrées</b>, quelque soit  [...]
-<p>
-Annuler et Répéter fonctionnent pour toutes les éditions.
-
-<H3>Les groupes manuels</h3>
-
-Les groupes manuels sont alimentés uniquement par l'assignation explicite des entrées. Après avoir créé un groupe manuel, vous sélectionnez les entrées à lui assigner et utilisez soit un Glisser-Déplacer soit le menu contextuel de la table des entrées. Il n'y a pas d'options à configurer.
-<p>
-Cette méthode de groupement nécessite que toutes les entrées aient une clef BibTeX unique. Dans le cas de clefs BibTeX manquantes ou dupliquées, l'assignation de ces entrées ne pourra pas être correctement rétablie lors de futures sessions.
-
-<H3>Les groupes dynamiques</h3>
-
-Le contenu d'un groupe dynamique est défini par une condition logique. Uniquement les entrées qui remplissent cette condition sont contenues dans le groupe. Cette méthode utilise des informations stockées dans la base de données elle-même et s'actualise dynamiquement dés que la base de données est modifiée.
-<p>
-Deux types de conditions logiques peuvent être utilisées :
-<dl>
-<dt><b>Recherche d'un mot-clef dans un champ</b></dt>
-<dd>
-Cette méthode groupe les entrées dans lesquelles un champ BibTeX spécifié (par ex. <tt>keywords</tt>) contient le terme de recherche spécifié (par ex. <tt>électrique</tt>). Evidemment, pour que cela fonctionne, le champ doit être présent dans toutes les entrées et son contenu doit être pertinent. L'exemple ci-dessus regroupera toutes les entrées qui font références à électrique.  [...]
-</dd>
-<dt><b>Utiliser une expression de recherche de forme libre</b></dt>
-<dd>
-Ceci est similaire à ce qui est décrit ci-dessus mais, au lieu de rechercher dans un seul champ pour un unique terme de recherche, la <a href="SearchHelp.html#advanced">syntaxe des expressions de recherche</a>  peut être utilisées, autorisant l'emploi d'opérateurs logiques (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) et permettant les recherches sur plusieurs champs BibTeX. Par exemple, l'expression de recherche <tt>keywords=régression and not keywor [...]
-</dd>
-</dl>
-
-Dans le panneau des groupes, les groupes dynamiques sont par défaut affichés en <i>italique</i>. Cela peut être modifié dans les préférences (Options -> Préférences -> Groupes, case "Afficher les groupes dynamiques en italique").
-
-<h3>Contexte hiérarchique</h3>
-
-Par défaut, un groupe est <b>indépendant</b> de sa position dans l'arbre des groupes : lorsqu'il est sélectionné, uniquement son contenu est affiché. Cependant, particulièrement lors de l'utilisation de groupes dynamiques, il est souvent utile de définir un sous-groupe qui <b>raffine son sur-groupe</b>, c-à-d qu'en le sélectionnant les entrées contenues dans les deux groupes sont affichées. Par exemple, cr& [...]
-<p>
-Le complément logique au groupe raffinant est un groupe qui <b>inclut ses sous-groupes</b>, c-à-d qu'en le sélectionnant, ce ne sont pas uniquement les propres entrées du groupe mais aussi les entrées de ses sous-groupes qui sont affichées. Dans l'arbre des groupes, ce type de groupe possède un icône spécial (cela peut-être annulé dans les préférences).
-
-<h2>Afficher les entrées d'un groupe, combiner plusieurs groupes</H2>
-
-Sélectionner un groupe montre les entrées contenues dans ce groupe en les surlignant et, selon le paramétrage (accessible en cliquant sur le bouton <b>Paramètres</b>), les déplacent au sommet de la liste et/ou les sélectionnent. Ces options sont identiques à celles disponibles habituellement pour la recherche.
-<p>
-Quand plusieurs groupes sont sélectionnés, soit l'union soit l'intersection de leurs contenus est affiché en fonction de paramétrage choisi. Cela permet de combiner rapidement plusieurs conditions. Par exemple, si vous avez un groupe manuel <tt>Extrêmement Important</tt> auquel vous assignez toutes les entrées extrêmement importantes, vous pouvez voir les entrées extrêmement importantes dans tout autre groupe en sélection [...]
-
-<h2>Groupes et recherche</h2>
-
-Lors de l'affichage de contenu d'un ou plusieurs groupes, une recherche peut être effectuée à l'intérieur de ce contenu en utilisant la technique de recherche habituelle.
-
-<h2>Surligner les groupes se chevauchant</h2>
-
-Le bouton <b>Paramètres</b> offre une option de surlignement des groupes se chevauchant. Si elle est activée, lors de la sélection d'un ou plusieurs groupes, tous les groupes contenant au moins une des entrées appartenant au(x) groupe(s) sélectionné(s) sont surlignés. Cela identifie rapidement les chevauchements entre les contenus des groupes. Vous pourriez, par exemple, créer un groupe <tt>A lire</tt> qui contient toutes les entr&e [...]
-
-<h2>Caractéristiques avancées</h2>
-
-Une fois que vous maîtriserez les concepts de groupe décrits ci-dessus, les caractéristiques avancées suivantes pourraient vous être utile.
-
-<h3>Création automatique de groupes dynamiques</h3>
-
-En cliquant sur le bouton <b>Créer automatiquement des groupes pour la base de données</b> (les trois "+" jaunes-orangés), vous pouvez facilement créer une série de groupes pertinents pour votre base de données. Ce dispositif collectera tous les mots trouvés dans le champ que vous aurez spécifié et créera un groupe pour chaque mot. C'est utile si, par exemple, votre base contient des mots-clefs pertinents pour toutes l [...]
-<p>
-Vous pouvez aussi spécifier des caractères à ignorer, par exemple les virgules utilisées entre les mots-clefs. Ils seront traités comme des séparateurs de mots et non comme en faisant partie. Cette étape est importante pour que les mots-clefs composés tels que <tt>distribution de Laplace</tt> soient reconnus comme une unique entité sémantique (vous ne pouvez pas utiliser cette option pour supprimer des mots complets. P [...]
-
-<h3>Rafraîchir l'affichage des groupes</h3>
-
-Le bouton <b>Rafraîchir</b> met à jour la table des entrées pour refléter la sélection actuelle des groupes. Habituellement, cela s'effectue automatiquement, mais, dans quelques occasions (par exemple après un Annuler/Répéter en rapport avec les groupes), un rafraîchissement manuel est nécessaire.
-
-<h3>Combiner des groupes raffinants avec des groupes incluants</h3>
-
-Si un groupe raffinant est le sous-groupe d'un groupe qui inclue ses sous-groupes -- les frères du groupe raffinant --, les frères sont ignorés quand le groupe raffinant est sélectionné.
-
-</HTML> 
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Les groupes</h1>
+
+    <p>Les groupes permettent de structurer une
+    base de données BibTeX selon une arborescence rappelant
+    l'organisation des fichiers sur un disque dur dans des
+    répertoires et sous-répertoires. Les deux
+    principales différences sont :</p>
+
+    <ul>
+        <li>Alors qu'un fichier est toujours localisé dans
+        un seul répertoire, une entrée peut
+        être incluse dans plus d'un groupe.</li>
+
+        <li>Les groupes peuvent utiliser certains critères
+        pour définir dynamiquement leur contenu. Les
+        nouvelles entrées qui correspondent à ces
+        critères sont automatiquement incluses à ces
+        groupes. Cette caractéristique n'est pas disponible
+        dans les systèmes de fichiers habituels, mais est
+        présente dans certains logiciels de messagerie
+        électronique (tel que Thunderbird et Opera).</li>
+    </ul>Sélectionner un groupe montre les entrées
+    contenues dans ce groupe. Sélectionner plusieurs groupes
+    montre les entrées contenues dans au moins un des
+    groupes (union) ou dans tous les groupes (intersection), selon
+    le paramétrage en cours. Tout ceci est expliqué
+    en détail ci-dessous.
+
+    <p>Les définitions de groupes sont spécifiques
+    à chaque base de données ; Elles sont
+    sauvées comme un bloc <tt>@COMMENT</tt> dans le fichier
+    <tt>.bib</tt> et sont communes à tous les utilisateurs
+    (des futures versions de JabRef pourrait supporter des groupes
+    dépendants des utilisateurs).</p>
+
+    <h2>Interface</h2>
+
+    <p>L'interface des groupes se trouve dans le
+    panneau latéral sur la gauche de l'écran. Il peut
+    être affiché ou masqué en appuyant sur
+    <tt>CTRL-MAJ-G</tt> ou sur le bouton des groupes dans la barre
+    d'outils. L'interface a plusieurs boutons, mais la plupart des
+    fonctions sont accessibles par un menu contextuel ("clic
+    droit"). La fonction Glisser-Déplacer est aussi
+    disponible.</p>
+
+    <table cellspacing="0"
+           cellpadding="5"
+           border="0"
+           bgcolor="#C0FFC0">
+        <tr>
+            <td>
+                <h2>Quelques exemples rapides</h2>
+
+                <p>Vous pourriez vouloir...</p>
+
+                <h3>...uniquement créer un groupe et lui
+                assigner quelques entrées.</h3>
+
+                <p>Assurez-vous
+                que l'interface des groupes est visible. Appuyez
+                sur le bouton <b>Nouveau Groupe</b>, entrez un nom
+                pour ce groupe puis appuyez sur OK en conservant
+                les valeurs par défaut. Maintenant,
+                sélectionnez les entrées qui doivent
+                être assignées à ce groupe et
+                utiliser un Glisser-Déplacer vers le groupe,
+                ou l'option <b>Ajouter au groupe</b> du menu
+                contextuel. Enfin, sélectionnez le groupe
+                pour voir son contenu (qui doit correspondre aux
+                entrées que vous venez de lui assigner).</p>
+
+                <h3>...utiliser le champ <tt>keywords</tt> pour
+                grouper les entrées</h3>
+
+                <p>Assurez-vous que
+                l'interface des groupes est visible. Appuyez sur le
+                bouton <b>Nouveau Groupe</b>, entrez un nom pour ce
+                groupe et sélectionner l'option qui groupe
+                dynamiquement les entrées en cherchant un
+                mot-clef dans un champ. Entrez le mot-clef à
+                rechercher, puis cliquer sur OK. Enfin,
+                sélectionnez le groupe pour voir son contenu
+                (qui doit correspondre aux entrées dont le
+                champ <tt>keywords</tt> contient le mot-clef que
+                vous avez spécifié).</p>
+
+                <h3>...utiliser une expression de recherche de
+                forme libre pour définir un
+                groupe</h3>
+
+                <p>Assurez-vous que l'interface des groupes
+                est visible. Appuyez sur le bouton <b>Nouveau
+                Groupe</b>, entrez un nom pour ce groupe et
+                sélectionner l'option qui groupe
+                dynamiquement les entrées en utilisant une
+                expression de recherche de forme libre. Entrez
+                <tt>author=smith</tt> comme expression de recherche
+                (remplacez <tt>smith</tt> avec un nom d'auteur
+                présent dans votre base et cliquez sur OK.
+                Enfin, sélectionnez le groupe pour voir son
+                contenu (qui doit correspondre aux entrées
+                dont le champ <tt>author</tt> contient le nom que
+                vous avez spécifié).</p>
+
+                <h3>...combiner plusieurs groupes</h3>
+
+                <p>Créez
+                deux groupes différents (par exemple, tel
+                que décrit ci-dessus). Cliquez sur le bouton
+                <b>Paramètres</b> et assurez-vous que
+                <b>Union</b> est sélectionné.
+                Maintenant, sélectionnez les deux groupes.
+                Vous devriez voir uniquement les entrées
+                appartenant aux deux groupes (ce qui peut en faire
+                aucune ou exactement les mêmes entrées
+                que précédemment si les deux groupes
+                contiennent les mêmes entrées).</p>
+
+                <h3>...identifier les groupes se
+                chevauchant</h3>
+
+                <p>JabRef vous permet d'identifier
+                facilement les groupes qui se chevauchent parmi les
+                groupes actuellement sélectionnés
+                (c-à-d ceux qui contiennent au moins une
+                entrée qui est aussi contenu dans les
+                groupes actuellement sélectionnés).
+                Cliquez sur le bouton <b>Paramètres</b> et
+                activé l'option pour montrer les groupes qui
+                se chevauchent. Ensuite sélectionnez un
+                groupe qui chevauche d'autres groupes. Les noms de
+                ces groupes s'afficheront en rouge.</p>
+            </td>
+        </tr>
+    </table>
+
+    <h2>Les types de groupes</h2>
+
+    <p>Dans JabRef, il y a quatre types
+    de groupes différents :</p>
+
+    <ol>
+        <li>Le groupe <b>Toutes les entrées</b>, qui --
+        comme son nom le suggère -- contient toutes les
+        entrées, est toujours présent et ne peut pas
+        être édité ou supprimé.</li>
+
+        <li><b>Les groupes manuels</b> se comportent comme les
+        répertoires d'un disque et contiennent uniquement
+        les entrées que vous leur avez explicitement
+        assignées.</li>
+
+        <li><b>Les groupes dynamiques basés sur la recherche
+        d'un mot-clef</b> contiennent des entrées pour
+        lesquelles un champ BibTeX donné (par ex.
+        <tt>keywords</tt>) contient un certain mot-clef (par ex.
+        <tt>électrique</tt>). Cette méthode ne
+        nécessite pas d'assignation manuelle des
+        entrées, mais utilise les informations qui sont
+        déjà présentes dans la base de
+        données. Si toutes les entrées de votre base
+        de données ont des mots-clefs pertinents dans leur
+        champ <tt>keywords</tt>, utiliser ce type de groupe
+        pourrait être votre meilleur choix.</li>
+
+        <li><b>Les groupes dynamiques basés sur des
+        expressions de recherche de forme libre</b> contiennent les
+        entrées qui correspondent à l'expression de
+        recherche spécifiée et suivant la même
+        syntaxe que <a href="SearchHelp.html">l'interface de
+        recherche</a> dans le panneau latéral. Cette
+        <a href="SearchHelp.html#advanced">syntaxe</a> supportent
+        les opérateurs logiques (<tt>AND</tt>, <tt>OR</tt>,
+        <tt>NOT</tt>) et permet de spécifier un ou plusieurs
+        champs BibTeX pour la recherche, autorisant des
+        définitions de groupes plus flexibles que la
+        recherche d'un mot-clef (par ex. <tt>author=smith and
+        title=électrique</tt>).</li>
+    </ol>Chaque groupe que vous créez fait partie de ces
+    trois derniers types. La fenêtre d'édition des
+    groupes, qui s'ouvre en double-cliquant sur un groupe, montre
+    une description succincte (en français de tous les
+    jours) de la définition du groupe
+    sélectionné/édité.
+
+    <h2>La structure des groupes, créer et supprimer des
+    groupes</h2>
+
+    <p>Comme pour les répertoires, les groupes sont
+    structurés selon une arborescence, avec le groupe
+    <b>Toutes les entrées</b> à la racine. En faisant
+    un clic droit sur un groupe, vous pouvez ajoutez un nouveau
+    groupe à l'arbre, soit au même niveau que le
+    groupe sélectionné, soit comme un sous-groupe. Le
+    bouton <b>Nouveau groupe</b> vous permet de créer un
+    nouveau sous-groupe au groupe <b>Toutes les entrées</b>,
+    quelque soit le(s) groupe(s) actuellement
+    sélectionné(s). Le menu contextuel vous permet de
+    supprimer des groupes et/ou des sous-groupes, de trier les
+    sous-groupes par ordre alphabétique ou de
+    déplacer des groupes au sein de l'arbre. Cette
+    dernière fonction peut aussi être
+    réalisées par Glisser-Déplacer, avec la
+    limitation que le Glisser-Déplacer ne permet pas de
+    changer l'ordre des sous-groupes d'un groupe.</p>
+
+    <p>Annuler et Répéter fonctionnent pour toutes
+    les éditions.</p>
+
+    <h3>Les groupes manuels</h3>
+
+    <p>Les groupes manuels sont
+    alimentés uniquement par l'assignation explicite des
+    entrées. Après avoir créé un groupe
+    manuel, vous sélectionnez les entrées à
+    lui assigner et utilisez soit un Glisser-Déplacer soit
+    le menu contextuel de la table des entrées. Il n'y a pas
+    d'options à configurer.</p>
+
+    <p>Cette méthode de groupement nécessite que
+    toutes les entrées aient une clef BibTeX unique. Dans le
+    cas de clefs BibTeX manquantes ou dupliquées,
+    l'assignation de ces entrées ne pourra pas être
+    correctement rétablie lors de futures sessions.</p>
+
+    <h3>Les groupes dynamiques</h3>
+
+    <p>Le contenu d'un groupe dynamique
+    est défini par une condition logique. Uniquement les
+    entrées qui remplissent cette condition sont contenues
+    dans le groupe. Cette méthode utilise des informations
+    stockées dans la base de données elle-même
+    et s'actualise dynamiquement dés que la base de
+    données est modifiée.</p>
+
+    <p>Deux types de conditions logiques peuvent être
+    utilisées :</p>
+
+    <dl>
+        <dt><b>Recherche d'un mot-clef dans un champ</b></dt>
+
+        <dd>Cette méthode groupe les entrées dans
+        lesquelles un champ BibTeX spécifié (par ex.
+        <tt>keywords</tt>) contient le terme de recherche
+        spécifié (par ex.
+        <tt>électrique</tt>). Evidemment, pour que cela
+        fonctionne, le champ doit être présent dans
+        toutes les entrées et son contenu doit être
+        pertinent. L'exemple ci-dessus regroupera toutes les
+        entrées qui font références à
+        électrique. Utiliser le champ <tt>author</tt> permet
+        de grouper les entrées d'un auteur donné,
+        etc. Le mot-clef à rechercher peut être du
+        texte brut ou une expression régulière. Dans
+        le premier cas, JabRef permet l'assignation(/la
+        suppression) manuelle des entrées d'un groupe en
+        modifiant(/supprimant) simplement le terme de recherche du
+        contenu du champ de groupement. C'est pertinent uniquement
+        pour le champ <tt>keywords</tt> ou pour les champs
+        autodéfinis mais, évidemment, pas pour les
+        champs tels que <tt>author</tt> ou <tt>year</tt>.</dd>
+
+        <dt><b>Utiliser une expression de recherche de forme
+        libre</b></dt>
+
+        <dd>Ceci est similaire à ce qui est décrit
+        ci-dessus mais, au lieu de rechercher dans un seul champ
+        pour un unique terme de recherche, la
+        <a href="SearchHelp.html#advanced">syntaxe des expressions
+        de recherche</a> peut être utilisées,
+        autorisant l'emploi d'opérateurs logiques
+        (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) et permettant les
+        recherches sur plusieurs champs BibTeX. Par exemple,
+        l'expression de recherche <tt>keywords=régression
+        and not keywords=linéaire</tt> groupe les
+        entrées concernant la régression
+        non-linéaire.</dd>
+    </dl>Dans le panneau des groupes, les groupes dynamiques sont
+    par défaut affichés en <i>italique</i>. Cela peut
+    être modifié dans les préférences
+    (Options -> Préférences -> Groupes, case
+    "Afficher les groupes dynamiques en italique").
+
+    <h3>Contexte hiérarchique</h3>
+
+    <p>Par défaut, un
+    groupe est <b>indépendant</b> de sa position dans
+    l'arbre des groupes : lorsqu'il est
+    sélectionné, uniquement son contenu est
+    affiché. Cependant, particulièrement lors de
+    l'utilisation de groupes dynamiques, il est souvent utile de
+    définir un sous-groupe qui <b>raffine son
+    sur-groupe</b>, c-à-d qu'en le sélectionnant les
+    entrées contenues dans les deux groupes sont
+    affichées. Par exemple, créez un sur-groupe
+    contenant les entrées possédant le mot-clef
+    <tt>distribution</tt> et un sous-groupe contenant les
+    entrées possédant le mot-clef <tt>gauss</tt>
+    raffinant ce sur-groupe. Sélectionner le sous-groupe
+    affichera les entrées correspondant aux deux conditions,
+    c-à-d celles qui concerneront les distributions
+    gaussiennes. En ajoutant au sur-groupe original un autre
+    sous-groupe recherchant le terme <tt>laplace</tt>, le
+    groupement peut facilement être étendu. Dans un
+    arbre de groupes, les groupes raffinants ont un icône
+    spécial (cela peut-être annulé dans les
+    préférences).</p>
+
+    <p>Le complément logique au groupe raffinant est un
+    groupe qui <b>inclut ses sous-groupes</b>, c-à-d qu'en
+    le sélectionnant, ce ne sont pas uniquement les propres
+    entrées du groupe mais aussi les entrées de ses
+    sous-groupes qui sont affichées. Dans l'arbre des
+    groupes, ce type de groupe possède un icône
+    spécial (cela peut-être annulé dans les
+    préférences).</p>
+
+    <h2>Afficher les entrées d'un groupe, combiner plusieurs
+    groupes</h2>
+
+    <p>Sélectionner un groupe montre les
+    entrées contenues dans ce groupe en les surlignant et,
+    selon le paramétrage (accessible en cliquant sur le
+    bouton <b>Paramètres</b>), les déplacent au
+    sommet de la liste et/ou les sélectionnent. Ces options
+    sont identiques à celles disponibles habituellement pour
+    la recherche.</p>
+
+    <p>Quand plusieurs groupes sont sélectionnés,
+    soit l'union soit l'intersection de leurs contenus est
+    affiché en fonction de paramétrage choisi. Cela
+    permet de combiner rapidement plusieurs conditions. Par
+    exemple, si vous avez un groupe manuel <tt>Extrêmement
+    Important</tt> auquel vous assignez toutes les entrées
+    extrêmement importantes, vous pouvez voir les
+    entrées extrêmement importantes dans tout autre
+    groupe en sélectionnant les deux groupes (cela
+    nécessite d'avoir <b>Intersection</b>
+    sélectionné dans les paramètres).</p>
+
+    <h2>Groupes et recherche</h2>
+
+    <p>Lors de l'affichage de contenu
+    d'un ou plusieurs groupes, une recherche peut être
+    effectuée à l'intérieur de ce contenu en
+    utilisant la technique de recherche habituelle.</p>
+
+    <h2>Surligner les groupes se chevauchant</h2>
+
+    <p>Le bouton
+    <b>Paramètres</b> offre une option de surlignement des
+    groupes se chevauchant. Si elle est activée, lors de la
+    sélection d'un ou plusieurs groupes, tous les groupes
+    contenant au moins une des entrées appartenant au(x)
+    groupe(s) sélectionné(s) sont surlignés.
+    Cela identifie rapidement les chevauchements entre les contenus
+    des groupes. Vous pourriez, par exemple, créer un groupe
+    <tt>A lire</tt> qui contient toutes les entrées que vous
+    comptez lire. A présent, dés que vous
+    sélectionnez n'importe quel groupe, le groupe <tt>A
+    lire</tt> sera surligné si le groupe
+    sélectionné contient des entrées que vous
+    comptez lire.</p>
+
+    <h2>Caractéristiques avancées</h2>
+
+    <p>Une fois que
+    vous maîtriserez les concepts de groupe décrits
+    ci-dessus, les caractéristiques avancées
+    suivantes pourraient vous être utile.</p>
+
+    <h3>Création automatique de groupes dynamiques</h3>
+
+    <p>En cliquant sur le bouton <b>Créer automatiquement des
+    groupes pour la base de données</b> (les trois "+"
+    jaunes-orangés), vous pouvez facilement créer une
+    série de groupes pertinents pour votre base de
+    données. Ce dispositif collectera tous les mots
+    trouvés dans le champ que vous aurez
+    spécifié et créera un groupe pour chaque
+    mot. C'est utile si, par exemple, votre base contient des
+    mots-clefs pertinents pour toutes les entrées. En
+    gênerant automatiquement les groupes en se basant sur le
+    champ <tt>keywords</tt>, vous devriez avoir une série de
+    groupes sans effort.</p>
+
+    <p>Vous pouvez aussi spécifier des caractères
+    à ignorer, par exemple les virgules utilisées
+    entre les mots-clefs. Ils seront traités comme des
+    séparateurs de mots et non comme en faisant partie.
+    Cette étape est importante pour que les mots-clefs
+    composés tels que <tt>distribution de Laplace</tt>
+    soient reconnus comme une unique entité
+    sémantique (vous ne pouvez pas utiliser cette option
+    pour supprimer des mots complets. Pour cela, supprimer
+    manuellement les groupes non voulus à la suite de leur
+    création automatique.</p>
+
+    <h3>Rafraîchir l'affichage des groupes</h3>
+
+    <p>Le bouton
+    <b>Rafraîchir</b> met à jour la table des
+    entrées pour refléter la sélection
+    actuelle des groupes. Habituellement, cela s'effectue
+    automatiquement, mais, dans quelques occasions (par exemple
+    après un Annuler/Répéter en rapport avec
+    les groupes), un rafraîchissement manuel est
+    nécessaire.</p>
+
+    <h3>Combiner des groupes raffinants avec des groupes
+    incluants</h3>
+
+    <p>Si un groupe raffinant est le sous-groupe d'un
+    groupe qui inclue ses sous-groupes -- les frères du
+    groupe raffinant --, les frères sont ignorés
+    quand le groupe raffinant est sélectionné.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/HelpHelp.html b/src/help/fr/HelpHelp.html
index f5973f6..91a5a5b 100644
--- a/src/help/fr/HelpHelp.html
+++ b/src/help/fr/HelpHelp.html
@@ -1,30 +1,40 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>La fenêtre d'aide</H1>
-<em>S'ouvre en cliquant sur le bouton d'aide ou en appuyant sur F1.</em>
-<P>
-La fenêtre d'aide est conçue pour fournir des informations sur l'utilisation de JabRef.
-
-<H2>Naviguer entre les fichiers d'aide</H2>
-
-La fenêtre d'aide est en fait un navigateur HTML simplifié, et les fichiers d'aide
-sont des fichiers HTML standard.
-<P>
-A l'ouverture, la fenêtre d'aide affichera des fichiers différents
-selon la fenêtre à partir de laquelle elle est lancée. Si ce fichier
-n'explique pas les points qui vous intéressent, le bouton <em>Contenu</em>
-de la barre d'outils vous affichera la liste des fichiers d'aide disponibles.
-
-<P>
-De plus, la barre d'outils contient des boutons de navigation pour afficher
-les fichiers précédents et suivants. Ils sont similaires aux boutons
-<em>Précédent</em> et <em>Suivant</em> d'un navigateur internet standard.
-Les raccourcis clavier pour la navigation sont la flèche gauche
-pour <em>Précédent</em> et la flèche droite pour <em>Suivant</em>.
-
-<P>
-La fenêtre d'aide se ferme en pressant ESCAPE.
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>La fenêtre d'aide</h1>
+
+    <p><em>S'ouvre en cliquant sur le
+    bouton d'aide ou en appuyant sur F1.</em></p>
+
+    <p>La fenêtre d'aide est conçue pour fournir des
+    informations sur l'utilisation de JabRef.</p>
+
+    <h2>Naviguer entre les fichiers d'aide</h2>
+
+    <p>La fenêtre
+    d'aide est en fait un navigateur HTML simplifié, et les
+    fichiers d'aide sont des fichiers HTML standard.</p>
+
+    <p>A l'ouverture, la fenêtre d'aide affichera des
+    fichiers différents selon la fenêtre à
+    partir de laquelle elle est lancée. Si ce fichier
+    n'explique pas les points qui vous intéressent, le
+    bouton <em>Contenu</em> de la barre d'outils vous affichera la
+    liste des fichiers d'aide disponibles.</p>
+
+    <p>De plus, la barre d'outils contient des boutons de
+    navigation pour afficher les fichiers précédents
+    et suivants. Ils sont similaires aux boutons
+    <em>Précédent</em> et <em>Suivant</em> d'un
+    navigateur internet standard. Les raccourcis clavier pour la
+    navigation sont la flèche gauche pour
+    <em>Précédent</em> et la flèche droite
+    pour <em>Suivant</em>.</p>
+
+    <p>La fenêtre d'aide se ferme en pressant ESCAPE.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/IEEEXploreHelp.html b/src/help/fr/IEEEXploreHelp.html
index a570190..6fd84a4 100644
--- a/src/help/fr/IEEEXploreHelp.html
+++ b/src/help/fr/IEEEXploreHelp.html
@@ -1,30 +1,39 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Recherche IEEEXplore</H1>
+    <h1>Recherche IEEEXplore</h1>
 
-IEEEXplore permet l'accès à de la litterature technique
-en génie électrique, informatique et électronique.
-<p>
-JabRef peut télécharger des citations à partir de la base de données IEEEXplore.
-Pour utiliser cette fonction, sélectionner <b>Recherche internet -> Recherche IEEEXplore</b>
-fera apparaître l'interface de recherche dans le panneau latéral.
-<P>
-Pour lancer une recherche, entrez les mots de votre requête et appuyez sur
+    <p>IEEEXplore permet l'accès
+    à de la litterature technique en génie
+    électrique, informatique et électronique.</p>
 
-<b>Entrée</b> ou sur le bouton <b>Rechercher</b>.
+    <p>JabRef peut télécharger des citations à
+    partir de la base de données IEEEXplore. Pour utiliser
+    cette fonction, sélectionner <b>Recherche internet ->
+    Recherche IEEEXplore</b> fera apparaître l'interface de
+    recherche dans le panneau latéral.</p>
 
-<p>
-La recherche est effectuée en mode invité, ce qui signifie qu'au maximum 100 résultats
-vous seront retournés.
+    <p>Pour lancer une recherche, entrez les mots de votre
+    requête et appuyez sur <b>Entrée</b> ou sur le
+    bouton <b>Rechercher</b>.</p>
 
-<p>
-Vous pouvez choisir de télécharger les résumés avec les informations de citation pour chaque
-entrée en cochant la case <b>Inclure les résumés</b>. Comme cela entraîne une
-quantité importante de requêtes réseau, afin d'éviter une pression excessive
-sur le site internet IEEExplore, Jabref refusera de télécharger les résumés
-pour les recherches retournant plus qu'un nombre donné de résultats.
+    <p>La recherche est effectuée en mode invité, ce
+    qui signifie qu'au maximum 100 résultats vous seront
+    retournés.</p>
 
-</HTML>
+    <p>Vous pouvez choisir de télécharger les
+    résumés avec les informations de citation pour
+    chaque entrée en cochant la case <b>Inclure les
+    résumés</b>. Comme cela entraîne une
+    quantité importante de requêtes réseau,
+    afin d'éviter une pression excessive sur le site
+    internet IEEExplore, Jabref refusera de
+    télécharger les résumés pour les
+    recherches retournant plus qu'un nombre donné de
+    résultats.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/ImportInspectionDialog.html b/src/help/fr/ImportInspectionDialog.html
index 9e4cabc..cf0773e 100644
--- a/src/help/fr/ImportInspectionDialog.html
+++ b/src/help/fr/ImportInspectionDialog.html
@@ -1,19 +1,31 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>Fenêtre de vérification des importations</h1>
-
-<p>
-Quand vous importez de nouvelles entrées à partir d'un format de référence connu, ou que vous récupérez des entrées directement sur internet, elles sont tout d'abord affichées dans une fenêtre pour leur vérification. A ce moment, aucune des entrées n'a encore été ajoutée à la base de données actuellement ouverte (si une base est ouverte).
-</p>
-
-
-<P>La fenêtre de vérification vous permet de supprimer les entrées que vous ne voulez pas garder et d'effectuer des opérations simples telles que la générations des clefs BibTeX pour ces entrées ou leur ajout à des <a href="GroupsHelp.html">groupes</a> manuels. Si vous les importez dans une base de données existante, il est souvent plus facile d'effectuer ces opérations avant que les nouvelles entrées soient ins& [...]
-</p>
-
-
-
-
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Fenêtre de vérification des importations</h1>
+
+    <p>Quand vous importez de nouvelles entrées à
+    partir d'un format de référence connu, ou que
+    vous récupérez des entrées directement sur
+    internet, elles sont tout d'abord affichées dans une
+    fenêtre pour leur vérification. A ce moment,
+    aucune des entrées n'a encore été
+    ajoutée à la base de données actuellement
+    ouverte (si une base est ouverte).</p>
+
+    <p>La fenêtre de vérification vous permet de
+    supprimer les entrées que vous ne voulez pas garder et
+    d'effectuer des opérations simples telles que la
+    générations des clefs BibTeX pour ces
+    entrées ou leur ajout à des
+    <a href="GroupsHelp.html">groupes</a> manuels. Si vous les
+    importez dans une base de données existante, il est
+    souvent plus facile d'effectuer ces opérations avant que
+    les nouvelles entrées soient insérées
+    parmi les entrées déjà présentes
+    dans la base de données.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/JabRefHelp.html b/src/help/fr/JabRefHelp.html
index 1fb13cc..c72d312 100644
--- a/src/help/fr/JabRefHelp.html
+++ b/src/help/fr/JabRefHelp.html
@@ -1,34 +1,44 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>JabRef</H1>
-
-<P><strong>Note :</strong> Le programme <em>BibTeX</em> est mentionné de nombreuses fois
-dans ces fichiers d'aide. <em>BibTeX</em> est un utilitaire pour la génération
-de références bibliographiques dans les documents LaTeX, créé par Oren
-Patashnik. Le même format de base de données est aussi utilisé par CiteMaker,
-un utilitaire pour la génération de bibliographie d'Adobe FrameMaker.
-
-<P>JabRef est un programme permettant l'exploitation des bases de données <em>BibTeX</em>.
-Ce programme n'utilise aucun format de fichier interne, ce qui signifie
-qu'habituellement vous ouvrez et sauvez vos bases de données directement
-dans le format .bib de <em>BibTeX</em>. Cependant, vous pouvez aussi importer
-dans JabRef d'autres formats de bases de données bibliographiques.
-
-<P>JabRef possède des fonctionnalités de tri et de recherche afin
-de vous donner une vue d'ensemble du contenu de vos bases de données. Vous
-pouvez facilement ajouter de nouvelles entrées à vos bases de données
-sans avoir à vous souvenir des informations requises, et les clefs
-<em>BibTeX</em> peuvent être générées automatiquement. JabRef sera surtout
-utile aux utilisateurs de <em>BibTeX</em> ou CiteMaker, mais il peut aussi
-être utile à ceux qui se servent d'autres systèmes de référencements ou
-qui veulent simplement organiser leurs sources bibliographiques.
-
-<P>
-<a href="BaseFrameHelp.html">La fenêtre principale de JabRef</a>
-
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>JabRef</h1>
+
+    <p><strong>Note :</strong> Le programme <em>BibTeX</em>
+    est mentionné de nombreuses fois dans ces fichiers
+    d'aide. <em>BibTeX</em> est un utilitaire pour la
+    génération de références
+    bibliographiques dans les documents LaTeX, créé
+    par Oren Patashnik. Le même format de base de
+    données est aussi utilisé par CiteMaker, un
+    utilitaire pour la génération de bibliographie
+    d'Adobe FrameMaker.</p>
+
+    <p>JabRef est un programme permettant l'exploitation des bases
+    de données <em>BibTeX</em>. Ce programme n'utilise aucun
+    format de fichier interne, ce qui signifie qu'habituellement
+    vous ouvrez et sauvez vos bases de données directement
+    dans le format .bib de <em>BibTeX</em>. Cependant, vous pouvez
+    aussi importer dans JabRef d'autres formats de bases de
+    données bibliographiques.</p>
+
+    <p>JabRef possède des fonctionnalités de tri et
+    de recherche afin de vous donner une vue d'ensemble du contenu
+    de vos bases de données. Vous pouvez facilement ajouter
+    de nouvelles entrées à vos bases de
+    données sans avoir à vous souvenir des
+    informations requises, et les clefs <em>BibTeX</em> peuvent
+    être générées automatiquement.
+    JabRef sera surtout utile aux utilisateurs de <em>BibTeX</em>
+    ou CiteMaker, mais il peut aussi être utile à ceux
+    qui se servent d'autres systèmes de
+    référencements ou qui veulent simplement
+    organiser leurs sources bibliographiques.</p>
+
+    <p><a href="BaseFrameHelp.html">La fenêtre principale de
+    JabRef</a></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/JournalAbbreviations.html b/src/help/fr/JournalAbbreviations.html
index d25a30f..20cf0cb 100644
--- a/src/help/fr/JournalAbbreviations.html
+++ b/src/help/fr/JournalAbbreviations.html
@@ -1,52 +1,130 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Abréviations des journaux</H1>
+    <h1>Abréviations des journaux</h1>
 
-Cette fonction peut être configurée dans <b>Options -> Gérer les abréviations de journaux</b>.
+    <p>Cette fonction peut
+    être configurée dans <b>Options -> Gérer
+    les abréviations de journaux</b>.</p>
 
-<p>JabRef peut basculer automatiquement les noms de journaux entre leurs formes abrégées et non abrégées si les noms sont contenus dans une de vos listes de journaux. Vous pouvez utiliser plusieurs listes, chacune étant un fichier texte sauvé sur votre disque dur.
+    <p>JabRef peut basculer automatiquement les noms de journaux
+    entre leurs formes abrégées et non
+    abrégées si les noms sont contenus dans une de
+    vos listes de journaux. Vous pouvez utiliser plusieurs listes,
+    chacune étant un fichier texte sauvé sur votre
+    disque dur.</p>
 
-<H2>Utiliser cette fonction</H2>
-<p>
-La conversion de noms de journaux peut être effectuée depuis l'éditeur d'entrées ou depuis le menu <b>Outils</b>. Dans l'éditeur d'entrées, vous trouverez un bouton nommé <i>Masquer/afficher l'abréviation</i> � droite du champ <i>journal</i>.
-Cliquer sur ce bouton changera le mode d'affichage du nom du journal. Trois modes sont possibles :
-<ul>
-    <li>Nom complet, par exemple "Aquacultural Engineering"</li>
-    <li>Abréviation ISO, par exemple "Aquacult. Eng."</li>
-    <li>Abréviation MEDLINE, par exemple "Aquacult Eng"</li>
-</ul>
-Si le nom du journal actuel n'est pas trouvé dans la liste des journaux, le champ ne sera pas modifié.
+    <h2>Utiliser cette fonction</h2>
 
-<p>
-Pour convertir en une seule fois les noms de journaux de beaucoup d'entrées, vous pouvez sélectionner ces entrées et choisir <b>Outils -> Abréger les noms de journaux (ISO)</b>, <b>Outils -> Abréger les noms de journaux (MEDLINE)</b> ou <b>Outils -> Développer les noms des journaux</b>. Ces trois actions abrégeront ou développeront les noms de journaux pour toutes les entrées sélectionnées dont le nom de journal [...]
+    <p>La conversion de noms de journaux peut être
+    effectuée depuis l'éditeur d'entrées ou
+    depuis le menu <b>Outils</b>. Dans l'éditeur
+    d'entrées, vous trouverez un bouton nommé
+    <i>Masquer/afficher l'abréviation</i> à droite du
+    champ <i>journal</i>. Cliquer sur ce bouton changera le mode
+    d'affichage du nom du journal. Trois modes sont
+    possibles :</p>
 
-<h2>Paramétrer vos listes de journaux</h2>
-
-Vous pouvez avoir plusieurs listes de journaux, toutes sous la forme de fichiers externes liés depuis JabRef. La liste par défaut peut être éditée depuis JabRef.
-
-<H3>Votre liste personnelle des abréviations de journaux</H3>
-
-Votre liste personnelle de journaux est gérée dans la partie supérieure de la fenêtre <b>Gérer les abréviations de journaux</b>.
-Pour commencer à construire votre liste d'abréviations de journaux, choisissez <i>Nouveau fichier</i>, et entrez manuellement le nom du fichier ou utilisez le bouton <i>Explorer</i>. Si vous disposez déjà d'un fichier que vous souhaitez utiliser comme point de départ, choisissez <i>Fichier existant</i> et utilisez le bouton <i>Explorer</i> pour choisir le fichier. La table sera mise à jour pour tenir compte du contenu de la liste sélection [...]
-
-<p>La table et les boutons d'outils à sa droite vous permettent d'ajouter, de supprimer et d'éditer les entrées de journaux. Pour chaque entrée, vous devez fournir le nom complet du journal et son abréviation ISO (par exemple "Aquacultural Engineering" et "Aquacult. Eng."). Pour éditer une entrée, double-cliquez sur sa ligne dans la table.
-
-<p>Une fois que vous avez cliqué sur <i>OK</i>, si vous avez sélectionné un fichier et que la table contient au moins une entrée, le contenu de la table sera stocké dans le fichier sélectionné, et la liste des journaux de JabRef sera mise à jour.
-
-<h3>Listes externes de journaux</h3>
-
-En plus de votre liste personnelle, vous pouvez relier plusieurs listes externes. Ces liens peuvent être paramétré dans la partie inférieure de la fenêtre <b>Gérer les abréviations de journaux</b>. Les listes externes sont similaires à la liste personnelle - la seule différence est que JabRef ne fournit pas d'interface pour éditer les listes externes.
-<p>
-Pour ajouter une nouvelle liste externe, cliquez sur le bouton <b>+</b>. Cela ajoutera une nouvelle entrée à l'interface. Ensuite, utilisez soit le bouton <i>Explorer</i> soit le bouton  <i>Télécharger</i> situé à coté d'une des entrées de la partie inférieure de la fenêtre.
     <ul>
-    <li>Le bouton <i>Explorer</i> vous permet de sélectionner un fichier existant sur votre ordinateur.</li>
-    <li>Le bouton <i>Télécharger</i> vous permet de télécharger une liste depuis l'internet en entrant une URL, de la stocker dans un fichier local sur votre ordinateur et de la lier comme une liste de journaux depuis JabRef. L'URL sera par défaut l'adresse de la liste de journaux disponible depuis la page web de JabRef. Cette liste est incomplète mais pourra être améliorée dans le futur.</li>
-    </ul>
+        <li>Nom complet, par exemple "Aquacultural
+        Engineering"</li>
+
+        <li>Abréviation ISO, par exemple "Aquacult.
+        Eng."</li>
+
+        <li>Abréviation MEDLINE, par exemple "Aquacult
+        Eng"</li>
+    </ul>Si le nom du journal actuel n'est pas trouvé dans
+    la liste des journaux, le champ ne sera pas modifié.
+
+    <p>Pour convertir en une seule fois les noms de journaux de
+    beaucoup d'entrées, vous pouvez sélectionner ces
+    entrées et choisir <b>Outils -> Abréger les
+    noms de journaux (ISO)</b>, <b>Outils -> Abréger les
+    noms de journaux (MEDLINE)</b> ou <b>Outils ->
+    Développer les noms des journaux</b>. Ces trois actions
+    abrégeront ou développeront les noms de journaux
+    pour toutes les entrées sélectionnées dont
+    le nom de journal a pu être trouvé dans vos listes
+    de journaux.</p>
+
+    <h2>Paramétrer vos listes de journaux</h2>
+
+    <p>Vous pouvez
+    avoir plusieurs listes de journaux, toutes sous la forme de
+    fichiers externes liés depuis JabRef. La liste par
+    défaut peut être éditée depuis
+    JabRef.</p>
+
+    <h3>Votre liste personnelle des abréviations de
+    journaux</h3>
+
+    <p>Votre liste personnelle de journaux est
+    gérée dans la partie supérieure de la
+    fenêtre <b>Gérer les abréviations de
+    journaux</b>. Pour commencer à construire votre liste
+    d'abréviations de journaux, choisissez <i>Nouveau
+    fichier</i>, et entrez manuellement le nom du fichier ou
+    utilisez le bouton <i>Explorer</i>. Si vous disposez
+    déjà d'un fichier que vous souhaitez utiliser
+    comme point de départ, choisissez <i>Fichier
+    existant</i> et utilisez le bouton <i>Explorer</i> pour choisir
+    le fichier. La table sera mise à jour pour tenir compte
+    du contenu de la liste sélectionnée.</p>
+
+    <p>La table et les boutons d'outils à sa droite vous
+    permettent d'ajouter, de supprimer et d'éditer les
+    entrées de journaux. Pour chaque entrée, vous
+    devez fournir le nom complet du journal et son
+    abréviation ISO (par exemple "Aquacultural Engineering"
+    et "Aquacult. Eng."). Pour éditer une entrée,
+    double-cliquez sur sa ligne dans la table.</p>
+
+    <p>Une fois que vous avez cliqué sur <i>OK</i>, si vous
+    avez sélectionné un fichier et que la table
+    contient au moins une entrée, le contenu de la table
+    sera stocké dans le fichier sélectionné,
+    et la liste des journaux de JabRef sera mise à jour.</p>
+
+    <h3>Listes externes de journaux</h3>
+
+    <p>En plus de votre liste
+    personnelle, vous pouvez relier plusieurs listes externes. Ces
+    liens peuvent être paramétré dans la partie
+    inférieure de la fenêtre <b>Gérer les
+    abréviations de journaux</b>. Les listes externes sont
+    similaires à la liste personnelle - la seule
+    différence est que JabRef ne fournit pas d'interface
+    pour éditer les listes externes.</p>
+
+    <p>Pour ajouter une nouvelle liste externe, cliquez sur le
+    bouton <b>+</b>. Cela ajoutera une nouvelle entrée
+    à l'interface. Ensuite, utilisez soit le bouton
+    <i>Explorer</i> soit le bouton <i>Télécharger</i>
+    situé à coté d'une des entrées de
+    la partie inférieure de la fenêtre.</p>
 
-Toute entrée dans votre liste personnelle de journaux sera prioritaire devant une entrée ayant le même nom complet dans l'une des listes externes. De même, les listes externes sont prioritaires selon l'ordre dans lequel elles sont listées.
-
-</BODY>
-</HTML>
+    <ul>
+        <li>Le bouton <i>Explorer</i> vous permet de
+        sélectionner un fichier existant sur votre
+        ordinateur.</li>
+
+        <li>Le bouton <i>Télécharger</i> vous permet
+        de télécharger une liste depuis l'internet en
+        entrant une URL, de la stocker dans un fichier local sur
+        votre ordinateur et de la lier comme une liste de journaux
+        depuis JabRef. L'URL sera par défaut l'adresse de la
+        liste de journaux disponible depuis la page web de JabRef.
+        Cette liste est incomplète mais pourra être
+        améliorée dans le futur.</li>
+    </ul>Toute entrée dans votre liste personnelle de
+    journaux sera prioritaire devant une entrée ayant le
+    même nom complet dans l'une des listes externes. De
+    même, les listes externes sont prioritaires selon l'ordre
+    dans lequel elles sont listées.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/LabelPatterns.html b/src/help/fr/LabelPatterns.html
index 3045023..693d846 100644
--- a/src/help/fr/LabelPatterns.html
+++ b/src/help/fr/LabelPatterns.html
@@ -1,93 +1,203 @@
-<HTML>
-
-<BODY text="#275856">
-
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Personnalisation du générateur de clefs BibTeX</H1>
-
-<p>
-Dans le menu 'Paramétrage des clefs' de la fenêtre Préférences, on peut indiquer les champs à utiliser pour la génération automatique des clefs BibTeX. La définition peut être faite pour chacune des entrées standards.
-</p>
-
-<H2>Les définitions de clefs</H2>
-<p>
-La définition peut contenir n'importe quel texte au choix ainsi que des marqueurs de champs qui indiquent les champs particuliers de l'entrée utilisés et leur position dans la clef. Un marqueur de champ est constitué généralement du nom du champ entre crochets, par ex. <b>[volume]</b>. Si le champ n'est pas défini dans l'entrée lorsque la clef est générée, aucun texte n'est inséré dans la clef.
-</p>
-
-<p>
-Plusieurs marqueurs de champs spéciaux sont fournis et permettent l'extraction d'une partie du contenu d'un champ. Ils sont donnés ci-dessous. Vous pouvez librement suggérer de nouveaux marqueurs de champs spéciaux.
-</p>
-
-<p>
-Les marqueurs de champs spéciaux :
-</p>
-
-<ul>
-<li><b>[<code>auth</code>]</b> : Le nom du premier auteur<BR>
-<li><b>[<code>authors</code>]</b> : Le nom de tous les auteurs<BR>
-<li><b>[<code>authorsN</code>]</b>: Les noms des N premiers auteurs. S'il y a plus d'auteurs, "EtAl" est ajouté.<BR>
-<li><b>[<code>authIniN</code>]</b> : Les N premières lettres (ou moins) du nom de chacun des auteurs.<BR>
-<li><b>[<code>authorIni</code>]</b> : Les 5 premières lettres du nom du premier auteur et les initiales du nom des auteurs restants<BR>
-<li><b>[<code>authN</code>]</b> : Les N premières lettres du premier auteur.<BR>
-<li><b>[<code>authN_M</code>]</b> : Les N premières lettres du nom des M premiers auteurs.<BR>
-<li><b>[<code>auth.auth.ea</code>]</b> : Le nom des deux premiers auteurs suivi de ".ea" lorsqu'ils sont plus de deux.<BR>
-<li><b>[<code>auth.etal</code>]</b>: Le nom du premier auteur et le nom du second auteur, ou ".etal" s'il y en a plus de deux.<BR>
-<li><b>[<code>authshort</code>]</b> : Le nom s'il n'y a qu'un seul auteur. Jusqu'à trois auteurs, le premier caractère du nom de chacun d'eux. Au delà de trois auteurs, le caractère plus (+) est ajouté.<BR>
-</ul>
-<b>Note :</b> S'il n'y a pas d'auteur (dans le cas d'un livre édité), alors tous les marqueurs <b><code>[auth...]</code></b> ci-dessus utiliseront l'éditeur(s) (s'il y en a) comme alternative. Ainsi l'éditeur(s) d'un livre sans auteur sera traité comme l'auteur(s) pour la génération des clefs.
-Si vous ne désirez pas ce comportement, c'est à dire si vous voulez un marqueur qui soit vide s'il n'y a pas d'auteur, utilisez le code <b><code>pureauth</code></b> au lieu du code <b><code>auth</code></b> dans les marqueurs ci-dessus. Par exemple, <b><code>[pureauth]</code></b> ou <b><code>[pureauthors3]</code></b>.
-<ul>
-<li><b>[<code>edtr</code>]</b> : Le nom du premier éditeur<BR>
-<li><b>[<code>edtrIniN</code>]</b> : Les N premières lettres du nom de chaque éditeur<BR>
-<li><b>[<code>editors</code>]</b> : Le nom des chacun des éditeurs<BR>
-<li><b>[<code>editorIni</code>]</b> : Les cinq premières lettres du nom du premier éditeur suivi des initiales du nom des éditeurs restants.<BR>
-<li><b>[<code>edtrN</code>]</b> : Les N premières lettres du nom du premier éditeur<BR>
-<li><b>[<code>edtrN_M</code>]</b> : Les N premières lettres du nom des M premiers éditeurs.<BR>
-<li><b>[<code>edtr.edtr.ea</code>]</b> : Le nom des deux premiers éditeurs suivi de ".ea" lorsqu'ils sont plus de deux.<BR>
-<li><b>[<code>edtrshort</code>]</b> : Le nom s'il n'y a qu'un seul éditeur. Jusqu'à trois éditeurs, le premier caractère du nom de chacun d'eux. Au delà de trois éditeurs, le caractère plus (+) est ajouté.<BR>
-<li><b>[<code>firstpage</code>]</b> : Le numéro de la première page de la publication<BR>
-<li><b>[<code>lastpage</code>]</b> : Le numéro de la dernière page de la publication<BR>
-<li><b>[<code>shorttitle</code>]</b> : Les 3 premiers mots du titre<BR>
-<li><b>[<code>shortyear</code>]</b> : Les 2 derniers chiffres de l'année de publication<BR>
-<li><b>[<code>veryshorttitle</code>]</b> : Le premier mot du titre qui ne soit pas 'the', 'a', 'an'.<BR>
-</ul>
-
- <p>
- Un nom de champs (ou celui de l'un des pseudo-champs vu au dessus) peut, de façon optionnelle, être suivi par un ou plusieurs modificateurs. Les modificateurs sont appliqués dans l'ordre
-où ils sont spécifiés.
-<ul>
- <li><b>:abbr</b>: Abrège le texte produit par le nom du champ ou un marqueur de champ spécial.
- Uniquement le premier caractère et les caractères suivant un espace seront inclus. Par exemple, <b>[journal:abbr]</b> abrègera "Journal of Fish Biology" en "JoFB".<br>
-<li><b>:lower</b>, force le texte inséré par le marqueur de champ à être en minuscules. Par exemple, <b>[auth:lower]</b> bascule le nom du premier auteur en minuscules.
-</ul>
-
-<P>
-Si vous n'avez pas défini de modèle de clef pour un type d'entrées donné, le <b>Modèle de clef par
-défaut</b> sera utilisé. Vous pouvez changer le modèle par défaut - son paramétrage se
-trouve au-dessus de la liste des types d'entrées dans la section
-<b>Paramétrage des clefs</b> de la fenêtre <b>Préférences</b>.
-
-<P>
-La clef utilisée par défaut est [auth][year]; elle produit des clefs du type <code>Yared1998</code>. Si la clef n'est pas unique dans la base de donnée, elle est modifiée par l'ajout d'une des lettres de a à z et ceci jusqu'a ce quelle soit unique. De cette façon, les étiquettes ressemblent à :
-</p>
-
-<blockquote>
-<code>Yared1998</code><BR>
-<code>Yared1998a</code><BR>
-<code>Yared1998b</code>
-</blockquote>
-
-<h2>Remplacement d'expressions régulières</h2>
-
-<P>
-Après que la définition de clef ait été appliquée pour produire une clef, vous pouvez demander au générateur de clef de rechercher les occurrences d'une expression régulière donnée et de la remplacer avec une chaîne. L'expression régulière et la chaîne de remplacement sont entrées dans les champs textes situés sous la liste des définition de clefs.
-</P>
-
-<P>
-Si la chaîne de remplacement est vide, les correspondances de l'expression régulière seront simplement supprimées de la clef générée.
-</P>
-
-
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Personnalisation du générateur de clefs
+    BibTeX</h1>
+
+    <p>Dans le menu 'Paramétrage des clefs' de la
+    fenêtre Préférences, on peut indiquer les
+    champs à utiliser pour la génération
+    automatique des clefs BibTeX. La définition peut
+    être faite pour chacune des entrées standards.</p>
+
+    <h2>Les définitions de clefs</h2>
+
+    <p>La définition peut contenir n'importe quel texte au
+    choix ainsi que des marqueurs de champs qui indiquent les
+    champs particuliers de l'entrée utilisés et leur
+    position dans la clef. Un marqueur de champ est
+    constitué généralement du nom du champ
+    entre crochets, par ex. <b>[volume]</b>. Si le champ n'est pas
+    défini dans l'entrée lorsque la clef est
+    générée, aucun texte n'est
+    inséré dans la clef.</p>
+
+    <p>Plusieurs marqueurs de champs spéciaux sont fournis
+    et permettent l'extraction d'une partie du contenu d'un champ.
+    Ils sont donnés ci-dessous. Vous pouvez librement
+    suggérer de nouveaux marqueurs de champs
+    spéciaux.</p>
+
+    <p>Les marqueurs de champs spéciaux :</p>
+
+    <ul>
+        <li><b>[<code>auth</code>]</b> : Le nom du premier
+        auteur<br /></li>
+
+        <li><b>[<code>authors</code>]</b> : Le nom de tous les
+        auteurs<br /></li>
+
+        <li><b>[<code>authorsN</code>]</b>: Les noms des N premiers
+        auteurs. S'il y a plus d'auteurs, "EtAl" est
+        ajouté.<br /></li>
+
+        <li><b>[<code>authIniN</code>]</b> : Les N
+        premières lettres (ou moins) du nom de chacun des
+        auteurs.<br /></li>
+
+        <li><b>[<code>authorIni</code>]</b> : Les 5
+        premières lettres du nom du premier auteur et les
+        initiales du nom des auteurs restants<br /></li>
+
+        <li><b>[<code>authN</code>]</b> : Les N
+        premières lettres du premier auteur.<br /></li>
+
+        <li><b>[<code>authN_M</code>]</b> : Les N
+        premières lettres du nom des M premiers
+        auteurs.<br /></li>
+
+        <li><b>[<code>auth.auth.ea</code>]</b> : Le nom des
+        deux premiers auteurs suivi de ".ea" lorsqu'ils sont plus
+        de deux.<br /></li>
+
+        <li><b>[<code>auth.etal</code>]</b>: Le nom du premier
+        auteur et le nom du second auteur, ou ".etal" s'il y en a
+        plus de deux.<br /></li>
+
+        <li><b>[<code>authshort</code>]</b> : Le nom s'il n'y
+        a qu'un seul auteur. Jusqu'à trois auteurs, le
+        premier caractère du nom de chacun d'eux. Au
+        delà de trois auteurs, le caractère plus (+)
+        est ajouté.<br /></li>
+    </ul><b>Note :</b> S'il n'y a pas d'auteur (dans le cas
+    d'un livre édité), alors tous les marqueurs
+    <b><code>[auth...]</code></b> ci-dessus utiliseront
+    l'éditeur(s) (s'il y en a) comme alternative. Ainsi
+    l'éditeur(s) d'un livre sans auteur sera traité
+    comme l'auteur(s) pour la génération des clefs.
+    Si vous ne désirez pas ce comportement, c'est à
+    dire si vous voulez un marqueur qui soit vide s'il n'y a pas
+    d'auteur, utilisez le code <b><code>pureauth</code></b> au lieu
+    du code <b><code>auth</code></b> dans les marqueurs ci-dessus.
+    Par exemple, <b><code>[pureauth]</code></b> ou
+    <b><code>[pureauthors3]</code></b>.
+
+    <ul>
+        <li><b>[<code>edtr</code>]</b> : Le nom du premier
+        éditeur<br /></li>
+
+        <li><b>[<code>edtrIniN</code>]</b> : Les N
+        premières lettres du nom de chaque
+        éditeur<br /></li>
+
+        <li><b>[<code>editors</code>]</b> : Le nom des chacun
+        des éditeurs<br /></li>
+
+        <li><b>[<code>editorIni</code>]</b> : Les cinq
+        premières lettres du nom du premier éditeur
+        suivi des initiales du nom des éditeurs
+        restants.<br /></li>
+
+        <li><b>[<code>edtrN</code>]</b> : Les N
+        premières lettres du nom du premier
+        éditeur<br /></li>
+
+        <li><b>[<code>edtrN_M</code>]</b> : Les N
+        premières lettres du nom des M premiers
+        éditeurs.<br /></li>
+
+        <li><b>[<code>edtr.edtr.ea</code>]</b> : Le nom des
+        deux premiers éditeurs suivi de ".ea" lorsqu'ils
+        sont plus de deux.<br /></li>
+
+        <li><b>[<code>edtrshort</code>]</b> : Le nom s'il n'y
+        a qu'un seul éditeur. Jusqu'à trois
+        éditeurs, le premier caractère du nom de
+        chacun d'eux. Au delà de trois éditeurs, le
+        caractère plus (+) est ajouté.<br /></li>
+
+        <li><b>[<code>firstpage</code>]</b> : Le numéro
+        de la première page de la publication<br /></li>
+
+        <li><b>[<code>keywordN</code>]</b>: Nombre de mots-clefs
+        dans le champ "keywords" en supposant que les mots-clefs
+        sont séparés par des virgules ou des
+        points-virgules.<br /></li>
+
+        <li><b>[<code>lastpage</code>]</b> : Le numéro
+        de la dernière page de la publication<br /></li>
+
+        <li><b>[<code>shorttitle</code>]</b> : Les 3 premiers
+        mots du titre<br /></li>
+
+        <li><b>[<code>shortyear</code>]</b> : Les 2 derniers
+        chiffres de l'année de publication<br /></li>
+
+        <li><b>[<code>veryshorttitle</code>]</b> : Le premier
+        mot du titre qui ne soit pas 'the', 'a', 'an'.<br /></li>
+    </ul>
+
+    <p>Un nom de champs (ou celui de l'un des pseudo-champs vu au
+    dessus) peut, de façon optionnelle, être suivi par
+    un ou plusieurs modificateurs. Les modificateurs sont
+    appliqués dans l'ordre où ils sont
+    spécifiés.</p>
+
+    <ul>
+        <li><b>:abbr</b>: Abrège le texte produit par le nom
+        du champ ou un marqueur de champ spécial. Uniquement
+        le premier caractère et les caractères
+        suivant un espace seront inclus. Par exemple,
+        <b>[journal:abbr]</b> abrègera "Journal of Fish
+        Biology" en "JoFB".<br /></li>
+
+        <li><b>:lower</b>, force le texte inséré par
+        le marqueur de champ à être en minuscules. Par
+        exemple, <b>[auth:lower]</b> bascule le nom du premier
+        auteur en minuscules.</li>
+    </ul>
+
+    <p>Si vous n'avez pas défini de modèle de clef
+    pour un type d'entrées donné, le <b>Modèle
+    de clef par défaut</b> sera utilisé. Vous pouvez
+    changer le modèle par défaut - son
+    paramétrage se trouve au-dessus de la liste des types
+    d'entrées dans la section <b>Paramétrage des
+    clefs</b> de la fenêtre
+    <b>Préférences</b>.</p>
+
+    <p>La clef utilisée par défaut est [auth][year];
+    elle produit des clefs du type <code>Yared1998</code>. Si la
+    clef n'est pas unique dans la base de donnée, elle est
+    modifiée par l'ajout d'une des lettres de a à z
+    et ceci jusqu'a ce quelle soit unique. De cette façon,
+    les étiquettes ressemblent à :</p>
+
+    <blockquote>
+        <code>Yared1998</code><br />
+        <code>Yared1998a</code><br />
+        <code>Yared1998b</code>
+    </blockquote>
+
+    <h2>Remplacement d'expressions régulières</h2>
+
+    <p>Après que la définition de clef ait
+    été appliquée pour produire une clef, vous
+    pouvez demander au générateur de clef de
+    rechercher les occurrences d'une expression
+    régulière donnée et de la remplacer avec
+    une chaîne. L'expression régulière et la
+    chaîne de remplacement sont entrées dans les
+    champs textes situés sous la liste des définition
+    de clefs.</p>
+
+    <p>Si la chaîne de remplacement est vide, les
+    correspondances de l'expression régulière seront
+    simplement supprimées de la clef
+    générée.</p>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/MarkingHelp.html b/src/help/fr/MarkingHelp.html
index 9b91765..8e39530 100644
--- a/src/help/fr/MarkingHelp.html
+++ b/src/help/fr/MarkingHelp.html
@@ -1,26 +1,38 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Etiqueter les entrées</H1>
+    <h1>Etiqueter les entrées</h1>
 
-Vous avez la possibilité d'<em>étiqueter</em> des entrées. Les raccourcis
-claviers sont CTRL-M et CTRL-MAJ-M pour, respectivement, étiqueter et
-désétiqueter les entrées sélectionnées. Vous pouvez aussi accéder à ces actions
-en utilisant le menu <b>Edition</b>.
+    <p>Vous avez la
+    possibilité d'<em>étiqueter</em> des
+    entrées. Les raccourcis claviers sont CTRL-M et
+    CTRL-MAJ-M pour, respectivement, étiqueter et
+    désétiqueter les entrées
+    sélectionnées. Vous pouvez aussi accéder
+    à ces actions en utilisant le menu <b>Edition</b>.</p>
 
-<p>Notez qu'étiqueter des entrées n'est pas la même chose que les sélectionner.
-Les entrées étiquetées se comportent différemment des autres, et ce de deux façons.
-Premièrement, elles sont toujours affichées avec un fond jaune dans le tableau
-des entrées. Deuxièmement, elles seront affichées en haut de la liste des entrées,
-et ce tant que votre table n'est pas triée selon des groupes ou par une recherche
-flottante.
+    <p>Notez qu'étiqueter des entrées n'est pas la
+    même chose que les sélectionner. Les
+    entrées étiquetées se comportent
+    différemment des autres, et ce de deux façons.
+    Premièrement, elles sont toujours affichées avec
+    un fond jaune dans le tableau des entrées.
+    Deuxièmement, elles seront affichées en haut de
+    la liste des entrées, et ce tant que votre table n'est
+    pas triée selon des groupes ou par une recherche
+    flottante.</p>
 
-<p>Sauver votre base de données préservera l'étiquetage.
+    <p>Sauver votre base de données préservera
+    l'étiquetage.</p>
 
-<p>Les entrées étiquetées vous seront utiles si, par exemple, vous avez besoin
-de faire plusieurs recherches sans perdre vos premiers résultats, ou si vous avez
-besoin de vous souvenir des articles ou des livres auxquels il faut que vous
-prêtiez attention.
-</HTML>
+    <p>Les entrées étiquetées vous seront
+    utiles si, par exemple, vous avez besoin de faire plusieurs
+    recherches sans perdre vos premiers résultats, ou si
+    vous avez besoin de vous souvenir des articles ou des livres
+    auxquels il faut que vous prêtiez attention.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/MedlineHelp.html b/src/help/fr/MedlineHelp.html
index 93022c2..c84874e 100644
--- a/src/help/fr/MedlineHelp.html
+++ b/src/help/fr/MedlineHelp.html
@@ -1,48 +1,63 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="fr-fr"><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      lang="fr-fr">
 
 <body style="color: rgb(39, 88, 86); direction: ltr;">
-<basefont size="4" color="#2F4958" face="arial">
-
-<h1>Récupération d'entrées depuis Medline</h1>
-
-MEDLINE est la principale base de données bibliographique de la
-biblioth�que nationale de médecine des Etats-Unis.
-Elle contient des références à des articles de journaux
-sur les sciences de la vie avec une sp�cialisation
-sur la biomédecine.
-<p>
-JabRef peut télécharger des citations depuis la base de données Medline. Pour réaliser cette opération, sélectionnez <b>Recherche internet -> Recherche Medline</b> et vous verrez apparaître l'interface de Medline dans le panneau latéral.
-</p>
-
-<p>
-Il y a deux manières d'indiquer les entrées à télécharger :
-</p>
-
-<ol>
-<li> Entrez un ou plusieurs ID Medline (séparés par des virgules/points-virgules) dans le champ texte
-<li> Entrez une série de noms et/ou de mots à rechercher. Vous pouvez utiliser les opérateurs <em>and</em> et <em>or</em> et les parenthèses pour raffiner l'expression de votre recherche.
-</ol>
-
-<p>
-Dans les deux cas, appuyez sur la touche <b>Entrée</b> du clavier ou sur le bouton <b>Rechercher</b>. Si vous utilisez une recherche de texte, vous serez informé du nombre d'entrées trouvées et vous pourrez choisir le nombre d'entrées à télécharger.
-</p>
-
-<p>
-Les entrées recherchées seront ajoutées à votre base de données active.
-</p>
-
-<h2>Utilisation d'un serveur proxy</h2>
-
-<p>
-Si vous avez besoin d'utiliser un serveur de proxy, passez le nom du serveur et le numéro de port au lancement de java. Ces paramètres d'environnement sont documentés sur
-</p>
-<p>
-http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html
-</p>
-<p>
-<code>java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"</code>
-</p>
-</p>
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Récupération d'entrées depuis
+    Medline</h1>
+
+    <p>MEDLINE est la principale base de données
+    bibliographique de la bibliothèque nationale de
+    médecine des Etats-Unis. Elle contient des
+    références à des articles de journaux sur
+    les sciences de la vie avec une spécialisation sur la
+    biomédecine.</p>
+
+    <p>JabRef peut télécharger des citations depuis
+    la base de données Medline. Pour réaliser cette
+    opération, sélectionnez <b>Recherche internet
+    -> Recherche Medline</b> et vous verrez apparaître
+    l'interface de Medline dans le panneau latéral.</p>
+
+    <p>Il y a deux manières d'indiquer les entrées
+    à télécharger :</p>
+
+    <ol>
+        <li>Entrez un ou plusieurs ID Medline
+        (séparés par des virgules/points-virgules)
+        dans le champ texte</li>
+
+        <li>Entrez une série de noms et/ou de mots à
+        rechercher. Vous pouvez utiliser les opérateurs
+        <em>and</em> et <em>or</em> et les parenthèses pour
+        raffiner l'expression de votre recherche.</li>
+    </ol>
+
+    <p>Dans les deux cas, appuyez sur la touche
+    <b>Entrée</b> du clavier ou sur le bouton
+    <b>Rechercher</b>. Si vous utilisez une recherche de texte,
+    vous serez informé du nombre d'entrées
+    trouvées et vous pourrez choisir le nombre
+    d'entrées à télécharger.</p>
+
+    <p>Les entrées recherchées seront ajoutées
+    à votre base de données active.</p>
+
+    <h2>Utilisation d'un serveur proxy</h2>
+
+    <p>Si vous avez besoin d'utiliser un serveur de proxy, passez
+    le nom du serveur et le numéro de port au lancement de
+    java. Ces paramètres d'environnement sont
+    documentés sur</p>
+
+    <p>
+    http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html</p>
+
+    <p><code>java -Dhttp.proxyHost="hostname"
+    -Dhttp.proxyPort="portnumber"</code></p><br />
+    <br />
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/OpenOfficeHelp.html b/src/help/fr/OpenOfficeHelp.html
index 2c1ab82..2d122c0 100644
--- a/src/help/fr/OpenOfficeHelp.html
+++ b/src/help/fr/OpenOfficeHelp.html
@@ -1,45 +1,96 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-
-<H1>Utiliser les bibliographies JabRef dans OpenOffice.org</H1>
-
-JabRef peut exporter votre base de données dans le format de tableur OpenOffice.org 1.1 <b>.sxc</b> ainsi que dans le format OpenDocument <b>.ods</b> utilisé par OpenOffice.org 2.0.
-<p>
-Dans les deux cas, la table exportée contiendra une feuille de calcul, listant les entrées selon les lignes et les différents champs en colonnes. L'ordre et les noms des colonnes sont configurés pour être compatible avec les fonctions bibliographiques d'OpenOffice.org (OOo 1.1 dans le cas d'une exportation au format <b>.sxc</b>, et OOo 2.0 pour une exportation au format <b>.ods</b>).
-
-<h2>Utiliser le fichier exporté comme une base de données dans OpenOffice 2.0 et supérieur</h2>
-
-Suivez les étapes suivantes pour configurer une feuille de calcul exportée par JabRef comme une base de données bibliographique dans OpenOffice.org :
-<ul>
-    <li>Exporter votre base en utilisant le format <b>.ods</b></li>
-    <li>Démarrer OpenOffice.org Writer</li>
-    <li>Choisir <b>Outils -> Options -> OpenOffice.org Base -> Base de données</b></li>
-    <li>�diter la base de données <i>Bibliography</i>, et lui donner un autre nom, tel
-    que <i>Bibliography-old</i> (en effet OpenOffice.org Writer ne permet pas de choisir entre plusieurs bibliographies)</li>
-    <li>Fermer la fenêtre <b>Options</b> et choisir <b>Fichier -> Nouveau -> Base de données</b></li>
-    <li>Choisir <b>Se connecter à une base de données existante</b>, sélectionner <b>Classeur</b> comme type de base de données, cliquer sur <b>Suivant</b> et choisir le fichier <b>.ods</b> que vous avez exporté.</li>
-    <li>Cliquer sur <b>Terminer</b>, puis choisir le nom <i>Bibliographie</i> quand demandé.</li>
-</ul>                                       
-Après avoir effectué ces étapes, choisir <b>Outils -> Base de données bibliographique</b>. Votre base de données devrait maintenant s'afficher.
-<p>
-
-<h2>Utiliser le fichier exporté comme une base de données bibliographique dans OpenOffice 1.1.x</h2>
-
- <ul>
-    <li>Exporter votre base de données vers le format <b>.sxc</b></li>
-    <li>Démarrer OpenOffice.org Texte</li>
-    <li>Choisir <b>Outils -> Sources de données...</b></li>
-    <li>Sélectionner la base de données <i>Bibliography</i> et lui donner un autre nom, tel que 
-     <i>Bibliography-old</i>. Cliquer sur <b>Appliquer</b>.</li>
-    <li>Cliquer sur <b>Nouvelle source de données</b>. Une nouvelle entrée apparaît. La renommer 
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Utiliser les bibliographies JabRef dans
+    OpenOffice.org</h1>
+
+    <p>JabRef peut exporter votre base de
+    données dans le format de tableur OpenOffice.org 1.1
+    <b>.sxc</b> ainsi que dans le format OpenDocument <b>.ods</b>
+    utilisé par OpenOffice.org 2.0.</p>
+
+    <p>Dans les deux cas, la table exportée contiendra une
+    feuille de calcul, listant les entrées selon les lignes
+    et les différents champs en colonnes. L'ordre et les
+    noms des colonnes sont configurés pour être
+    compatible avec les fonctions bibliographiques d'OpenOffice.org
+    (OOo 1.1 dans le cas d'une exportation au format <b>.sxc</b>,
+    et OOo 2.0 pour une exportation au format <b>.ods</b>).</p>
+
+    <h2>Utiliser le fichier exporté comme une base de
+    données dans OpenOffice 2.0 et
+    supérieur</h2>
+
+    <p>Suivez les étapes suivantes pour
+    configurer une feuille de calcul exportée par JabRef
+    comme une base de données bibliographique dans
+    OpenOffice.org :</p>
+
+    <ul>
+        <li>Exporter votre base en utilisant le format
+        <b>.ods</b></li>
+
+        <li>Démarrer OpenOffice.org Writer</li>
+
+        <li>Choisir <b>Outils -> Options -> OpenOffice.org
+        Base -> Base de données</b></li>
+
+        <li>Éditer la base de données
+        <i>Bibliography</i>, et lui donner un autre nom, tel que
+        <i>Bibliography-old</i> (en effet OpenOffice.org Writer ne
+        permet pas de choisir entre plusieurs bibliographies)</li>
+
+        <li>Fermer la fenêtre <b>Options</b> et choisir
+        <b>Fichier -> Nouveau -> Base de
+        données</b></li>
+
+        <li>Choisir <b>Se connecter à une base de
+        données existante</b>, sélectionner
+        <b>Classeur</b> comme type de base de données,
+        cliquer sur <b>Suivant</b> et choisir le fichier
+        <b>.ods</b> que vous avez exporté.</li>
+
+        <li>Cliquer sur <b>Terminer</b>, puis choisir le nom
+        <i>Bibliographie</i> quand demandé.</li>
+    </ul>Après avoir effectué ces étapes,
+    choisir <b>Outils -> Base de données
+    bibliographique</b>. Votre base de données devrait
+    maintenant s'afficher.
+
+    <h2>Utiliser le fichier exporté comme une base de
+    données bibliographique dans OpenOffice 1.1.x</h2>
+
+    <ul>
+        <li>Exporter votre base de données vers le format
+        <b>.sxc</b></li>
+
+        <li>Démarrer OpenOffice.org Texte</li>
+
+        <li>Choisir <b>Outils -> Sources de
+        données...</b></li>
+
+        <li>Sélectionner la base de données
+        <i>Bibliography</i> et lui donner un autre nom, tel que
+        <i>Bibliography-old</i>. Cliquer sur <b>Appliquer</b>.</li>
+
+        <li>Cliquer sur <b>Nouvelle source de données</b>.
+        Une nouvelle entrée apparaît. La renommer
         <i>Bibliography</i>.</li>
-     <li>Changer le <b>type de BD</b> en <b>Classeur</b>. Cliquer le bouton <b>...</b> 
-     au bout de la ligne <b>URL de la source de données</b>. Choisir le fichier <b>.sxc</b> que vous avez exporté.</li>
-     <li>Cliquer sur <b>OK</b> pour fermer la fenêtre <b>Gestion des sources de données</b>.</li>
-</ul>
-Après avoir effectué ces étapes, choisir <b>Outils -> Base de données bibliographique</b>. Votre base de données devrait maintenant s'afficher.
 
-</HTML>
+        <li>Changer le <b>type de BD</b> en <b>Classeur</b>.
+        Cliquer le bouton <b>...</b> au bout de la ligne <b>URL de
+        la source de données</b>. Choisir le fichier
+        <b>.sxc</b> que vous avez exporté.</li>
+
+        <li>Cliquer sur <b>OK</b> pour fermer la fenêtre
+        <b>Gestion des sources de données</b>.</li>
+    </ul>Après avoir effectué ces étapes,
+    choisir <b>Outils -> Base de données
+    bibliographique</b>. Votre base de données devrait
+    maintenant s'afficher.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/OwnerHelp.html b/src/help/fr/OwnerHelp.html
index 844acd5..feca15f 100644
--- a/src/help/fr/OwnerHelp.html
+++ b/src/help/fr/OwnerHelp.html
@@ -1,16 +1,25 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Le champ 'owner' (propriétaire)</H1>
+    <h1>Le champ 'owner' (propriétaire)</h1>
 
-JabRef peut éventuellement signer toutes les nouvelles entrées ajoutées ou importées
-dans une base de données avec votre nom.
-Vous pouvez activer ou désactiver cette fonction dans le menu
-<b>Options/ Préférences -> Général</b>, et vous pouvez aussi changer le nom utilisé pour
-signer vos entrées. Le nom utilisé par défaut est votre nom d'utilisateur.
+    <p>JabRef peut
+    éventuellement signer toutes les nouvelles
+    entrées ajoutées ou importées dans une
+    base de données avec votre nom. Vous pouvez activer ou
+    désactiver cette fonction dans le menu <b>Options/
+    Préférences -> Général</b>, et
+    vous pouvez aussi changer le nom utilisé pour signer vos
+    entrées. Le nom utilisé par défaut est
+    votre nom d'utilisateur.</p>
 
-<p>Ce nom sera ajouté dans un champ nommé 'owner', qui, par défaut, est visible
-dans l'onglet <b>Champs Généraux</b> de l'éditeur d'entrées.
-</HTML>
+    <p>Ce nom sera ajouté dans un champ nommé
+    'owner', qui, par défaut, est visible dans l'onglet
+    <b>Champs Généraux</b> de l'éditeur
+    d'entrées.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/PreviewHelp.html b/src/help/fr/PreviewHelp.html
index 2f261f6..942b7b8 100644
--- a/src/help/fr/PreviewHelp.html
+++ b/src/help/fr/PreviewHelp.html
@@ -1,17 +1,25 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Configuration de l'aperçu des entrées</H1>
+    <h1>Configuration de l'aperçu des
+    entrées</h1>
 
-L'aperçu des entrées est créé en utilisant le même mécanisme que pour les
-<a href="CustomExports.html">filtres d'exportation personnalisés</a>.
-En mode aperçu, une entrée est traitée en utilisant l'une des deux mises en page disponibles
-(vous pouvez basculer entre les deux mises en page en pressant F9) afin de produire du code HTML qui est affiché dans le panneau d'aperçu.
-
-Pour modifier l'apparence et le contenu de l'aperçu vous devez éditer les mises en page de l'aperçu en utilisant la
-syntaxe décrite dans le fichier d'aide portant sur les
-<a href="CustomExports.html">filtres d'exportation personnalisés</a>.
-
-</HTML>
+    <p>L'aperçu des entrées est
+    créé en utilisant le même mécanisme
+    que pour les <a href="CustomExports.html">filtres d'exportation
+    personnalisés</a>. En mode aperçu, une
+    entrée est traitée en utilisant l'une des deux
+    mises en page disponibles (vous pouvez basculer entre les deux
+    mises en page en pressant F9) afin de produire du code HTML qui
+    est affiché dans le panneau d'aperçu. Pour
+    modifier l'apparence et le contenu de l'aperçu vous
+    devez éditer les mises en page de l'aperçu en
+    utilisant la syntaxe décrite dans le fichier d'aide
+    portant sur les <a href="CustomExports.html">filtres
+    d'exportation personnalisés</a>.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/RemoteHelp.html b/src/help/fr/RemoteHelp.html
index 365ddeb..83b7c34 100644
--- a/src/help/fr/RemoteHelp.html
+++ b/src/help/fr/RemoteHelp.html
@@ -1,34 +1,52 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Accès à distance</H1>
-
-Cette fonction peut être activée et configurée dans <b>Préférences -> Avancé</b>.
-
-<p><i>Notez qu'activer cette fonction sous Windows XP SP2 (et probablement d'autres configurations)
-peut afficher une boîte de message disant que certaines fonctions du programme ont été bloquées
-par le pare-feu de Windows. Vous pouvez en toute sécurité dire au pare-feu de continuer à bloquer ;
-le pare-feu n'interférera pas avec l'accès à distance de JabRef.</i>
-
-<p>Si l'accès à distance est activé, JabRef se mettra à écouter un port spécifique lors de son démarrage.
-Cela signifie que les autres applications peuvent envoyer des informations à JabRef à travers ce port.
-JabRef n'acceptera que des connexions locales, afin d'éviter le risque d'interférence à partir de l'extérieur.
-
-<p>
-La réservation du port permet à une seconde instance de JabRef de découvrir
-qu'une première instance tourne déjà.
-Dans ce cas, à moins qu'elle soit spécifiquement configurée pour tourner en mode autonome, la
-seconde instance de JabRef passera ses options de sa ligne de commande à la première instance en utilisant
-le port, puis se terminera immédiatement.
-
-<p>La première instance de JabRef lira les options de la ligne de commande et effectuera
-les actions indiquées, tel que la lecture ou l'importation d'un fichier, ou la fusion
-d'un fichier avec la base de données actuellement affichée. Si un fichier est importé
-en utilisant l'option de ligne de commande <code>--importToOpen</code>, les entrées importées
-seront ajoutées à la base de données actuellement affichée. Si aucune base de données n'est
-ouverte, une nouvelle base sera créée.
-
-</BODY>
-</HTML> 
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Accès à distance</h1>
+
+    <p>Cette fonction peut
+    être activée et configurée dans
+    <b>Préférences -> Avancé</b>.</p>
+
+    <p><i>Notez qu'activer cette fonction sous Windows XP SP2 (et
+    probablement d'autres configurations) peut afficher une
+    boîte de message disant que certaines fonctions du
+    programme ont été bloquées par le pare-feu
+    de Windows. Vous pouvez en toute sécurité dire au
+    pare-feu de continuer à bloquer ; le pare-feu
+    n'interférera pas avec l'accès à distance
+    de JabRef.</i></p>
+
+    <p>Si l'accès à distance est activé,
+    JabRef se mettra à écouter un port
+    spécifique lors de son démarrage. Cela signifie
+    que les autres applications peuvent envoyer des informations
+    à JabRef à travers ce port. JabRef n'acceptera
+    que des connexions locales, afin d'éviter le risque
+    d'interférence à partir de
+    l'extérieur.</p>
+
+    <p>La réservation du port permet à une seconde
+    instance de JabRef de découvrir qu'une première
+    instance tourne déjà. Dans ce cas, à moins
+    qu'elle soit spécifiquement configurée pour
+    tourner en mode autonome, la seconde instance de JabRef passera
+    ses options de sa ligne de commande à la première
+    instance en utilisant le port, puis se terminera
+    immédiatement.</p>
+
+    <p>La première instance de JabRef lira les options de la
+    ligne de commande et effectuera les actions indiquées,
+    tel que la lecture ou l'importation d'un fichier, ou la fusion
+    d'un fichier avec la base de données actuellement
+    affichée. Si un fichier est importé en utilisant
+    l'option de ligne de commande <code>--importToOpen</code>, les
+    entrées importées seront ajoutées à
+    la base de données actuellement affichée. Si
+    aucune base de données n'est ouverte, une nouvelle base
+    sera créée.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/SearchHelp.html b/src/help/fr/SearchHelp.html
index 9d6c065..f440568 100644
--- a/src/help/fr/SearchHelp.html
+++ b/src/help/fr/SearchHelp.html
@@ -1,87 +1,114 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Recherche</H1>
-
-Il y a trois modes différents de recherche dans JabRef.
-
-<p>
-<em>CTRL-F</em> ouvre ou active l'interface de recherche. Appuyer
-sur <em>CTRL-F</em> plusieurs fois modifie le mode de recherche.
-En recherche incrémentale, <em>CTRL-F</em> affiche
-l'occurrence suivante de la chaîne à rechercher.
-<p>
-<em>CTRL-MAJ-F</em> ouvre ou active l'interface de recherche, et
-sélectionne la recherche incrémentale. En recherche incrémentale, appuyer
-sur  <em>CTRL-MAJ-F</em> affiche aussi l'occurrence suivante de la chaîne
-à rechercher.
-
-
-<H2>Recherche incrémentale</H2>
-
-En recherche incrémentale, le programme effectue une recherche chaque
-fois qu'une lettre est tapée. La ligne de statut vous informe
-du résultat de cette recherche. Entrer le raccourci clavier
-de la recherche affiche l'occurrence suivante de la chaîne à rechercher.
-Si aucune autre occurrence ne peut être trouvée, la ligne de statut vous
-en informe. Répéter alors la recherche fera redémarrer la recherche
-au début. L'ordre de recherche se fait toujours selon l'ordre de tri
-actuel de votre base de données. Pour quitter la recherche incrémentale,
-appuyez sur ESC ou cliquez sur "Vider".
-
-<H2>Recherche normale</H2>
-
-Dans une recherche normale, le programme recherche dans votre base les occurrences de votre chaîne de recherche, après que vous ayez appuyé sur Entrée. Toutes les entrées qui ne correspondent pas sont masquées, ne laissant alors apparaître que les entrées correspondant aux critères (mode filtre), ou sont gris�es (mode flottante). Pour ne plus afficher les résultats de la recherche, appuyer sur ESC ou cliquer sur "Vider".
-
-<a name="advanced"><H2>Spécification des champs, opérateurs logiques</H2>
-
-Afin de rechercher uniquement des champs spécifiques et/ou
-d'inclure des opérateurs logiques dans l'expression à rechercher,
-une syntaxe particulière est disponible. Par exemple, pour
-rechercher les entrées dont l'auteur est "Miller", entrez (excepté
-en mode de recherche incrémentale) :
-<p>
-author = miller
-<p>
-A la fois la spécification du champ et le terme à rechercher
-peuvent être des expressions régulières. Si un terme à rechercher
-contient des espaces, le mettre entre guillemets. Il ne faut
-<i>jamais</i> utiliser d'espace dans la spécification du champ !
-
-Par exemple, pour rechercher les entrées à propos de traitement
-d'images, entrez :
-<p>
-title|keywords = "traitement d'images"
-<p>
-Vous pouvez utiliser "and", "or", "not", et les parenthèses
-de la façon habituelle :
-<p>
-(author = miller or title|keywords = "traitement d'images") and not author = brown
-<p>
-En fait, le signe "=" signifie "contient". La recherche d'une correspondance exacte
-est possible en utilisant "matches" ou "==". Utilisez "!=" pour tester si le terme à
-rechercher n'est <i>pas</i> contenu dans le champ (un équivalent de "not ...
-contains ...").
-
-Si vous spécifiez un type de champ dans l'expression à rechercher, la sélection des types de champs (requis, optionels, généraux)
-apparaissant dans les paramètres de recherche n'est pas prise en compte.
-Pour chercher des entrées d'un certain type,
-un pseudo-champ nommé "entrytype" est disponible :
-<p>
-entrytype = thesis
-<p>
-recherchera les entrées dont le type (tel qu'affiché dans la colonne "Entrytype")
-contient le mot "thesis" (et qui sera donc "phdthesis" ou "mastersthesis"). Le pseudo-champ "bibtexkey" permet de rechercher dans les clefs de citation, tel que :
- <p>
- bibtexkey = miller2005
-
-
-<H2>Paramètres de recherche</H2>
-
-Le bouton <em>Paramètres</em> ouvre un menu qui permet de basculer en mode "sensible à la casse", d'utiliser des expressions régulières lors de la recherche, et de définir si les résultats de la recherche doivent être sélectionnés dans la table.
-
-
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Recherche</h1>
+
+    <p>Il y a trois modes différents de
+    recherche dans JabRef.</p>
+
+    <p><em>CTRL-F</em> ouvre ou active l'interface de recherche.
+    Appuyer sur <em>CTRL-F</em> plusieurs fois modifie le mode de
+    recherche. En recherche incrémentale, <em>CTRL-F</em>
+    affiche l'occurrence suivante de la chaîne à
+    rechercher.</p>
+
+    <p><em>CTRL-MAJ-F</em> ouvre ou active l'interface de
+    recherche, et sélectionne la recherche
+    incrémentale. En recherche incrémentale, appuyer
+    sur <em>CTRL-MAJ-F</em> affiche aussi l'occurrence suivante de
+    la chaîne à rechercher.</p>
+
+    <h2>Recherche incrémentale</h2>
+
+    <p>En recherche
+    incrémentale, le programme effectue une recherche chaque
+    fois qu'une lettre est tapée. La ligne de statut vous
+    informe du résultat de cette recherche. Entrer le
+    raccourci clavier de la recherche affiche l'occurrence suivante
+    de la chaîne à rechercher. Si aucune autre
+    occurrence ne peut être trouvée, la ligne de
+    statut vous en informe. Répéter alors la
+    recherche fera redémarrer la recherche au début.
+    L'ordre de recherche se fait toujours selon l'ordre de tri
+    actuel de votre base de données. Pour quitter la
+    recherche incrémentale, appuyez sur ESC ou cliquez sur
+    "Vider".</p>
+
+    <h2>Recherche normale</h2>
+
+    <p>Dans une recherche normale, le
+    programme recherche dans votre base les occurrences de votre
+    chaîne de recherche, après que vous ayez
+    appuyé sur Entrée. Toutes les entrées qui
+    ne correspondent pas sont masquées, ne laissant alors
+    apparaître que les entrées correspondant aux
+    critères (mode filtre), ou sont grisées (mode
+    flottante). Pour ne plus afficher les résultats de la
+    recherche, appuyer sur ESC ou cliquer sur "Vider".</p>
+
+    <h2><a name="advanced"
+       id="advanced">Spécification des champs,
+       opérateurs logiques</a></h2>
+
+       <p>Afin de rechercher
+       uniquement des champs spécifiques et/ou d'inclure des
+       opérateurs logiques dans l'expression à
+       rechercher, une syntaxe particulière est disponible.
+       Par exemple, pour rechercher les entrées dont
+       l'auteur est "Miller", entrez (excepté en mode de
+       recherche incrémentale) :</p>
+
+    <p>author = miller</p>
+
+    <p>A la fois la spécification du champ et le terme
+    à rechercher peuvent être des expressions
+    régulières. Si un terme à rechercher
+    contient des espaces, le mettre entre guillemets. Il ne faut
+    <i>jamais</i> utiliser d'espace dans la spécification du
+    champ ! Par exemple, pour rechercher les entrées
+    à propos de traitement d'images, entrez :</p>
+
+    <p>title|keywords = "traitement d'images"</p>
+
+    <p>Vous pouvez utiliser "and", "or", "not", et les
+    parenthèses de la façon habituelle :</p>
+
+    <p>(author = miller or title|keywords = "traitement d'images")
+    and not author = brown</p>
+
+    <p>En fait, le signe "=" signifie "contient". La recherche
+    d'une correspondance exacte est possible en utilisant "matches"
+    ou "==". Utilisez "!=" pour tester si le terme à
+    rechercher n'est <i>pas</i> contenu dans le champ (un
+    équivalent de "not ... contains ..."). Si vous
+    spécifiez un type de champ dans l'expression à
+    rechercher, la sélection des types de champs (requis,
+    optionels, généraux) apparaissant dans les
+    paramètres de recherche n'est pas prise en compte. Pour
+    chercher des entrées d'un certain type, un pseudo-champ
+    nommé "entrytype" est disponible :</p>
+
+    <p>entrytype = thesis</p>
+
+    <p>recherchera les entrées dont le type (tel
+    qu'affiché dans la colonne "Entrytype") contient le mot
+    "thesis" (et qui sera donc "phdthesis" ou "mastersthesis"). Le
+    pseudo-champ "bibtexkey" permet de rechercher dans les clefs de
+    citation, tel que :</p>
+
+    <p>bibtexkey = miller2005</p>
+
+    <h2>Paramètres de recherche</h2>
+
+    <p>Le bouton
+    <em>Paramètres</em> ouvre un menu qui permet de basculer
+    en mode "sensible à la casse", d'utiliser des
+    expressions régulières lors de la recherche, et
+    de définir si les résultats de la recherche
+    doivent être sélectionnés dans la table.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/ShortAuxImport.html b/src/help/fr/ShortAuxImport.html
index 4ee9e87..59b3882 100644
--- a/src/help/fr/ShortAuxImport.html
+++ b/src/help/fr/ShortAuxImport.html
@@ -1,7 +1,11 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR">
-<html><head></head>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
 <body>
-<basefont size="-1" color="#2F4958" face="arial">
-Cette fonction g�n�re une nouvelle base de donn�es qui contient uniquement les r�f�rences utilis�es dans un projet TeX existant.
-</body></html> 
\ No newline at end of file
+    <basefont size="-1"
+          color="#2F4958"
+          face="arial" /> Cette fonction génère une
+          nouvelle base de données qui contient uniquement
+          les références utilisées dans un
+          projet TeX existant.
+</body>
+</html>
diff --git a/src/help/fr/ShortIntegrityCheck.html b/src/help/fr/ShortIntegrityCheck.html
index a48b991..9a873c0 100644
--- a/src/help/fr/ShortIntegrityCheck.html
+++ b/src/help/fr/ShortIntegrityCheck.html
@@ -1,8 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
 <body>
-<basefont size="-1" color="#2F4958" face="arial">
-La vérification d'intégrité est un processus qui
-recherche des indices de champs BibTeX mal remplis."Démarrer"
-est le bouton pour lancer la vérification. 
-</body></html>
\ No newline at end of file
+    <basefont size="-1"
+          color="#2F4958"
+          face="arial" /> La vérification
+          d'intégrité est un processus qui recherche
+          des indices de champs BibTeX mal
+          remplis."Démarrer" est le bouton pour lancer la
+          vérification.
+</body>
+</html>
diff --git a/src/help/fr/ShortPlainImport.html b/src/help/fr/ShortPlainImport.html
index 089692c..5211c17 100644
--- a/src/help/fr/ShortPlainImport.html
+++ b/src/help/fr/ShortPlainImport.html
@@ -1,9 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
 <body>
-<basefont size="-1" color="#2F4958" face="arial">
-Ceci est simplement une fenêtre de copier-coller. Commencez par
-charger ou coller du texte dans la zone de saisie de texte. Ensuite,
-vous pouvez sélectionner des portions de texte et les attribuer
-à des champs BibTeX.
-</body></html>
\ No newline at end of file
+    <basefont size="-1"
+          color="#2F4958"
+          face="arial" /> Ceci est simplement une fenêtre de
+          copier-coller. Commencez par charger ou coller du texte
+          dans la zone de saisie de texte. Ensuite, vous pouvez
+          sélectionner des portions de texte et les
+          attribuer à des champs BibTeX.
+</body>
+</html>
diff --git a/src/help/fr/StringEditorHelp.html b/src/help/fr/StringEditorHelp.html
index be3e715..da31fb3 100644
--- a/src/help/fr/StringEditorHelp.html
+++ b/src/help/fr/StringEditorHelp.html
@@ -1,46 +1,66 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>L'éditeur de chaîne</H1>
-<em>On l'ouvre à partir de la fenêtre principale par le menu <em>BibTeX -> Editer les chaînes</em> ou
-en appuyant sur un des icônes de la barre d'outils.
-Le raccourci clavier est CTRL-T.</em>
-<P>
-Les <em>chaînes</em> sont l'équivalent <em>BibTeX</em> des constantes dans
-un langage de programmation. Chaque chaîne est définie par un <em>nom</em>
-unique et un <em>contenu</em>. Dans votre base de données, ce nom peut être
-utilisé pour représenter ce contenu.
-
-<P>
-Par exemple, si beaucoup d'entrées appartiennent � un journal dont l'abréviation
-est difficile à mémoriser, tel que 'J. Theor. Biol.' (Journal of
-Theroretical Biology), une chaîne nommée JTB peut être définie pour
-représenter le nom de ce journal. Au lieu de taper le nom exact du journal
-dans chaque entrée, les caractères '#JTB#' sont entrés (sans les guillemets)
-dans le champ <em>journal</em> de chaque entrée, assurant ainsi que le nom
-du journal est écrit de la même façon à chaque fois.
-
-<P>
-Une telle chaîne peut apparaître n'importe où dans un champ en incluant
-le nom de la chaîne entre une paire de caractères '#'. Cette syntaxe est spécifique
-à JabRef et diffère légèrement de la notation <em>BibTeX</em> qui
-est produite quand vous sauvez votre base de données. Les chaînes peuvent par défaut être utilisées pour tous
-les champs BibTeX standard, et dans <b>Options -> Préférences -> Général-> Fichier</b>, vous pouvez choisir
-d'autoriser les chaînes pour des champs non-standards. Dans ce dernier cas, vous pouvez spécifier une
-série de champs où les chaînes ne doivent pas être recherchées ; il est recommandé d'y inclure le champ 'url' ainsi que les autres champs qui pourraient contenir des caractères '#' que BibTeX/LaTeX est susceptible de traiter.
-
-<P>
-Une chaîne peut être incluse dans le contenu d'une autre chaîne (chaîne
-incluante), à la condition que la chaîne incluse soit définie
-<em>avant</em> la chaîne incluante.
-
-<p>Alors que l'ordre des chaînes dans votre fichier BibTeX est important dans certains cas,
-vous n'avez pas à vous en préoccuper quand vous utilisez JabRef. Dans l'éditeur de chaînes,
-les chaînes seront affichées selon l'ordre alphabétique et stockée dans le même ordre,
-excepté quand BibTeX aura besoin d'un ordre différent.
-
-
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>L'éditeur de chaîne</h1>
+
+    <p><em>On l'ouvre
+    à partir de la fenêtre principale par le menu</em>
+    BibTeX -> Editer les chaînes ou en appuyant sur un des
+    icônes de la barre d'outils. Le raccourci clavier est
+    CTRL-T.</p>
+
+    <p>Les <em>chaînes</em> sont l'équivalent
+    <em>BibTeX</em> des constantes dans un langage de
+    programmation. Chaque chaîne est définie par un
+    <em>nom</em> unique et un <em>contenu</em>. Dans votre base de
+    données, ce nom peut être utilisé pour
+    représenter ce contenu.</p>
+
+    <p>Par exemple, si beaucoup d'entrées appartiennent
+    à un journal dont l'abréviation est difficile
+    à mémoriser, tel que 'J. Theor. Biol.' (Journal
+    of Theroretical Biology), une chaîne nommée JTB
+    peut être définie pour représenter le nom
+    de ce journal. Au lieu de taper le nom exact du journal dans
+    chaque entrée, les caractères '#JTB#' sont
+    entrés (sans les guillemets) dans le champ
+    <em>journal</em> de chaque entrée, assurant ainsi que le
+    nom du journal est écrit de la même façon
+    à chaque fois.</p>
+
+    <p>Une telle chaîne peut apparaître n'importe
+    où dans un champ en incluant le nom de la chaîne
+    entre une paire de caractères '#'. Cette syntaxe est
+    spécifique à JabRef et diffère
+    légèrement de la notation <em>BibTeX</em> qui est
+    produite quand vous sauvez votre base de données. Les
+    chaînes peuvent par défaut être
+    utilisées pour tous les champs BibTeX standard, et dans
+    <b>Options -> Préférences ->
+    Général-> Fichier</b>, vous pouvez choisir
+    d'autoriser les chaînes pour des champs non-standards.
+    Dans ce dernier cas, vous pouvez spécifier une
+    série de champs où les chaînes ne doivent
+    pas être recherchées ; il est
+    recommandé d'y inclure le champ 'url' ainsi que les
+    autres champs qui pourraient contenir des caractères '#'
+    que BibTeX/LaTeX est susceptible de traiter.</p>
+
+    <p>Une chaîne peut être incluse dans le contenu
+    d'une autre chaîne (chaîne incluante), à la
+    condition que la chaîne incluse soit définie
+    <em>avant</em> la chaîne incluante.</p>
+
+    <p>Alors que l'ordre des chaînes dans votre fichier
+    BibTeX est important dans certains cas, vous n'avez pas
+    à vous en préoccuper quand vous utilisez JabRef.
+    Dans l'éditeur de chaînes, les chaînes
+    seront affichées selon l'ordre alphabétique et
+    stockée dans le même ordre, excepté quand
+    BibTeX aura besoin d'un ordre différent.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/TimeStampHelp.html b/src/help/fr/TimeStampHelp.html
index 82ca093..49d57bc 100644
--- a/src/help/fr/TimeStampHelp.html
+++ b/src/help/fr/TimeStampHelp.html
@@ -1,40 +1,55 @@
-<HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
 
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
 
-<H1>Horodatage des entrées</H1>
+    <h1>Horodatage des entrées</h1>
 
-Cette fonction peut être activée et configurée sous <b>Options -> Préférences -> Général</b>.
+    <p>Cette fonction peut
+    être activée et configurée sous <b>Options
+    -> Préférences ->
+    Général</b>.</p>
 
-<p>JabRef peut automatiquement insérer un champ qui contient la date à laquelle
-une entrée a été ajoutée à la base de données.
+    <p>JabRef peut automatiquement insérer un champ qui
+    contient la date à laquelle une entrée a
+    été ajoutée à la base de
+    données.</p>
 
+    <h2>Mise en forme</h2>
 
-<H2>Mise en forme</H2>
+    <p>Le format d'horodatage est
+    déterminé par une chaîne contenant des
+    codes qui indiquent la position des différentes parties
+    de la date.</p>
 
-Le format d'horodatage est déterminé par une chaîne contenant des codes qui indiquent
-la position des différentes parties de la date.
-     <p>
-     Voici certains des codes disponibles (exemples donnés entre parenthèses pour le
-     mercredi 14 septembre 2005 à 17h45) :
-     <ul>
-         <li><b>yy</b>: année (05)</li>
-         <li><b>yyyy</b>: année (2005)</li>
-         <li><b>MM</b>: mois (09)</li>
-         <li><b>dd</b>: jour du mois (14)</li>
-         <li><b>HH</b>: heure du jour (17)</li>
-         <li><b>mm</b>: minute de l'heure (45)</li>
-     </ul>
+    <p>Voici certains des codes disponibles (exemples donnés
+    entre parenthèses pour le mercredi 14 septembre 2005
+    à 17h45) :</p>
 
-     Ces codes peuvent être combinés avec des ponctuations et des espaces. Quelques exemples :
+    <ul>
+        <li><b>yy</b>: année (05)</li>
 
-     <ul>
-     <li><b>yyyy.MM.dd</b> donne <b>2005.09.14</b></li>
-     <li><b>yy.MM.dd</b> donne <b>05.09.14</b></li>
-     <li><b>yyyy.MM.dd HH:mm</b> donne <b>2005.09.14 17:45</b></li>
-     </ul>
+        <li><b>yyyy</b>: année (2005)</li>
 
+        <li><b>MM</b>: mois (09)</li>
 
-</BODY>
-</HTML>
+        <li><b>dd</b>: jour du mois (14)</li>
+
+        <li><b>HH</b>: heure du jour (17)</li>
+
+        <li><b>mm</b>: minute de l'heure (45)</li>
+    </ul>Ces codes peuvent être combinés avec des
+    ponctuations et des espaces. Quelques exemples :
+
+    <ul>
+        <li><b>yyyy.MM.dd</b> donne <b>2005.09.14</b></li>
+
+        <li><b>yy.MM.dd</b> donne <b>05.09.14</b></li>
+
+        <li><b>yyyy.MM.dd HH:mm</b> donne <b>2005.09.14
+        17:45</b></li>
+    </ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/fr/XMPHelp.html b/src/help/fr/XMPHelp.html
index 15f3ae4..5bb19b8 100644
--- a/src/help/fr/XMPHelp.html
+++ b/src/help/fr/XMPHelp.html
@@ -1,67 +1,116 @@
-<HTML>
-
-<BODY text="#275856">
-<basefont size="4" color="#2F4958" face="arial">
-
-<H1>Support des metadonnées XMP dans JabRef</H1>
-
-NdT : Menus à vérifier !!!
-
-<p>
-XMP est un standard créé par Adobe Systems pour stocker des métadonnées (des données sur les données) dans des fichiers.
-A exemple bien connu de métadonnées sont les balises MP3 qui peuvent être utilisées pour décrire l'artiste, l'album et le nom de la chanson
-dans un fichier MP3. Ajouter des métadonnées à des fichiers MP3 aide les autres utilisateurs à identifier correctement les chansons indépendamment du nom du fichier
-et permet aux logiciels (lecteurs MP3 par exemple) de trier et de grouper les chansons.
-</p>
-<p>
-Avec le support de XMP, l'équipe de développement de JabRef introduit les avantages des métadonnées au monde des gestionnaires de références.
-Vous avez maintenant la possibilité d'"écrire des métadonnées XMP" dans l'onglet General de Jabref, ce qui mettra toutes les informations BibTex dans un fichier PDF. En transférant ce fichier à un collègue, il aura simplement à faire glisser le fichier dans JabRef pour que toutes les informations que vous y avez entrées lui soient disponibles.
-</p>
-
-<H2>Utilisation</H2>
-
-Pour utiliser la fonction XMP dans JabRef, vous pouvez faire les choses suivantes :
-
-<ul>
-  <li><b>Importer un unique fichier PDF annoté</b> contenant les métadonnées XMP. Vous pouvez sélectionner "Fichier -> Importer dans... -> PDF avec annotations XMP" ou faire glisser le fichier dans la fenêtre principale.</li>
-  <li><b>Ecrire les informations bibliographiques dans le fichier PDF associé.</b> Pour cela, double-cliquez sur l'entrée dans
-  la fenêtre principale, allez dans l'onglet "General" et cliquer sur "Ecrire XMP".</li>
-  <li>Si vous voulez <b>annoter tous les PDFs dans une base de données déterminée</b> vous pouvez sélectionner "Outils -> Ecrire XMP pour la base de données"</li>
-  <li>Pour vérifier si cela a fonctionné, vous pouvez ouvrir le PDF dans Adobe Acrobat et sélectionner
-  "Fichier -> Propriétés du Document -> Métadonnées additionnelles -> Avancé". 
- Dans l'arborescence sur la droite vous devriez voir une entrée nommée "http://purl.org/net/bibteXMP".
-  Cela fonctionne uniquement avec Adobe Acrobat, et pas avec Adobe Reader.</li>
-  <li>Si vous n'avez pas Adobe Acrobat, vous pouvez utiliser <i>pdfinfo</i> à  la place afin de voir les métadonnées XMP. <i>pdfinfo</i> fait partie de Xpdf (<code>www.foolabs.com/xpdf</code>) et Poppler (<code>http://poppler.freedesktop.org</code>).</li>
-
-
-
-
-
-</ul>
-
-<h2>Format de fichier BibteXmp</h2>
-
-<p>
-XMP utilise un sous-ensemble du Schéma de Description des Ressources (Resource Description Framework - RDF) pour stocker les données. Pour JabRef, un nouveau format de métadonnées
-est utilisé ; il ressemble beaucoup au format BibTeX. Fondamentalement, tous les champs et valeurs sont transformés en
-noeuds dans un document XML. Seuls les auteurs et les éditeurs sont stockés comme des rdf:Seq-structures, aussi les utilisateurs
-des données peuvent éviter la séparation basées sur des 'and'. Toutes les chaînes et les références croisées seront présentes dans les données.
-</p>
-<p>
-Le schéma suivant, facile et minimal, est utilisé :
-</p>
-<p>
-<ul>
-  <li>La clef BibTeX est stockée comme une <code>bibtexkey</code>.</li>
-  <li>Le type d'entrée BibTeX est stocké comme une <code>entrytype</code>.</li>
-  <li>les champs <code>author</code> et <code>editor</code> sont encodés comme des <code>rdf:Seq</code>s où les auteurs individuels sont représentés par des <code>rdf:li</code>s.</li>
-  <li>Tous les autres champs sont sauvés en utilisant directement le nom de leur champ.</li>
-</ul>
-</p>
-<p>
-Ci-dessous, un exemple de mise en correspondance
-</p>
-<pre>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+    <basefont size="4"
+          color="#2F4958"
+          face="arial" />
+
+    <h1>Support des metadonnées XMP dans
+    JabRef</h1>
+
+    <p>NdT : Menus à vérifier !!!</p>
+
+    <p>XMP est un standard créé par Adobe Systems
+    pour stocker des métadonnées (des données
+    sur les données) dans des fichiers. A exemple bien connu
+    de métadonnées sont les balises MP3 qui peuvent
+    être utilisées pour décrire l'artiste,
+    l'album et le nom de la chanson dans un fichier MP3. Ajouter
+    des métadonnées à des fichiers MP3 aide
+    les autres utilisateurs à identifier correctement les
+    chansons indépendamment du nom du fichier et permet aux
+    logiciels (lecteurs MP3 par exemple) de trier et de grouper les
+    chansons.</p>
+
+    <p>Avec le support de XMP, l'équipe de
+    développement de JabRef introduit les avantages des
+    métadonnées au monde des gestionnaires de
+    références. Vous avez maintenant la
+    possibilité d'"écrire des
+    métadonnées XMP" dans l'onglet General de Jabref,
+    ce qui mettra toutes les informations BibTex dans un fichier
+    PDF. En transférant ce fichier à un
+    collègue, il aura simplement à faire glisser le
+    fichier dans JabRef pour que toutes les informations que vous y
+    avez entrées lui soient disponibles.</p>
+
+    <h2>Utilisation</h2>
+
+    <p>Pour utiliser la fonction XMP dans JabRef,
+    vous pouvez faire les choses suivantes :</p>
+
+    <ul>
+        <li><b>Importer un unique fichier PDF annoté</b>
+        contenant les métadonnées XMP. Vous pouvez
+        sélectionner "Fichier -> Importer dans... ->
+        PDF avec annotations XMP" ou faire glisser le fichier dans
+        la fenêtre principale.</li>
+
+        <li><b>Ecrire les informations bibliographiques dans le
+        fichier PDF associé.</b> Pour cela, double-cliquez
+        sur l'entrée dans la fenêtre principale, allez
+        dans l'onglet "General" et cliquer sur "Ecrire XMP".</li>
+
+        <li>Si vous voulez <b>annoter tous les PDFs dans une base
+        de données déterminée</b> vous pouvez
+        sélectionner "Outils -> Ecrire XMP pour la base
+        de données"</li>
+
+        <li>Pour vérifier si cela a fonctionné, vous
+        pouvez ouvrir le PDF dans Adobe Acrobat et
+        sélectionner "Fichier -> Propriétés
+        du Document -> Métadonnées additionnelles
+        -> Avancé". Dans l'arborescence sur la droite
+        vous devriez voir une entrée nommée
+        "http://purl.org/net/bibteXMP". Cela fonctionne uniquement
+        avec Adobe Acrobat, et pas avec Adobe Reader.</li>
+
+        <li>Si vous n'avez pas Adobe Acrobat, vous pouvez utiliser
+        <i>pdfinfo</i> à la place afin de voir les
+        métadonnées XMP. <i>pdfinfo</i> fait partie
+        de Xpdf (<code>www.foolabs.com/xpdf</code>) et Poppler
+        (<code>http://poppler.freedesktop.org</code>).</li>
+    </ul>
+
+    <h2>Format de fichier BibteXmp</h2>
+
+    <p>XMP utilise un sous-ensemble du Schéma de Description
+    des Ressources (Resource Description Framework - RDF) pour
+    stocker les données. Pour JabRef, un nouveau format de
+    métadonnées est utilisé ; il
+    ressemble beaucoup au format BibTeX. Fondamentalement, tous les
+    champs et valeurs sont transformés en noeuds dans un
+    document XML. Seuls les auteurs et les éditeurs sont
+    stockés comme des rdf:Seq-structures, aussi les
+    utilisateurs des données peuvent éviter la
+    séparation basées sur des 'and'. Toutes les
+    chaînes et les références croisées
+    seront présentes dans les données.</p>
+
+    <p>Le schéma suivant, facile et minimal, est
+    utilisé :</p>
+
+    <ul>
+        <li>La clef BibTeX est stockée comme une
+        <code>bibtexkey</code>.</li>
+
+        <li>Le type d'entrée BibTeX est stocké comme
+        une <code>entrytype</code>.</li>
+
+        <li>les champs <code>author</code> et <code>editor</code>
+        sont encodés comme des <code>rdf:Seq</code>s
+        où les auteurs individuels sont
+        représentés par des
+        <code>rdf:li</code>s.</li>
+
+        <li>Tous les autres champs sont sauvés en utilisant
+        directement le nom de leur champ.</li>
+    </ul><br />
+    <br />
+
+
+    <p>Ci-dessous, un exemple de mise en correspondance</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},
@@ -71,18 +120,16 @@ Ci-dessous, un exemple de mise en correspondance
   timestamp = {2006.05.29},
   url = {http://james.howison.name/publications.html}
 }
-</pre>
-
-sera transformé en
-<pre>
-<rdf:Description xmlns:bibtex="http://jabref.sourceforge.net/bibteXMP/"
-    bibtex:bibtexkey="CroAnnHow05"
-    bibtex:year="2005"
-    bibtex:title="Effective work practices for floss development: A model and propositions"
-    bibtex:owner="oezbek"
-    bibtex:url="http://james.howison.name/publications.html"
-    bibtex:booktitle="Hawaii International Conference On System Sciences (HICSS)"
-    bibtex:timestamp="2006.05.29">
+</pre>sera transformé en
+    <pre>
+<rdf:Description xmlns:bibtex="http://jabref.sourceforge.net/bibteXMP/"
+    bibtex:bibtexkey="CroAnnHow05"
+    bibtex:year="2005"
+    bibtex:title="Effective work practices for floss development: A model and propositions"
+    bibtex:owner="oezbek"
+    bibtex:url="http://james.howison.name/publications.html"
+    bibtex:booktitle="Hawaii International Conference On System Sciences (HICSS)"
+    bibtex:timestamp="2006.05.29">
         <bibtex:author>
             <rdf:Seq>
                 <rdf:li>K. Crowston</rdf:li>
@@ -93,30 +140,47 @@ sera transformé en
         </bibtex:author>
     <bibtex:entrytype>Inproceedings</bibtex:entrytype>
 </rdf:Description>
-</pre></td></tr>
-</table>
-
-<p>
-Faites attention aux pi�ges suivants si vous essayez de traiter les m�tadonn�es bibtexXMP :
-</p>
-<p>
-<ul>
-  <li>Selon RDF, les couples attribut-valeur peuvent aussi être exprimés comme des noeuds, et vice-versa.</li>
-</ul>
-</p>
-<H2>Liens :</H2>
-<p>
-Quelques liens (en anglais) à propos de XMP et de l'annotation des PDFs :
-</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 article about XMP</a></li>
-  <li><a href="http://jempbox.org">JempBox</a> and <a href="http://pdfbox.org">PDFBox</a> by Ben Litchfield are the Jaba libraries
-  used to access the PDFs and the metadata stream.</a></li>
-  <li><a href="http://episteme.arstechnica.com/eve/ubb.x/a/tpc/f/8300945231/m/377001889631">Good thread on ArsTechnica discussing the management of PDFs.</a></li>
-  <li><a href="http://partners.adobe.com/public/developer/en/xmp/sdk/xmpspecification.pdf">Adobe XMP Specification</a></li>
-</ul>
-</p>
+</pre>
+
+    <p>Faites attention aux pièges suivants si vous essayez
+    de traiter les métadonnées bibtexXMP :</p>
+
+    <ul>
+        <li>Selon RDF, les couples attribut-valeur peuvent aussi
+        être exprimés comme des noeuds, et
+        vice-versa.</li>
+    </ul><br />
+    <br />
+
+
+    <h2>Liens :</h2>
+
+    <p>Quelques liens (en anglais) à propos de XMP et de
+    l'annotation des PDFs :</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
+        article about XMP</a></li>
+
+        <li><a href="http://jempbox.org">JempBox</a> and
+        <a href="http://pdfbox.org">PDFBox</a> by Ben Litchfield
+        are the Jaba libraries used to access the PDFs and the
+        metadata stream.</li>
+
+        <li>
+        <a href="http://episteme.arstechnica.com/eve/ubb.x/a/tpc/f/8300945231/m/377001889631">
+        Good thread on ArsTechnica discussing the management of
+        PDFs.</a></li>
+
+        <li>
+        <a href="http://partners.adobe.com/public/developer/en/xmp/sdk/xmpspecification.pdf">
+        Adobe XMP Specification</a></li>
+    </ul><br />
+    <br />
 </body>
-</HTML>
+</html>
\ No newline at end of file
diff --git a/src/help/jgoodies.html b/src/help/jgoodies.html
index 0cd9fb9..ca09deb 100644
--- a/src/help/jgoodies.html
+++ b/src/help/jgoodies.html
@@ -1,25 +1,41 @@
-Copyright (c) 2003 JGoodies Karsten Lentzsch. All Rights Reserved.
-<p>
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met:
-<ul>
-<li>Redistributions of source code must retain the above copyright notice, 
-this list of conditions and the following disclaimer. 
-<li>Redistributions in binary form must reproduce the above copyright notice, 
-this list of conditions and the following disclaimer in the documentation 
-and/or other materials provided with the distribution. 
-<li>Neither the name of JGoodies Karsten Lentzsch nor the names of 
-its contributors may be used to endorse or promote products derived 
-from this software without specific prior written permission. 
-</ul>   
-<P>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
\ No newline at end of file
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body>
+    Copyright (c) 2003 JGoodies Karsten Lentzsch. All Rights
+    Reserved. 
+
+    <p>Redistribution and use in source and binary forms, with or
+    without modification, are permitted provided that the following
+    conditions are met:</p>
+
+    <ul>
+        <li>Redistributions of source code must retain the above
+        copyright notice, this list of conditions and the following
+        disclaimer.</li>
+
+        <li>Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials
+        provided with the distribution.</li>
+
+        <li>Neither the name of JGoodies Karsten Lentzsch nor the
+        names of its contributors may be used to endorse or promote
+        products derived from this software without specific prior
+        written permission.</li>
+    </ul>
+
+    <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+    CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+    NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
+</body>
+</html>
diff --git a/src/images/splash.png b/src/images/splash.png
index fdba5ad..cb3c24b 100644
Binary files a/src/images/splash.png and b/src/images/splash.png differ
diff --git a/src/java/com/jgoodies/uif_lite/component/UIFSplitPane.java b/src/java/com/jgoodies/uif_lite/component/UIFSplitPane.java
index 953d737..54ac428 100644
--- a/src/java/com/jgoodies/uif_lite/component/UIFSplitPane.java
+++ b/src/java/com/jgoodies/uif_lite/component/UIFSplitPane.java
@@ -1,270 +1,270 @@
-/*
- * Copyright (c) 2003, 2004 JGoodies Karsten Lentzsch. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions are met:
- * 
- *  o Redistributions of source code must retain the above copyright notice, 
- *    this list of conditions and the following disclaimer. 
- *     
- *  o Redistributions in binary form must reproduce the above copyright notice, 
- *    this list of conditions and the following disclaimer in the documentation 
- *    and/or other materials provided with the distribution. 
- *     
- *  o Neither the name of JGoodies Karsten Lentzsch nor the names of 
- *    its contributors may be used to endorse or promote products derived 
- *    from this software without specific prior written permission. 
- *     
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-package com.jgoodies.uif_lite.component;
-
-import java.awt.Component;
-
-import javax.swing.JButton;
-import javax.swing.JSplitPane;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import javax.swing.border.EmptyBorder;
-import javax.swing.plaf.SplitPaneUI;
-import javax.swing.plaf.basic.BasicSplitPaneUI;
-
-/**
- * A <code>JSplitPane</code> subclass that can try to remove the divider border. 
- * Useful if the splitted components render their own borders.
- * Note that this feature is not supported by all look&feels.
- * Some look&feel implementation will always show a divider border, 
- * and conversely, others will never show a divider border.
- * 
- * @author Karsten Lentzsch
- * @version $Revision: 1.2 $
- * 
- * @see javax.swing.plaf.basic.BasicSplitPaneUI
- */
-
-public final class UIFSplitPane extends JSplitPane {
-    
-    /**
-     * Holds the name of the bound property that tries to show or hide
-     * the split pane's divider border.
-     * 
-     * @see #isDividerBorderVisible()
-     * @see #setDividerBorderVisible(boolean)
-     */
-    public static final String PROPERTYNAME_DIVIDER_BORDER_VISIBLE = 
-        "dividerBorderVisible";
-    
-    /**
-     * Holds an empty border that is reused for the split pane itself
-     * and the divider.
-     */
-    private static final Border EMPTY_BORDER = new EmptyBorder(0, 0, 0, 0);
-    
-    /**
-     * Determines whether the divider border shall be removed when
-     * the UI is updated.
-     * 
-     * @see #isDividerBorderVisible()
-     * @see #setDividerBorderVisible(boolean) 
-     */
-    private boolean dividerBorderVisible;
-
-   
-    // Instance Creation *****************************************************
-    
-    /**
-     * Constructs a <code>UIFSplitPane</code> configured to arrange the child
-     * components side-by-side horizontally with no continuous 
-     * layout, using two buttons for the components.
-     */
-    public UIFSplitPane() {
-        this(JSplitPane.HORIZONTAL_SPLIT, false,
-                new JButton(UIManager.getString("SplitPane.leftButtonText")),
-                new JButton(UIManager.getString("SplitPane.rightButtonText")));
-    }
-
-
-    /**
-     * Constructs a <code>UIFSplitPane</code> configured with the
-     * specified orientation and no continuous layout.
-     *
-     * @param newOrientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
-     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
-     * @throws IllegalArgumentException if <code>orientation</code>
-     *		is not one of HORIZONTAL_SPLIT or VERTICAL_SPLIT.
-     */
-    public UIFSplitPane(int newOrientation) {
-        this(newOrientation, false);
-    }
-
-
-    /**
-     * Constructs a <code>UIFSplitPane</code> with the specified
-     * orientation and redrawing style.
-     *
-     * @param newOrientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
-     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
-     * @param newContinuousLayout  a boolean, true for the components to 
-     *        redraw continuously as the divider changes position, false
-     *        to wait until the divider position stops changing to redraw
-     * @throws IllegalArgumentException if <code>orientation</code>
-     *		is not one of HORIZONTAL_SPLIT or VERTICAL_SPLIT
-     */
-    public UIFSplitPane(int newOrientation,
-                      boolean newContinuousLayout) {
-        this(newOrientation, newContinuousLayout, null, null);
-    }
-
-
-    /**
-     * Constructs a <code>UIFSplitPane</code> with the specified orientation
-     * and the given componenents.
-     * 
-     * @param orientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
-     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
-     * @param leftComponent the <code>Component</code> that will
-     *    appear on the left of a horizontally-split pane, 
-     *    or at the top of a vertically-split pane
-     * @param rightComponent the <code>Component</code> that will
-     *    appear on the right of a horizontally-split pane, 
-     *    or at the bottom of a	vertically-split pane
-     * @throws IllegalArgumentException if <code>orientation</code>
-     *    is not one of: HORIZONTAL_SPLIT or VERTICAL_SPLIT
-     */
-    public UIFSplitPane(int orientation,
-                         Component leftComponent,
-                         Component rightComponent) {
-        this(orientation, false, leftComponent, rightComponent);
-    }
-    
-    
-    /**
-     * Constructs a <code>UIFSplitPane</code> with the specified orientation,
-     * redrawing style, and given components.
-     *
-     * @param orientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
-     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
-     * @param continuousLayout  a boolean, true for the components to 
-     *        redraw continuously as the divider changes position, false
-     *        to wait until the divider position stops changing to redraw
-     * @param leftComponent the <code>Component</code> that will
-     *		appear on the left
-     *        	of a horizontally-split pane, or at the top of a
-     *        	vertically-split pane
-     * @param rightComponent the <code>Component</code> that will
-     *		appear on the right
-     *        	of a horizontally-split pane, or at the bottom of a
-     *        	vertically-split pane
-     * @throws IllegalArgumentException if <code>orientation</code>
-     *		is not one of HORIZONTAL_SPLIT or VERTICAL_SPLIT
-     */
-    public UIFSplitPane(int orientation,
-                      boolean continuousLayout,
-                      Component leftComponent,
-                      Component rightComponent){
-        super(orientation, continuousLayout, leftComponent, rightComponent);
-        dividerBorderVisible = false;
-    }
-    
-    
-    /**
-     * Constructs a <code>UIFSplitPane</code>, 
-     * i.e. a <code>JSplitPane</code> that has no borders.
-     * Also disabled the one touch exandable property.
-     * 
-     * @param orientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
-     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
-     * @param leftComponent the <code>Component</code> that will
-     *    appear on the left of a horizontally-split pane, 
-     *    or at the top of a vertically-split pane
-     * @param rightComponent the <code>Component</code> that will
-     *    appear on the right of a horizontally-split pane, 
-     *    or at the bottom of a	vertically-split pane
-     * @throws IllegalArgumentException if <code>orientation</code>
-     *    is not one of: HORIZONTAL_SPLIT or VERTICAL_SPLIT
-     */
-    public static UIFSplitPane createStrippedSplitPane(
-             int orientation,
-             Component leftComponent,
-             Component rightComponent) {
-        UIFSplitPane split = new UIFSplitPane(orientation, leftComponent, rightComponent);
-        split.setBorder(EMPTY_BORDER);
-        split.setOneTouchExpandable(false);
-        return split;
-    }
-    
-    
-    // Accessing Properties **************************************************
-    
-    /**
-     * Checks and answers whether the divider border shall be visible 
-     * or invisible. 
-     * Note that this feature is not supported by all look&feels.
-     * Some look&feel implementation will always show a divider border, 
-     * and conversely, others will never show a divider border.
-     * 
-     * @return the desired (but potentially inaccurate) divider border visiblity
-     */
-    public boolean isDividerBorderVisible() {
-        return dividerBorderVisible;
-    }
-    
-    
-    /**
-     * Makes the divider border visible or invisible.
-     * Note that this feature is not supported by all look&feels.
-     * Some look&feel implementation will always show a divider border, 
-     * and conversely, others will never show a divider border.
-     * 
-     * @param newVisibility   true for visible, false for invisible
-     */
-    public void setDividerBorderVisible(boolean newVisibility) {
-        boolean oldVisibility = isDividerBorderVisible();
-        if (oldVisibility == newVisibility)
-            return;
-        dividerBorderVisible = newVisibility;
-        firePropertyChange(PROPERTYNAME_DIVIDER_BORDER_VISIBLE, 
-                           oldVisibility, 
-                           newVisibility);
-    }
-    
-
-    // Changing the Divider Border Visibility *********************************
-    
-    /**
-     * Updates the UI and sets an empty divider border. The divider border
-     * may be restored by a L&F at UI installation time. And so, we
-     * try to reset it each time the UI is changed.
-     */
-    public void updateUI() {
-        super.updateUI();
-        if (!isDividerBorderVisible())
-            setEmptyDividerBorder();
-    }
-    
-
-    /**
-     * Sets an empty divider border if and only if the UI is 
-     * an instance of <code>BasicSplitPaneUI</code>.
-     */
-    private void setEmptyDividerBorder() {
-        SplitPaneUI splitPaneUI = getUI();
-        if (splitPaneUI instanceof BasicSplitPaneUI) {
-            BasicSplitPaneUI basicUI = (BasicSplitPaneUI) splitPaneUI;
-            basicUI.getDivider().setBorder(EMPTY_BORDER);
-        }
-    }
-    
-    
+/*
+ * Copyright (c) 2003, 2004 JGoodies Karsten Lentzsch. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ * 
+ *  o Redistributions of source code must retain the above copyright notice, 
+ *    this list of conditions and the following disclaimer. 
+ *     
+ *  o Redistributions in binary form must reproduce the above copyright notice, 
+ *    this list of conditions and the following disclaimer in the documentation 
+ *    and/or other materials provided with the distribution. 
+ *     
+ *  o Neither the name of JGoodies Karsten Lentzsch nor the names of 
+ *    its contributors may be used to endorse or promote products derived 
+ *    from this software without specific prior written permission. 
+ *     
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+package com.jgoodies.uif_lite.component;
+
+import java.awt.Component;
+
+import javax.swing.JButton;
+import javax.swing.JSplitPane;
+import javax.swing.UIManager;
+import javax.swing.border.Border;
+import javax.swing.border.EmptyBorder;
+import javax.swing.plaf.SplitPaneUI;
+import javax.swing.plaf.basic.BasicSplitPaneUI;
+
+/**
+ * A <code>JSplitPane</code> subclass that can try to remove the divider border. 
+ * Useful if the splitted components render their own borders.
+ * Note that this feature is not supported by all look&feels.
+ * Some look&feel implementation will always show a divider border, 
+ * and conversely, others will never show a divider border.
+ * 
+ * @author Karsten Lentzsch
+ * @version $Revision: 806 $
+ * 
+ * @see javax.swing.plaf.basic.BasicSplitPaneUI
+ */
+
+public final class UIFSplitPane extends JSplitPane {
+    
+    /**
+     * Holds the name of the bound property that tries to show or hide
+     * the split pane's divider border.
+     * 
+     * @see #isDividerBorderVisible()
+     * @see #setDividerBorderVisible(boolean)
+     */
+    public static final String PROPERTYNAME_DIVIDER_BORDER_VISIBLE = 
+        "dividerBorderVisible";
+    
+    /**
+     * Holds an empty border that is reused for the split pane itself
+     * and the divider.
+     */
+    private static final Border EMPTY_BORDER = new EmptyBorder(0, 0, 0, 0);
+    
+    /**
+     * Determines whether the divider border shall be removed when
+     * the UI is updated.
+     * 
+     * @see #isDividerBorderVisible()
+     * @see #setDividerBorderVisible(boolean) 
+     */
+    private boolean dividerBorderVisible;
+
+   
+    // Instance Creation *****************************************************
+    
+    /**
+     * Constructs a <code>UIFSplitPane</code> configured to arrange the child
+     * components side-by-side horizontally with no continuous 
+     * layout, using two buttons for the components.
+     */
+    public UIFSplitPane() {
+        this(JSplitPane.HORIZONTAL_SPLIT, false,
+                new JButton(UIManager.getString("SplitPane.leftButtonText")),
+                new JButton(UIManager.getString("SplitPane.rightButtonText")));
+    }
+
+
+    /**
+     * Constructs a <code>UIFSplitPane</code> configured with the
+     * specified orientation and no continuous layout.
+     *
+     * @param newOrientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
+     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
+     * @throws IllegalArgumentException if <code>orientation</code>
+     *		is not one of HORIZONTAL_SPLIT or VERTICAL_SPLIT.
+     */
+    public UIFSplitPane(int newOrientation) {
+        this(newOrientation, false);
+    }
+
+
+    /**
+     * Constructs a <code>UIFSplitPane</code> with the specified
+     * orientation and redrawing style.
+     *
+     * @param newOrientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
+     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
+     * @param newContinuousLayout  a boolean, true for the components to 
+     *        redraw continuously as the divider changes position, false
+     *        to wait until the divider position stops changing to redraw
+     * @throws IllegalArgumentException if <code>orientation</code>
+     *		is not one of HORIZONTAL_SPLIT or VERTICAL_SPLIT
+     */
+    public UIFSplitPane(int newOrientation,
+                      boolean newContinuousLayout) {
+        this(newOrientation, newContinuousLayout, null, null);
+    }
+
+
+    /**
+     * Constructs a <code>UIFSplitPane</code> with the specified orientation
+     * and the given componenents.
+     * 
+     * @param orientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
+     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
+     * @param leftComponent the <code>Component</code> that will
+     *    appear on the left of a horizontally-split pane, 
+     *    or at the top of a vertically-split pane
+     * @param rightComponent the <code>Component</code> that will
+     *    appear on the right of a horizontally-split pane, 
+     *    or at the bottom of a	vertically-split pane
+     * @throws IllegalArgumentException if <code>orientation</code>
+     *    is not one of: HORIZONTAL_SPLIT or VERTICAL_SPLIT
+     */
+    public UIFSplitPane(int orientation,
+                         Component leftComponent,
+                         Component rightComponent) {
+        this(orientation, false, leftComponent, rightComponent);
+    }
+    
+    
+    /**
+     * Constructs a <code>UIFSplitPane</code> with the specified orientation,
+     * redrawing style, and given components.
+     *
+     * @param orientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
+     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
+     * @param continuousLayout  a boolean, true for the components to 
+     *        redraw continuously as the divider changes position, false
+     *        to wait until the divider position stops changing to redraw
+     * @param leftComponent the <code>Component</code> that will
+     *		appear on the left
+     *        	of a horizontally-split pane, or at the top of a
+     *        	vertically-split pane
+     * @param rightComponent the <code>Component</code> that will
+     *		appear on the right
+     *        	of a horizontally-split pane, or at the bottom of a
+     *        	vertically-split pane
+     * @throws IllegalArgumentException if <code>orientation</code>
+     *		is not one of HORIZONTAL_SPLIT or VERTICAL_SPLIT
+     */
+    public UIFSplitPane(int orientation,
+                      boolean continuousLayout,
+                      Component leftComponent,
+                      Component rightComponent){
+        super(orientation, continuousLayout, leftComponent, rightComponent);
+        dividerBorderVisible = false;
+    }
+    
+    
+    /**
+     * Constructs a <code>UIFSplitPane</code>, 
+     * i.e. a <code>JSplitPane</code> that has no borders.
+     * Also disabled the one touch exandable property.
+     * 
+     * @param orientation  <code>JSplitPane.HORIZONTAL_SPLIT</code> or
+     *                        <code>JSplitPane.VERTICAL_SPLIT</code>
+     * @param leftComponent the <code>Component</code> that will
+     *    appear on the left of a horizontally-split pane, 
+     *    or at the top of a vertically-split pane
+     * @param rightComponent the <code>Component</code> that will
+     *    appear on the right of a horizontally-split pane, 
+     *    or at the bottom of a	vertically-split pane
+     * @throws IllegalArgumentException if <code>orientation</code>
+     *    is not one of: HORIZONTAL_SPLIT or VERTICAL_SPLIT
+     */
+    public static UIFSplitPane createStrippedSplitPane(
+             int orientation,
+             Component leftComponent,
+             Component rightComponent) {
+        UIFSplitPane split = new UIFSplitPane(orientation, leftComponent, rightComponent);
+        split.setBorder(EMPTY_BORDER);
+        split.setOneTouchExpandable(false);
+        return split;
+    }
+    
+    
+    // Accessing Properties **************************************************
+    
+    /**
+     * Checks and answers whether the divider border shall be visible 
+     * or invisible. 
+     * Note that this feature is not supported by all look&feels.
+     * Some look&feel implementation will always show a divider border, 
+     * and conversely, others will never show a divider border.
+     * 
+     * @return the desired (but potentially inaccurate) divider border visiblity
+     */
+    public boolean isDividerBorderVisible() {
+        return dividerBorderVisible;
+    }
+    
+    
+    /**
+     * Makes the divider border visible or invisible.
+     * Note that this feature is not supported by all look&feels.
+     * Some look&feel implementation will always show a divider border, 
+     * and conversely, others will never show a divider border.
+     * 
+     * @param newVisibility   true for visible, false for invisible
+     */
+    public void setDividerBorderVisible(boolean newVisibility) {
+        boolean oldVisibility = isDividerBorderVisible();
+        if (oldVisibility == newVisibility)
+            return;
+        dividerBorderVisible = newVisibility;
+        firePropertyChange(PROPERTYNAME_DIVIDER_BORDER_VISIBLE, 
+                           oldVisibility, 
+                           newVisibility);
+    }
+    
+
+    // Changing the Divider Border Visibility *********************************
+    
+    /**
+     * Updates the UI and sets an empty divider border. The divider border
+     * may be restored by a L&F at UI installation time. And so, we
+     * try to reset it each time the UI is changed.
+     */
+    public void updateUI() {
+        super.updateUI();
+        if (!isDividerBorderVisible())
+            setEmptyDividerBorder();
+    }
+    
+
+    /**
+     * Sets an empty divider border if and only if the UI is 
+     * an instance of <code>BasicSplitPaneUI</code>.
+     */
+    private void setEmptyDividerBorder() {
+        SplitPaneUI splitPaneUI = getUI();
+        if (splitPaneUI instanceof BasicSplitPaneUI) {
+            BasicSplitPaneUI basicUI = (BasicSplitPaneUI) splitPaneUI;
+            basicUI.getDivider().setBorder(EMPTY_BORDER);
+        }
+    }
+    
+    
 }
\ No newline at end of file
diff --git a/src/java/com/jgoodies/uif_lite/panel/SimpleInternalFrame.java b/src/java/com/jgoodies/uif_lite/panel/SimpleInternalFrame.java
index 6cd57cc..6348d07 100644
--- a/src/java/com/jgoodies/uif_lite/panel/SimpleInternalFrame.java
+++ b/src/java/com/jgoodies/uif_lite/panel/SimpleInternalFrame.java
@@ -1,475 +1,475 @@
-/*
- * Copyright (c) 2003 JGoodies Karsten Lentzsch. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions are met:
- * 
- *  o Redistributions of source code must retain the above copyright notice, 
- *    this list of conditions and the following disclaimer. 
- *     
- *  o Redistributions in binary form must reproduce the above copyright notice, 
- *    this list of conditions and the following disclaimer in the documentation 
- *    and/or other materials provided with the distribution. 
- *     
- *  o Neither the name of JGoodies Karsten Lentzsch nor the names of 
- *    its contributors may be used to endorse or promote products derived 
- *    from this software without specific prior written permission. 
- *     
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-package com.jgoodies.uif_lite.panel;
-
-import com.jgoodies.looks.LookUtils;
-
-import java.awt.*;
-
-import javax.swing.*;
-import javax.swing.border.AbstractBorder;
-
-
-/** 
- * A <code>JPanel</code> subclass that has a drop shadow border and 
- * that provides a header with icon, title and tool bar.<p>
- * 
- * This class can be used to replace the <code>JInternalFrame</code>,
- * for use outside of a <code>JDesktopPane</code>. 
- * The <code>SimpleInternalFrame</code> is less flexible but often
- * more usable; it avoids overlapping windows and scales well 
- * up to IDE size.
- * Several customers have reported that they and their clients feel 
- * much better with both the appearance and the UI feel.<p>
- * 
- * The SimpleInternalFrame provides the following bound properties:
- * <i>frameIcon, title, toolBar, content, selected.</i><p>
- * 
- * By default the SimpleInternalFrame is in <i>selected</i> state.
- * If you don't do anything, multiple simple internal frames will
- * be displayed as selected.
- * 
- * @author Karsten Lentzsch
- * @version $Revision: 1.4 $
- * 
- * @see    javax.swing.JInternalFrame
- * @see    javax.swing.JDesktopPane
- */
-
-public class SimpleInternalFrame extends JPanel {
-
-    private JLabel          titleLabel;
-    private GradientPanel   gradientPanel;
-    private JPanel          headerPanel;
-    private boolean        isSelected;
-    
-    
-    // Instance Creation ****************************************************
-
-    /**
-     * Constructs a <code>SimpleInternalFrame</code> with the specified title.
-     * 
-     * @param title       the initial title
-     */
-    public SimpleInternalFrame(String title) {
-        this(null, title, null, null);
-    }
-    
-    
-    /**
-     * Constructs a <code>SimpleInternalFrame</code> with the specified 
-     * icon, and title.
-     * 
-     * @param icon        the initial icon
-     * @param title       the initial title
-     */
-    public SimpleInternalFrame(Icon icon, String title) {
-        this(icon, title, null, null);
-    }
-
-    
-    /**
-     * Constructs a <code>SimpleInternalFrame</code> with the specified 
-     * title, tool bar, and content panel.
-     * 
-     * @param title       the initial title
-     * @param bar         the initial tool bar
-     * @param content     the initial content pane
-     */
-    public SimpleInternalFrame(String title, JToolBar bar, JComponent content) {
-        this(null, title, bar, content);
-    }
-    
-
-    /**
-     * Constructs a <code>SimpleInternalFrame</code> with the specified 
-     * icon, title, tool bar, and content panel.
-     * 
-     * @param icon        the initial icon
-     * @param title       the initial title
-     * @param bar         the initial tool bar
-     * @param content     the initial content pane
-     */
-    public SimpleInternalFrame(
-        Icon icon,
-        String title,
-        JToolBar bar,
-        JComponent content) {
-        super(new BorderLayout());
-        this.isSelected = false;
-        this.titleLabel = new JLabel(title, icon, SwingConstants.LEADING);
-        JPanel top = buildHeader(titleLabel, bar);
-
-        add(top, BorderLayout.NORTH);
-        if (content != null) {
-            setContent(content);
-        }
-        setBorder(new ShadowBorder());
-        setSelected(true);
-        updateHeader();
-    }
-
-    
-    // Public API ***********************************************************
-
-    /**
-     * Returns the frame's icon.
-     * 
-     * @return the frame's icon
-     */
-    public Icon getFrameIcon() {
-        return titleLabel.getIcon();
-    }
-    
-
-    /**
-     * Sets a new frame icon.
-     * 
-     * @param newIcon   the icon to be set
-     */
-    public void setFrameIcon(Icon newIcon) {
-        Icon oldIcon = getFrameIcon();
-        titleLabel.setIcon(newIcon);
-        firePropertyChange("frameIcon", oldIcon, newIcon);
-    }
-    
-
-    /**
-     * Returns the frame's title text.
-     * 
-     * @return String   the current title text
-     */
-    public String getTitle() {
-        return titleLabel.getText();
-    }
-    
-    
-    /**
-     * Sets a new title text.
-     * 
-     * @param newText  the title text tp be set
-     */
-    public void setTitle(String newText) {
-        String oldText = getTitle();
-        titleLabel.setText(newText);
-        firePropertyChange("title", oldText, newText);
-    }
-    
-    
-    /**
-     * Returns the current toolbar, null if none has been set before.
-     * 
-     * @return the current toolbar - if any
-     */
-    public JToolBar getToolBar() {
-        return headerPanel.getComponentCount() > 1
-            ? (JToolBar) headerPanel.getComponent(1)
-            : null;
-    }
-    
-
-    /**
-     * Sets a new tool bar in the header.
-     * 
-     * @param newToolBar the tool bar to be set in the header
-     */
-    public void setToolBar(JToolBar newToolBar) {
-        JToolBar oldToolBar = getToolBar();
-        if (oldToolBar == newToolBar) {
-            return;
-        }
-        if (oldToolBar != null) {
-            headerPanel.remove(oldToolBar);
-        }
-        if (newToolBar != null) {
-            newToolBar.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
-            headerPanel.add(newToolBar, BorderLayout.EAST);
-        }
-        updateHeader();
-        firePropertyChange("toolBar", oldToolBar, newToolBar);
-    }
-
-    
-    /**
-     * Returns the content - null, if none has been set.
-     * 
-     * @return the current content
-     */
-    public Component getContent() {
-        return hasContent() ? getComponent(1) : null;
-    }
-    
-    
-    /**
-     * Sets a new panel content; replaces any existing content, if existing.
-     * 
-     * @param newContent   the panel's new content
-     */
-    public void setContent(Component newContent) {
-        Component oldContent = getContent();
-        if (hasContent()) {
-            remove(oldContent);
-        }
-        add(newContent, BorderLayout.CENTER);
-        firePropertyChange("content", oldContent, newContent);
-    }
-    
-
-    /**
-     * Answers if the panel is currently selected (or in other words active)
-     * or not. In the selected state, the header background will be
-     * rendered differently.
-     * 
-     * @return boolean  a boolean, where true means the frame is selected 
-     *                  (currently active) and false means it is not  
-     */
-    public boolean isSelected() {
-        return isSelected;
-    }
-    
-    
-    /**
-     * This panel draws its title bar differently if it is selected,
-     * which may be used to indicate to the user that this panel
-     * has the focus, or should get more attention than other
-     * simple internal frames.
-     *
-     * @param newValue  a boolean, where true means the frame is selected 
-     *                  (currently active) and false means it is not
-     */
-    public void setSelected(boolean newValue) {
-        boolean oldValue = isSelected();
-        isSelected = newValue;
-        updateHeader();
-        firePropertyChange("selected", oldValue, newValue);
-    }
-    
-
-    // Building *************************************************************
-
-    /**
-     * Creates and answers the header panel, that consists of:
-     * an icon, a title label, a tool bar, and a gradient background.
-     * 
-     * @param label   the label to paint the icon and text
-     * @param bar     the panel's tool bar
-     * @return the panel's built header area
-     */
-    private JPanel buildHeader(JLabel label, JToolBar bar) {
-        gradientPanel =
-            new GradientPanel(new BorderLayout(), getHeaderBackground());
-        label.setOpaque(false);
-
-        gradientPanel.add(label, BorderLayout.WEST);
-        gradientPanel.setBorder(BorderFactory.createEmptyBorder(3, 4, 3, 1));
-
-        headerPanel = new JPanel(new BorderLayout());
-        headerPanel.add(gradientPanel, BorderLayout.CENTER);
-        setToolBar(bar);
-        headerPanel.setBorder(new RaisedHeaderBorder());
-        headerPanel.setOpaque(false);
-        return headerPanel;
-    }
-
-    /**
-     * Updates the header.
-     */
-    private void updateHeader() {
-        gradientPanel.setBackground(getHeaderBackground());
-        gradientPanel.setOpaque(isSelected());
-        titleLabel.setForeground(getTextForeground(isSelected()));
-        headerPanel.repaint();
-    }
-    
-
-    /**
-     * Updates the UI. In addition to the superclass behavior, we need
-     * to update the header component.
-     */
-    public void updateUI() {
-        super.updateUI();
-        if (titleLabel != null) {
-            updateHeader();
-        }
-    }
-
-
-    // Helper Code **********************************************************
-
-    /**
-     * Checks and answers if the panel has a content component set.
-     * 
-     * @return true if the panel has a content, false if it's empty
-     */
-    private boolean hasContent() {
-        return getComponentCount() > 1;
-    }
-    
-    /**
-     * Determines and answers the header's text foreground color.
-     * Tries to lookup a special color from the L&F.
-     * In case it is absent, it uses the standard internal frame forground.
-     * 
-     * @param selected   true to lookup the active color, false for the inactive
-     * @return the color of the foreground text
-     */
-    protected Color getTextForeground(boolean selected) {
-        Color c =
-            UIManager.getColor(
-                selected
-                    ? "SimpleInternalFrame.activeTitleForeground"
-                    : "SimpleInternalFrame.inactiveTitleForeground");
-        if (c != null) {
-            return c;
-        }
-        return UIManager.getColor(
-            selected 
-                ? "InternalFrame.activeTitleForeground" 
-                : "Label.foreground");
-
-    }
-
-    /**
-     * Determines and answers the header's background color.
-     * Tries to lookup a special color from the L&F.
-     * In case it is absent, it uses the standard internal frame background.
-     * 
-     * @return the color of the header's background
-     */
-    protected Color getHeaderBackground() {
-        
-        Color c =
-            UIManager.getColor("SimpleInternalFrame.activeTitleBackground");
-        if (c != null)
-            return c;
-        if (LookUtils.IS_LAF_WINDOWS_XP_ENABLED)
-            c = UIManager.getColor("InternalFrame.activeTitleGradient");
-        return c != null
-            ? c
-            : UIManager.getColor("InternalFrame.activeTitleBackground");
-    }
-
-
-    // Helper Classes *******************************************************
-
-    // A custom border for the raised header pseudo 3D effect.
-    private static class RaisedHeaderBorder extends AbstractBorder {
-
-        private static final Insets INSETS = new Insets(1, 1, 1, 0);
-
-        public Insets getBorderInsets(Component c) { return INSETS; }
-
-        public void paintBorder(Component c, Graphics g,
-            int x, int y, int w, int h) {
-                
-            g.translate(x, y);
-            g.setColor(UIManager.getColor("controlLtHighlight"));
-            g.fillRect(0, 0,   w, 1);
-            g.fillRect(0, 1,   1, h-1);
-            g.setColor(UIManager.getColor("controlShadow"));
-            g.fillRect(0, h-1, w, 1);
-            g.translate(-x, -y);
-        }
-    }
-
-    // A custom border that has a shadow on the right and lower sides.
-    private static class ShadowBorder extends AbstractBorder {
-
-        private static final Insets INSETS = new Insets(1, 1, 3, 3);
-
-        public Insets getBorderInsets(Component c) { return INSETS; }
-
-        public void paintBorder(Component c, Graphics g,
-            int x, int y, int w, int h) {
-                
-            Color shadow        = UIManager.getColor("controlShadow");
-            if (shadow == null) {
-                shadow = Color.GRAY;
-            }
-            Color lightShadow   = new Color(shadow.getRed(), 
-                                            shadow.getGreen(), 
-                                            shadow.getBlue(), 
-                                            170);
-            Color lighterShadow = new Color(shadow.getRed(),
-                                            shadow.getGreen(),
-                                            shadow.getBlue(),
-                                            70);
-            g.translate(x, y);
-            
-            g.setColor(shadow);
-            g.fillRect(0, 0, w - 3, 1);
-            g.fillRect(0, 0, 1, h - 3);
-            g.fillRect(w - 3, 1, 1, h - 3);
-            g.fillRect(1, h - 3, w - 3, 1);
-            // Shadow line 1
-            g.setColor(lightShadow);
-            g.fillRect(w - 3, 0, 1, 1);
-            g.fillRect(0, h - 3, 1, 1);
-            g.fillRect(w - 2, 1, 1, h - 3);
-            g.fillRect(1, h - 2, w - 3, 1);
-            // Shadow line2
-            g.setColor(lighterShadow);
-            g.fillRect(w - 2, 0, 1, 1);
-            g.fillRect(0, h - 2, 1, 1);
-            g.fillRect(w-2, h-2, 1, 1);
-            g.fillRect(w - 1, 1, 1, h - 2);
-            g.fillRect(1, h - 1, w - 2, 1);
-            g.translate(-x, -y);
-        }
-    }
-
-    // A panel with a horizontal gradient background.
-    private static class GradientPanel extends JPanel {
-        
-        private GradientPanel(LayoutManager lm, Color background) {
-            super(lm);
-            setBackground(background);
-        }
-
-        public void paintComponent(Graphics g) {
-            super.paintComponent(g);
-            if (!isOpaque()) {
-                return;
-            }
-            Color control = UIManager.getColor("control");
-            int width  = getWidth();
-            int height = getHeight();
-
-            Graphics2D g2 = (Graphics2D) g;
-            Paint storedPaint = g2.getPaint();
-            g2.setPaint(
-                new GradientPaint(0, 0, getBackground(), width, 0, control));
-            g2.fillRect(0, 0, width, height);
-            g2.setPaint(storedPaint);
-        }
-    }
-
+/*
+ * Copyright (c) 2003 JGoodies Karsten Lentzsch. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions are met:
+ * 
+ *  o Redistributions of source code must retain the above copyright notice, 
+ *    this list of conditions and the following disclaimer. 
+ *     
+ *  o Redistributions in binary form must reproduce the above copyright notice, 
+ *    this list of conditions and the following disclaimer in the documentation 
+ *    and/or other materials provided with the distribution. 
+ *     
+ *  o Neither the name of JGoodies Karsten Lentzsch nor the names of 
+ *    its contributors may be used to endorse or promote products derived 
+ *    from this software without specific prior written permission. 
+ *     
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+package com.jgoodies.uif_lite.panel;
+
+import com.jgoodies.looks.LookUtils;
+
+import java.awt.*;
+
+import javax.swing.*;
+import javax.swing.border.AbstractBorder;
+
+
+/** 
+ * A <code>JPanel</code> subclass that has a drop shadow border and 
+ * that provides a header with icon, title and tool bar.<p>
+ * 
+ * This class can be used to replace the <code>JInternalFrame</code>,
+ * for use outside of a <code>JDesktopPane</code>. 
+ * The <code>SimpleInternalFrame</code> is less flexible but often
+ * more usable; it avoids overlapping windows and scales well 
+ * up to IDE size.
+ * Several customers have reported that they and their clients feel 
+ * much better with both the appearance and the UI feel.<p>
+ * 
+ * The SimpleInternalFrame provides the following bound properties:
+ * <i>frameIcon, title, toolBar, content, selected.</i><p>
+ * 
+ * By default the SimpleInternalFrame is in <i>selected</i> state.
+ * If you don't do anything, multiple simple internal frames will
+ * be displayed as selected.
+ * 
+ * @author Karsten Lentzsch
+ * @version $Revision: 1510 $
+ * 
+ * @see    javax.swing.JInternalFrame
+ * @see    javax.swing.JDesktopPane
+ */
+
+public class SimpleInternalFrame extends JPanel {
+
+    private JLabel          titleLabel;
+    private GradientPanel   gradientPanel;
+    private JPanel          headerPanel;
+    private boolean        isSelected;
+    
+    
+    // Instance Creation ****************************************************
+
+    /**
+     * Constructs a <code>SimpleInternalFrame</code> with the specified title.
+     * 
+     * @param title       the initial title
+     */
+    public SimpleInternalFrame(String title) {
+        this(null, title, null, null);
+    }
+    
+    
+    /**
+     * Constructs a <code>SimpleInternalFrame</code> with the specified 
+     * icon, and title.
+     * 
+     * @param icon        the initial icon
+     * @param title       the initial title
+     */
+    public SimpleInternalFrame(Icon icon, String title) {
+        this(icon, title, null, null);
+    }
+
+    
+    /**
+     * Constructs a <code>SimpleInternalFrame</code> with the specified 
+     * title, tool bar, and content panel.
+     * 
+     * @param title       the initial title
+     * @param bar         the initial tool bar
+     * @param content     the initial content pane
+     */
+    public SimpleInternalFrame(String title, JToolBar bar, JComponent content) {
+        this(null, title, bar, content);
+    }
+    
+
+    /**
+     * Constructs a <code>SimpleInternalFrame</code> with the specified 
+     * icon, title, tool bar, and content panel.
+     * 
+     * @param icon        the initial icon
+     * @param title       the initial title
+     * @param bar         the initial tool bar
+     * @param content     the initial content pane
+     */
+    public SimpleInternalFrame(
+        Icon icon,
+        String title,
+        JToolBar bar,
+        JComponent content) {
+        super(new BorderLayout());
+        this.isSelected = false;
+        this.titleLabel = new JLabel(title, icon, SwingConstants.LEADING);
+        JPanel top = buildHeader(titleLabel, bar);
+
+        add(top, BorderLayout.NORTH);
+        if (content != null) {
+            setContent(content);
+        }
+        setBorder(new ShadowBorder());
+        setSelected(true);
+        updateHeader();
+    }
+
+    
+    // Public API ***********************************************************
+
+    /**
+     * Returns the frame's icon.
+     * 
+     * @return the frame's icon
+     */
+    public Icon getFrameIcon() {
+        return titleLabel.getIcon();
+    }
+    
+
+    /**
+     * Sets a new frame icon.
+     * 
+     * @param newIcon   the icon to be set
+     */
+    public void setFrameIcon(Icon newIcon) {
+        Icon oldIcon = getFrameIcon();
+        titleLabel.setIcon(newIcon);
+        firePropertyChange("frameIcon", oldIcon, newIcon);
+    }
+    
+
+    /**
+     * Returns the frame's title text.
+     * 
+     * @return String   the current title text
+     */
+    public String getTitle() {
+        return titleLabel.getText();
+    }
+    
+    
+    /**
+     * Sets a new title text.
+     * 
+     * @param newText  the title text tp be set
+     */
+    public void setTitle(String newText) {
+        String oldText = getTitle();
+        titleLabel.setText(newText);
+        firePropertyChange("title", oldText, newText);
+    }
+    
+    
+    /**
+     * Returns the current toolbar, null if none has been set before.
+     * 
+     * @return the current toolbar - if any
+     */
+    public JToolBar getToolBar() {
+        return headerPanel.getComponentCount() > 1
+            ? (JToolBar) headerPanel.getComponent(1)
+            : null;
+    }
+    
+
+    /**
+     * Sets a new tool bar in the header.
+     * 
+     * @param newToolBar the tool bar to be set in the header
+     */
+    public void setToolBar(JToolBar newToolBar) {
+        JToolBar oldToolBar = getToolBar();
+        if (oldToolBar == newToolBar) {
+            return;
+        }
+        if (oldToolBar != null) {
+            headerPanel.remove(oldToolBar);
+        }
+        if (newToolBar != null) {
+            newToolBar.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
+            headerPanel.add(newToolBar, BorderLayout.EAST);
+        }
+        updateHeader();
+        firePropertyChange("toolBar", oldToolBar, newToolBar);
+    }
+
+    
+    /**
+     * Returns the content - null, if none has been set.
+     * 
+     * @return the current content
+     */
+    public Component getContent() {
+        return hasContent() ? getComponent(1) : null;
+    }
+    
+    
+    /**
+     * Sets a new panel content; replaces any existing content, if existing.
+     * 
+     * @param newContent   the panel's new content
+     */
+    public void setContent(Component newContent) {
+        Component oldContent = getContent();
+        if (hasContent()) {
+            remove(oldContent);
+        }
+        add(newContent, BorderLayout.CENTER);
+        firePropertyChange("content", oldContent, newContent);
+    }
+    
+
+    /**
+     * Answers if the panel is currently selected (or in other words active)
+     * or not. In the selected state, the header background will be
+     * rendered differently.
+     * 
+     * @return boolean  a boolean, where true means the frame is selected 
+     *                  (currently active) and false means it is not  
+     */
+    public boolean isSelected() {
+        return isSelected;
+    }
+    
+    
+    /**
+     * This panel draws its title bar differently if it is selected,
+     * which may be used to indicate to the user that this panel
+     * has the focus, or should get more attention than other
+     * simple internal frames.
+     *
+     * @param newValue  a boolean, where true means the frame is selected 
+     *                  (currently active) and false means it is not
+     */
+    public void setSelected(boolean newValue) {
+        boolean oldValue = isSelected();
+        isSelected = newValue;
+        updateHeader();
+        firePropertyChange("selected", oldValue, newValue);
+    }
+    
+
+    // Building *************************************************************
+
+    /**
+     * Creates and answers the header panel, that consists of:
+     * an icon, a title label, a tool bar, and a gradient background.
+     * 
+     * @param label   the label to paint the icon and text
+     * @param bar     the panel's tool bar
+     * @return the panel's built header area
+     */
+    private JPanel buildHeader(JLabel label, JToolBar bar) {
+        gradientPanel =
+            new GradientPanel(new BorderLayout(), getHeaderBackground());
+        label.setOpaque(false);
+
+        gradientPanel.add(label, BorderLayout.WEST);
+        gradientPanel.setBorder(BorderFactory.createEmptyBorder(3, 4, 3, 1));
+
+        headerPanel = new JPanel(new BorderLayout());
+        headerPanel.add(gradientPanel, BorderLayout.CENTER);
+        setToolBar(bar);
+        headerPanel.setBorder(new RaisedHeaderBorder());
+        headerPanel.setOpaque(false);
+        return headerPanel;
+    }
+
+    /**
+     * Updates the header.
+     */
+    private void updateHeader() {
+        gradientPanel.setBackground(getHeaderBackground());
+        gradientPanel.setOpaque(isSelected());
+        titleLabel.setForeground(getTextForeground(isSelected()));
+        headerPanel.repaint();
+    }
+    
+
+    /**
+     * Updates the UI. In addition to the superclass behavior, we need
+     * to update the header component.
+     */
+    public void updateUI() {
+        super.updateUI();
+        if (titleLabel != null) {
+            updateHeader();
+        }
+    }
+
+
+    // Helper Code **********************************************************
+
+    /**
+     * Checks and answers if the panel has a content component set.
+     * 
+     * @return true if the panel has a content, false if it's empty
+     */
+    private boolean hasContent() {
+        return getComponentCount() > 1;
+    }
+    
+    /**
+     * Determines and answers the header's text foreground color.
+     * Tries to lookup a special color from the L&F.
+     * In case it is absent, it uses the standard internal frame forground.
+     * 
+     * @param selected   true to lookup the active color, false for the inactive
+     * @return the color of the foreground text
+     */
+    protected Color getTextForeground(boolean selected) {
+        Color c =
+            UIManager.getColor(
+                selected
+                    ? "SimpleInternalFrame.activeTitleForeground"
+                    : "SimpleInternalFrame.inactiveTitleForeground");
+        if (c != null) {
+            return c;
+        }
+        return UIManager.getColor(
+            selected 
+                ? "InternalFrame.activeTitleForeground" 
+                : "Label.foreground");
+
+    }
+
+    /**
+     * Determines and answers the header's background color.
+     * Tries to lookup a special color from the L&F.
+     * In case it is absent, it uses the standard internal frame background.
+     * 
+     * @return the color of the header's background
+     */
+    protected Color getHeaderBackground() {
+        
+        Color c =
+            UIManager.getColor("SimpleInternalFrame.activeTitleBackground");
+        if (c != null)
+            return c;
+        if (LookUtils.IS_LAF_WINDOWS_XP_ENABLED)
+            c = UIManager.getColor("InternalFrame.activeTitleGradient");
+        return c != null
+            ? c
+            : UIManager.getColor("InternalFrame.activeTitleBackground");
+    }
+
+
+    // Helper Classes *******************************************************
+
+    // A custom border for the raised header pseudo 3D effect.
+    private static class RaisedHeaderBorder extends AbstractBorder {
+
+        private static final Insets INSETS = new Insets(1, 1, 1, 0);
+
+        public Insets getBorderInsets(Component c) { return INSETS; }
+
+        public void paintBorder(Component c, Graphics g,
+            int x, int y, int w, int h) {
+                
+            g.translate(x, y);
+            g.setColor(UIManager.getColor("controlLtHighlight"));
+            g.fillRect(0, 0,   w, 1);
+            g.fillRect(0, 1,   1, h-1);
+            g.setColor(UIManager.getColor("controlShadow"));
+            g.fillRect(0, h-1, w, 1);
+            g.translate(-x, -y);
+        }
+    }
+
+    // A custom border that has a shadow on the right and lower sides.
+    private static class ShadowBorder extends AbstractBorder {
+
+        private static final Insets INSETS = new Insets(1, 1, 3, 3);
+
+        public Insets getBorderInsets(Component c) { return INSETS; }
+
+        public void paintBorder(Component c, Graphics g,
+            int x, int y, int w, int h) {
+                
+            Color shadow        = UIManager.getColor("controlShadow");
+            if (shadow == null) {
+                shadow = Color.GRAY;
+            }
+            Color lightShadow   = new Color(shadow.getRed(), 
+                                            shadow.getGreen(), 
+                                            shadow.getBlue(), 
+                                            170);
+            Color lighterShadow = new Color(shadow.getRed(),
+                                            shadow.getGreen(),
+                                            shadow.getBlue(),
+                                            70);
+            g.translate(x, y);
+            
+            g.setColor(shadow);
+            g.fillRect(0, 0, w - 3, 1);
+            g.fillRect(0, 0, 1, h - 3);
+            g.fillRect(w - 3, 1, 1, h - 3);
+            g.fillRect(1, h - 3, w - 3, 1);
+            // Shadow line 1
+            g.setColor(lightShadow);
+            g.fillRect(w - 3, 0, 1, 1);
+            g.fillRect(0, h - 3, 1, 1);
+            g.fillRect(w - 2, 1, 1, h - 3);
+            g.fillRect(1, h - 2, w - 3, 1);
+            // Shadow line2
+            g.setColor(lighterShadow);
+            g.fillRect(w - 2, 0, 1, 1);
+            g.fillRect(0, h - 2, 1, 1);
+            g.fillRect(w-2, h-2, 1, 1);
+            g.fillRect(w - 1, 1, 1, h - 2);
+            g.fillRect(1, h - 1, w - 2, 1);
+            g.translate(-x, -y);
+        }
+    }
+
+    // A panel with a horizontal gradient background.
+    private static class GradientPanel extends JPanel {
+        
+        private GradientPanel(LayoutManager lm, Color background) {
+            super(lm);
+            setBackground(background);
+        }
+
+        public void paintComponent(Graphics g) {
+            super.paintComponent(g);
+            if (!isOpaque()) {
+                return;
+            }
+            Color control = UIManager.getColor("control");
+            int width  = getWidth();
+            int height = getHeight();
+
+            Graphics2D g2 = (Graphics2D) g;
+            Paint storedPaint = g2.getPaint();
+            g2.setPaint(
+                new GradientPaint(0, 0, getBackground(), width, 0, control));
+            g2.fillRect(0, 0, width, height);
+            g2.setPaint(storedPaint);
+        }
+    }
+
 }
\ No newline at end of file
diff --git a/src/java/gnu/dtools/ritopt/ArrayOption.java b/src/java/gnu/dtools/ritopt/ArrayOption.java
index cdb5d65..629e479 100644
--- a/src/java/gnu/dtools/ritopt/ArrayOption.java
+++ b/src/java/gnu/dtools/ritopt/ArrayOption.java
@@ -1,82 +1,82 @@
-package gnu.dtools.ritopt;
-
-/**
- * ArrayOption.java
- *
- * Version:
- *    $Id: ArrayOption.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-/**
- * The principal base class used to register option variables that
- * represent arrays or Collections. Array options are useful for
- * options which represent path lists or file specifications.<p>
- *
- * The preferred derived sub-class implementation is to provide a constructor
- * with a single array parameter to allow for simple registration. For
- * example, an ArrayOption derived class for int arrays should
- * implement the following constructor and accessor.
- *
- * <pre>
- *   MyIntArrayOption( int array[] );
- *   int[] getValue();
- * </pre>
- *
- * Although this has no affect on option processing, following this
- * philosophy for the public interfaces make it easier for the programmer to
- * use your source code.
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Ryan Eads
- */
-
-public abstract class ArrayOption extends Option implements OptionArrayable {
-
-    /**
-     * Builds and initializes ArrayOption class members, and invokes
-     * the Option constructor.
-     */
-
-    public ArrayOption() {
-	super();
-    }
-
-    /**
-     * Get an ArrayOption in array form. If the option value is an array of
-     * primitive values, references to wrapper objects are returned.
-     *
-     * @return An array of objects representing the option's value.
-     */
-
-    public abstract Object[] getObjectArray();
-
-    /**
-     * Get a list of objects representing the elements of this array option.
-     *
-     * @return A list of objects representing the option's value.
-     */
-
-    public java.util.List getObjectList() {
-	return java.util.Arrays.asList( getObjectArray() );
-    }
-} /** ArrayOption */
-
+package gnu.dtools.ritopt;
+
+/**
+ * ArrayOption.java
+ *
+ * Version:
+ *    $Id: ArrayOption.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+/**
+ * The principal base class used to register option variables that
+ * represent arrays or Collections. Array options are useful for
+ * options which represent path lists or file specifications.<p>
+ *
+ * The preferred derived sub-class implementation is to provide a constructor
+ * with a single array parameter to allow for simple registration. For
+ * example, an ArrayOption derived class for int arrays should
+ * implement the following constructor and accessor.
+ *
+ * <pre>
+ *   MyIntArrayOption( int array[] );
+ *   int[] getValue();
+ * </pre>
+ *
+ * Although this has no affect on option processing, following this
+ * philosophy for the public interfaces make it easier for the programmer to
+ * use your source code.
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Ryan Eads
+ */
+
+public abstract class ArrayOption extends Option implements OptionArrayable {
+
+    /**
+     * Builds and initializes ArrayOption class members, and invokes
+     * the Option constructor.
+     */
+
+    public ArrayOption() {
+	super();
+    }
+
+    /**
+     * Get an ArrayOption in array form. If the option value is an array of
+     * primitive values, references to wrapper objects are returned.
+     *
+     * @return An array of objects representing the option's value.
+     */
+
+    public abstract Object[] getObjectArray();
+
+    /**
+     * Get a list of objects representing the elements of this array option.
+     *
+     * @return A list of objects representing the option's value.
+     */
+
+    public java.util.List getObjectList() {
+	return java.util.Arrays.asList( getObjectArray() );
+    }
+} /** ArrayOption */
+
diff --git a/src/java/gnu/dtools/ritopt/BooleanOption.java b/src/java/gnu/dtools/ritopt/BooleanOption.java
index 2f2f194..dddc5ea 100644
--- a/src/java/gnu/dtools/ritopt/BooleanOption.java
+++ b/src/java/gnu/dtools/ritopt/BooleanOption.java
@@ -4,7 +4,7 @@ package gnu.dtools.ritopt;
  * BooleanOption.java
  *
  * Version:
- *     $Id: BooleanOption.java,v 1.2 2005/11/08 04:53:27 mortenalver Exp $
+ *     $Id: BooleanOption.java 1318 2005-11-08 04:53:29Z mortenalver $
  */
 
 /**
diff --git a/src/java/gnu/dtools/ritopt/ByteOption.java b/src/java/gnu/dtools/ritopt/ByteOption.java
index c6c000a..9c0271d 100644
--- a/src/java/gnu/dtools/ritopt/ByteOption.java
+++ b/src/java/gnu/dtools/ritopt/ByteOption.java
@@ -4,7 +4,7 @@ package gnu.dtools.ritopt;
  * ByteOption.java
  *
  * Version:
- *     $Id: ByteOption.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
+ *     $Id: ByteOption.java 322 2004-05-20 20:45:47Z mortenalver $
  */
 
 /**
diff --git a/src/java/gnu/dtools/ritopt/CharOption.java b/src/java/gnu/dtools/ritopt/CharOption.java
index 94c25ae..dcdaee4 100644
--- a/src/java/gnu/dtools/ritopt/CharOption.java
+++ b/src/java/gnu/dtools/ritopt/CharOption.java
@@ -4,7 +4,7 @@ package gnu.dtools.ritopt;
  * CharOption.java
  *
  * Version:
- *    $Id: CharOption.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
+ *    $Id: CharOption.java 322 2004-05-20 20:45:47Z mortenalver $
  */
 
 /**
diff --git a/src/java/gnu/dtools/ritopt/DoubleOption.java b/src/java/gnu/dtools/ritopt/DoubleOption.java
index 5ecb10d..96aef0b 100644
--- a/src/java/gnu/dtools/ritopt/DoubleOption.java
+++ b/src/java/gnu/dtools/ritopt/DoubleOption.java
@@ -4,7 +4,7 @@ package gnu.dtools.ritopt;
  * DoubleOption.java
  *
  * Version:
- *    $Id: DoubleOption.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
+ *    $Id: DoubleOption.java 322 2004-05-20 20:45:47Z mortenalver $
  */
 
 /**
diff --git a/src/java/gnu/dtools/ritopt/FloatOption.java b/src/java/gnu/dtools/ritopt/FloatOption.java
index fe81521..be6fcf9 100644
--- a/src/java/gnu/dtools/ritopt/FloatOption.java
+++ b/src/java/gnu/dtools/ritopt/FloatOption.java
@@ -4,7 +4,7 @@ package gnu.dtools.ritopt;
  * FloatOption.java
  *
  * Version:
- *    $Id: FloatOption.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
+ *    $Id: FloatOption.java 322 2004-05-20 20:45:47Z mortenalver $
  */
 
 /**
diff --git a/src/java/gnu/dtools/ritopt/IntOption.java b/src/java/gnu/dtools/ritopt/IntOption.java
index 4879853..931150a 100644
--- a/src/java/gnu/dtools/ritopt/IntOption.java
+++ b/src/java/gnu/dtools/ritopt/IntOption.java
@@ -4,7 +4,7 @@ package gnu.dtools.ritopt;
  * IntOption.java
  *
  * Version:
- *    $Id: IntOption.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
+ *    $Id: IntOption.java 322 2004-05-20 20:45:47Z mortenalver $
  */
 
 /**
diff --git a/src/java/gnu/dtools/ritopt/LongOption.java b/src/java/gnu/dtools/ritopt/LongOption.java
index 87e3119..945c2ba 100644
--- a/src/java/gnu/dtools/ritopt/LongOption.java
+++ b/src/java/gnu/dtools/ritopt/LongOption.java
@@ -4,7 +4,7 @@ package gnu.dtools.ritopt;
  * LongOption.java
  *
  * Version:
- *    $Id: LongOption.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
+ *    $Id: LongOption.java 322 2004-05-20 20:45:47Z mortenalver $
  */
 
 /**
diff --git a/src/java/gnu/dtools/ritopt/NotifyOption.java b/src/java/gnu/dtools/ritopt/NotifyOption.java
index 37c12bc..6a83fbb 100644
--- a/src/java/gnu/dtools/ritopt/NotifyOption.java
+++ b/src/java/gnu/dtools/ritopt/NotifyOption.java
@@ -1,318 +1,318 @@
-package gnu.dtools.ritopt;
-
-/**
- * The NotifyOption class is used to register options that when invoked
- * notify a listener. This provides an interface for event-driven
- * options processing. In order for a class to be notified, it must implement
- * the OptionListener interface.<p>
- *
- * When the option is invoked, the corresponding short, long, and option
- * values are put in an OptionEvent object, and passed to all registered
- * listeners.<p>
- *
- * A class must implement the OptionListener interface in order to receive
- * notification of option events.<p>
- *
- * For a more detailed explanation please refer to the tutorial. The following
- * is a simple example of how a NotifyOption is used.
- * <pre>
- *
- * import gnu.dtools.ritopt.*;
- *
- * public class TellMe implements OptionListener {
- *
- *    public static void main( String args[] ) {
- *       TellMe m = new TellMe();
- *       Options processor = new Options();
- *       NotifyOption say = new NotifyOption( m );
- *       processor.register( "say", 's', say );
- *       processor.process();
- *    }
- *
- *    public void optionInvoked( OptionEvent e ) {
- *       if ( e.getCommand().equals( "say" ) ) {
- *           String say = e.getValue();
- *           if ( Utility.trim( say ).length() == 0 ) say = "nothing";
- *           System.err.println( "You told me to say " + nothing + "." );
- *       }
- *    }
- * }
- *
- * cookies at crazymonster$ javac TellMe.java
- * cookies at crazymonster$ java TellMe
- * cookies at crazymonster$ java TellMe
- * cookies at crazymonster$ java TellMe --say -s
- * You told me to say nothing.
- * You told me to say nothing.
- * cookies at crazymonster$ java TellMe --say hello
- * You told me to say hello.
- * cookies at crazymonster$ java TellMe --say "I'm sorry"
- * You told me to say I'm sorry.
- * cookies at crazymonster$ java TellMe --say="not until tomorrow" -s "I'm crazy"
- * You told me to say not until tomorrow.
- * You told me to say I'm crazy.
- * </pre>
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class NotifyOption extends Option implements OptionNotifier {
-
-    /**
-     * The current value of the notify option.
-     */
-
-    private String value = "";
-
-    /**
-     * The default command if a command is not specified.
-     */
-
-    private String command = "Default";
-
-    /**
-     * A list of listeners to notify whenever a modification event occurs.
-     */
-
-    private java.util.List listeners;
-
-    /**
-     * Construct a NotifyOption with an empty list of listeners. Set the
-     * initial value to null.
-     */
-
-    public NotifyOption() {
-	this( "" );
-    }
-
-    /**
-     * Construct a NotifyOption and register the passed listener.
-     *
-     * @param listener    The listener to register.
-     */
-
-    public NotifyOption( OptionListener listener ) {
-	this( listener, "Default" );
-    }
-
-    /**
-     * Construct a NotifyOption and register the passed listener. Initialize
-     * the command to the value passed.
-     *
-     * @param listener    The listener to register.
-     * @param command     The value of the command.
-     */
-
-    public NotifyOption( OptionListener listener, String command ) {
-	this( listener, command, "" );
-    }
-
-    /**
-     * Construct a NotifyOption and register the passed listener. Initialize
-     * the command to the value passed.
-     *
-     * @param listener    The listener to register.
-     * @param command     The value of the command.
-     * @param value       The default value of the option.
-     */
-
-    public NotifyOption( OptionListener listener, String command,
-			 String value ) {
-	this( value );
-	this.command = command;
-	listeners.add( listener );
-    }
-
-    /**
-     * Construct a NotifyOption by copying the NotifyOption passed.
-     *
-     * @param op   The notify option to copy.
-     */
-
-    public NotifyOption( NotifyOption op ) {
-	super( op );
-	op.value = op.getValue();
-	listeners = new java.util.ArrayList( op.listeners );
-    }
-
-    /**
-     * Construct a NotifyOption, and initialize its default value to the
-     * value passed.
-     *
-     * @param value   The default value of this option.
-     */
-
-    public NotifyOption( String value ) {
-	this( value, null );
-    }
-
-    /**
-     * Constructs a NotifyOption option initialized with the value and
-     * long option passed.
-     *
-     * @param value      The initial value of this notify option.
-     * @param longOption The long option associated with this notify option.
-     */
-
-    public NotifyOption( String value, String longOption ) {
-	this( value, longOption, '\0' );
-    }
-
-    /**
-     * Constructs a character option initialized with the value and
-     * short option passed.
-     *
-     * @param value       The initial value of this NotifyOption option.
-     * @param shortOption The short option associated with this option.
-     */
-
-    public NotifyOption( String value, char shortOption ) {
-	this( value, null, shortOption );
-    }
-
-    /**
-     * Constructs an NotifyOption option initialized with the value, short
-     * and long option passed.
-     *
-     * @param shortOption The short option associated with this option.
-     * @param longOption  The long option associated with this option.
-     * @param value       The initial value of this NotifyOption option.
-     */
-
-    public NotifyOption( String value, String longOption, char shortOption ) {
-	super( longOption, shortOption );
-	this.value = value;
-	listeners = new java.util.ArrayList();
-    }
-
-    /**
-     * Return the value as an object.
-     *
-     * @return This value as an option.
-     */
-
-    public Object getObject() {
-	return value;
-    }
-
-    /**
-     * Modify this option based on a string representation.
-     *
-     * @param     value String representation of the object.
-     * @exception OptionModificationException Thrown if an error occurs
-     *                                  during modification of an option.
-     */
-
-    public void modify( String value ) throws OptionModificationException {
-	this.value = value;
-	java.util.Iterator iterator = listeners.iterator();
-	OptionEvent event = new OptionEvent( command, value, this );
-	while ( iterator.hasNext() ) {
-	    OptionListener listener = (OptionListener)iterator.next();
-	    listener.optionInvoked( event );
-	}
-    }
-
-    /**
-     * Modify this option based on a string representation.
-     *
-     * @param     value String representation of the object.
-     * @exception OptionModificationException Thrown if an error occurs
-     *                                  during modification of an option.
-     */
-
-    public void setValue( String value ) throws OptionModificationException {
-	modify( value );
-    }
-
-    /**
-     * Return this option as a string.
-     *
-     * @return This option as a string.
-     */
-
-    public String getValue() {
-	return value;
-    }
-
-    /**
-     * Return this option as a string.
-     *
-     * @return This option as a string.
-     */
-
-    public String getStringValue() {
-	return value;
-    }
-
-    /**
-     * Returns the type name of this option. For an NotifyOption, "NOTIFY"
-     * is returned.
-     *
-     * @return The type name of this option.
-     */
-
-    public String getTypeName() {
-	return "NOTIFY";
-    }
-
-    /**
-     * Adds an OptionListener to the notification list.
-     *
-     * @param listener The OptionListener to add.
-     */
-
-    public void addOptionListener( OptionListener listener ) {
-	listeners.add( listener );
-    }
-
-    /**
-     * Removes an OptionListener from the notification list.
-     *
-     * @param listener The OptionListener to remove.
-     */
-
-    public void removeOptionListener( OptionListener listener ) {
-	listeners.remove( listener );
-    }
-
-    /**
-     * Sets the command sent when an option is invoked.
-     *
-     * @param command  The command to send.
-     */
-
-    public void setOptionCommand( String command ) {
-	this.command = command;
-    }
-
-    /**
-     * Returns a string representation of this object.
-     *
-     * @return A string representation of this object.
-     */
-
-    public String toString() {
-	return value;
-    }
-} /** NotifyOption */
+package gnu.dtools.ritopt;
+
+/**
+ * The NotifyOption class is used to register options that when invoked
+ * notify a listener. This provides an interface for event-driven
+ * options processing. In order for a class to be notified, it must implement
+ * the OptionListener interface.<p>
+ *
+ * When the option is invoked, the corresponding short, long, and option
+ * values are put in an OptionEvent object, and passed to all registered
+ * listeners.<p>
+ *
+ * A class must implement the OptionListener interface in order to receive
+ * notification of option events.<p>
+ *
+ * For a more detailed explanation please refer to the tutorial. The following
+ * is a simple example of how a NotifyOption is used.
+ * <pre>
+ *
+ * import gnu.dtools.ritopt.*;
+ *
+ * public class TellMe implements OptionListener {
+ *
+ *    public static void main( String args[] ) {
+ *       TellMe m = new TellMe();
+ *       Options processor = new Options();
+ *       NotifyOption say = new NotifyOption( m );
+ *       processor.register( "say", 's', say );
+ *       processor.process();
+ *    }
+ *
+ *    public void optionInvoked( OptionEvent e ) {
+ *       if ( e.getCommand().equals( "say" ) ) {
+ *           String say = e.getValue();
+ *           if ( Utility.trim( say ).length() == 0 ) say = "nothing";
+ *           System.err.println( "You told me to say " + nothing + "." );
+ *       }
+ *    }
+ * }
+ *
+ * cookies at crazymonster$ javac TellMe.java
+ * cookies at crazymonster$ java TellMe
+ * cookies at crazymonster$ java TellMe
+ * cookies at crazymonster$ java TellMe --say -s
+ * You told me to say nothing.
+ * You told me to say nothing.
+ * cookies at crazymonster$ java TellMe --say hello
+ * You told me to say hello.
+ * cookies at crazymonster$ java TellMe --say "I'm sorry"
+ * You told me to say I'm sorry.
+ * cookies at crazymonster$ java TellMe --say="not until tomorrow" -s "I'm crazy"
+ * You told me to say not until tomorrow.
+ * You told me to say I'm crazy.
+ * </pre>
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class NotifyOption extends Option implements OptionNotifier {
+
+    /**
+     * The current value of the notify option.
+     */
+
+    private String value = "";
+
+    /**
+     * The default command if a command is not specified.
+     */
+
+    private String command = "Default";
+
+    /**
+     * A list of listeners to notify whenever a modification event occurs.
+     */
+
+    private java.util.List listeners;
+
+    /**
+     * Construct a NotifyOption with an empty list of listeners. Set the
+     * initial value to null.
+     */
+
+    public NotifyOption() {
+	this( "" );
+    }
+
+    /**
+     * Construct a NotifyOption and register the passed listener.
+     *
+     * @param listener    The listener to register.
+     */
+
+    public NotifyOption( OptionListener listener ) {
+	this( listener, "Default" );
+    }
+
+    /**
+     * Construct a NotifyOption and register the passed listener. Initialize
+     * the command to the value passed.
+     *
+     * @param listener    The listener to register.
+     * @param command     The value of the command.
+     */
+
+    public NotifyOption( OptionListener listener, String command ) {
+	this( listener, command, "" );
+    }
+
+    /**
+     * Construct a NotifyOption and register the passed listener. Initialize
+     * the command to the value passed.
+     *
+     * @param listener    The listener to register.
+     * @param command     The value of the command.
+     * @param value       The default value of the option.
+     */
+
+    public NotifyOption( OptionListener listener, String command,
+			 String value ) {
+	this( value );
+	this.command = command;
+	listeners.add( listener );
+    }
+
+    /**
+     * Construct a NotifyOption by copying the NotifyOption passed.
+     *
+     * @param op   The notify option to copy.
+     */
+
+    public NotifyOption( NotifyOption op ) {
+	super( op );
+	op.value = op.getValue();
+	listeners = new java.util.ArrayList( op.listeners );
+    }
+
+    /**
+     * Construct a NotifyOption, and initialize its default value to the
+     * value passed.
+     *
+     * @param value   The default value of this option.
+     */
+
+    public NotifyOption( String value ) {
+	this( value, null );
+    }
+
+    /**
+     * Constructs a NotifyOption option initialized with the value and
+     * long option passed.
+     *
+     * @param value      The initial value of this notify option.
+     * @param longOption The long option associated with this notify option.
+     */
+
+    public NotifyOption( String value, String longOption ) {
+	this( value, longOption, '\0' );
+    }
+
+    /**
+     * Constructs a character option initialized with the value and
+     * short option passed.
+     *
+     * @param value       The initial value of this NotifyOption option.
+     * @param shortOption The short option associated with this option.
+     */
+
+    public NotifyOption( String value, char shortOption ) {
+	this( value, null, shortOption );
+    }
+
+    /**
+     * Constructs an NotifyOption option initialized with the value, short
+     * and long option passed.
+     *
+     * @param shortOption The short option associated with this option.
+     * @param longOption  The long option associated with this option.
+     * @param value       The initial value of this NotifyOption option.
+     */
+
+    public NotifyOption( String value, String longOption, char shortOption ) {
+	super( longOption, shortOption );
+	this.value = value;
+	listeners = new java.util.ArrayList();
+    }
+
+    /**
+     * Return the value as an object.
+     *
+     * @return This value as an option.
+     */
+
+    public Object getObject() {
+	return value;
+    }
+
+    /**
+     * Modify this option based on a string representation.
+     *
+     * @param     value String representation of the object.
+     * @exception OptionModificationException Thrown if an error occurs
+     *                                  during modification of an option.
+     */
+
+    public void modify( String value ) throws OptionModificationException {
+	this.value = value;
+	java.util.Iterator iterator = listeners.iterator();
+	OptionEvent event = new OptionEvent( command, value, this );
+	while ( iterator.hasNext() ) {
+	    OptionListener listener = (OptionListener)iterator.next();
+	    listener.optionInvoked( event );
+	}
+    }
+
+    /**
+     * Modify this option based on a string representation.
+     *
+     * @param     value String representation of the object.
+     * @exception OptionModificationException Thrown if an error occurs
+     *                                  during modification of an option.
+     */
+
+    public void setValue( String value ) throws OptionModificationException {
+	modify( value );
+    }
+
+    /**
+     * Return this option as a string.
+     *
+     * @return This option as a string.
+     */
+
+    public String getValue() {
+	return value;
+    }
+
+    /**
+     * Return this option as a string.
+     *
+     * @return This option as a string.
+     */
+
+    public String getStringValue() {
+	return value;
+    }
+
+    /**
+     * Returns the type name of this option. For an NotifyOption, "NOTIFY"
+     * is returned.
+     *
+     * @return The type name of this option.
+     */
+
+    public String getTypeName() {
+	return "NOTIFY";
+    }
+
+    /**
+     * Adds an OptionListener to the notification list.
+     *
+     * @param listener The OptionListener to add.
+     */
+
+    public void addOptionListener( OptionListener listener ) {
+	listeners.add( listener );
+    }
+
+    /**
+     * Removes an OptionListener from the notification list.
+     *
+     * @param listener The OptionListener to remove.
+     */
+
+    public void removeOptionListener( OptionListener listener ) {
+	listeners.remove( listener );
+    }
+
+    /**
+     * Sets the command sent when an option is invoked.
+     *
+     * @param command  The command to send.
+     */
+
+    public void setOptionCommand( String command ) {
+	this.command = command;
+    }
+
+    /**
+     * Returns a string representation of this object.
+     *
+     * @return A string representation of this object.
+     */
+
+    public String toString() {
+	return value;
+    }
+} /** NotifyOption */
diff --git a/src/java/gnu/dtools/ritopt/Option.java b/src/java/gnu/dtools/ritopt/Option.java
index 9d9c43a..0ca2a98 100644
--- a/src/java/gnu/dtools/ritopt/Option.java
+++ b/src/java/gnu/dtools/ritopt/Option.java
@@ -1,913 +1,913 @@
-package gnu.dtools.ritopt;
-
-/**
- * Option.java
- *
- * Version
- *    $Id: Option.java,v 1.2 2005/08/14 20:42:46 mortenalver Exp $
- */
-
-import java.util.*;
-
-/**
- * This is the principal base class for all Option classes. It contains
- * constructors for short and long option initialization, utility members
- * for help reporting and file writing, and deprecation facilities.<p>
- *
- * Options that provide array support should inherit from the ArrayOption
- * class, and follow the guidelines defined both in the Option and
- * ArrayOption class descriptions.<p>
- *
- * Non-abstract subclasses should implement the modify method. When an option
- * is invoked, the value of the option is passed to the modify method.<p>
- *
- * Subclasses should provide several constructors so that registration is
- * simple and uniform. Recommended constructors include a default constructor,
- * an interface for initialization of short and long options,
- * and one that allows both short and long option fields to be
- * initialized. If the subclass implementation provides constructors which
- * initialize its members then the member parameters must be before
- * the short and long option initialization parameters.<p>
- *
- * Event driven option processing is provided in the NotifyOption class. In
- * order to use a NotifyOption, the recipient object must implement the
- * OptionListener class. Although it is not required, subclass implementations
- * of NotifyOption should implement the OptionNotifier interface.<p>
- *
- * By default, the Option class considers the width of an output device
- * to be eighty characters. It initializes the width of the help fields
- * based on this figure. If a field exceeds its field width, it is
- * truncated. The width constraints can be changed by invoking the appropriate
- * static mutators.<p>
- *
- * Similar to the help reporting facilities, the same constraints are placed
- * on the listing of options provided by the built-in menu interface. These
- * constraints can be modified by executing the appropriate static mutators.
- * <p>
- *
- * The Option class provides a facility for writing options files.
- * For option file writing, there are only two field width constraints; the
- * assignment and the comment.
- * <pre>
- * Assignment:                           Comment:
- * --longOrShortOption=optionValue       ;description goes here [d]
- * </pre>
- * As shown above, an assignment includes the long or short option text,
- * an equal sign, and the option's value. The comment includes the
- * description, and "[d]" if the option is deprecated.<p>
- *
- * If the assignment exceeds its field width, the comment is placed before
- * the assignment on a separate line. The comment is truncated if it
- * exceeds eighty characters when it is placed before the assignment.
- * However, if the assignment does not exceeds its field width and the comment
- * does, the comment is truncated, and continued on the next line at the
- * columnar position defined by the assignment's field width. Field widths
- * may be modified by invoking the appropriate static mutator.<p>
- *
- * This class also provides a facility for deprecating options. An option is
- * deprecated to discourage its use without removing the functionality it
- * provides. An option is deprecated by invoking the deprecate method.
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public abstract class Option implements OptionModifiable {
-
-    /**
-     * The default width of the option field when the help usage is displayed.
-     */
-
-    public static final int DEFAULT_HELP_OPTION_SIZE = 22;
-
-    /**
-     * The default width of the type name field when the help usage is
-     * display.
-     */
-
-    public static final int DEFAULT_HELP_TYPENAME_SIZE = 10;
-
-    /**
-     * The default width of the description when the help usage is displayed.
-     */
-
-    public static final int DEFAULT_HELP_DESCRIPTION_SIZE = 48;
-
-    /**
-     * The default width of the deprecated field when the help usage is
-     * displayed.
-     */
-
-    public static final int DEFAULT_HELP_DEPRECATED_SIZE = 3;
-
-    /**
-     * The default width of the option field when the menu usage is displayed.
-     */
-
-    public static final int DEFAULT_MENU_OPTION_SIZE = 15;
-
-    /**
-     * The default width of the type name field when the menu usage is
-     * displayed.
-     */
-
-    public static final int DEFAULT_MENU_TYPENAME_SIZE = 10;
-
-    /**
-     * The default width of the description field when the menu usage is
-     * displayed.
-     */
-
-    public static final int DEFAULT_MENU_DESCRIPTION_SIZE = 48;
-
-    /**
-     * The default width of the deprecated field when the menu usage is
-     * displayed.
-     */
-
-    public static final int DEFAULT_MENU_DEPRECATED_SIZE = 3;
-
-    /**
-     * The default width of the option assignment in an option file.
-     */
-
-    public static final int DEFAULT_FILE_COMPLETE_OPTION_SIZE = 60;
-
-    /**
-     * The default width of the comment in an option file. If the option
-     * and the comment exceeds the width of the device, the comment is
-     * truncated to the next line at the same columnar position of the
-     * previous comment line. If the option assignment line is longer than
-     * the width, the comment line is put before the option assignment it
-     * refers.
-     */
-
-    public static final int DEFAULT_FILE_COMMENT_SIZE = 16;
-
-    /**
-     * The String holding the value of the long option. If there is no
-     * long option, this value is set to null.
-     */
-
-    private String longOption;
-
-    /**
-     * The character holding the value of the short option. If there is no
-     * short option,t his value is set to '\0'.
-     */
-
-    private char shortOption;
-
-    /**
-     * The String holding the description of this option.
-     */
-
-    private String description;
-
-    /**
-     * A flag identifying whether this option is deprecated.
-     */
-
-    private boolean deprecated;
-
-    /**
-     * The field width for the option specification that is reporter for
-     * help.
-     */
-
-    private static int helpOptionSpecificationSize = DEFAULT_HELP_OPTION_SIZE;
-
-    /**
-     * The field width for the type name that is reported for help.
-     */
-
-    private static int helpTypenameSize = DEFAULT_HELP_TYPENAME_SIZE;
-
-    /**
-     * The field width for the description that is reported during help.
-     */
-
-    private static int helpDescriptionSize = DEFAULT_HELP_DESCRIPTION_SIZE;
-
-    /**
-     * The field width for the deprecated flag that is reported during
-     * help.
-     */
-
-    private static int helpDeprecatedSize = DEFAULT_HELP_DEPRECATED_SIZE;
-
-    /**
-     * The field width for the option specification that is reported when
-     * the options are listed in the built-in menu.
-     */
-
-    private static int menuOptionSpecificationSize = DEFAULT_MENU_OPTION_SIZE;
-
-    /**
-     * The field width for the type name that is reported when the options
-     * are listed in the built-in menu.
-     */
-
-    private static int menuTypenameSize = DEFAULT_MENU_TYPENAME_SIZE;
-
-    /**
-     * The field width for the description that is reported when the options
-     * are listed in the built-in menu.
-     */
-
-    private static int menuDescriptionSize = DEFAULT_MENU_DESCRIPTION_SIZE;
-
-    /**
-     * The field width for the deprecated flag that is reported when the
-     * options are listed in the build-in menu.
-     */
-
-    private static int menuDeprecatedSize = DEFAULT_MENU_DEPRECATED_SIZE;
-
-    /**
-     * The field width for the assignment portion of an option that is 
-     * written to a file.
-     */
-
-    private static int fileCompleteOptionSize =
-                                            DEFAULT_FILE_COMPLETE_OPTION_SIZE;
-
-    /**
-     * The field width for the comment portion of an option that is written
-     * to a file.
-     */
-
-    private static int fileCommentSize = DEFAULT_FILE_COMMENT_SIZE;
-
-    /**
-     * A field indicating whether an option has been invoked.
-     */
-
-    protected boolean invoked;
-
-    /**
-     * Returns this option's value as an Object.
-     *
-     * @return An object representation of this option.
-     */
-
-    public abstract Object getObject();
-
-    /**
-     * Returns the option's value as a String. This String should conform
-     * to the formatting requirements prescribed by a modify method.
-     *
-     * @return The option's value as a String conforming to formatting
-     *         requirements.
-     */
-
-    public abstract String getStringValue();
-
-    /**
-     * Constructs an option with no initial short or long option value,
-     * and is by default uninvoked and undeprecated, and has a description
-     * initialized to the empty string.
-     */
-
-    public Option() {
-	super();
-	description = "";
-    }
-
-    /**
-     * Constructs an option by copying the option passed.
-     *
-     * @param option  The option to copy for this object's construction.
-     */
-
-    public Option( Option option ) {
-	longOption = option.getLongOption();
-	shortOption = option.getShortOption();
-	description = option.getDescription();
-	deprecated = option.isDeprecated();
-    }
-
-    /**
-     * Constructs an option by initializing its long option with the
-     * value passed. The short option is equal to the null character,
-     * and the description is equal to the empty string.
-     *
-     * @param longOption The value of the long option
-     */
-
-    public Option( String longOption ) {
-	this.longOption = longOption;
-	this.shortOption = '\0';
-	description = "";
-    }
-
-    /**
-     * Constructs an option by initializing its short option with the
-     * value passed. The long option is equal to null, and the description
-     * is equal to the empty string.
-     *
-     * @param shortOption The value of the short option.
-     */
-
-    public Option( char shortOption ) {
-	this.shortOption = shortOption;
-	this.longOption = null;
-	description = "";
-    }
-
-    /**
-     * Constructs an option by initializing its short and long options
-     * with the values passed. The description is set to the empty string.
-     *
-     * @param longOption The value of the long option.
-     * @param shortOption The value of the short option.
-     */
-
-    public Option( String longOption, char shortOption ) {
-	this.longOption = longOption;
-	this.shortOption = shortOption;
-	description = "";
-    }
-
-    /**
-     * Sets the long option.
-     *
-     * @param longOption The value to set the long option.
-     */
-
-    public void setKey( String longOption ) {
-	this.longOption = longOption;
-    }
-
-    /**
-     * Sets the short option.
-     *
-     * @param shortOption The value to set the short option.
-     */
-
-    public void setKey( char shortOption ) {
-	this.shortOption = shortOption;
-    }
-
-    /**
-     * Sets the short option.
-     *
-     * @param shortOption The value to set the short option.
-     */
-
-    public void setShortOption( char shortOption ) {
-	setKey( shortOption );
-    }
-
-    /**
-     * Sets the long option.
-     *
-     * @param longOption The value to set the long option.
-     */
-
-    public void setLongOption( String longOption ) {
-	setKey( longOption );
-    }
-
-    /**
-     * Sets the description of this option.
-     *
-     * @param description The description of this option.
-     */
-
-    public void setDescription( String description ) {
-	this.description = description;
-    }
-
-    /**
-     * Sets the deprecated flag to the value passed.
-     *
-     * @param deprecated A flag indicating whether the option is deprecated.
-     */
-
-    public void setDeprecated( boolean deprecated ) {
-	this.deprecated = deprecated;
-    }
-
-    /**
-     * Sets the field width for the option specification displayed
-     * in the help report.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setHelpOptionSpecificationSize( int newSize ) {
-	helpOptionSpecificationSize = newSize;
-    }
-
-    /**
-     * Sets the field width for the type name displayed in the help report.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setHelpTypenameSize( int newSize ) {
-	helpTypenameSize = newSize;
-    }
-
-    /**
-     * Sets the field width for the description displayed in the help report.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setHelpDescriptionSize( int newSize ) {
-	helpDescriptionSize = newSize;
-    }
-
-    /**
-     * Sets the field width for the deprecated flag displayed in the
-     * help report.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setHelpDeprecatedSize( int newSize ) {
-	helpDeprecatedSize = newSize;
-    }
-
-    /**
-     * Sets the field width for the option specification displayed
-     * in the menu listing of options.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setMenuOptionSpecificationSize( int newSize ) {
-	menuOptionSpecificationSize = newSize;
-    }
-
-    /**
-     * Sets the field width for the type name displayed in the menu
-     * listing of options.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setMenuTypenameSize( int newSize ) {
-	menuTypenameSize = newSize;
-    }
-
-    /**
-     * Sets the field width for the option description displayed
-     * in the menu listing of options.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setMenuDescriptionSize( int newSize ) {
-	menuDescriptionSize = newSize;
-    }
-
-    /**
-     * Sets the field width for the deprecated flag displayed
-     * in the menu listing of options.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setMenuDeprecatedSize( int newSize ) {
-	menuDeprecatedSize = newSize;
-    }
-
-    /**
-     * Sets the assignment field width used when options files are written.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setFileCompleteOptionSize( int newSize ) {
-	fileCompleteOptionSize = newSize;
-    }
-
-    /**
-     * Sets the assignment field width used when options files are written.
-     *
-     * @param newSize The size to set the field width.
-     */
-
-    public static void setFileCommentSize( int newSize ) {
-	fileCommentSize = newSize;
-    }
-
-    /**
-     * Sets whether this option has been invoked.
-     *
-     * @param A boolean indicating whether this option has been invoked.
-     */
-
-    public void setInvoked( boolean b ) {
-	invoked = b;
-    }
-
-    /**
-     * Deprecates this option.
-     */
-
-    public void deprecate() {
-	setDeprecated( true );
-    }
-
-    /**
-     * Return the name of this option. This method returns the same value as
-     * the getLongOption accessor.
-     *
-     * @return The name of this otpion.
-     */
-
-    public String getName() {
-	return longOption;
-    }
-
-    /**
-     * Return the short option key. There is no short option when this
-     * character is the null character.
-     *
-     * @return The short option key of this option.
-     */
-
-    public char getShortOption() {
-	return shortOption;
-    }
-
-    /**
-     * Return the long option key. There is no long option when this value
-     * is null.
-     *
-     * @return The long option key of this option.
-     */
-
-    public String getLongOption() {
-	return longOption;
-    }
-
-
-    /**
-     * Return a line used for help reporting.
-     *
-     * @return A line used for help reporting.
-     */
-
-    public String getHelp() {
-	return getHelpOptionSpecification() + " " + getHelpTypeName() + " "
-	    + getHelpDescription() + " " + getHelpDeprecated();
-    }
-
-    /**
-     * Return the option specification field used during help reporting.
-     *
-     * @return The option specification field.
-     */
-
-    public String getHelpOptionSpecification() {
-	return Utility.expandString(
-	    ( ( ( shortOption != '\0' ) ? ( "-" + getShortOption() ) : "  " )
-	    + ( ( longOption != null && shortOption != '\0' ) ? ", " : "  " )
-	    + ( ( longOption != null ) ? "--" + getLongOption(): "" ) ),
-			     helpOptionSpecificationSize );
-    }
-
-    /**
-     * Return the type name field used during help reporting.
-     *
-     * @return The type name field.
-     */
-
-    public String getHelpTypeName() {
-	return Utility.expandString( "<" + getTypeName() + ">",
-				     helpTypenameSize );
-    }
-
-    /**
-     * Return the description field used during help reporting.
-     *
-     * @return The description field.
-     */
-
-    public String getHelpDescription() {
-	return Utility.expandString( getDescription(),
-			     helpDescriptionSize );
-    }
-
-    /**
-     * Return the deprecated field used during help reporting.
-     *
-     * @return The deprecated field.
-     */
-
-    public String getHelpDeprecated() {
-	return Utility.expandString( isDeprecated() ? "[d]" : "",
-			     helpDeprecatedSize );
-    }
-
-    /**
-     * Return the header displayed at the top of the help report.
-     *
-     * @return The header displayed at the top of the help report.
-     */
-
-    public static String getHelpHeader() {
-	return Utility.expandString( "Option Name",
-				     helpOptionSpecificationSize ) + " "
-	    + Utility.expandString( "Type", helpTypenameSize ) + " "
-	    + Utility.expandString( "Description", helpDescriptionSize );
-    }
-
-    /**
-     * The description explaining the meaning of this option.
-     *
-     * @return This options description.
-     */
-
-    public String getDescription() {
-	return description;
-    }
-
-    /**
-     * The hash key of this option. This is used by classes that implement
-     * the option registrar class. This method should <b>not</b> be overrided.
-     *
-     * @return The hash key of this option.
-     */
-
-    public String getHashKey() {
-	return Option.getHashKey( longOption, shortOption );
-    }
-
-    /**
-     * The hash key of an option if there is no short option. This method
-     * should <b>not</b> be overrided.
-     *
-     * @param longOption The long option.
-     *
-     * @return The hash key of this option based on the long option.
-     */
-
-    public static String getHashKey( String longOption ) {
-	return "," + ( ( longOption != null ) ? longOption : "" );
-    }
-
-    /**
-     * The hash key of an option if there is no long option. This method
-     * should <b>not</b> be overrided.
-     *
-     * @param shortOption The short option.
-     *
-     * @return The hash key of this option based on the short option.
-     */
-
-    public static String getHashKey( char shortOption ) {
-	return "" + ( shortOption != '\0' ) + ",";
-    }
-
-    /**
-     * The hash key of an option if there both short and long options are
-     * defined.
-     *
-     * @param shortOption The short option.
-     * @param longOption  The long option.
-     *
-     * @return The hash key of this option based on both the short and long
-     *         options.
-     */
-
-    public static String getHashKey( String longOption, char shortOption ) {
-	return ( ( shortOption == '\0' ) ? "" : "" + shortOption ) +
-	    ( ( longOption == null ) ? "," : "," + longOption );
-    }
-
-    /**
-     * Returns whether this option is deprecated.
-     *
-     * @return A boolean indicating whether this option is deprecated.
-     */
-
-    public boolean isDeprecated() {
-	return deprecated;
-    }
-
-    /**
-     * Returns whether this option has been invoked.
-     *
-     * @return A boolean indicating whether this option has been invoked.
-     */
-
-    public boolean isInvoked() {
-	return invoked;
-    }
-
-    /**
-     * Returns (a) line(s) representing this option. This line is usually
-     * later written to an options file.
-     *
-     * @return Line(s) representing this option.
-     */
-
-    public String getOptionFileLine() {
-	boolean descriptionPrinted = false;
-	String retval = "";
-	String optionText = "";
-	String strval = getStringValue();
-	if ( longOption != null ) {
-	    optionText += "--" + longOption;
-	}
-	else if ( shortOption != '\0' ) {
-	    optionText += "-" + shortOption;
-	}
-	if ( optionText.length() > 0
-	     && Utility.trim( strval ).length() >= 0 ) {
-	    optionText += "=" + strval;
-	}
-	if ( optionText.length() <= fileCompleteOptionSize ) {
-	    retval += Utility.expandString( optionText,
-					    fileCompleteOptionSize );
-	}
-	else {
-	    retval += "; " + description + "\n";
-	    retval += optionText;
-	    descriptionPrinted = true;
-	}
-	if ( !descriptionPrinted ) { 
-	    StringBuffer descsplit = new StringBuffer( description );
-	    boolean tmp = false;
-	    while ( descsplit.length() > 0 ) {
-		String st = "";
-		int size = 0;
-		if ( tmp ) {
-		    st += Utility.getSpaces( fileCompleteOptionSize );
-		}
-		size = ( descsplit.length() >= fileCommentSize )
-		    ? fileCommentSize : descsplit.length();
-		st += "; " + descsplit.substring( 0, size );
-		descsplit.delete( 0, size );
-		retval += st + "\n";
-		tmp = true;
-	    }
-	    descriptionPrinted = true;
-	}
-	return retval;
-    }
-
-    /**
-     * Returns the field width for the option specification displayed in the
-     * help report.
-     *
-     * @return The field width.
-     */
-
-    public static int getHelpOptionSpecificationSize() {
-	return helpOptionSpecificationSize;
-    }
-
-    /**
-     * Returns the field width for the type name displayed in the help report.
-     *
-     * @return The field width.
-     */
-
-    public static int getHelpTypenameSize() {
-	return helpTypenameSize;
-    }
-
-    /**
-     * Returns the field width for the description displayed in the help
-     * report.
-     *
-     * @return The field width.
-     */
-
-    public static int getHelpDescriptionSize() {
-	return helpDescriptionSize;
-    }
-
-    /**
-     * Returns the field width for the deprecated flag displayed in the
-     * help report.
-     *
-     * @return The field width.
-     */
-
-    public static int getHelpDeprecatedSize() {
-	return helpDeprecatedSize;
-    }
-
-    /**
-     * Returns the field width for the option specification displayed in the
-     * menu listing of options.
-     *
-     * @return The field width.
-     */
-
-    public static int getMenuOptionSpecificationSize() {
-	return menuOptionSpecificationSize;
-    }
-
-    /**
-     * Returns the field width for the type name displayed in the
-     * menu listing of options.
-     *
-     * @return The field width.
-     */
-
-    public static int getMenuTypenameSize() {
-	return menuTypenameSize;
-    }
-
-    /**
-     * Returns the field width for the description displayed in the
-     * menu listing of options.
-     *
-     * @return The field width.
-     */
-
-    public static int getMenuDescriptionSize() {
-	return menuDescriptionSize;
-    }
-
-    /**
-     * Returns the field width for the deprecated flag displayed in the
-     * menu listing of options.
-     *
-     * @return The field width.
-     */
-
-    public static int getMenuDeprecatedSize() {
-	return menuDeprecatedSize;
-    }
-
-    /**
-     * Returns the field width for assignment portion of a option file line.
-     *
-     * @return The field width.
-     */
-
-    public static int getFileCompleteOptionSize() {
-	return fileCompleteOptionSize;
-    }
-
-    /**
-     * Returns the field width for assignment portion of a option file line.
-     *
-     * @return The field width.
-     */
-
-    public static int getFileCommentSize() {
-	return fileCommentSize;
-    }
-
-    /**
-     * Returns the type name of this option.
-     *
-     * @return The type name of this option.
-     */
-
-    public abstract String getTypeName();
-
-    /**
-     * Prepares the option for modification.
-     */
-
-    public void action() {
-	if ( deprecated ) {
-	    System.err.print( "Warning: " );
-	    if ( longOption != null ) {
-		System.err.print( "--" + longOption );
-	    }
-	    if ( shortOption != '\0' && longOption != null ) {
-		System.err.print( " or " );
-	    }
-	    if ( shortOption != '\0' ) {
-		System.err.println( "-" + shortOption + " is deprecated." );
-	    }
-	}
-    }
-
-} /** Option */
-
-
-
-
-
+package gnu.dtools.ritopt;
+
+/**
+ * Option.java
+ *
+ * Version
+ *    $Id: Option.java 1245 2005-08-14 20:42:49Z mortenalver $
+ */
+
+import java.util.*;
+
+/**
+ * This is the principal base class for all Option classes. It contains
+ * constructors for short and long option initialization, utility members
+ * for help reporting and file writing, and deprecation facilities.<p>
+ *
+ * Options that provide array support should inherit from the ArrayOption
+ * class, and follow the guidelines defined both in the Option and
+ * ArrayOption class descriptions.<p>
+ *
+ * Non-abstract subclasses should implement the modify method. When an option
+ * is invoked, the value of the option is passed to the modify method.<p>
+ *
+ * Subclasses should provide several constructors so that registration is
+ * simple and uniform. Recommended constructors include a default constructor,
+ * an interface for initialization of short and long options,
+ * and one that allows both short and long option fields to be
+ * initialized. If the subclass implementation provides constructors which
+ * initialize its members then the member parameters must be before
+ * the short and long option initialization parameters.<p>
+ *
+ * Event driven option processing is provided in the NotifyOption class. In
+ * order to use a NotifyOption, the recipient object must implement the
+ * OptionListener class. Although it is not required, subclass implementations
+ * of NotifyOption should implement the OptionNotifier interface.<p>
+ *
+ * By default, the Option class considers the width of an output device
+ * to be eighty characters. It initializes the width of the help fields
+ * based on this figure. If a field exceeds its field width, it is
+ * truncated. The width constraints can be changed by invoking the appropriate
+ * static mutators.<p>
+ *
+ * Similar to the help reporting facilities, the same constraints are placed
+ * on the listing of options provided by the built-in menu interface. These
+ * constraints can be modified by executing the appropriate static mutators.
+ * <p>
+ *
+ * The Option class provides a facility for writing options files.
+ * For option file writing, there are only two field width constraints; the
+ * assignment and the comment.
+ * <pre>
+ * Assignment:                           Comment:
+ * --longOrShortOption=optionValue       ;description goes here [d]
+ * </pre>
+ * As shown above, an assignment includes the long or short option text,
+ * an equal sign, and the option's value. The comment includes the
+ * description, and "[d]" if the option is deprecated.<p>
+ *
+ * If the assignment exceeds its field width, the comment is placed before
+ * the assignment on a separate line. The comment is truncated if it
+ * exceeds eighty characters when it is placed before the assignment.
+ * However, if the assignment does not exceeds its field width and the comment
+ * does, the comment is truncated, and continued on the next line at the
+ * columnar position defined by the assignment's field width. Field widths
+ * may be modified by invoking the appropriate static mutator.<p>
+ *
+ * This class also provides a facility for deprecating options. An option is
+ * deprecated to discourage its use without removing the functionality it
+ * provides. An option is deprecated by invoking the deprecate method.
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public abstract class Option implements OptionModifiable {
+
+    /**
+     * The default width of the option field when the help usage is displayed.
+     */
+
+    public static final int DEFAULT_HELP_OPTION_SIZE = 22;
+
+    /**
+     * The default width of the type name field when the help usage is
+     * display.
+     */
+
+    public static final int DEFAULT_HELP_TYPENAME_SIZE = 10;
+
+    /**
+     * The default width of the description when the help usage is displayed.
+     */
+
+    public static final int DEFAULT_HELP_DESCRIPTION_SIZE = 48;
+
+    /**
+     * The default width of the deprecated field when the help usage is
+     * displayed.
+     */
+
+    public static final int DEFAULT_HELP_DEPRECATED_SIZE = 3;
+
+    /**
+     * The default width of the option field when the menu usage is displayed.
+     */
+
+    public static final int DEFAULT_MENU_OPTION_SIZE = 15;
+
+    /**
+     * The default width of the type name field when the menu usage is
+     * displayed.
+     */
+
+    public static final int DEFAULT_MENU_TYPENAME_SIZE = 10;
+
+    /**
+     * The default width of the description field when the menu usage is
+     * displayed.
+     */
+
+    public static final int DEFAULT_MENU_DESCRIPTION_SIZE = 48;
+
+    /**
+     * The default width of the deprecated field when the menu usage is
+     * displayed.
+     */
+
+    public static final int DEFAULT_MENU_DEPRECATED_SIZE = 3;
+
+    /**
+     * The default width of the option assignment in an option file.
+     */
+
+    public static final int DEFAULT_FILE_COMPLETE_OPTION_SIZE = 60;
+
+    /**
+     * The default width of the comment in an option file. If the option
+     * and the comment exceeds the width of the device, the comment is
+     * truncated to the next line at the same columnar position of the
+     * previous comment line. If the option assignment line is longer than
+     * the width, the comment line is put before the option assignment it
+     * refers.
+     */
+
+    public static final int DEFAULT_FILE_COMMENT_SIZE = 16;
+
+    /**
+     * The String holding the value of the long option. If there is no
+     * long option, this value is set to null.
+     */
+
+    private String longOption;
+
+    /**
+     * The character holding the value of the short option. If there is no
+     * short option,t his value is set to '\0'.
+     */
+
+    private char shortOption;
+
+    /**
+     * The String holding the description of this option.
+     */
+
+    private String description;
+
+    /**
+     * A flag identifying whether this option is deprecated.
+     */
+
+    private boolean deprecated;
+
+    /**
+     * The field width for the option specification that is reporter for
+     * help.
+     */
+
+    private static int helpOptionSpecificationSize = DEFAULT_HELP_OPTION_SIZE;
+
+    /**
+     * The field width for the type name that is reported for help.
+     */
+
+    private static int helpTypenameSize = DEFAULT_HELP_TYPENAME_SIZE;
+
+    /**
+     * The field width for the description that is reported during help.
+     */
+
+    private static int helpDescriptionSize = DEFAULT_HELP_DESCRIPTION_SIZE;
+
+    /**
+     * The field width for the deprecated flag that is reported during
+     * help.
+     */
+
+    private static int helpDeprecatedSize = DEFAULT_HELP_DEPRECATED_SIZE;
+
+    /**
+     * The field width for the option specification that is reported when
+     * the options are listed in the built-in menu.
+     */
+
+    private static int menuOptionSpecificationSize = DEFAULT_MENU_OPTION_SIZE;
+
+    /**
+     * The field width for the type name that is reported when the options
+     * are listed in the built-in menu.
+     */
+
+    private static int menuTypenameSize = DEFAULT_MENU_TYPENAME_SIZE;
+
+    /**
+     * The field width for the description that is reported when the options
+     * are listed in the built-in menu.
+     */
+
+    private static int menuDescriptionSize = DEFAULT_MENU_DESCRIPTION_SIZE;
+
+    /**
+     * The field width for the deprecated flag that is reported when the
+     * options are listed in the build-in menu.
+     */
+
+    private static int menuDeprecatedSize = DEFAULT_MENU_DEPRECATED_SIZE;
+
+    /**
+     * The field width for the assignment portion of an option that is 
+     * written to a file.
+     */
+
+    private static int fileCompleteOptionSize =
+                                            DEFAULT_FILE_COMPLETE_OPTION_SIZE;
+
+    /**
+     * The field width for the comment portion of an option that is written
+     * to a file.
+     */
+
+    private static int fileCommentSize = DEFAULT_FILE_COMMENT_SIZE;
+
+    /**
+     * A field indicating whether an option has been invoked.
+     */
+
+    protected boolean invoked;
+
+    /**
+     * Returns this option's value as an Object.
+     *
+     * @return An object representation of this option.
+     */
+
+    public abstract Object getObject();
+
+    /**
+     * Returns the option's value as a String. This String should conform
+     * to the formatting requirements prescribed by a modify method.
+     *
+     * @return The option's value as a String conforming to formatting
+     *         requirements.
+     */
+
+    public abstract String getStringValue();
+
+    /**
+     * Constructs an option with no initial short or long option value,
+     * and is by default uninvoked and undeprecated, and has a description
+     * initialized to the empty string.
+     */
+
+    public Option() {
+	super();
+	description = "";
+    }
+
+    /**
+     * Constructs an option by copying the option passed.
+     *
+     * @param option  The option to copy for this object's construction.
+     */
+
+    public Option( Option option ) {
+	longOption = option.getLongOption();
+	shortOption = option.getShortOption();
+	description = option.getDescription();
+	deprecated = option.isDeprecated();
+    }
+
+    /**
+     * Constructs an option by initializing its long option with the
+     * value passed. The short option is equal to the null character,
+     * and the description is equal to the empty string.
+     *
+     * @param longOption The value of the long option
+     */
+
+    public Option( String longOption ) {
+	this.longOption = longOption;
+	this.shortOption = '\0';
+	description = "";
+    }
+
+    /**
+     * Constructs an option by initializing its short option with the
+     * value passed. The long option is equal to null, and the description
+     * is equal to the empty string.
+     *
+     * @param shortOption The value of the short option.
+     */
+
+    public Option( char shortOption ) {
+	this.shortOption = shortOption;
+	this.longOption = null;
+	description = "";
+    }
+
+    /**
+     * Constructs an option by initializing its short and long options
+     * with the values passed. The description is set to the empty string.
+     *
+     * @param longOption The value of the long option.
+     * @param shortOption The value of the short option.
+     */
+
+    public Option( String longOption, char shortOption ) {
+	this.longOption = longOption;
+	this.shortOption = shortOption;
+	description = "";
+    }
+
+    /**
+     * Sets the long option.
+     *
+     * @param longOption The value to set the long option.
+     */
+
+    public void setKey( String longOption ) {
+	this.longOption = longOption;
+    }
+
+    /**
+     * Sets the short option.
+     *
+     * @param shortOption The value to set the short option.
+     */
+
+    public void setKey( char shortOption ) {
+	this.shortOption = shortOption;
+    }
+
+    /**
+     * Sets the short option.
+     *
+     * @param shortOption The value to set the short option.
+     */
+
+    public void setShortOption( char shortOption ) {
+	setKey( shortOption );
+    }
+
+    /**
+     * Sets the long option.
+     *
+     * @param longOption The value to set the long option.
+     */
+
+    public void setLongOption( String longOption ) {
+	setKey( longOption );
+    }
+
+    /**
+     * Sets the description of this option.
+     *
+     * @param description The description of this option.
+     */
+
+    public void setDescription( String description ) {
+	this.description = description;
+    }
+
+    /**
+     * Sets the deprecated flag to the value passed.
+     *
+     * @param deprecated A flag indicating whether the option is deprecated.
+     */
+
+    public void setDeprecated( boolean deprecated ) {
+	this.deprecated = deprecated;
+    }
+
+    /**
+     * Sets the field width for the option specification displayed
+     * in the help report.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setHelpOptionSpecificationSize( int newSize ) {
+	helpOptionSpecificationSize = newSize;
+    }
+
+    /**
+     * Sets the field width for the type name displayed in the help report.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setHelpTypenameSize( int newSize ) {
+	helpTypenameSize = newSize;
+    }
+
+    /**
+     * Sets the field width for the description displayed in the help report.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setHelpDescriptionSize( int newSize ) {
+	helpDescriptionSize = newSize;
+    }
+
+    /**
+     * Sets the field width for the deprecated flag displayed in the
+     * help report.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setHelpDeprecatedSize( int newSize ) {
+	helpDeprecatedSize = newSize;
+    }
+
+    /**
+     * Sets the field width for the option specification displayed
+     * in the menu listing of options.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setMenuOptionSpecificationSize( int newSize ) {
+	menuOptionSpecificationSize = newSize;
+    }
+
+    /**
+     * Sets the field width for the type name displayed in the menu
+     * listing of options.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setMenuTypenameSize( int newSize ) {
+	menuTypenameSize = newSize;
+    }
+
+    /**
+     * Sets the field width for the option description displayed
+     * in the menu listing of options.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setMenuDescriptionSize( int newSize ) {
+	menuDescriptionSize = newSize;
+    }
+
+    /**
+     * Sets the field width for the deprecated flag displayed
+     * in the menu listing of options.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setMenuDeprecatedSize( int newSize ) {
+	menuDeprecatedSize = newSize;
+    }
+
+    /**
+     * Sets the assignment field width used when options files are written.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setFileCompleteOptionSize( int newSize ) {
+	fileCompleteOptionSize = newSize;
+    }
+
+    /**
+     * Sets the assignment field width used when options files are written.
+     *
+     * @param newSize The size to set the field width.
+     */
+
+    public static void setFileCommentSize( int newSize ) {
+	fileCommentSize = newSize;
+    }
+
+    /**
+     * Sets whether this option has been invoked.
+     *
+     * @param A boolean indicating whether this option has been invoked.
+     */
+
+    public void setInvoked( boolean b ) {
+	invoked = b;
+    }
+
+    /**
+     * Deprecates this option.
+     */
+
+    public void deprecate() {
+	setDeprecated( true );
+    }
+
+    /**
+     * Return the name of this option. This method returns the same value as
+     * the getLongOption accessor.
+     *
+     * @return The name of this otpion.
+     */
+
+    public String getName() {
+	return longOption;
+    }
+
+    /**
+     * Return the short option key. There is no short option when this
+     * character is the null character.
+     *
+     * @return The short option key of this option.
+     */
+
+    public char getShortOption() {
+	return shortOption;
+    }
+
+    /**
+     * Return the long option key. There is no long option when this value
+     * is null.
+     *
+     * @return The long option key of this option.
+     */
+
+    public String getLongOption() {
+	return longOption;
+    }
+
+
+    /**
+     * Return a line used for help reporting.
+     *
+     * @return A line used for help reporting.
+     */
+
+    public String getHelp() {
+	return getHelpOptionSpecification() + " " + getHelpTypeName() + " "
+	    + getHelpDescription() + " " + getHelpDeprecated();
+    }
+
+    /**
+     * Return the option specification field used during help reporting.
+     *
+     * @return The option specification field.
+     */
+
+    public String getHelpOptionSpecification() {
+	return Utility.expandString(
+	    ( ( ( shortOption != '\0' ) ? ( "-" + getShortOption() ) : "  " )
+	    + ( ( longOption != null && shortOption != '\0' ) ? ", " : "  " )
+	    + ( ( longOption != null ) ? "--" + getLongOption(): "" ) ),
+			     helpOptionSpecificationSize );
+    }
+
+    /**
+     * Return the type name field used during help reporting.
+     *
+     * @return The type name field.
+     */
+
+    public String getHelpTypeName() {
+	return Utility.expandString( "<" + getTypeName() + ">",
+				     helpTypenameSize );
+    }
+
+    /**
+     * Return the description field used during help reporting.
+     *
+     * @return The description field.
+     */
+
+    public String getHelpDescription() {
+	return Utility.expandString( getDescription(),
+			     helpDescriptionSize );
+    }
+
+    /**
+     * Return the deprecated field used during help reporting.
+     *
+     * @return The deprecated field.
+     */
+
+    public String getHelpDeprecated() {
+	return Utility.expandString( isDeprecated() ? "[d]" : "",
+			     helpDeprecatedSize );
+    }
+
+    /**
+     * Return the header displayed at the top of the help report.
+     *
+     * @return The header displayed at the top of the help report.
+     */
+
+    public static String getHelpHeader() {
+	return Utility.expandString( "Option Name",
+				     helpOptionSpecificationSize ) + " "
+	    + Utility.expandString( "Type", helpTypenameSize ) + " "
+	    + Utility.expandString( "Description", helpDescriptionSize );
+    }
+
+    /**
+     * The description explaining the meaning of this option.
+     *
+     * @return This options description.
+     */
+
+    public String getDescription() {
+	return description;
+    }
+
+    /**
+     * The hash key of this option. This is used by classes that implement
+     * the option registrar class. This method should <b>not</b> be overrided.
+     *
+     * @return The hash key of this option.
+     */
+
+    public String getHashKey() {
+	return Option.getHashKey( longOption, shortOption );
+    }
+
+    /**
+     * The hash key of an option if there is no short option. This method
+     * should <b>not</b> be overrided.
+     *
+     * @param longOption The long option.
+     *
+     * @return The hash key of this option based on the long option.
+     */
+
+    public static String getHashKey( String longOption ) {
+	return "," + ( ( longOption != null ) ? longOption : "" );
+    }
+
+    /**
+     * The hash key of an option if there is no long option. This method
+     * should <b>not</b> be overrided.
+     *
+     * @param shortOption The short option.
+     *
+     * @return The hash key of this option based on the short option.
+     */
+
+    public static String getHashKey( char shortOption ) {
+	return "" + ( shortOption != '\0' ) + ",";
+    }
+
+    /**
+     * The hash key of an option if there both short and long options are
+     * defined.
+     *
+     * @param shortOption The short option.
+     * @param longOption  The long option.
+     *
+     * @return The hash key of this option based on both the short and long
+     *         options.
+     */
+
+    public static String getHashKey( String longOption, char shortOption ) {
+	return ( ( shortOption == '\0' ) ? "" : "" + shortOption ) +
+	    ( ( longOption == null ) ? "," : "," + longOption );
+    }
+
+    /**
+     * Returns whether this option is deprecated.
+     *
+     * @return A boolean indicating whether this option is deprecated.
+     */
+
+    public boolean isDeprecated() {
+	return deprecated;
+    }
+
+    /**
+     * Returns whether this option has been invoked.
+     *
+     * @return A boolean indicating whether this option has been invoked.
+     */
+
+    public boolean isInvoked() {
+	return invoked;
+    }
+
+    /**
+     * Returns (a) line(s) representing this option. This line is usually
+     * later written to an options file.
+     *
+     * @return Line(s) representing this option.
+     */
+
+    public String getOptionFileLine() {
+	boolean descriptionPrinted = false;
+	String retval = "";
+	String optionText = "";
+	String strval = getStringValue();
+	if ( longOption != null ) {
+	    optionText += "--" + longOption;
+	}
+	else if ( shortOption != '\0' ) {
+	    optionText += "-" + shortOption;
+	}
+	if ( optionText.length() > 0
+	     && Utility.trim( strval ).length() >= 0 ) {
+	    optionText += "=" + strval;
+	}
+	if ( optionText.length() <= fileCompleteOptionSize ) {
+	    retval += Utility.expandString( optionText,
+					    fileCompleteOptionSize );
+	}
+	else {
+	    retval += "; " + description + "\n";
+	    retval += optionText;
+	    descriptionPrinted = true;
+	}
+	if ( !descriptionPrinted ) { 
+	    StringBuffer descsplit = new StringBuffer( description );
+	    boolean tmp = false;
+	    while ( descsplit.length() > 0 ) {
+		String st = "";
+		int size = 0;
+		if ( tmp ) {
+		    st += Utility.getSpaces( fileCompleteOptionSize );
+		}
+		size = ( descsplit.length() >= fileCommentSize )
+		    ? fileCommentSize : descsplit.length();
+		st += "; " + descsplit.substring( 0, size );
+		descsplit.delete( 0, size );
+		retval += st + "\n";
+		tmp = true;
+	    }
+	    descriptionPrinted = true;
+	}
+	return retval;
+    }
+
+    /**
+     * Returns the field width for the option specification displayed in the
+     * help report.
+     *
+     * @return The field width.
+     */
+
+    public static int getHelpOptionSpecificationSize() {
+	return helpOptionSpecificationSize;
+    }
+
+    /**
+     * Returns the field width for the type name displayed in the help report.
+     *
+     * @return The field width.
+     */
+
+    public static int getHelpTypenameSize() {
+	return helpTypenameSize;
+    }
+
+    /**
+     * Returns the field width for the description displayed in the help
+     * report.
+     *
+     * @return The field width.
+     */
+
+    public static int getHelpDescriptionSize() {
+	return helpDescriptionSize;
+    }
+
+    /**
+     * Returns the field width for the deprecated flag displayed in the
+     * help report.
+     *
+     * @return The field width.
+     */
+
+    public static int getHelpDeprecatedSize() {
+	return helpDeprecatedSize;
+    }
+
+    /**
+     * Returns the field width for the option specification displayed in the
+     * menu listing of options.
+     *
+     * @return The field width.
+     */
+
+    public static int getMenuOptionSpecificationSize() {
+	return menuOptionSpecificationSize;
+    }
+
+    /**
+     * Returns the field width for the type name displayed in the
+     * menu listing of options.
+     *
+     * @return The field width.
+     */
+
+    public static int getMenuTypenameSize() {
+	return menuTypenameSize;
+    }
+
+    /**
+     * Returns the field width for the description displayed in the
+     * menu listing of options.
+     *
+     * @return The field width.
+     */
+
+    public static int getMenuDescriptionSize() {
+	return menuDescriptionSize;
+    }
+
+    /**
+     * Returns the field width for the deprecated flag displayed in the
+     * menu listing of options.
+     *
+     * @return The field width.
+     */
+
+    public static int getMenuDeprecatedSize() {
+	return menuDeprecatedSize;
+    }
+
+    /**
+     * Returns the field width for assignment portion of a option file line.
+     *
+     * @return The field width.
+     */
+
+    public static int getFileCompleteOptionSize() {
+	return fileCompleteOptionSize;
+    }
+
+    /**
+     * Returns the field width for assignment portion of a option file line.
+     *
+     * @return The field width.
+     */
+
+    public static int getFileCommentSize() {
+	return fileCommentSize;
+    }
+
+    /**
+     * Returns the type name of this option.
+     *
+     * @return The type name of this option.
+     */
+
+    public abstract String getTypeName();
+
+    /**
+     * Prepares the option for modification.
+     */
+
+    public void action() {
+	if ( deprecated ) {
+	    System.err.print( "Warning: " );
+	    if ( longOption != null ) {
+		System.err.print( "--" + longOption );
+	    }
+	    if ( shortOption != '\0' && longOption != null ) {
+		System.err.print( " or " );
+	    }
+	    if ( shortOption != '\0' ) {
+		System.err.println( "-" + shortOption + " is deprecated." );
+	    }
+	}
+    }
+
+} /** Option */
+
+
+
+
+
diff --git a/src/java/gnu/dtools/ritopt/OptionArrayable.java b/src/java/gnu/dtools/ritopt/OptionArrayable.java
index 17b311d..e72f528 100644
--- a/src/java/gnu/dtools/ritopt/OptionArrayable.java
+++ b/src/java/gnu/dtools/ritopt/OptionArrayable.java
@@ -1,65 +1,65 @@
-package gnu.dtools.ritopt;
-
-/**
- * If an option supports array registration and processing then it
- * should implement this interface.<p>
- *
- * For example, let's say we are implementing an integer array option class.
- *
- * <pre>
- * public class MyIntArray extends ArrayOption implements OptionArrayable,
- *                                                        OptionModifiable {
- *    int values[];
- *
- *    // rest of implementation goes here.
- *
- *    public void modify(java.lang.String[] value) {
- *       try {
- *          int newValues[] = new int[ value.length ];
- *          for int( n = 0; n < value.length; n++ ) {
- *             newValues[ n ] = Integer.parseInt( value[ n ] );
- *          }
- *          values[ n ] = newValues;
- *       }
- *       catch ( NumberFormatException e ) {
- *          throw new OptionModificationException( "Not a number." );
- *       }
- *    }
- * }
- * </pre>
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public interface OptionArrayable extends OptionModifiable {
-
-   /**
-     * Modify an option based on several string representations.
-     *
-     * @param     value String representation of the object.
-     * @exception OptionModificationException Thrown if an error occurs
-     *                                  during modification of an option.
-     */
-
-    void modify( String value[] ) throws OptionModificationException;
-}
+package gnu.dtools.ritopt;
+
+/**
+ * If an option supports array registration and processing then it
+ * should implement this interface.<p>
+ *
+ * For example, let's say we are implementing an integer array option class.
+ *
+ * <pre>
+ * public class MyIntArray extends ArrayOption implements OptionArrayable,
+ *                                                        OptionModifiable {
+ *    int values[];
+ *
+ *    // rest of implementation goes here.
+ *
+ *    public void modify(java.lang.String[] value) {
+ *       try {
+ *          int newValues[] = new int[ value.length ];
+ *          for int( n = 0; n < value.length; n++ ) {
+ *             newValues[ n ] = Integer.parseInt( value[ n ] );
+ *          }
+ *          values[ n ] = newValues;
+ *       }
+ *       catch ( NumberFormatException e ) {
+ *          throw new OptionModificationException( "Not a number." );
+ *       }
+ *    }
+ * }
+ * </pre>
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public interface OptionArrayable extends OptionModifiable {
+
+   /**
+     * Modify an option based on several string representations.
+     *
+     * @param     value String representation of the object.
+     * @exception OptionModificationException Thrown if an error occurs
+     *                                  during modification of an option.
+     */
+
+    void modify( String value[] ) throws OptionModificationException;
+}
diff --git a/src/java/gnu/dtools/ritopt/OptionEvent.java b/src/java/gnu/dtools/ritopt/OptionEvent.java
index 2d35002..7bfd46f 100644
--- a/src/java/gnu/dtools/ritopt/OptionEvent.java
+++ b/src/java/gnu/dtools/ritopt/OptionEvent.java
@@ -1,195 +1,195 @@
-package gnu.dtools.ritopt;
-/**
- * OptionEvent.java
- *
- * Version:
- *    $Id: OptionEvent.java,v 1.2 2005/11/08 04:53:27 mortenalver Exp $
- */
-
-/**
- * An event indicating that an option has been invoked.
- * When an OptionListener is notified by a NotifyOption, it passes
- * an OptionEvent object to all registered listeners. This includes
- * the target NotifyOption, a command (NotifyOption passes the long
- * option by default), and the option value.<p>
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class OptionEvent {
-
-    /**
-     * The command string associated with this option processing event.
-     */
-
-    private String command;
-
-    /**
-     * The value of the option processing event.
-     */
-
-    private String value;
-
-    /**
-     * The target Option in which the option processing event occurred.
-     */
-
-    private Option target;
-
-    /**
-     * Constructs an option event with the command set to "Default", the
-     * value set to the empty string, and the target set to null.
-     */
-
-    public OptionEvent() {
-	this( "Default", "", null );
-    }
-
-    /**
-     * Constructs an option event with the command set to the value passed,
-     * the value set to the empty string, and the target set to null.
-     *
-     * @param command The value to set the command string.
-     */
-
-    public OptionEvent( String command ) {
-	this( command, "", null );
-    }
-
-    /**
-     * Constructs an option event with the command and value set to the
-     * values passed, and the target set to null.
-     *
-     * @param command The value to set the command string.
-     * @param value   The value to set the option value.
-     */
-
-    public OptionEvent( String command, String value ) {
-	this( command, value, null );
-    }
-
-    /**
-     * Constructs an option event with the command set to the long or short
-     * option (whichever exists), the value set to the current value of
-     * the option, and the target option set to the option passed. If
-     * neither the short or long option exist, a value of "Default" is
-     * assigned.
-     *
-     * @param option The option to initialize this OptionEvent.
-     */
-
-    public OptionEvent( Option option ) {
-	this.target = option;
-	this.value = option.getStringValue();
-	String longOption = option.getLongOption();
-	char shortOption = option.getShortOption();
-						      
-        if ( longOption != null ) {
-	    command = longOption;
-	}
-	else if ( shortOption != '\0' ) {
-	    command = new Character( shortOption ).toString();
-	}
-	else {
-	    command = "Default";
-	}
-    }
-
-    /**
-     * Constructs an option event with the command, value, and target
-     * set to the values passed.
-     *
-     * @param command The value to set the command string.
-     * @param value   The value to set the option value.
-     * @param target  The target option in which the option processing
-     *                event occurred.
-     */
-
-    public OptionEvent( String command, String value, Option target ) {
-	this.command = command;
-	this.value = value;
-	this.target = target;
-    }
-
-    /**
-     * Returns the command string associated with the option.
-     *
-     * @return The command string associated with the option.
-     */
-
-    public String getCommand() {
-	return command;
-    }
-
-    /**
-     * Returns the value associated with the target option.
-     *
-     * @return The value associated with the target option.
-     */
-
-    public String getValue() {
-	return value;
-    }
-
-    /**
-     * Returns the target option of the option processing event.
-     *
-     * @return The target option.
-     */
-
-    public Option getTarget() {
-	return target;
-    }
-
-    /**
-     * Sets the command string to the value passed.
-     *
-     * @param command The value to set the command string.
-     */
-
-    public void setCommand( String command ) {
-	this.command = command;
-    }
-
-    /**
-     * Sets the value of this option event. This value generally should be
-     * equal to the value of the target option.
-     *
-     * @param value   The value of the option event.
-     */
-
-    public void setValue( String value ) {
-	this.value = value;
-    }
-
-    /**
-     * Sets the target option of the option processing event.
-     *
-     * @param target   The target option.
-     */
-
-    public void setTarget( Option target ) {
-	this.target = target;
-    }
-
-}
+package gnu.dtools.ritopt;
+/**
+ * OptionEvent.java
+ *
+ * Version:
+ *    $Id: OptionEvent.java 1318 2005-11-08 04:53:29Z mortenalver $
+ */
+
+/**
+ * An event indicating that an option has been invoked.
+ * When an OptionListener is notified by a NotifyOption, it passes
+ * an OptionEvent object to all registered listeners. This includes
+ * the target NotifyOption, a command (NotifyOption passes the long
+ * option by default), and the option value.<p>
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class OptionEvent {
+
+    /**
+     * The command string associated with this option processing event.
+     */
+
+    private String command;
+
+    /**
+     * The value of the option processing event.
+     */
+
+    private String value;
+
+    /**
+     * The target Option in which the option processing event occurred.
+     */
+
+    private Option target;
+
+    /**
+     * Constructs an option event with the command set to "Default", the
+     * value set to the empty string, and the target set to null.
+     */
+
+    public OptionEvent() {
+	this( "Default", "", null );
+    }
+
+    /**
+     * Constructs an option event with the command set to the value passed,
+     * the value set to the empty string, and the target set to null.
+     *
+     * @param command The value to set the command string.
+     */
+
+    public OptionEvent( String command ) {
+	this( command, "", null );
+    }
+
+    /**
+     * Constructs an option event with the command and value set to the
+     * values passed, and the target set to null.
+     *
+     * @param command The value to set the command string.
+     * @param value   The value to set the option value.
+     */
+
+    public OptionEvent( String command, String value ) {
+	this( command, value, null );
+    }
+
+    /**
+     * Constructs an option event with the command set to the long or short
+     * option (whichever exists), the value set to the current value of
+     * the option, and the target option set to the option passed. If
+     * neither the short or long option exist, a value of "Default" is
+     * assigned.
+     *
+     * @param option The option to initialize this OptionEvent.
+     */
+
+    public OptionEvent( Option option ) {
+	this.target = option;
+	this.value = option.getStringValue();
+	String longOption = option.getLongOption();
+	char shortOption = option.getShortOption();
+						      
+        if ( longOption != null ) {
+	    command = longOption;
+	}
+	else if ( shortOption != '\0' ) {
+	    command = new Character( shortOption ).toString();
+	}
+	else {
+	    command = "Default";
+	}
+    }
+
+    /**
+     * Constructs an option event with the command, value, and target
+     * set to the values passed.
+     *
+     * @param command The value to set the command string.
+     * @param value   The value to set the option value.
+     * @param target  The target option in which the option processing
+     *                event occurred.
+     */
+
+    public OptionEvent( String command, String value, Option target ) {
+	this.command = command;
+	this.value = value;
+	this.target = target;
+    }
+
+    /**
+     * Returns the command string associated with the option.
+     *
+     * @return The command string associated with the option.
+     */
+
+    public String getCommand() {
+	return command;
+    }
+
+    /**
+     * Returns the value associated with the target option.
+     *
+     * @return The value associated with the target option.
+     */
+
+    public String getValue() {
+	return value;
+    }
+
+    /**
+     * Returns the target option of the option processing event.
+     *
+     * @return The target option.
+     */
+
+    public Option getTarget() {
+	return target;
+    }
+
+    /**
+     * Sets the command string to the value passed.
+     *
+     * @param command The value to set the command string.
+     */
+
+    public void setCommand( String command ) {
+	this.command = command;
+    }
+
+    /**
+     * Sets the value of this option event. This value generally should be
+     * equal to the value of the target option.
+     *
+     * @param value   The value of the option event.
+     */
+
+    public void setValue( String value ) {
+	this.value = value;
+    }
+
+    /**
+     * Sets the target option of the option processing event.
+     *
+     * @param target   The target option.
+     */
+
+    public void setTarget( Option target ) {
+	this.target = target;
+    }
+
+}
diff --git a/src/java/gnu/dtools/ritopt/OptionException.java b/src/java/gnu/dtools/ritopt/OptionException.java
index bbc82d6..1edbf84 100644
--- a/src/java/gnu/dtools/ritopt/OptionException.java
+++ b/src/java/gnu/dtools/ritopt/OptionException.java
@@ -1,48 +1,48 @@
-package gnu.dtools.ritopt;
-
-/**
- * OptionException.java
- *
- * Version:
- *    $Id: OptionException.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-/**
- * An OptionException is thrown when an error occurs during option processing,
- * modification, or registration. This class is the base class for all
- * run-time based option processing exceptions. A class must throw an instance
- * of one of the derived classes as this implementation is abstract.
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public abstract class OptionException extends RuntimeException {
-
-    /**
-     * Constructs an OptionException.
-     *
-     * @param msg The exception message.
-     */
-
-    OptionException( String msg ) {
-	super( msg );
-    }
-}
+package gnu.dtools.ritopt;
+
+/**
+ * OptionException.java
+ *
+ * Version:
+ *    $Id: OptionException.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+/**
+ * An OptionException is thrown when an error occurs during option processing,
+ * modification, or registration. This class is the base class for all
+ * run-time based option processing exceptions. A class must throw an instance
+ * of one of the derived classes as this implementation is abstract.
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public abstract class OptionException extends RuntimeException {
+
+    /**
+     * Constructs an OptionException.
+     *
+     * @param msg The exception message.
+     */
+
+    OptionException( String msg ) {
+	super( msg );
+    }
+}
diff --git a/src/java/gnu/dtools/ritopt/OptionListener.java b/src/java/gnu/dtools/ritopt/OptionListener.java
index 022b56c..d631e67 100644
--- a/src/java/gnu/dtools/ritopt/OptionListener.java
+++ b/src/java/gnu/dtools/ritopt/OptionListener.java
@@ -1,54 +1,54 @@
-package gnu.dtools.ritopt;
-
-/**
- * OptionListener.java
- *
- * Version:
- *   $Id: OptionListener.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-/**
- * This interface is used to receive notification of option processing
- * events. Implementors are registered by being passed to an OptionNotifier's
- * addOptionListener method.
- *
- * Option processing events occur when an option is invoked at the command
- * line, menu, or is present in an options file.
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public interface OptionListener {
-
-    /**
-     * Invoked when an option processing event occurs. Option processing
-     * events occur when an option is invoked at the command line, menu,
-     * or is present in an options file.
-     *
-     * @param e   An object containing information about the option processing
-     *            and invocation event.
-     */
-
-    public void optionInvoked( OptionEvent e );
-
-} /** OptionListener **/
+package gnu.dtools.ritopt;
+
+/**
+ * OptionListener.java
+ *
+ * Version:
+ *   $Id: OptionListener.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+/**
+ * This interface is used to receive notification of option processing
+ * events. Implementors are registered by being passed to an OptionNotifier's
+ * addOptionListener method.
+ *
+ * Option processing events occur when an option is invoked at the command
+ * line, menu, or is present in an options file.
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public interface OptionListener {
+
+    /**
+     * Invoked when an option processing event occurs. Option processing
+     * events occur when an option is invoked at the command line, menu,
+     * or is present in an options file.
+     *
+     * @param e   An object containing information about the option processing
+     *            and invocation event.
+     */
+
+    public void optionInvoked( OptionEvent e );
+
+} /** OptionListener **/
diff --git a/src/java/gnu/dtools/ritopt/OptionMenu.java b/src/java/gnu/dtools/ritopt/OptionMenu.java
index 1ad8242..eabc0e0 100644
--- a/src/java/gnu/dtools/ritopt/OptionMenu.java
+++ b/src/java/gnu/dtools/ritopt/OptionMenu.java
@@ -1,271 +1,271 @@
-package gnu.dtools.ritopt;
-
-/**
- * OptionMenu.java
- *
- * Version:
- *    $Id: OptionMenu.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-import java.io.*;
-
-/**
- * This class facilitates the built-in menu feature for ritopt. When the
- * --menu long option is invoked, an instance of this class is notified,
- * and the menu system starts.
- *
- * Here is an example run of the built-in menu.
- * <pre>
- * -> ?
- *         - Options Delimiter
- *         ? Help
- *         = Run program and return to menu
- *         ! Shell to Operating System
- *         $ Exit menu
- *         + Additional options
- *         @<filename> Get options from file [default.opt]
- *         @@ Get options from file [default.opt]
- *         %<filename> Put options in file
- *         %% Put options in file [default.opt]
- *         . Quit
- * -> =ls
- * -> =uname
- * CYGWIN_ME-4.90
- * Exit status: 0
- * Press enter to continue...
- *
- * -> =ls
- * CVS
- * Makefile
- * Makefile.am
- * Makefile.in
- * edu
- * gnu
- * ritopt.jar
- * Exit status: 0
- * Press enter to continue..
- *
- * -> --help
- * java FavoriteFood @optionfile [module] OPTIONS ... [module] OPTIONS
- *
- * Use --menu to invoke the interactive built-in menu.
- *
- * Option Name     Type       Description
- *
- * -h, --help      <NOTIFY>   Displays help for each option.
- * -m, --menu      <NOTIFY>   Displays the built-in interactive menu.
- *     --fatfree   <BOOLEAN>  No description given
- * -v, --version   <NOTIFY>   Displays version information.
- *     --name      <STRING>   No description given
- * -g, --grub      <STRING>   Favorite Food
- * -f, --food      <STRING>   Favorite Food
- * -c, --food-coun <STRING>   No description given
- *
- * -> --grub=tacos
- * Warning: --grub or -g is deprecated.
- * -> --grubb
- * Error: Option --grubb does not exist in module 'General'.
- * -> .
- *
- * </pre>
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class OptionMenu implements OptionListener {
-
-    /**
-     * Commands starting with this substring are option invocations.
-     */
-
-    public static final String OPTION_COMMAND_CHAR = "-";
-
-    /**
-     * This command without any arguments displays the command summary.
-     * Otherwise, specific help information is provided based on the
-     * argument.
-     */
-
-    public static final String HELP_COMMAND_CHAR = "?";
-
-    /**
-     * This command must have an argument. When invoked, it executes
-     * the argument at the command shell.
-     */
-
-    public static final String RUN_COMMAND_CHAR = "=";
-
-    /**
-     * This command spawns a shell.
-     */
-
-    public static final String SHELL_COMMAND_CHAR = "!";
-
-    /**
-     * This command exits the built-in menu system.
-     */
-
-    public static final String EXIT_MENU_COMMAND_CHAR = "$";
-
-    /**
-     * This command lists registered option modules.
-     */
-
-    public static final String LIST_MODULES_COMMAND_CHAR = "+";
-
-    /**
-     * This command without any arguments loads the default option file.
-     * Otherwise, the file as the argument is loaded.
-     */
-
-    public static final String FILE_READ_COMMAND_CHAR = "@";
-
-    /**
-     * This command without any arguments writes to the default option file.
-     * Otherwise, the file as the argument is written.
-     */
-
-    public static final String FILE_WRITE_COMMAND_CHAR = "%";
-
-    /**
-     * Loads an option module. Invoking this command without any arguments,
-     * the default option module is loaded.
-     */
-
-    public static final String FILE_MODULE_COMMAND_CHAR = ":";
-
-    /**
-     * The menu prompt used for the built-in menu system.
-     */
-
-    public static final String MENU_PROMPT = "-> ";
-
-    /**
-     * The options registrar associated with this option menu.
-     */
-
-    private Options options;
-
-    /**
-     * A reader which is connected to standard input.
-     */
-
-    private BufferedReader reader;
-
-    /**
-     * Constructs a new built-in menu attaching it to the options registrar
-     * passed.
-     *
-     * @param options The option registrar associated with this built-in
-     *                menu.
-     */
-
-    public OptionMenu( Options options ) {
-	this.options = options;
-	reader = new BufferedReader( new InputStreamReader( System.in ) );
-    }
-
-    /**
-     * Starts the built-in menu system.
-     */
-
-    public void startMenu() {
-	String command = "";
-	while ( !command.equals( "$" ) ) {
-	    System.out.print( MENU_PROMPT );
-	    try {
-		command = reader.readLine();
-	    }
-	    catch ( IOException e ) {
-		return;
-	    }
-	    boolean commandEntered = command != null && command.length() > 0;
-	    if ( command.equals( "?" ) ) {
-		System.err.println( "\t- Options Delimiter" );
-		System.err.println( "\t? Help" );
-		System.err.println( "\t= Run program and return to menu" );
-		System.err.println( "\t! Shell to Operating System" );
-		System.err.println( "\t$ Exit menu" );
-		System.err.println( "\t+ Additional options" );
-		System.err.println( "\t@<filename> Get options from file ["
-				    + options.getDefaultOptionFilename()
-				    + "]" );
-		System.err.println( "\t@@ Get options from file ["
-				    + options.getDefaultOptionFilename()
-				    + "]" );
-                System.err.println( "\t%<filename> Put options in file" );
-		System.err.println( "\t%% Put options in file ["
-				    + options.getDefaultOptionFilename()
-				    + "]" );
-                System.err.println( "\t. Quit" );
-	    }
-	    else if ( commandEntered &&
-		      ( command.substring( 0, 1 ).equals(
-					    FILE_READ_COMMAND_CHAR )
-		      || command.substring( 0, 1 ).equals(
-					    FILE_WRITE_COMMAND_CHAR )
-		      || command.substring( 0, 1 ).equals(
-                                            OPTION_COMMAND_CHAR )
-		      || command.substring( 0, 1 ).equals(
-                                            FILE_MODULE_COMMAND_CHAR ) ) ) {
-		options.process( command );
-	    }
-	    else if ( commandEntered &&
-		      command.substring( 0, 1 ).equals( SHELL_COMMAND_CHAR ) ) {
-
-	    }
-	    else if ( commandEntered &&
-		      command.substring( 0, 1 ).equals( RUN_COMMAND_CHAR ) ) {
-		try {
-		    SimpleProcess p
-			= new SimpleProcess( Runtime.getRuntime().exec( command.substring( 1 ) ) );
-		    System.err.println( "Exit status: " + p.waitFor() );
-		}
-		catch ( Exception e ) {
-		    System.err.println( "ritopt: An Error Occurred During Process Execution" );
-		    e.printStackTrace();
-		}
-		finally {
-		    System.out.println( "Press enter to continue..." );
-		    try {
-			reader.readLine();
-		    } catch ( IOException e ) { }
-		}
-	    }
-	    else {
-		System.err.println( "(Type ? for Help)" );
-	    }
-	}
-    }
-
-    /**
-     * This method is notified when the --menu option is specified.
-     *
-     * @param event    The event associated.
-     */
-
-    public void optionInvoked( OptionEvent event ) {
-	if ( event.getCommand().equals( "menu" ) ) {
-	    startMenu();
-	}
-    }
-} /** OptionMenu **/
+package gnu.dtools.ritopt;
+
+/**
+ * OptionMenu.java
+ *
+ * Version:
+ *    $Id: OptionMenu.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+import java.io.*;
+
+/**
+ * This class facilitates the built-in menu feature for ritopt. When the
+ * --menu long option is invoked, an instance of this class is notified,
+ * and the menu system starts.
+ *
+ * Here is an example run of the built-in menu.
+ * <pre>
+ * -> ?
+ *         - Options Delimiter
+ *         ? Help
+ *         = Run program and return to menu
+ *         ! Shell to Operating System
+ *         $ Exit menu
+ *         + Additional options
+ *         @<filename> Get options from file [default.opt]
+ *         @@ Get options from file [default.opt]
+ *         %<filename> Put options in file
+ *         %% Put options in file [default.opt]
+ *         . Quit
+ * -> =ls
+ * -> =uname
+ * CYGWIN_ME-4.90
+ * Exit status: 0
+ * Press enter to continue...
+ *
+ * -> =ls
+ * CVS
+ * Makefile
+ * Makefile.am
+ * Makefile.in
+ * edu
+ * gnu
+ * ritopt.jar
+ * Exit status: 0
+ * Press enter to continue..
+ *
+ * -> --help
+ * java FavoriteFood @optionfile [module] OPTIONS ... [module] OPTIONS
+ *
+ * Use --menu to invoke the interactive built-in menu.
+ *
+ * Option Name     Type       Description
+ *
+ * -h, --help      <NOTIFY>   Displays help for each option.
+ * -m, --menu      <NOTIFY>   Displays the built-in interactive menu.
+ *     --fatfree   <BOOLEAN>  No description given
+ * -v, --version   <NOTIFY>   Displays version information.
+ *     --name      <STRING>   No description given
+ * -g, --grub      <STRING>   Favorite Food
+ * -f, --food      <STRING>   Favorite Food
+ * -c, --food-coun <STRING>   No description given
+ *
+ * -> --grub=tacos
+ * Warning: --grub or -g is deprecated.
+ * -> --grubb
+ * Error: Option --grubb does not exist in module 'General'.
+ * -> .
+ *
+ * </pre>
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class OptionMenu implements OptionListener {
+
+    /**
+     * Commands starting with this substring are option invocations.
+     */
+
+    public static final String OPTION_COMMAND_CHAR = "-";
+
+    /**
+     * This command without any arguments displays the command summary.
+     * Otherwise, specific help information is provided based on the
+     * argument.
+     */
+
+    public static final String HELP_COMMAND_CHAR = "?";
+
+    /**
+     * This command must have an argument. When invoked, it executes
+     * the argument at the command shell.
+     */
+
+    public static final String RUN_COMMAND_CHAR = "=";
+
+    /**
+     * This command spawns a shell.
+     */
+
+    public static final String SHELL_COMMAND_CHAR = "!";
+
+    /**
+     * This command exits the built-in menu system.
+     */
+
+    public static final String EXIT_MENU_COMMAND_CHAR = "$";
+
+    /**
+     * This command lists registered option modules.
+     */
+
+    public static final String LIST_MODULES_COMMAND_CHAR = "+";
+
+    /**
+     * This command without any arguments loads the default option file.
+     * Otherwise, the file as the argument is loaded.
+     */
+
+    public static final String FILE_READ_COMMAND_CHAR = "@";
+
+    /**
+     * This command without any arguments writes to the default option file.
+     * Otherwise, the file as the argument is written.
+     */
+
+    public static final String FILE_WRITE_COMMAND_CHAR = "%";
+
+    /**
+     * Loads an option module. Invoking this command without any arguments,
+     * the default option module is loaded.
+     */
+
+    public static final String FILE_MODULE_COMMAND_CHAR = ":";
+
+    /**
+     * The menu prompt used for the built-in menu system.
+     */
+
+    public static final String MENU_PROMPT = "-> ";
+
+    /**
+     * The options registrar associated with this option menu.
+     */
+
+    private Options options;
+
+    /**
+     * A reader which is connected to standard input.
+     */
+
+    private BufferedReader reader;
+
+    /**
+     * Constructs a new built-in menu attaching it to the options registrar
+     * passed.
+     *
+     * @param options The option registrar associated with this built-in
+     *                menu.
+     */
+
+    public OptionMenu( Options options ) {
+	this.options = options;
+	reader = new BufferedReader( new InputStreamReader( System.in ) );
+    }
+
+    /**
+     * Starts the built-in menu system.
+     */
+
+    public void startMenu() {
+	String command = "";
+	while ( !command.equals( "$" ) ) {
+	    System.out.print( MENU_PROMPT );
+	    try {
+		command = reader.readLine();
+	    }
+	    catch ( IOException e ) {
+		return;
+	    }
+	    boolean commandEntered = command != null && command.length() > 0;
+	    if ( command.equals( "?" ) ) {
+		System.err.println( "\t- Options Delimiter" );
+		System.err.println( "\t? Help" );
+		System.err.println( "\t= Run program and return to menu" );
+		System.err.println( "\t! Shell to Operating System" );
+		System.err.println( "\t$ Exit menu" );
+		System.err.println( "\t+ Additional options" );
+		System.err.println( "\t@<filename> Get options from file ["
+				    + options.getDefaultOptionFilename()
+				    + "]" );
+		System.err.println( "\t@@ Get options from file ["
+				    + options.getDefaultOptionFilename()
+				    + "]" );
+                System.err.println( "\t%<filename> Put options in file" );
+		System.err.println( "\t%% Put options in file ["
+				    + options.getDefaultOptionFilename()
+				    + "]" );
+                System.err.println( "\t. Quit" );
+	    }
+	    else if ( commandEntered &&
+		      ( command.substring( 0, 1 ).equals(
+					    FILE_READ_COMMAND_CHAR )
+		      || command.substring( 0, 1 ).equals(
+					    FILE_WRITE_COMMAND_CHAR )
+		      || command.substring( 0, 1 ).equals(
+                                            OPTION_COMMAND_CHAR )
+		      || command.substring( 0, 1 ).equals(
+                                            FILE_MODULE_COMMAND_CHAR ) ) ) {
+		options.process( command );
+	    }
+	    else if ( commandEntered &&
+		      command.substring( 0, 1 ).equals( SHELL_COMMAND_CHAR ) ) {
+
+	    }
+	    else if ( commandEntered &&
+		      command.substring( 0, 1 ).equals( RUN_COMMAND_CHAR ) ) {
+		try {
+		    SimpleProcess p
+			= new SimpleProcess( Runtime.getRuntime().exec( command.substring( 1 ) ) );
+		    System.err.println( "Exit status: " + p.waitFor() );
+		}
+		catch ( Exception e ) {
+		    System.err.println( "ritopt: An Error Occurred During Process Execution" );
+		    e.printStackTrace();
+		}
+		finally {
+		    System.out.println( "Press enter to continue..." );
+		    try {
+			reader.readLine();
+		    } catch ( IOException e ) { }
+		}
+	    }
+	    else {
+		System.err.println( "(Type ? for Help)" );
+	    }
+	}
+    }
+
+    /**
+     * This method is notified when the --menu option is specified.
+     *
+     * @param event    The event associated.
+     */
+
+    public void optionInvoked( OptionEvent event ) {
+	if ( event.getCommand().equals( "menu" ) ) {
+	    startMenu();
+	}
+    }
+} /** OptionMenu **/
diff --git a/src/java/gnu/dtools/ritopt/OptionModifiable.java b/src/java/gnu/dtools/ritopt/OptionModifiable.java
index bd09e49..0b6a0ed 100644
--- a/src/java/gnu/dtools/ritopt/OptionModifiable.java
+++ b/src/java/gnu/dtools/ritopt/OptionModifiable.java
@@ -1,48 +1,48 @@
-package gnu.dtools.ritopt;
-
-/**
- * OptionModifiable.java
- *
- * Version:
- *    $Id: OptionModifiable.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-/**
- * Implementors of this interface are capable of being registered and
- * processed. When an option is specified, its modify method is invoked.
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public interface OptionModifiable {
-
-   /**
-    * Modify an option based on a string representation.
-    *
-    * @param     value String representation of the object.
-    * @exception OptionModificationException Thrown if an error occurs
-    *                                  during modification of an option.
-    */
-
-    void modify( String value ) throws OptionModificationException;
-} /** OptionModifiable **/
+package gnu.dtools.ritopt;
+
+/**
+ * OptionModifiable.java
+ *
+ * Version:
+ *    $Id: OptionModifiable.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+/**
+ * Implementors of this interface are capable of being registered and
+ * processed. When an option is specified, its modify method is invoked.
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public interface OptionModifiable {
+
+   /**
+    * Modify an option based on a string representation.
+    *
+    * @param     value String representation of the object.
+    * @exception OptionModificationException Thrown if an error occurs
+    *                                  during modification of an option.
+    */
+
+    void modify( String value ) throws OptionModificationException;
+} /** OptionModifiable **/
diff --git a/src/java/gnu/dtools/ritopt/OptionModificationException.java b/src/java/gnu/dtools/ritopt/OptionModificationException.java
index 8c63248..33b9156 100644
--- a/src/java/gnu/dtools/ritopt/OptionModificationException.java
+++ b/src/java/gnu/dtools/ritopt/OptionModificationException.java
@@ -1,49 +1,49 @@
-package gnu.dtools.ritopt;
-
-/**
- * OptionModificationException.java
- *
- * Version:
- *    $Id: OptionModificationException.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-/**
- * Instances of this class are thrown if there is an error during modification
- * of an option's value.
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class OptionModificationException extends OptionException {
-
-    /**
-     * Construct an OptionModificationException.
-     *
-     * @param msg The exception message.
-     */
-
-    OptionModificationException( String msg ) {
-	super( msg );
-    }
-
-}
+package gnu.dtools.ritopt;
+
+/**
+ * OptionModificationException.java
+ *
+ * Version:
+ *    $Id: OptionModificationException.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+/**
+ * Instances of this class are thrown if there is an error during modification
+ * of an option's value.
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class OptionModificationException extends OptionException {
+
+    /**
+     * Construct an OptionModificationException.
+     *
+     * @param msg The exception message.
+     */
+
+    OptionModificationException( String msg ) {
+	super( msg );
+    }
+
+}
diff --git a/src/java/gnu/dtools/ritopt/OptionModule.java b/src/java/gnu/dtools/ritopt/OptionModule.java
index 56e7c00..e0323fc 100644
--- a/src/java/gnu/dtools/ritopt/OptionModule.java
+++ b/src/java/gnu/dtools/ritopt/OptionModule.java
@@ -1,450 +1,450 @@
-package gnu.dtools.ritopt;
-
-/**
- * OptionModule.java
- *
- * Version:
- *    $Id: OptionModule.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-import java.util.*;
-import java.io.*;
-
-/**
- * This class is used as a repository for options. The Options class maintains
- * an OptionModule repository for general options. The user may create option
- * modules so that their options can overlap and be categorized. Option
- * modules are invoked by specifying the option name delimited with square
- * brackets.<p>
- *
- * For example, suppose we are writing a program called ServerManager
- * that manages both an ftp and http server. One option that both a ftp
- * and http kernel might have in common is the number of seconds before
- * a request times out. Option modules are used to process two different
- * values with the same option name. The shell command below demonstrates
- * how two different modules are invoked.<p>
- * <pre>
- *  java ServerManager :http: --timeout=15 :ftp: --timeout=25
- * </pre>
- *
- * Refer to the tutorial for more information on how to use option modules.
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class OptionModule implements OptionRegistrar {
-
-    /**
-     * A repository of options registered with this module.
-     */
-
-    private java.util.HashMap options;
-
-    /**
-     * The name of this module.
-     */
-
-    private String name;
-
-    /**
-     * Returns whether this module is deprecated.
-     */
-
-    private boolean deprecated;
-
-    /**
-     * The default short option.
-     */
-
-    public static final char DEFAULT_SHORT_OPTION = '\0';
-
-    /**
-     * The default long option.
-     */
-
-    public static final String DEFAULT_LONG_OPTION = null;
-
-    /**
-     * The default description.
-     */
-
-    public static final String DEFAULT_DESCRIPTION = "No description given";
-
-    /**
-     * The default deprecation status.
-     */
-
-    public static final boolean DEFAULT_DEPRECATED = false;
-
-    /**
-     * The default module name.
-     */
-
-    public static final String DEFAULT_MODULE_NAME = "Special";
-
-    /**
-     * Constructs an OptionModule with the default name.
-     */
-
-    public OptionModule() {
-	this( DEFAULT_MODULE_NAME );
-    }
-
-    /**
-     * Constructs an OptionModule with the name passed.
-     *
-     * @param name  The name of the module.
-     */
-
-    public OptionModule( String name ) {
-	options = new java.util.HashMap();
-	this.name = name;
-	deprecated = false;
-    }
-
-    /**
-     * Register an option into the repository as a long option.
-     *
-     * @param longOption  The long option name.
-     * @param option      The option to register.
-     */
-
-    public void register( String longOption, Option option ) {
-	register( longOption, DEFAULT_SHORT_OPTION, option );
-    }
-
-    /**
-     * Register an option into the repository as a short option.
-     *
-     * @param shortOption The short option name.
-     * @param option      The option to register.
-     */
-
-    public void register( char shortOption, Option option ) {
-	register( DEFAULT_LONG_OPTION, shortOption, option );
-
-    }
-
-    /**
-     * Register an option into the repository both as a short and long option.
-     *
-     * @param longOption  The long option name.
-     * @param shortOption The short option name.
-     * @param option      The option to register.
-     */
-
-    public void register( String longOption, char shortOption,
-			  Option option ) {
-	register( longOption, shortOption, DEFAULT_DESCRIPTION, option );
-    }
-
-    /**
-     * Register an option into the repository both as a short and long option.
-     * Initialize its description with the description passed.
-     *
-     * @param longOption  The long option name.
-     * @param shortOption The short option name.
-     * @param description The description of the option.
-     * @param option      The option to register.
-     */
-
-    public void register( String longOption, char shortOption,
-			  String description, Option option ) {
-	register( longOption, shortOption, description, option,
-	      DEFAULT_DEPRECATED );
-    }
-
-    /**
-     * Register an option into the repository both as a short and long option.
-     * Initialize its description with the description passed.
-     *
-     * @param longOption  The long option name.
-     * @param shortOption The short option name.
-     * @param description The description of the option.
-     * @param option      The option to register.
-     * @param deprecated  A boolean indicating whether an option should
-     *                    be deprecated.
-     */
-
-    public void register( String longOption, char shortOption,
-			  String description, Option option,
-			  boolean deprecated ) {
-	if ( optionExists( option ) ) {
-	    throw new OptionRegistrationException( "Option Already Registered",
-						   option );
-	}
-	option.setLongOption( longOption );
-	option.setShortOption( shortOption );
-	option.setDeprecated( deprecated );
-	option.setDescription( description );
-	options.put( option.getHashKey(), option );
-    }
-
-    /**
-     * Returns whether the option exists in this module.
-     *
-     * @param option   The option to check for existance.
-     *
-     * @return A boolean value indicating whether the option passed exists.
-     */
-
-    public boolean optionExists( Option option ) {
-	return optionExists( option.getShortOption() ) ||
-	       optionExists( option.getLongOption() );
-    }
-
-    /**
-     * Returns whether the option referred by a short option exists in this
-     * module.
-     *
-     * @param shortOption   The option to check for existance.
-     *
-     * @return A boolean value indicating whether the option passed exists.
-     */
-
-    public boolean optionExists( char shortOption ) {
-	Collection col = options.values();
-	Iterator it = col.iterator();
-	while ( it.hasNext() ) {
-	    Option next = (Option)it.next();
-	    char c = next.getShortOption();
-	    if ( c != 0 && c == shortOption ) return true;
-	}
-	return false;
-    }
-
-    /**
-     * Returns whether the option referred by a long option exists in this
-     * module.
-     *
-     * @param longOption   The option to check for existance.
-     *
-     * @return A boolean value indicating whether the option passed exists.
-     */
-
-    public boolean optionExists( String longOption ) {
-	Collection col = options.values();
-	Iterator it = col.iterator();
-	while ( it.hasNext() ) {
-	    Option next = (Option)it.next();
-	    String s = next.getLongOption();
-	    if ( s != null && s.equals( longOption ) ) return true;
-	}
-	return false;
-    }
-
-    /**
-     * Return an iterator over the option repository contained in this module.
-     *
-     * @return An iterator over the repository.
-     */
-
-    public Iterator getOptionIterator() {
-	return options.values().iterator();
-    }
-
-    /**
-     * Returns the option referred by the long option passed.
-     *
-     * @param shortOption The option to retrieve.
-     *
-     * @return An option referred to by this module. null is returned
-     *         if it does not exist.
-     */
-
-    public Option getOption( char shortOption ) {
-	Option retval = null;
-	Collection col = options.values();
-	Iterator it = col.iterator();
-	while ( it.hasNext() ) {
-	    Option next = (Option)it.next();
-	    char c = next.getShortOption();
-	    if ( c != '\0' && c == shortOption ) retval = next;
-	}
-	return retval;
-    }
-
-    /**
-     * Returns the option referred by the long option passed.
-     *
-     * @param longOption The option to retrieve.
-     *
-     * @return An option referred to by this module. null is returned
-     *         if it does not exist.
-     */
-
-    public Option getOption( String longOption ) {
-	Option retval = null;
-	Collection col = options.values();
-	Iterator it = col.iterator();
-	while ( it.hasNext() ) {
-	    Option next = (Option)it.next();
-	    String s = next.getLongOption();
-	    if ( s != null && s.equals( longOption ) ) retval = next;
-	}
-	return retval;
-    }
-
-    /**
-     * Returns the help information as a String.
-     *
-     * @return The help information as a String.
-     */
-
-    public String getHelp() {
-	String retval = "";
-	Collection col = options.values();
-	Iterator it = col.iterator();
-	while ( it.hasNext() ) {
-	    Option next = (Option)it.next();
-	    retval += next.getHelp() + "\n";
-	}
-	return retval;
-    }
-
-    /**
-     * Writes the help information to a print stream.
-     *
-     * @param ps  The print stream to write to.
-     */
-
-    public void writeFileToPrintStream( PrintStream ps ) {
-	Collection col = options.values();
-	Iterator it = col.iterator();
-	ps.println( ":" + name + ":" );
-	while ( it.hasNext() ) {
-	    Option next = (Option)it.next();
-	    ps.println( next.getOptionFileLine() );
-	}
-    }
-
-    /**
-     * Returns whether this module is deprecated.
-     *
-     * @return A boolean value indicating whether this module is deprecated.
-     */
-
-    public boolean isDeprecated() {
-	return deprecated;
-    }
-
-    /**
-     * Sets whether this module is deprecated.
-     *
-     * @param deprecated The new status.
-     */
-
-    public void setDeprecated( boolean deprecated ) {
-	this.deprecated = deprecated;
-    }
-
-    /**
-     * Called by the OptionsProcessor when an option in the target module
-     * is invoked.
-     *
-     * @param shortOption The option to invoke.
-     * @param text        The text to pass to the modifier.
-     */
-
-    public void action( char shortOption, char text ) {
-	action( shortOption, "" + text );
-    }
-
-    /**
-     * Called by the OptionsProcessor when an option in the target module
-     * is invoked.
-     *
-     * @param longOption The option to invoke.
-     * @param text       The text to pass to the modifier.
-     */
-
-    public void action( String longOption, char text ) {
-	action( longOption, "" + text );
-    }
-
-    /**
-     * Called by the OptionsProcessor when an option in the target module
-     * is invoked.
-     *
-     * @param shortOption The option to invoke.
-     * @param text        The text to pass to the modifier.
-     */
-
-    public void action( char shortOption, String text ) {
-	Option op = getOption( shortOption );
-	if ( op == null )
-	    throw new OptionProcessingException( "Option -" + shortOption +
-						 " does not"
-						 + " exist in module '"
-						 + name + "'." );
-	op.setInvoked( true );
-	op.action();
-	op.modify( text );
-    }
-
-    /**
-     * Called by the OptionsProcessor when an option in the target module
-     * is invoked.
-     *
-     * @param longOption The option to invoke.
-     * @param text       The text to pass to the modifier.
-     */
-
-
-    public void action( String longOption, String text ) {
-	Option op = getOption( longOption );
-	if ( op == null )
-	    throw new OptionProcessingException( "Option --" + longOption +
-						 " does not"
-						 + " exist in module '"
-						 + name + "'." );
-	op.setInvoked( true );
-	op.action();
-	op.modify( text );
-    }
-
-    /**
-     * Set the name of this module.
-     *
-     * @param name   The new name.
-     */
-
-    public void setName( String name ) {
-	this.name = name;
-    }
-
-    /**
-     * Returns the name of this module.
-     *
-     * @return The name of this module.
-     */
-
-    public String getName() {
-	return name;
-    }
-
-} /** OptionModule **/
-
-
-
-
+package gnu.dtools.ritopt;
+
+/**
+ * OptionModule.java
+ *
+ * Version:
+ *    $Id: OptionModule.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+import java.util.*;
+import java.io.*;
+
+/**
+ * This class is used as a repository for options. The Options class maintains
+ * an OptionModule repository for general options. The user may create option
+ * modules so that their options can overlap and be categorized. Option
+ * modules are invoked by specifying the option name delimited with square
+ * brackets.<p>
+ *
+ * For example, suppose we are writing a program called ServerManager
+ * that manages both an ftp and http server. One option that both a ftp
+ * and http kernel might have in common is the number of seconds before
+ * a request times out. Option modules are used to process two different
+ * values with the same option name. The shell command below demonstrates
+ * how two different modules are invoked.<p>
+ * <pre>
+ *  java ServerManager :http: --timeout=15 :ftp: --timeout=25
+ * </pre>
+ *
+ * Refer to the tutorial for more information on how to use option modules.
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class OptionModule implements OptionRegistrar {
+
+    /**
+     * A repository of options registered with this module.
+     */
+
+    private java.util.HashMap options;
+
+    /**
+     * The name of this module.
+     */
+
+    private String name;
+
+    /**
+     * Returns whether this module is deprecated.
+     */
+
+    private boolean deprecated;
+
+    /**
+     * The default short option.
+     */
+
+    public static final char DEFAULT_SHORT_OPTION = '\0';
+
+    /**
+     * The default long option.
+     */
+
+    public static final String DEFAULT_LONG_OPTION = null;
+
+    /**
+     * The default description.
+     */
+
+    public static final String DEFAULT_DESCRIPTION = "No description given";
+
+    /**
+     * The default deprecation status.
+     */
+
+    public static final boolean DEFAULT_DEPRECATED = false;
+
+    /**
+     * The default module name.
+     */
+
+    public static final String DEFAULT_MODULE_NAME = "Special";
+
+    /**
+     * Constructs an OptionModule with the default name.
+     */
+
+    public OptionModule() {
+	this( DEFAULT_MODULE_NAME );
+    }
+
+    /**
+     * Constructs an OptionModule with the name passed.
+     *
+     * @param name  The name of the module.
+     */
+
+    public OptionModule( String name ) {
+	options = new java.util.HashMap();
+	this.name = name;
+	deprecated = false;
+    }
+
+    /**
+     * Register an option into the repository as a long option.
+     *
+     * @param longOption  The long option name.
+     * @param option      The option to register.
+     */
+
+    public void register( String longOption, Option option ) {
+	register( longOption, DEFAULT_SHORT_OPTION, option );
+    }
+
+    /**
+     * Register an option into the repository as a short option.
+     *
+     * @param shortOption The short option name.
+     * @param option      The option to register.
+     */
+
+    public void register( char shortOption, Option option ) {
+	register( DEFAULT_LONG_OPTION, shortOption, option );
+
+    }
+
+    /**
+     * Register an option into the repository both as a short and long option.
+     *
+     * @param longOption  The long option name.
+     * @param shortOption The short option name.
+     * @param option      The option to register.
+     */
+
+    public void register( String longOption, char shortOption,
+			  Option option ) {
+	register( longOption, shortOption, DEFAULT_DESCRIPTION, option );
+    }
+
+    /**
+     * Register an option into the repository both as a short and long option.
+     * Initialize its description with the description passed.
+     *
+     * @param longOption  The long option name.
+     * @param shortOption The short option name.
+     * @param description The description of the option.
+     * @param option      The option to register.
+     */
+
+    public void register( String longOption, char shortOption,
+			  String description, Option option ) {
+	register( longOption, shortOption, description, option,
+	      DEFAULT_DEPRECATED );
+    }
+
+    /**
+     * Register an option into the repository both as a short and long option.
+     * Initialize its description with the description passed.
+     *
+     * @param longOption  The long option name.
+     * @param shortOption The short option name.
+     * @param description The description of the option.
+     * @param option      The option to register.
+     * @param deprecated  A boolean indicating whether an option should
+     *                    be deprecated.
+     */
+
+    public void register( String longOption, char shortOption,
+			  String description, Option option,
+			  boolean deprecated ) {
+	if ( optionExists( option ) ) {
+	    throw new OptionRegistrationException( "Option Already Registered",
+						   option );
+	}
+	option.setLongOption( longOption );
+	option.setShortOption( shortOption );
+	option.setDeprecated( deprecated );
+	option.setDescription( description );
+	options.put( option.getHashKey(), option );
+    }
+
+    /**
+     * Returns whether the option exists in this module.
+     *
+     * @param option   The option to check for existance.
+     *
+     * @return A boolean value indicating whether the option passed exists.
+     */
+
+    public boolean optionExists( Option option ) {
+	return optionExists( option.getShortOption() ) ||
+	       optionExists( option.getLongOption() );
+    }
+
+    /**
+     * Returns whether the option referred by a short option exists in this
+     * module.
+     *
+     * @param shortOption   The option to check for existance.
+     *
+     * @return A boolean value indicating whether the option passed exists.
+     */
+
+    public boolean optionExists( char shortOption ) {
+	Collection col = options.values();
+	Iterator it = col.iterator();
+	while ( it.hasNext() ) {
+	    Option next = (Option)it.next();
+	    char c = next.getShortOption();
+	    if ( c != 0 && c == shortOption ) return true;
+	}
+	return false;
+    }
+
+    /**
+     * Returns whether the option referred by a long option exists in this
+     * module.
+     *
+     * @param longOption   The option to check for existance.
+     *
+     * @return A boolean value indicating whether the option passed exists.
+     */
+
+    public boolean optionExists( String longOption ) {
+	Collection col = options.values();
+	Iterator it = col.iterator();
+	while ( it.hasNext() ) {
+	    Option next = (Option)it.next();
+	    String s = next.getLongOption();
+	    if ( s != null && s.equals( longOption ) ) return true;
+	}
+	return false;
+    }
+
+    /**
+     * Return an iterator over the option repository contained in this module.
+     *
+     * @return An iterator over the repository.
+     */
+
+    public Iterator getOptionIterator() {
+	return options.values().iterator();
+    }
+
+    /**
+     * Returns the option referred by the long option passed.
+     *
+     * @param shortOption The option to retrieve.
+     *
+     * @return An option referred to by this module. null is returned
+     *         if it does not exist.
+     */
+
+    public Option getOption( char shortOption ) {
+	Option retval = null;
+	Collection col = options.values();
+	Iterator it = col.iterator();
+	while ( it.hasNext() ) {
+	    Option next = (Option)it.next();
+	    char c = next.getShortOption();
+	    if ( c != '\0' && c == shortOption ) retval = next;
+	}
+	return retval;
+    }
+
+    /**
+     * Returns the option referred by the long option passed.
+     *
+     * @param longOption The option to retrieve.
+     *
+     * @return An option referred to by this module. null is returned
+     *         if it does not exist.
+     */
+
+    public Option getOption( String longOption ) {
+	Option retval = null;
+	Collection col = options.values();
+	Iterator it = col.iterator();
+	while ( it.hasNext() ) {
+	    Option next = (Option)it.next();
+	    String s = next.getLongOption();
+	    if ( s != null && s.equals( longOption ) ) retval = next;
+	}
+	return retval;
+    }
+
+    /**
+     * Returns the help information as a String.
+     *
+     * @return The help information as a String.
+     */
+
+    public String getHelp() {
+	String retval = "";
+	Collection col = options.values();
+	Iterator it = col.iterator();
+	while ( it.hasNext() ) {
+	    Option next = (Option)it.next();
+	    retval += next.getHelp() + "\n";
+	}
+	return retval;
+    }
+
+    /**
+     * Writes the help information to a print stream.
+     *
+     * @param ps  The print stream to write to.
+     */
+
+    public void writeFileToPrintStream( PrintStream ps ) {
+	Collection col = options.values();
+	Iterator it = col.iterator();
+	ps.println( ":" + name + ":" );
+	while ( it.hasNext() ) {
+	    Option next = (Option)it.next();
+	    ps.println( next.getOptionFileLine() );
+	}
+    }
+
+    /**
+     * Returns whether this module is deprecated.
+     *
+     * @return A boolean value indicating whether this module is deprecated.
+     */
+
+    public boolean isDeprecated() {
+	return deprecated;
+    }
+
+    /**
+     * Sets whether this module is deprecated.
+     *
+     * @param deprecated The new status.
+     */
+
+    public void setDeprecated( boolean deprecated ) {
+	this.deprecated = deprecated;
+    }
+
+    /**
+     * Called by the OptionsProcessor when an option in the target module
+     * is invoked.
+     *
+     * @param shortOption The option to invoke.
+     * @param text        The text to pass to the modifier.
+     */
+
+    public void action( char shortOption, char text ) {
+	action( shortOption, "" + text );
+    }
+
+    /**
+     * Called by the OptionsProcessor when an option in the target module
+     * is invoked.
+     *
+     * @param longOption The option to invoke.
+     * @param text       The text to pass to the modifier.
+     */
+
+    public void action( String longOption, char text ) {
+	action( longOption, "" + text );
+    }
+
+    /**
+     * Called by the OptionsProcessor when an option in the target module
+     * is invoked.
+     *
+     * @param shortOption The option to invoke.
+     * @param text        The text to pass to the modifier.
+     */
+
+    public void action( char shortOption, String text ) {
+	Option op = getOption( shortOption );
+	if ( op == null )
+	    throw new OptionProcessingException( "Option -" + shortOption +
+						 " does not"
+						 + " exist in module '"
+						 + name + "'." );
+	op.setInvoked( true );
+	op.action();
+	op.modify( text );
+    }
+
+    /**
+     * Called by the OptionsProcessor when an option in the target module
+     * is invoked.
+     *
+     * @param longOption The option to invoke.
+     * @param text       The text to pass to the modifier.
+     */
+
+
+    public void action( String longOption, String text ) {
+	Option op = getOption( longOption );
+	if ( op == null )
+	    throw new OptionProcessingException( "Option --" + longOption +
+						 " does not"
+						 + " exist in module '"
+						 + name + "'." );
+	op.setInvoked( true );
+	op.action();
+	op.modify( text );
+    }
+
+    /**
+     * Set the name of this module.
+     *
+     * @param name   The new name.
+     */
+
+    public void setName( String name ) {
+	this.name = name;
+    }
+
+    /**
+     * Returns the name of this module.
+     *
+     * @return The name of this module.
+     */
+
+    public String getName() {
+	return name;
+    }
+
+} /** OptionModule **/
+
+
+
+
diff --git a/src/java/gnu/dtools/ritopt/OptionModuleRegistrar.java b/src/java/gnu/dtools/ritopt/OptionModuleRegistrar.java
index f77b0c1..00626f0 100644
--- a/src/java/gnu/dtools/ritopt/OptionModuleRegistrar.java
+++ b/src/java/gnu/dtools/ritopt/OptionModuleRegistrar.java
@@ -1,62 +1,62 @@
-package gnu.dtools.ritopt;
-
-/**
- * OptionModuleRegistrar.java
- *
- * Version:
- *   $Id: OptionModuleRegistrar.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-/**
- * Implementors are capable of registering option modules and storing them in a
- * repository. A parent object may pass its child a reference to an
- * OptionModuleRegistrar to preserve abstraction and constrain access to
- * registration. This may be preferred so that children may only
- * register their OptionModules without performing any administrating the
- * repository.<p>
- *
- * The Options class implements this interface. It is not necessary to refer
- * to instances as an OptionModuleRegistrar.<p>
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public interface OptionModuleRegistrar {
-
-    /**
-     * Register an option module based on its name.
-     *
-     * @param module The option module to register.
-     */
-
-    public void register( OptionModule module );
-
-    /**
-     * Register an option module and associate it with the name passed.
-     *
-     * @param name   The name associated with the option module.
-     * @param module The option module to register.
-     */
-
-    public void register( String name, OptionModule module );
-}
+package gnu.dtools.ritopt;
+
+/**
+ * OptionModuleRegistrar.java
+ *
+ * Version:
+ *   $Id: OptionModuleRegistrar.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+/**
+ * Implementors are capable of registering option modules and storing them in a
+ * repository. A parent object may pass its child a reference to an
+ * OptionModuleRegistrar to preserve abstraction and constrain access to
+ * registration. This may be preferred so that children may only
+ * register their OptionModules without performing any administrating the
+ * repository.<p>
+ *
+ * The Options class implements this interface. It is not necessary to refer
+ * to instances as an OptionModuleRegistrar.<p>
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public interface OptionModuleRegistrar {
+
+    /**
+     * Register an option module based on its name.
+     *
+     * @param module The option module to register.
+     */
+
+    public void register( OptionModule module );
+
+    /**
+     * Register an option module and associate it with the name passed.
+     *
+     * @param name   The name associated with the option module.
+     * @param module The option module to register.
+     */
+
+    public void register( String name, OptionModule module );
+}
diff --git a/src/java/gnu/dtools/ritopt/OptionNotifier.java b/src/java/gnu/dtools/ritopt/OptionNotifier.java
index 27e241c..da9d457 100644
--- a/src/java/gnu/dtools/ritopt/OptionNotifier.java
+++ b/src/java/gnu/dtools/ritopt/OptionNotifier.java
@@ -1,57 +1,57 @@
-package gnu.dtools.ritopt;
-
-/**
- * If an object is able notify and maintain a repository of listeners, it
- * should implement this interface even though it is not required. This
- * interface expects listener registration and event configuration behavior.
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public interface OptionNotifier {
-
-    /**
-     * Adds an OptionListener to the notification list.
-     *
-     * @param listener The OptionListener to add.
-     */
-
-    public void addOptionListener( OptionListener listener );
-
-    /**
-     * Removes an OptionListener from the notification list.
-     *
-     * @param listener The OptionListener to remove.
-     */
-
-    public void removeOptionListener( OptionListener listener );
-
-    /**
-     * Sets the command sent when an option is invoked.
-     *
-     * @param command  The command to send.
-     */
-
-    public void setOptionCommand( String command );
-
-}
+package gnu.dtools.ritopt;
+
+/**
+ * If an object is able notify and maintain a repository of listeners, it
+ * should implement this interface even though it is not required. This
+ * interface expects listener registration and event configuration behavior.
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public interface OptionNotifier {
+
+    /**
+     * Adds an OptionListener to the notification list.
+     *
+     * @param listener The OptionListener to add.
+     */
+
+    public void addOptionListener( OptionListener listener );
+
+    /**
+     * Removes an OptionListener from the notification list.
+     *
+     * @param listener The OptionListener to remove.
+     */
+
+    public void removeOptionListener( OptionListener listener );
+
+    /**
+     * Sets the command sent when an option is invoked.
+     *
+     * @param command  The command to send.
+     */
+
+    public void setOptionCommand( String command );
+
+}
diff --git a/src/java/gnu/dtools/ritopt/OptionProcessingException.java b/src/java/gnu/dtools/ritopt/OptionProcessingException.java
index 771606c..32bb334 100644
--- a/src/java/gnu/dtools/ritopt/OptionProcessingException.java
+++ b/src/java/gnu/dtools/ritopt/OptionProcessingException.java
@@ -1,49 +1,49 @@
-package gnu.dtools.ritopt;
-
-/**
- * OptionProcessingException.java
- *
- * Version:
- *    $Id: OptionProcessingException.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-/**
- * Instances of this exception are thrown when an error occurs when processing
- * the command line.
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class OptionProcessingException extends OptionException {
-
-    /**
-     * Construct an OptionProcessingException.
-     *
-     * @param msg The exception message.
-     */
-
-
-    OptionProcessingException( String msg ) {
-	super( msg );
-    }
-}
+package gnu.dtools.ritopt;
+
+/**
+ * OptionProcessingException.java
+ *
+ * Version:
+ *    $Id: OptionProcessingException.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+/**
+ * Instances of this exception are thrown when an error occurs when processing
+ * the command line.
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class OptionProcessingException extends OptionException {
+
+    /**
+     * Construct an OptionProcessingException.
+     *
+     * @param msg The exception message.
+     */
+
+
+    OptionProcessingException( String msg ) {
+	super( msg );
+    }
+}
diff --git a/src/java/gnu/dtools/ritopt/OptionRegistrar.java b/src/java/gnu/dtools/ritopt/OptionRegistrar.java
index f9be341..6eda1ff 100644
--- a/src/java/gnu/dtools/ritopt/OptionRegistrar.java
+++ b/src/java/gnu/dtools/ritopt/OptionRegistrar.java
@@ -1,98 +1,98 @@
-package gnu.dtools.ritopt;
-
-/**
- * Implementors are capable of registering options and storing them in a
- * repository. A parent object may pass its child a reference to an
- * OptionRegistrar to preserve abstraction and restrict access to
- * registration. This may be preferred so that children may only
- * register their options without performing any administrating the
- * repository.
- * <p>
- *
- * The Options and OptionModule classes implement this interface. It is not
- * necessary to refer to instances as an OptionRegistrar.<p>
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public interface OptionRegistrar {
-
-    /**
-     * Register an option into the repository as a long option.
-     *
-     * @param longName   The long option name.
-     * @param option     The option to register.
-     */
-
-    public void register( String longName, Option option );
-
-    /**
-     * Register an option into the repository as a short option.
-     *
-     * @param shortName  The short option name.
-     * @param option     The option to register.
-     */
-
-    public void register( char shortName, Option option );
-
-
-    /**
-     * Register an option into the repository both as a short and long option.
-     *
-     * @param longOption  The long option name.
-     * @param shortOption The short option name.
-     * @param option      The option to register.
-     */
-
-    public void register( String longOption, char shortOption,
-			  Option option );
-
-    /**
-     * Register an option into the repository both as a short and long option.
-     * Initialize its description with the description passed.
-     *
-     * @param longOption  The long option name.
-     * @param shortOption The short option name.
-     * @param description The description of the option.
-     * @param option      The option to register.
-     */
-
-    public void register( String longOption, char shortOption,
-			  String description, Option option );
-
-    /**
-     * Register an option into the repository both as a short and long option.
-     * Initialize its description with the description passed.
-     *
-     * @param longOption  The long option name.
-     * @param shortOption The short option name.
-     * @param description The description of the option.
-     * @param option      The option to register.
-     * @param deprecated  A boolean indicating whether an option should
-     *                    be deprecated.
-     */
-
-    public void register( String longOption, char shortOption,
-			  String description, Option option,
-			  boolean deprecated );
-}
+package gnu.dtools.ritopt;
+
+/**
+ * Implementors are capable of registering options and storing them in a
+ * repository. A parent object may pass its child a reference to an
+ * OptionRegistrar to preserve abstraction and restrict access to
+ * registration. This may be preferred so that children may only
+ * register their options without performing any administrating the
+ * repository.
+ * <p>
+ *
+ * The Options and OptionModule classes implement this interface. It is not
+ * necessary to refer to instances as an OptionRegistrar.<p>
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public interface OptionRegistrar {
+
+    /**
+     * Register an option into the repository as a long option.
+     *
+     * @param longName   The long option name.
+     * @param option     The option to register.
+     */
+
+    public void register( String longName, Option option );
+
+    /**
+     * Register an option into the repository as a short option.
+     *
+     * @param shortName  The short option name.
+     * @param option     The option to register.
+     */
+
+    public void register( char shortName, Option option );
+
+
+    /**
+     * Register an option into the repository both as a short and long option.
+     *
+     * @param longOption  The long option name.
+     * @param shortOption The short option name.
+     * @param option      The option to register.
+     */
+
+    public void register( String longOption, char shortOption,
+			  Option option );
+
+    /**
+     * Register an option into the repository both as a short and long option.
+     * Initialize its description with the description passed.
+     *
+     * @param longOption  The long option name.
+     * @param shortOption The short option name.
+     * @param description The description of the option.
+     * @param option      The option to register.
+     */
+
+    public void register( String longOption, char shortOption,
+			  String description, Option option );
+
+    /**
+     * Register an option into the repository both as a short and long option.
+     * Initialize its description with the description passed.
+     *
+     * @param longOption  The long option name.
+     * @param shortOption The short option name.
+     * @param description The description of the option.
+     * @param option      The option to register.
+     * @param deprecated  A boolean indicating whether an option should
+     *                    be deprecated.
+     */
+
+    public void register( String longOption, char shortOption,
+			  String description, Option option,
+			  boolean deprecated );
+}
diff --git a/src/java/gnu/dtools/ritopt/OptionRegistrationException.java b/src/java/gnu/dtools/ritopt/OptionRegistrationException.java
index 9105293..35ae156 100644
--- a/src/java/gnu/dtools/ritopt/OptionRegistrationException.java
+++ b/src/java/gnu/dtools/ritopt/OptionRegistrationException.java
@@ -1,78 +1,78 @@
-package gnu.dtools.ritopt;
-
-/**
- * OptionRegistrationException.java
- *
- * Version:
- *   $Id: OptionRegistrationException.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-/**
- * This exception indicates that an error has occurred during registration
- * of an option, registrar, or module.
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class OptionRegistrationException extends OptionException {
-
-    /**
-     * The target option associated with the registration failure.
-     */
-
-    private Option target;
-
-    /**
-     * Construct an OptionRegistrationException.
-     *
-     * @param msg The exception message.
-     */
-
-
-    public OptionRegistrationException( String msg ) {
-	super( msg );
-    }
-
-    /**
-     * Construct an OptionRegisrationException and initialize its members
-     * with the message and target passed.
-     *
-     * @param msg     An exception message.
-     * @param target  The target option that caused the registration failure.
-     */
-
-    public OptionRegistrationException( String msg, Option target ) {
-	super( msg );
-	this.target = target;
-    }
-
-    /**
-     * Returns the target option associated with the registration failure.
-     *
-     * @return The target option.
-     */
-
-    public Option getTarget() {
-	return target;
-    }
-
-
-}
+package gnu.dtools.ritopt;
+
+/**
+ * OptionRegistrationException.java
+ *
+ * Version:
+ *   $Id: OptionRegistrationException.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+/**
+ * This exception indicates that an error has occurred during registration
+ * of an option, registrar, or module.
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class OptionRegistrationException extends OptionException {
+
+    /**
+     * The target option associated with the registration failure.
+     */
+
+    private Option target;
+
+    /**
+     * Construct an OptionRegistrationException.
+     *
+     * @param msg The exception message.
+     */
+
+
+    public OptionRegistrationException( String msg ) {
+	super( msg );
+    }
+
+    /**
+     * Construct an OptionRegisrationException and initialize its members
+     * with the message and target passed.
+     *
+     * @param msg     An exception message.
+     * @param target  The target option that caused the registration failure.
+     */
+
+    public OptionRegistrationException( String msg, Option target ) {
+	super( msg );
+	this.target = target;
+    }
+
+    /**
+     * Returns the target option associated with the registration failure.
+     *
+     * @return The target option.
+     */
+
+    public Option getTarget() {
+	return target;
+    }
+
+
+}
diff --git a/src/java/gnu/dtools/ritopt/Options.java b/src/java/gnu/dtools/ritopt/Options.java
index bcc5b69..8ec5113 100644
--- a/src/java/gnu/dtools/ritopt/Options.java
+++ b/src/java/gnu/dtools/ritopt/Options.java
@@ -1,872 +1,872 @@
-package gnu.dtools.ritopt;
-
-/**
- * Options.java
- *
- * Version:
- *    $Id: Options.java,v 1.5 2005/07/30 14:48:59 mortenalver Exp $
-
- */
-
-import java.util.*;
-import java.io.*;
-import net.sf.jabref.*;
-
-/**
- * This class functions as a repository for options and their modules. It
- * facilitates registration of options and modules, as well as processing of
- * arguments.<p>
- *
- * Information such as help, usage, and versions are displayed
- * when the respective --help and --version options are specified.
- * The --menu option will invoke the built-in menu.<p>
- *
- * In the example below, the program processes three simple options.
- *
- * <pre>
- * public class AboutMe {
- *
- *    private static StringOption name = new StringOption( "Ryan" );
- *    private static IntOption age = new IntOption( 19 );
- *    private static DoubleOption bankBalance = new DoubleOption( 15.15 );
- *
- *    public static void main( String args[] ) {
- *       Options repo = new Options( "java AboutMe" );
- *       repo.register( "name", 'n', name, "The person's name." );
- *       repo.register( "age", 'a', age, "The person's age." );
- *       repo.register( "balance", 'b', "The person's bank balance.",
- *                       bankBalance );
- *       repo.process( args );
-g *       System.err.println( "" + name + ", age " + age + " has a " +
- *                           " bank balance of " + bankBalance + "." );
- *    }
- * }
- * </pre>
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
- *
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class Options implements OptionRegistrar, OptionModuleRegistrar,
-                                OptionListener {
-
-    /**
-     * The default verbosity.
-     */
-
-    public static final int DEFAULT_VERBOSITY = 3;
-
-    /**
-     * This boolean defines whether options are deprecated by default.
-     */
-
-    public static final boolean DEFAULT_DEPRECATED = false;
-
-    /**
-     * The default reason for deprecation.
-     */
-
-    public static final String DEFAULT_REASON = "No reason given.";
-
-    /**
-     * The default general module name.
-     */
-
-    public static final String DEFAULT_GENERAL_MODULE_NAME = "General";
-
-    /**
-     * This boolean defines whether usage should be displayed.
-     */
-
-    public static final boolean DEFAULT_DISPLAY_USAGE = false; // Mod. Morten A.
-
-    /**
-     * This boolean defines whether the menu should be used.
-     */
-
-    public static final boolean DEFAULT_USE_MENU = false; // Mod. Morten A.
-
-    /**
-     * The default program name that is display in the usage.
-     */
-
-    public static final String DEFAULT_PROGRAM_NAME = "java program";
-
-    /**
-     * The default option file.
-     */
-
-    public static final String DEFAULT_OPTION_FILENAME = "default.opt";
-
-    /**
-     * The current verbosity.
-     */
-
-    private int verbosity;
-
-    /**
-     * The program to display in the usage.
-     */
-
-    private String usageProgram;
-
-    /**
-     * The version to display in the usage.
-     */
-
-    private String version;
-
-    /**
-     * The default option filename if an option file is not specified.
-     */
-
-    private String defaultOptionFilename;
-
-    /**
-     * This flag defines whether to display usage when help is displayed.
-     */
-
-    private boolean displayUsage;
-
-    /**
-     * This boolean defines whether the menu should be used.
-     */
-
-    private boolean useMenu;
-
-    /**
-     * When this flag is true, debugging information is displayed.
-     */
-
-    private boolean debugFlag;
-
-    /**
-     * The current module being processed.
-     */
-
-    private OptionModule currentModule;
-
-    /**
-     * The general option module.
-     */
-
-    private OptionModule generalModule;
-
-    /**
-     * A map of option modules.
-     */
-
-    private java.util.HashMap modules;
-
-    /**
-     * The help method is invoked when this option is invoked.
-     */
-
-    private NotifyOption helpOption;
-
-    /**
-     * The built-in menu system is invoked when this option is invoked.
-     */
-
-    private NotifyOption menuOption;
-
-    /**
-     * Version information is displayed when this option is specified.
-     */
-
-    private NotifyOption versionOption;
-
-    /**
-     * An instance of the built-in menu.
-     */
-
-    private OptionMenu menu;
-
-    /**
-     * Create an option repository.
-     */
-
-    public Options() {
-        this( DEFAULT_PROGRAM_NAME );
-    }
-
-    /**
-     * Create an option repository and associated it with a program name.
-     *
-     * @param programName A program name like "java Balloons".
-     */
-
-    public Options( String programName ) {
-        verbosity = DEFAULT_VERBOSITY;
-        displayUsage = DEFAULT_DISPLAY_USAGE;
-        useMenu = DEFAULT_USE_MENU;
-        defaultOptionFilename = DEFAULT_OPTION_FILENAME;
-        usageProgram = programName;
-        modules = new HashMap();
-        menu = new OptionMenu( this );
-        helpOption = new NotifyOption( this, "help", "" );
-        versionOption = new NotifyOption( this, "version", "" );
-        version = "Version 1.0";
-        menuOption = new NotifyOption( menu, "menu", "" );
-        generalModule = new OptionModule( DEFAULT_GENERAL_MODULE_NAME );
-        currentModule = generalModule;
-
-        // Mod. Morten A. ------------------------------------------------
-        register( "version", 'v',
-                  "Displays version information.", versionOption );
-        /*register( "help", 'h', "Displays help for each option.", helpOption );
-        register( "menu", 'm', "Displays the built-in interactive menu.",
-                  menuOption );*/
-        // End mod. Morten A. ------------------------------------------------
-    }
-
-    /**
-     * Returns the help information as a string.
-     *
-     * @return The help information.
-     */
-
-    public String getHelp() {
-        String retval = (displayUsage ? getUsage() + "\n\n" : "" ) +
-            // Mod. Morten A.
-            //"Use --menu to invoke the interactive built-in menu.\n\n" +
-            Option.getHelpHeader() + "\n\n" + generalModule.getHelp();
-        Iterator it = modules.values().iterator();
-        while ( it.hasNext() ) {
-            OptionModule module = (OptionModule)it.next();
-            retval += "\n\nOption Listing for " + module.getName() + "\n";
-            retval += module.getHelp() + "\n";
-        }
-        return retval;
-    }
-
-    /**
-     * Returns usage information of this program.
-     *
-     * @return The usage information.
-     */
-
-    public String getUsage() {
-        return getUsageProgram()
-            + " @optionfile :module: OPTIONS ... :module: OPTIONS";
-    }
-
-    /**
-     * Returns the program name displayed in the usage.
-     *
-     * @param The program name.
-     */
-
-    public String getUsageProgram() {
-        return usageProgram;
-    }
-
-    /**
-     * Returns the version of the program.
-     *
-     * @param The version.
-     */
-
-    public String getVersion() {
-        return version;
-    }
-
-    /**
-     * Returns the option filename to load or write to if one is not
-     * specified.
-     *
-     * @return The default option filename.
-     */
-
-    public String getDefaultOptionFilename() {
-        return defaultOptionFilename;
-    }
-
-    /**
-     * Returns whether debugging information should be displayed.
-     *
-     * @return A boolean indicating whether to display help information.
-     */
-
-    public boolean getDebugFlag() {
-        return debugFlag;
-    }
-
-    /**
-     * Returns whether the help information should display usage.
-     *
-     * @return A boolean indicating whether help should display usage.
-     */
-
-    public boolean shouldDisplayUsage() {
-        return displayUsage;
-    }
-
-    /**
-     * Returns whether the built-in menu system can be invoked.
-     *
-     * @return A boolean indicating whether the build-in menu system
-     *         can be invoked.
-     */
-
-    public boolean shouldUseMenu() {
-        return useMenu;
-    }
-
-    /**
-     * Sets whether usage can be displayed.
-     *
-     * @param b     A boolean value indicating that usage can be displayed.
-     */
-
-    public void setDisplayUsage( boolean b ) {
-        displayUsage = b;
-    }
-
-    /**
-     * Sets whether the built-in menu system can be used.
-     *
-     * @param b      A boolean value indicating whether the built-in menu
-     *               system can be used.
-     */
-
-    public void setUseMenu( boolean b ) {
-        useMenu = b;
-    }
-
-    /**
-     * Sets the program to display when the usage is displayed.
-     *
-     * @param program The program displayed during usage.
-     */
-
-    public void setUsageProgram( String program ) {
-        usageProgram = program;
-    }
-
-    /**
-     * Sets the version of the program.
-     *
-     * @param version The version.
-     */
-
-    public void setVersion( String version ) {
-        this.version = version;
-    }
-
-    /**
-     * Sets the option file to use when an option file is not specified.
-     *
-     * @param fn      The filename of the default option file.
-     */
-
-    public void setDefaultOptionFilename( String fn ) {
-        defaultOptionFilename = fn;
-    }
-
-    /**
-     * Sets the debugging flag.
-     *
-     * @param flag    The value to set the debugging flag.
-
-    public void setDebugFlag( boolean flag ) {
-        debugFlag = flag;
-    }
-
-    /**
-     * Displays the program's help which includes a description of each
-     * option. The usage is display if the usage flag is set to true.
-     */
-
-    public void displayHelp() {
-        System.err.println( getHelp() );
-    }
-
-    /**
-     * Displays the version of the program.
-     */
-
-    public void displayVersion() {
-        System.err.println( getVersion() +" (build " +Globals.BUILD +")");
-    }
-
-    /**
-     * Register an option into the repository as a long option.
-     *
-     * @param longOption  The long option name.
-     * @param option      The option to register.
-     */
-
-    public void register( String longOption, Option option ) {
-        generalModule.register( longOption, option );
-    }
-
-    /**
-     * Register an option into the repository as a short option.
-     *
-     * @param shortOption The short option name.
-     * @param option      The option to register.
-     */
-
-    public void register( char shortOption, Option option ) {
-        generalModule.register( shortOption, option );
-    }
-
-    /**
-     * Register an option into the repository both as a short and long option.
-     *
-     * @param longOption  The long option name.
-     * @param shortOption The short option name.
-     * @param option      The option to register.
-     */
-
-    public void register( String longOption, char shortOption,
-                          Option option ) {
-        generalModule.register( longOption, shortOption, option );
-    }
-
-    /**
-     * Register an option into the repository both as a short and long option.
-     * Initialize its description with the description passed.
-     *
-     * @param longOption  The long option name.
-     * @param shortOption The short option name.
-     * @param description The description of the option.
-     * @param option      The option to register.
-     */
-
-    public void register( String longOption, char shortOption,
-                          String description, Option option ) {
-        generalModule.register( longOption, shortOption, description, option );
-    }
-
-    /**
-     * Register an option into the repository both as a short and long option.
-     * Initialize its description with the description passed.
-     *
-     * @param longOption  The long option name.
-     * @param shortOption The short option name.
-     * @param description The description of the option.
-     * @param option      The option to register.
-     * @param deprecated  A boolean indicating whether an option should
-     *                    be deprecated.
-     */
-
-    public void register( String longOption, char shortOption,
-                          String description, Option option,
-                          boolean deprecated ) {
-        generalModule.register( longOption, shortOption, description, option,
-                                deprecated );
-    }
-
-    /**
-     * Register an option module based on its name.
-     *
-     * @param module The option module to register.
-     */
-
-    public void register( OptionModule module ) {
-        register( module.getName(), module );
-    }
-
-    /**
-     * Register an option module and associate it with the name passed.
-     *
-     * @param name   The name associated with the option module.
-     * @param module The option module to register.
-     */
-
-    public void register( String name, OptionModule module ) {
-        modules.put( name.toLowerCase(), module );
-    }
-
-    /**
-     * Process a string of values representing the invoked options. After
-     * all the options are processed, any leftover arguments are returned.
-     *
-     * @param args The arguments to process.
-     *
-     * @return The leftover arguments.
-     */
-
-    public String[] process( String args[] )
-    {
-        String []retval = new String[0];
-        try {
-            retval = processOptions( args );
-        }
-        catch ( OptionException e ) {
-            System.err.println( "Error: " + e.getMessage() );
-        }
-        /**
-        catch ( Exception e ) {
-            System.err.println( "Error: Unexpected Error in ritopt Processing." +
-                                "Check syntax." );
-                                }**/
-        return retval;
-    }
-
-    /**
-     * Retrieves an option module based on the name passed.
-     *
-     * @param name The name referring to the option module.
-     *
-     * @return The option module. Null is returned if the module does not
-     *         exist.
-     */
-
-    public OptionModule getModule( String name ) {
-        return (OptionModule)modules.get( name.toLowerCase() );
-    }
-
-    /**
-     * Returns a boolean indicating whether an option module exists.
-     *
-     * @param name The name referring to the option module.
-     *
-     * @return A boolean value indicating whether the module exists.
-     */
-
-    public boolean moduleExists( String name ) {
-        return getModule( name ) != null;
-    }
-
-    /**
-     * Receives NotifyOption events. If the event command equals "help"
-     * or "version", the appropriate display methods are invoked.
-     *
-     * @param event         The event object containing information about the
-     *                      invocation.
-     */
-
-    public void optionInvoked( OptionEvent event ) {
-        if ( event.getCommand().equals( "help" ) ) {
-            displayHelp();
-        }
-        else if ( event.getCommand().equals( "version" ) ) {
-            displayVersion();
-        }
-    }
-
-    /**
-     * Process a string representing the invoked options. This string
-     * gets split according to how they would be split when passed to
-     * a main method. The split array of options gets passed to a
-     * private method for processing. After all the options are processed,
-     * any leftover arguments are returned.
-     *
-     * @param str The arguments to process.
-     *
-     * @return The leftover arguments.
-     */
-
-    public String[] process( String str ) {
-        return process( split( str ) );
-    }
-
-    /**
-     * Splits a string representing command line arguments into several
-     * strings.
-     *
-     * @param split   The string to split.
-     *
-     * @return  The splitted string.
-     */
-
-    public String[] split( String str ) {
-        StringBuffer buf = new StringBuffer( str.length() );
-        java.util.List l = new java.util.ArrayList();
-        int scnt = Utility.count( str, '"' );
-        boolean q = false;
-        if ( ((double)scnt) / 2.0 != (double)(scnt / 2) ) {
-            throw new OptionProcessingException( "Expecting an end quote." );
-        }
-        for ( int n = 0; n < str.length(); n++ ) {
-            if ( str.charAt( n ) == '"' ) {
-                q = !q;
-            }
-            else if ( str.charAt( n ) == ' ' && !q ) {
-                l.add( buf.toString() );
-                buf = new StringBuffer( str.length() );
-            }
-            else {
-                buf.append( str.charAt( n ) );
-            }
-        }
-        if ( buf.length() != 0 ) {
-            l.add( buf.toString() );
-        }
-        Iterator it = l.iterator();
-        String retval[] = new String[ l.size() ];
-        int n = 0;
-        while ( it.hasNext() ) {
-            retval[ n++ ] = (String)it.next();
-        }
-        return retval;
-    }
-
-    /**
-     * Writes all options and their modules out to an options file.
-     *
-     * @param filename  The options filename to write.
-     */
-
-    public void writeOptionFile( String filename ) {
-        BufferedOutputStream writer = null;
-        String line = null;
-        Iterator it = null;
-        currentModule = generalModule;
-        try {
-            writer =
-                new BufferedOutputStream( new FileOutputStream( filename ) );
-            PrintStream ps = new PrintStream( writer );
-            generalModule.writeFileToPrintStream( ps );
-            it = modules.values().iterator();
-            while ( it.hasNext() ) {
-                OptionModule module = (OptionModule)it.next();
-                module.writeFileToPrintStream( ps );
-            }
-        }
-        catch ( IOException e ) {
-            throw new OptionProcessingException( e.getMessage() );
-        }
-        finally {
-            try {
-                if ( writer != null )
-                    writer.close();
-            }
-            catch( IOException e ) {
-                throw new OptionProcessingException( e.getMessage() );
-            }
-        }
-    }
-
-    /**
-     * Loads all options and their modules from an options file.
-     *
-     * @param filename  The options filename to write.
-     */
-
-    public void loadOptionFile( String filename ) {
-        BufferedReader reader = null;
-        String line = null;
-        currentModule = generalModule;
-        try {
-            reader = new BufferedReader( new FileReader( filename ) );
-            while ( ( line = reader.readLine() ) != null ) {
-                line = Utility.stripComments( line, '\"', ';' );
-                process( line );
-            }
-        }
-        catch ( IOException e ) {
-            throw new OptionProcessingException( e.getMessage() );
-        }
-        finally {
-            try {
-                if ( reader != null )
-                    reader.close();
-            }
-            catch( IOException e ) {
-                throw new OptionProcessingException( e.getMessage() );
-            }
-        }
-    }
-
-    /**
-     * Processes an array of strings representing command line arguments.
-     *
-     * @param  The arguments to process.
-     *
-     * @return The leftover arguments.
-     */
-
-    private String[] processOptions( String args[] ) {
-        String retval[] = null;
-        String moduleName = "general";
-        String optionFile = "";
-        char shortOption = '\0';
-        String longOption = "";
-        for ( int n = 0; n < args.length && retval == null; n++ ) {
-            boolean moduleInvoked = false;
-            boolean shortOptionInvoked = false;
-            boolean longOptionInvoked = false;
-            boolean readOptionFileInvoked = false;
-            boolean writeOptionFileInvoked = false;
-            if ( args[ n ].length() >= 1 ) {
-                char fc = args[ n ].charAt( 0 );
-                moduleInvoked = fc == ':';
-                readOptionFileInvoked = fc == '@';
-                writeOptionFileInvoked = fc == '%';
-            }
-            if ( args[ n ].length() >= 2 ) {
-                String s = args[ n ].substring( 0, 2 );
-                shortOptionInvoked = ( !s.equals( "--" ) &&
-                           s.charAt( 0 ) == '-' );
-                longOptionInvoked = ( s.equals( "--" ) );
-            }
-            if ( debugFlag ) {
-                System.err.println( "Short Option: " + shortOptionInvoked );
-                System.err.println( "Long Option: " + longOptionInvoked );
-                System.err.println( "Module: " + moduleInvoked );
-                System.err.println( "Load Option File: " +
-                                    readOptionFileInvoked );
-                System.err.println( "Write Option File: "
-                                    + writeOptionFileInvoked );
-            }
-            if ( moduleInvoked ) {
-                if (  args[ n ].charAt( args[ n ].length() - 1 ) != ':' ) {
-                    System.err.println( args[ n ] );
-                    throw new
-                        OptionProcessingException(
-                                                  "Module arguments must start"
-                                                  + " with : and end with :."
-                                                  );
-                }
-                else {
-                    moduleName = args[n].substring( 1,
-                                                    args[n].length() - 1
-                                                    ).toLowerCase();
-                    if ( moduleName.length() == 0
-                         || moduleName.equals( "general" ) ) {
-                        moduleName = "general";
-                        currentModule = generalModule;
-                    }
-                    else {
-                        currentModule = getModule( moduleName );
-                    }
-                    if ( currentModule == null )
-                        throw new OptionProcessingException( "Module '" +
-                                                             moduleName +
-                                                         "' does not exist." );
-                    if ( debugFlag ) {
-                        System.err.println( "Module: " + moduleName );
-                    }
-                }
-                moduleInvoked = false;
-            }
-            else if ( readOptionFileInvoked ) {
-                optionFile = Utility.trim( args[ n ].substring( 1 ) );
-                if ( optionFile.equals( "@" )
-                     || optionFile.length() == 0 )
-                    optionFile = defaultOptionFilename;
-                if ( debugFlag ) {
-                    System.err.println( "Option file: '" + optionFile + "'." );
-                }
-                loadOptionFile( optionFile );
-            }
-            else if ( shortOptionInvoked ) {
-                shortOption = args[ n ].charAt( 1 );
-                if ( !Utility.isAlphaNumeric( shortOption ) ) {
-                    throw new OptionProcessingException(
-                      "A short option must be alphanumeric. -" + shortOption
-                      + " is not acceptable." );
-                }
-                if ( debugFlag ) {
-                    System.err.println( "Short option text: " + shortOption );
-                }
-                char delim = ( args[ n ].length() >= 3 ) ?
-                    args[ n ].charAt( 2 ) : '\0';
-                if ( delim == '+' || delim == '-' ) {
-                    currentModule.action( shortOption, delim );
-                }
-                else if ( delim == '=' ) {
-                    currentModule.action( shortOption,
-                                          args[ n ].substring( 3 ) );
-                }
-                else if ( delim == '\0' ) {
-                    String dtext = "+";
-                    char dpeek = '\0';
-                    if ( n < args.length - 1 ) {
-                        dpeek = args[ n + 1 ].charAt( 0 );
-                        if ( !Utility.contains( args[ n + 1 ].charAt( 0 ),
-                                                "-[@" ) ) {
-                            dtext = args[ n + 1 ];
-                            n++;
-                        }
-                    }
-                    currentModule.action( shortOption, dtext );
-                }
-                else if ( Utility.isAlphaNumeric( delim ) ) {
-                    for ( int j = 1; j < args[ n ].length(); j++ ) {
-                        if ( Utility.isAlphaNumeric( args[ n ].charAt( j ) ) ) {
-                            currentModule.action( shortOption, "+" );
-                        }
-                        else {
-                            throw new OptionProcessingException(
-                              "A short option must be alphanumeric. -"
-                              + shortOption + " is not acceptable." );
-                        }
-                    }
-                }
-            }
-            else if ( longOptionInvoked ) {
-                char lastchar = args[ n ].charAt( args[ n ].length() - 1 );
-                int eqindex = args[ n ].indexOf( "=" );
-                if ( eqindex != -1 ) {
-                    longOption = args[ n ].substring( 2, eqindex );
-                    String value = args[ n ].substring( eqindex + 1 );
-                    currentModule.action( longOption, value );
-                }
-                else if ( Utility.contains( lastchar, "+-" ) ) {
-                    longOption = args[ n ].substring( 2,
-                                                      args[ n ].length() - 1 );
-                    currentModule.action( longOption, lastchar );
-                }
-                else {
-                    longOption = args[ n ].substring( 2 );
-                    String dtext = "+";
-                    char dpeek = '\0';
-                    if ( n < args.length - 1 && args[ n + 1 ].length() > 0 ) {
-                        dpeek = args[ n + 1 ].charAt( 0 );
-                        if ( !Utility.contains( args[ n + 1 ].charAt( 0 ),
-                                                "-[@" ) ) {
-                            dtext = args[ n + 1 ];
-                            n++;
-                        }
-                    }
-                    currentModule.action( longOption, dtext );
-                }
-                if ( debugFlag ) {
-                    System.err.println( "long option: " + longOption );
-                }
-            }
-            else if ( writeOptionFileInvoked ) {
-                optionFile = Utility.trim( args[ n ].substring( 1 ) );
-                if ( optionFile.equals( "%" )
-                     || optionFile.length() == 0 )
-                    optionFile = defaultOptionFilename;
-                if ( debugFlag ) {
-                    System.err.println( "Option file: '" + optionFile + "'." );
-                }
-                writeOptionFile( optionFile );
-            }
-            else {
-                retval = new String[ args.length - n ];
-                for ( int j = n; j < args.length; j++ ) {
-                    retval[ j - n ] = args[ j ];
-                }
-            }
-        }
-        if ( retval == null ) retval = new String[ 0 ];
-        return retval;
-    }
-}
+package gnu.dtools.ritopt;
+
+/**
+ * Options.java
+ *
+ * Version:
+ *    $Id: Options.java 1234 2005-07-30 14:49:05Z mortenalver $
+
+ */
+
+import java.util.*;
+import java.io.*;
+import net.sf.jabref.*;
+
+/**
+ * This class functions as a repository for options and their modules. It
+ * facilitates registration of options and modules, as well as processing of
+ * arguments.<p>
+ *
+ * Information such as help, usage, and versions are displayed
+ * when the respective --help and --version options are specified.
+ * The --menu option will invoke the built-in menu.<p>
+ *
+ * In the example below, the program processes three simple options.
+ *
+ * <pre>
+ * public class AboutMe {
+ *
+ *    private static StringOption name = new StringOption( "Ryan" );
+ *    private static IntOption age = new IntOption( 19 );
+ *    private static DoubleOption bankBalance = new DoubleOption( 15.15 );
+ *
+ *    public static void main( String args[] ) {
+ *       Options repo = new Options( "java AboutMe" );
+ *       repo.register( "name", 'n', name, "The person's name." );
+ *       repo.register( "age", 'a', age, "The person's age." );
+ *       repo.register( "balance", 'b', "The person's bank balance.",
+ *                       bankBalance );
+ *       repo.process( args );
+g *       System.err.println( "" + name + ", age " + age + " has a " +
+ *                           " bank balance of " + bankBalance + "." );
+ *    }
+ * }
+ * </pre>
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+ *
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class Options implements OptionRegistrar, OptionModuleRegistrar,
+                                OptionListener {
+
+    /**
+     * The default verbosity.
+     */
+
+    public static final int DEFAULT_VERBOSITY = 3;
+
+    /**
+     * This boolean defines whether options are deprecated by default.
+     */
+
+    public static final boolean DEFAULT_DEPRECATED = false;
+
+    /**
+     * The default reason for deprecation.
+     */
+
+    public static final String DEFAULT_REASON = "No reason given.";
+
+    /**
+     * The default general module name.
+     */
+
+    public static final String DEFAULT_GENERAL_MODULE_NAME = "General";
+
+    /**
+     * This boolean defines whether usage should be displayed.
+     */
+
+    public static final boolean DEFAULT_DISPLAY_USAGE = false; // Mod. Morten A.
+
+    /**
+     * This boolean defines whether the menu should be used.
+     */
+
+    public static final boolean DEFAULT_USE_MENU = false; // Mod. Morten A.
+
+    /**
+     * The default program name that is display in the usage.
+     */
+
+    public static final String DEFAULT_PROGRAM_NAME = "java program";
+
+    /**
+     * The default option file.
+     */
+
+    public static final String DEFAULT_OPTION_FILENAME = "default.opt";
+
+    /**
+     * The current verbosity.
+     */
+
+    private int verbosity;
+
+    /**
+     * The program to display in the usage.
+     */
+
+    private String usageProgram;
+
+    /**
+     * The version to display in the usage.
+     */
+
+    private String version;
+
+    /**
+     * The default option filename if an option file is not specified.
+     */
+
+    private String defaultOptionFilename;
+
+    /**
+     * This flag defines whether to display usage when help is displayed.
+     */
+
+    private boolean displayUsage;
+
+    /**
+     * This boolean defines whether the menu should be used.
+     */
+
+    private boolean useMenu;
+
+    /**
+     * When this flag is true, debugging information is displayed.
+     */
+
+    private boolean debugFlag;
+
+    /**
+     * The current module being processed.
+     */
+
+    private OptionModule currentModule;
+
+    /**
+     * The general option module.
+     */
+
+    private OptionModule generalModule;
+
+    /**
+     * A map of option modules.
+     */
+
+    private java.util.HashMap modules;
+
+    /**
+     * The help method is invoked when this option is invoked.
+     */
+
+    private NotifyOption helpOption;
+
+    /**
+     * The built-in menu system is invoked when this option is invoked.
+     */
+
+    private NotifyOption menuOption;
+
+    /**
+     * Version information is displayed when this option is specified.
+     */
+
+    private NotifyOption versionOption;
+
+    /**
+     * An instance of the built-in menu.
+     */
+
+    private OptionMenu menu;
+
+    /**
+     * Create an option repository.
+     */
+
+    public Options() {
+        this( DEFAULT_PROGRAM_NAME );
+    }
+
+    /**
+     * Create an option repository and associated it with a program name.
+     *
+     * @param programName A program name like "java Balloons".
+     */
+
+    public Options( String programName ) {
+        verbosity = DEFAULT_VERBOSITY;
+        displayUsage = DEFAULT_DISPLAY_USAGE;
+        useMenu = DEFAULT_USE_MENU;
+        defaultOptionFilename = DEFAULT_OPTION_FILENAME;
+        usageProgram = programName;
+        modules = new HashMap();
+        menu = new OptionMenu( this );
+        helpOption = new NotifyOption( this, "help", "" );
+        versionOption = new NotifyOption( this, "version", "" );
+        version = "Version 1.0";
+        menuOption = new NotifyOption( menu, "menu", "" );
+        generalModule = new OptionModule( DEFAULT_GENERAL_MODULE_NAME );
+        currentModule = generalModule;
+
+        // Mod. Morten A. ------------------------------------------------
+        register( "version", 'v',
+                  "Displays version information.", versionOption );
+        /*register( "help", 'h', "Displays help for each option.", helpOption );
+        register( "menu", 'm', "Displays the built-in interactive menu.",
+                  menuOption );*/
+        // End mod. Morten A. ------------------------------------------------
+    }
+
+    /**
+     * Returns the help information as a string.
+     *
+     * @return The help information.
+     */
+
+    public String getHelp() {
+        String retval = (displayUsage ? getUsage() + "\n\n" : "" ) +
+            // Mod. Morten A.
+            //"Use --menu to invoke the interactive built-in menu.\n\n" +
+            Option.getHelpHeader() + "\n\n" + generalModule.getHelp();
+        Iterator it = modules.values().iterator();
+        while ( it.hasNext() ) {
+            OptionModule module = (OptionModule)it.next();
+            retval += "\n\nOption Listing for " + module.getName() + "\n";
+            retval += module.getHelp() + "\n";
+        }
+        return retval;
+    }
+
+    /**
+     * Returns usage information of this program.
+     *
+     * @return The usage information.
+     */
+
+    public String getUsage() {
+        return getUsageProgram()
+            + " @optionfile :module: OPTIONS ... :module: OPTIONS";
+    }
+
+    /**
+     * Returns the program name displayed in the usage.
+     *
+     * @param The program name.
+     */
+
+    public String getUsageProgram() {
+        return usageProgram;
+    }
+
+    /**
+     * Returns the version of the program.
+     *
+     * @param The version.
+     */
+
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Returns the option filename to load or write to if one is not
+     * specified.
+     *
+     * @return The default option filename.
+     */
+
+    public String getDefaultOptionFilename() {
+        return defaultOptionFilename;
+    }
+
+    /**
+     * Returns whether debugging information should be displayed.
+     *
+     * @return A boolean indicating whether to display help information.
+     */
+
+    public boolean getDebugFlag() {
+        return debugFlag;
+    }
+
+    /**
+     * Returns whether the help information should display usage.
+     *
+     * @return A boolean indicating whether help should display usage.
+     */
+
+    public boolean shouldDisplayUsage() {
+        return displayUsage;
+    }
+
+    /**
+     * Returns whether the built-in menu system can be invoked.
+     *
+     * @return A boolean indicating whether the build-in menu system
+     *         can be invoked.
+     */
+
+    public boolean shouldUseMenu() {
+        return useMenu;
+    }
+
+    /**
+     * Sets whether usage can be displayed.
+     *
+     * @param b     A boolean value indicating that usage can be displayed.
+     */
+
+    public void setDisplayUsage( boolean b ) {
+        displayUsage = b;
+    }
+
+    /**
+     * Sets whether the built-in menu system can be used.
+     *
+     * @param b      A boolean value indicating whether the built-in menu
+     *               system can be used.
+     */
+
+    public void setUseMenu( boolean b ) {
+        useMenu = b;
+    }
+
+    /**
+     * Sets the program to display when the usage is displayed.
+     *
+     * @param program The program displayed during usage.
+     */
+
+    public void setUsageProgram( String program ) {
+        usageProgram = program;
+    }
+
+    /**
+     * Sets the version of the program.
+     *
+     * @param version The version.
+     */
+
+    public void setVersion( String version ) {
+        this.version = version;
+    }
+
+    /**
+     * Sets the option file to use when an option file is not specified.
+     *
+     * @param fn      The filename of the default option file.
+     */
+
+    public void setDefaultOptionFilename( String fn ) {
+        defaultOptionFilename = fn;
+    }
+
+    /**
+     * Sets the debugging flag.
+     *
+     * @param flag    The value to set the debugging flag.
+
+    public void setDebugFlag( boolean flag ) {
+        debugFlag = flag;
+    }
+
+    /**
+     * Displays the program's help which includes a description of each
+     * option. The usage is display if the usage flag is set to true.
+     */
+
+    public void displayHelp() {
+        System.err.println( getHelp() );
+    }
+
+    /**
+     * Displays the version of the program.
+     */
+
+    public void displayVersion() {
+        System.err.println( getVersion() +" (build " +Globals.BUILD +")");
+    }
+
+    /**
+     * Register an option into the repository as a long option.
+     *
+     * @param longOption  The long option name.
+     * @param option      The option to register.
+     */
+
+    public void register( String longOption, Option option ) {
+        generalModule.register( longOption, option );
+    }
+
+    /**
+     * Register an option into the repository as a short option.
+     *
+     * @param shortOption The short option name.
+     * @param option      The option to register.
+     */
+
+    public void register( char shortOption, Option option ) {
+        generalModule.register( shortOption, option );
+    }
+
+    /**
+     * Register an option into the repository both as a short and long option.
+     *
+     * @param longOption  The long option name.
+     * @param shortOption The short option name.
+     * @param option      The option to register.
+     */
+
+    public void register( String longOption, char shortOption,
+                          Option option ) {
+        generalModule.register( longOption, shortOption, option );
+    }
+
+    /**
+     * Register an option into the repository both as a short and long option.
+     * Initialize its description with the description passed.
+     *
+     * @param longOption  The long option name.
+     * @param shortOption The short option name.
+     * @param description The description of the option.
+     * @param option      The option to register.
+     */
+
+    public void register( String longOption, char shortOption,
+                          String description, Option option ) {
+        generalModule.register( longOption, shortOption, description, option );
+    }
+
+    /**
+     * Register an option into the repository both as a short and long option.
+     * Initialize its description with the description passed.
+     *
+     * @param longOption  The long option name.
+     * @param shortOption The short option name.
+     * @param description The description of the option.
+     * @param option      The option to register.
+     * @param deprecated  A boolean indicating whether an option should
+     *                    be deprecated.
+     */
+
+    public void register( String longOption, char shortOption,
+                          String description, Option option,
+                          boolean deprecated ) {
+        generalModule.register( longOption, shortOption, description, option,
+                                deprecated );
+    }
+
+    /**
+     * Register an option module based on its name.
+     *
+     * @param module The option module to register.
+     */
+
+    public void register( OptionModule module ) {
+        register( module.getName(), module );
+    }
+
+    /**
+     * Register an option module and associate it with the name passed.
+     *
+     * @param name   The name associated with the option module.
+     * @param module The option module to register.
+     */
+
+    public void register( String name, OptionModule module ) {
+        modules.put( name.toLowerCase(), module );
+    }
+
+    /**
+     * Process a string of values representing the invoked options. After
+     * all the options are processed, any leftover arguments are returned.
+     *
+     * @param args The arguments to process.
+     *
+     * @return The leftover arguments.
+     */
+
+    public String[] process( String args[] )
+    {
+        String []retval = new String[0];
+        try {
+            retval = processOptions( args );
+        }
+        catch ( OptionException e ) {
+            System.err.println( "Error: " + e.getMessage() );
+        }
+        /**
+        catch ( Exception e ) {
+            System.err.println( "Error: Unexpected Error in ritopt Processing." +
+                                "Check syntax." );
+                                }**/
+        return retval;
+    }
+
+    /**
+     * Retrieves an option module based on the name passed.
+     *
+     * @param name The name referring to the option module.
+     *
+     * @return The option module. Null is returned if the module does not
+     *         exist.
+     */
+
+    public OptionModule getModule( String name ) {
+        return (OptionModule)modules.get( name.toLowerCase() );
+    }
+
+    /**
+     * Returns a boolean indicating whether an option module exists.
+     *
+     * @param name The name referring to the option module.
+     *
+     * @return A boolean value indicating whether the module exists.
+     */
+
+    public boolean moduleExists( String name ) {
+        return getModule( name ) != null;
+    }
+
+    /**
+     * Receives NotifyOption events. If the event command equals "help"
+     * or "version", the appropriate display methods are invoked.
+     *
+     * @param event         The event object containing information about the
+     *                      invocation.
+     */
+
+    public void optionInvoked( OptionEvent event ) {
+        if ( event.getCommand().equals( "help" ) ) {
+            displayHelp();
+        }
+        else if ( event.getCommand().equals( "version" ) ) {
+            displayVersion();
+        }
+    }
+
+    /**
+     * Process a string representing the invoked options. This string
+     * gets split according to how they would be split when passed to
+     * a main method. The split array of options gets passed to a
+     * private method for processing. After all the options are processed,
+     * any leftover arguments are returned.
+     *
+     * @param str The arguments to process.
+     *
+     * @return The leftover arguments.
+     */
+
+    public String[] process( String str ) {
+        return process( split( str ) );
+    }
+
+    /**
+     * Splits a string representing command line arguments into several
+     * strings.
+     *
+     * @param split   The string to split.
+     *
+     * @return  The splitted string.
+     */
+
+    public String[] split( String str ) {
+        StringBuffer buf = new StringBuffer( str.length() );
+        java.util.List l = new java.util.ArrayList();
+        int scnt = Utility.count( str, '"' );
+        boolean q = false;
+        if ( ((double)scnt) / 2.0 != (double)(scnt / 2) ) {
+            throw new OptionProcessingException( "Expecting an end quote." );
+        }
+        for ( int n = 0; n < str.length(); n++ ) {
+            if ( str.charAt( n ) == '"' ) {
+                q = !q;
+            }
+            else if ( str.charAt( n ) == ' ' && !q ) {
+                l.add( buf.toString() );
+                buf = new StringBuffer( str.length() );
+            }
+            else {
+                buf.append( str.charAt( n ) );
+            }
+        }
+        if ( buf.length() != 0 ) {
+            l.add( buf.toString() );
+        }
+        Iterator it = l.iterator();
+        String retval[] = new String[ l.size() ];
+        int n = 0;
+        while ( it.hasNext() ) {
+            retval[ n++ ] = (String)it.next();
+        }
+        return retval;
+    }
+
+    /**
+     * Writes all options and their modules out to an options file.
+     *
+     * @param filename  The options filename to write.
+     */
+
+    public void writeOptionFile( String filename ) {
+        BufferedOutputStream writer = null;
+        String line = null;
+        Iterator it = null;
+        currentModule = generalModule;
+        try {
+            writer =
+                new BufferedOutputStream( new FileOutputStream( filename ) );
+            PrintStream ps = new PrintStream( writer );
+            generalModule.writeFileToPrintStream( ps );
+            it = modules.values().iterator();
+            while ( it.hasNext() ) {
+                OptionModule module = (OptionModule)it.next();
+                module.writeFileToPrintStream( ps );
+            }
+        }
+        catch ( IOException e ) {
+            throw new OptionProcessingException( e.getMessage() );
+        }
+        finally {
+            try {
+                if ( writer != null )
+                    writer.close();
+            }
+            catch( IOException e ) {
+                throw new OptionProcessingException( e.getMessage() );
+            }
+        }
+    }
+
+    /**
+     * Loads all options and their modules from an options file.
+     *
+     * @param filename  The options filename to write.
+     */
+
+    public void loadOptionFile( String filename ) {
+        BufferedReader reader = null;
+        String line = null;
+        currentModule = generalModule;
+        try {
+            reader = new BufferedReader( new FileReader( filename ) );
+            while ( ( line = reader.readLine() ) != null ) {
+                line = Utility.stripComments( line, '\"', ';' );
+                process( line );
+            }
+        }
+        catch ( IOException e ) {
+            throw new OptionProcessingException( e.getMessage() );
+        }
+        finally {
+            try {
+                if ( reader != null )
+                    reader.close();
+            }
+            catch( IOException e ) {
+                throw new OptionProcessingException( e.getMessage() );
+            }
+        }
+    }
+
+    /**
+     * Processes an array of strings representing command line arguments.
+     *
+     * @param  The arguments to process.
+     *
+     * @return The leftover arguments.
+     */
+
+    private String[] processOptions( String args[] ) {
+        String retval[] = null;
+        String moduleName = "general";
+        String optionFile = "";
+        char shortOption = '\0';
+        String longOption = "";
+        for ( int n = 0; n < args.length && retval == null; n++ ) {
+            boolean moduleInvoked = false;
+            boolean shortOptionInvoked = false;
+            boolean longOptionInvoked = false;
+            boolean readOptionFileInvoked = false;
+            boolean writeOptionFileInvoked = false;
+            if ( args[ n ].length() >= 1 ) {
+                char fc = args[ n ].charAt( 0 );
+                moduleInvoked = fc == ':';
+                readOptionFileInvoked = fc == '@';
+                writeOptionFileInvoked = fc == '%';
+            }
+            if ( args[ n ].length() >= 2 ) {
+                String s = args[ n ].substring( 0, 2 );
+                shortOptionInvoked = ( !s.equals( "--" ) &&
+                           s.charAt( 0 ) == '-' );
+                longOptionInvoked = ( s.equals( "--" ) );
+            }
+            if ( debugFlag ) {
+                System.err.println( "Short Option: " + shortOptionInvoked );
+                System.err.println( "Long Option: " + longOptionInvoked );
+                System.err.println( "Module: " + moduleInvoked );
+                System.err.println( "Load Option File: " +
+                                    readOptionFileInvoked );
+                System.err.println( "Write Option File: "
+                                    + writeOptionFileInvoked );
+            }
+            if ( moduleInvoked ) {
+                if (  args[ n ].charAt( args[ n ].length() - 1 ) != ':' ) {
+                    System.err.println( args[ n ] );
+                    throw new
+                        OptionProcessingException(
+                                                  "Module arguments must start"
+                                                  + " with : and end with :."
+                                                  );
+                }
+                else {
+                    moduleName = args[n].substring( 1,
+                                                    args[n].length() - 1
+                                                    ).toLowerCase();
+                    if ( moduleName.length() == 0
+                         || moduleName.equals( "general" ) ) {
+                        moduleName = "general";
+                        currentModule = generalModule;
+                    }
+                    else {
+                        currentModule = getModule( moduleName );
+                    }
+                    if ( currentModule == null )
+                        throw new OptionProcessingException( "Module '" +
+                                                             moduleName +
+                                                         "' does not exist." );
+                    if ( debugFlag ) {
+                        System.err.println( "Module: " + moduleName );
+                    }
+                }
+                moduleInvoked = false;
+            }
+            else if ( readOptionFileInvoked ) {
+                optionFile = Utility.trim( args[ n ].substring( 1 ) );
+                if ( optionFile.equals( "@" )
+                     || optionFile.length() == 0 )
+                    optionFile = defaultOptionFilename;
+                if ( debugFlag ) {
+                    System.err.println( "Option file: '" + optionFile + "'." );
+                }
+                loadOptionFile( optionFile );
+            }
+            else if ( shortOptionInvoked ) {
+                shortOption = args[ n ].charAt( 1 );
+                if ( !Utility.isAlphaNumeric( shortOption ) ) {
+                    throw new OptionProcessingException(
+                      "A short option must be alphanumeric. -" + shortOption
+                      + " is not acceptable." );
+                }
+                if ( debugFlag ) {
+                    System.err.println( "Short option text: " + shortOption );
+                }
+                char delim = ( args[ n ].length() >= 3 ) ?
+                    args[ n ].charAt( 2 ) : '\0';
+                if ( delim == '+' || delim == '-' ) {
+                    currentModule.action( shortOption, delim );
+                }
+                else if ( delim == '=' ) {
+                    currentModule.action( shortOption,
+                                          args[ n ].substring( 3 ) );
+                }
+                else if ( delim == '\0' ) {
+                    String dtext = "+";
+                    char dpeek = '\0';
+                    if ( n < args.length - 1 ) {
+                        dpeek = args[ n + 1 ].charAt( 0 );
+                        if ( !Utility.contains( args[ n + 1 ].charAt( 0 ),
+                                                "-[@" ) ) {
+                            dtext = args[ n + 1 ];
+                            n++;
+                        }
+                    }
+                    currentModule.action( shortOption, dtext );
+                }
+                else if ( Utility.isAlphaNumeric( delim ) ) {
+                    for ( int j = 1; j < args[ n ].length(); j++ ) {
+                        if ( Utility.isAlphaNumeric( args[ n ].charAt( j ) ) ) {
+                            currentModule.action( shortOption, "+" );
+                        }
+                        else {
+                            throw new OptionProcessingException(
+                              "A short option must be alphanumeric. -"
+                              + shortOption + " is not acceptable." );
+                        }
+                    }
+                }
+            }
+            else if ( longOptionInvoked ) {
+                char lastchar = args[ n ].charAt( args[ n ].length() - 1 );
+                int eqindex = args[ n ].indexOf( "=" );
+                if ( eqindex != -1 ) {
+                    longOption = args[ n ].substring( 2, eqindex );
+                    String value = args[ n ].substring( eqindex + 1 );
+                    currentModule.action( longOption, value );
+                }
+                else if ( Utility.contains( lastchar, "+-" ) ) {
+                    longOption = args[ n ].substring( 2,
+                                                      args[ n ].length() - 1 );
+                    currentModule.action( longOption, lastchar );
+                }
+                else {
+                    longOption = args[ n ].substring( 2 );
+                    String dtext = "+";
+                    char dpeek = '\0';
+                    if ( n < args.length - 1 && args[ n + 1 ].length() > 0 ) {
+                        dpeek = args[ n + 1 ].charAt( 0 );
+                        if ( !Utility.contains( args[ n + 1 ].charAt( 0 ),
+                                                "-[@" ) ) {
+                            dtext = args[ n + 1 ];
+                            n++;
+                        }
+                    }
+                    currentModule.action( longOption, dtext );
+                }
+                if ( debugFlag ) {
+                    System.err.println( "long option: " + longOption );
+                }
+            }
+            else if ( writeOptionFileInvoked ) {
+                optionFile = Utility.trim( args[ n ].substring( 1 ) );
+                if ( optionFile.equals( "%" )
+                     || optionFile.length() == 0 )
+                    optionFile = defaultOptionFilename;
+                if ( debugFlag ) {
+                    System.err.println( "Option file: '" + optionFile + "'." );
+                }
+                writeOptionFile( optionFile );
+            }
+            else {
+                retval = new String[ args.length - n ];
+                for ( int j = n; j < args.length; j++ ) {
+                    retval[ j - n ] = args[ j ];
+                }
+            }
+        }
+        if ( retval == null ) retval = new String[ 0 ];
+        return retval;
+    }
+}
diff --git a/src/java/gnu/dtools/ritopt/ShortOption.java b/src/java/gnu/dtools/ritopt/ShortOption.java
index 9445eda..dd99976 100644
--- a/src/java/gnu/dtools/ritopt/ShortOption.java
+++ b/src/java/gnu/dtools/ritopt/ShortOption.java
@@ -4,7 +4,7 @@ package gnu.dtools.ritopt;
  * ShortOption.java
  *
  * Version:
- *    $Id: ShortOption.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
+ *    $Id: ShortOption.java 322 2004-05-20 20:45:47Z mortenalver $
  */
 
 /**
diff --git a/src/java/gnu/dtools/ritopt/SimpleProcess.java b/src/java/gnu/dtools/ritopt/SimpleProcess.java
index 674d6f6..d3f92e9 100644
--- a/src/java/gnu/dtools/ritopt/SimpleProcess.java
+++ b/src/java/gnu/dtools/ritopt/SimpleProcess.java
@@ -1,217 +1,217 @@
-package gnu.dtools.ritopt;
-
-/**
- * SimpleProcess.java
- *
- * Version:
- *   $Id: SimpleProcess.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-import java.io.*;
-
-/**
- * A SimpleProcess is used to execute a shell process, and redirect an
- * input stream to the processes' standard input, as well as redirect
- * the processes' standard output/error to an output stream. The processes
- * is multithreaded to prevent deadlock.<p>
- *
- * The example below demonstrates the use of this class.
- * <pre>
- *  class ExecuteProcess {
- *       public static void main( String args[] ) {
- *           if ( args.length > 0 ) {
- *               String processName = args[ 0 ];
- *               try {
- *                   SimpleProcess process
- *                      = new SimpleProcess( Runtime.getRuntime.exec(
- *                                                            processName ) );
- *                                          );
- *                   int exitStatus = process.waitFor();
- *                   System.out.println( "The process ran successfully" 
- *                                       + " with an exit status of "
- *                                       + exitStatus + "." );
- *               }
- *               catch ( Exception e ) {
- *                   System.out.println( "The process was not successful. "
- *                                       + " Reason: " + e.getMessage() );
- *               }
- *           }
- *           else {
- *               System.err.println( "Please specify a command" );
- *           }
- *       }
- *  }
- * </pre>
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class SimpleProcess extends Process {
-
-    /**
-     * The target process.
-     */
-
-    private Process process;
-
-    /**
-     * The input stream that the processes' standard input will use.
-     */
-
-    private InputStream processInput;
-
-    /**
-     * The print stream to redirect to.
-     */
-
-    private PrintStream yourOutput;
-
-    /**
-     * The print stream to redirect to.
-     */
-
-    private PrintStream yourError;
-
-    /**
-     * The StreamPrinters.
-     */
-
-    private StreamPrinter in, out, error;
-
-    /**
-     * Constructs a SimpleProcess, redirecting System.in to the its standard
-     * input, System.out to its standard output, and System.err to its standard
-     * error.
-     */
-
-    public SimpleProcess( Process process ) throws IOException {
-	this( process, System.in, System.out, System.err );
-    }
-
-    /**
-     * Constructs a SimpleProcess, initializing it with the streams passed.
-     *
-     * @param process       The target process.
-     * @param processInput  The stream that is redirected to the
-     *                      processes' standard input.
-     * @param processOutput The stream to redirect the processes's
-     *                      standard output.
-     * @param processError  The stream to redirect the processes's
-     *                      standard input.
-     */
-
-    public SimpleProcess( Process process, InputStream processInput,
-			  PrintStream yourOutput, PrintStream yourError )
-                         throws IOException {
-	super();
-	this.process = process;
-	this.processInput = processInput;
-	this.yourOutput = yourOutput;
-	this.yourError = yourError;
-    }
-
-    /**
-     * Returns the standard input of this process.
-     *
-     * @return The standard input of this process.
-     */
-
-    public OutputStream getOutputStream() {
-	return process.getOutputStream();
-    }
-
-    /**
-     * Returns the standard output of this process.
-     *
-     * @return The standard output of this process.
-     */
-
-    public InputStream getInputStream() {
-	return process.getInputStream();
-    }
-
-    /**
-     * Returns the standard error of this process.
-     *
-     * @return The standard error of this process.
-     */
-
-    public InputStream getErrorStream() {
-	return process.getErrorStream();
-    }
-
-    /**
-     * Begin redirecting the streams passed. This method should be invoked
-     * immediately after execution of a simple process to prevent thread
-     * deadlock.
-     *
-     * @return The exit status of the target process.
-     */
-
-    public int waitFor() throws InterruptedException {
-	int retval = waitForImpl();
-	if ( in != null ) {
-	    in.stop();
-	}
-	return retval;
-    }
-
-    /**
-     * Contains the implementation of wait for.
-     *
-     * @return The exit status of the target process.
-     */
-
-    private int waitForImpl() throws InterruptedException {
-	process = process;
-	in = new StreamPrinter( processInput,
-				new PrintStream( process.getOutputStream() ) );
-	in.setFlush( true );
-	out = new StreamPrinter( process.getInputStream(), yourOutput );
-	error = new StreamPrinter( process.getErrorStream(), yourError );
-	in.start();
-	out.start();
-	error.start();
-	out.join();
-	error.join();
-	return process.waitFor();
-    }
-
-    /**
-     * Returns the target processes' exit value.
-     *
-     * @return This processes' exit value.
-     */
-
-    public int exitValue() {
-	return process.exitValue();
-    }
-
-    /**
-     * Destroys the target process.
-     */
-
-    public void destroy() throws IllegalThreadStateException {
-	process.destroy();
-    }
-} /** SimpleProcess **/
+package gnu.dtools.ritopt;
+
+/**
+ * SimpleProcess.java
+ *
+ * Version:
+ *   $Id: SimpleProcess.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+import java.io.*;
+
+/**
+ * A SimpleProcess is used to execute a shell process, and redirect an
+ * input stream to the processes' standard input, as well as redirect
+ * the processes' standard output/error to an output stream. The processes
+ * is multithreaded to prevent deadlock.<p>
+ *
+ * The example below demonstrates the use of this class.
+ * <pre>
+ *  class ExecuteProcess {
+ *       public static void main( String args[] ) {
+ *           if ( args.length > 0 ) {
+ *               String processName = args[ 0 ];
+ *               try {
+ *                   SimpleProcess process
+ *                      = new SimpleProcess( Runtime.getRuntime.exec(
+ *                                                            processName ) );
+ *                                          );
+ *                   int exitStatus = process.waitFor();
+ *                   System.out.println( "The process ran successfully" 
+ *                                       + " with an exit status of "
+ *                                       + exitStatus + "." );
+ *               }
+ *               catch ( Exception e ) {
+ *                   System.out.println( "The process was not successful. "
+ *                                       + " Reason: " + e.getMessage() );
+ *               }
+ *           }
+ *           else {
+ *               System.err.println( "Please specify a command" );
+ *           }
+ *       }
+ *  }
+ * </pre>
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class SimpleProcess extends Process {
+
+    /**
+     * The target process.
+     */
+
+    private Process process;
+
+    /**
+     * The input stream that the processes' standard input will use.
+     */
+
+    private InputStream processInput;
+
+    /**
+     * The print stream to redirect to.
+     */
+
+    private PrintStream yourOutput;
+
+    /**
+     * The print stream to redirect to.
+     */
+
+    private PrintStream yourError;
+
+    /**
+     * The StreamPrinters.
+     */
+
+    private StreamPrinter in, out, error;
+
+    /**
+     * Constructs a SimpleProcess, redirecting System.in to the its standard
+     * input, System.out to its standard output, and System.err to its standard
+     * error.
+     */
+
+    public SimpleProcess( Process process ) throws IOException {
+	this( process, System.in, System.out, System.err );
+    }
+
+    /**
+     * Constructs a SimpleProcess, initializing it with the streams passed.
+     *
+     * @param process       The target process.
+     * @param processInput  The stream that is redirected to the
+     *                      processes' standard input.
+     * @param processOutput The stream to redirect the processes's
+     *                      standard output.
+     * @param processError  The stream to redirect the processes's
+     *                      standard input.
+     */
+
+    public SimpleProcess( Process process, InputStream processInput,
+			  PrintStream yourOutput, PrintStream yourError )
+                         throws IOException {
+	super();
+	this.process = process;
+	this.processInput = processInput;
+	this.yourOutput = yourOutput;
+	this.yourError = yourError;
+    }
+
+    /**
+     * Returns the standard input of this process.
+     *
+     * @return The standard input of this process.
+     */
+
+    public OutputStream getOutputStream() {
+	return process.getOutputStream();
+    }
+
+    /**
+     * Returns the standard output of this process.
+     *
+     * @return The standard output of this process.
+     */
+
+    public InputStream getInputStream() {
+	return process.getInputStream();
+    }
+
+    /**
+     * Returns the standard error of this process.
+     *
+     * @return The standard error of this process.
+     */
+
+    public InputStream getErrorStream() {
+	return process.getErrorStream();
+    }
+
+    /**
+     * Begin redirecting the streams passed. This method should be invoked
+     * immediately after execution of a simple process to prevent thread
+     * deadlock.
+     *
+     * @return The exit status of the target process.
+     */
+
+    public int waitFor() throws InterruptedException {
+	int retval = waitForImpl();
+	if ( in != null ) {
+	    in.stop();
+	}
+	return retval;
+    }
+
+    /**
+     * Contains the implementation of wait for.
+     *
+     * @return The exit status of the target process.
+     */
+
+    private int waitForImpl() throws InterruptedException {
+	process = process;
+	in = new StreamPrinter( processInput,
+				new PrintStream( process.getOutputStream() ) );
+	in.setFlush( true );
+	out = new StreamPrinter( process.getInputStream(), yourOutput );
+	error = new StreamPrinter( process.getErrorStream(), yourError );
+	in.start();
+	out.start();
+	error.start();
+	out.join();
+	error.join();
+	return process.waitFor();
+    }
+
+    /**
+     * Returns the target processes' exit value.
+     *
+     * @return This processes' exit value.
+     */
+
+    public int exitValue() {
+	return process.exitValue();
+    }
+
+    /**
+     * Destroys the target process.
+     */
+
+    public void destroy() throws IllegalThreadStateException {
+	process.destroy();
+    }
+} /** SimpleProcess **/
diff --git a/src/java/gnu/dtools/ritopt/Stoppable.java b/src/java/gnu/dtools/ritopt/Stoppable.java
index 89ba9ea..bd24eef 100644
--- a/src/java/gnu/dtools/ritopt/Stoppable.java
+++ b/src/java/gnu/dtools/ritopt/Stoppable.java
@@ -1,46 +1,46 @@
-package gnu.dtools.ritopt;
-
-/**
- * Implementors are capable of being stopped. This interface is used
- * by the StreamPrinters in the SimpleProcess class so that it if an
- * error has occurred.
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public interface Stoppable {
-
-    /**
-     * Stop the implemetor from performing some sort of processing.
-     */
-
-    public void stop();
-
-    /**
-     * Returns whether the implementor has stopped.
-     *
-     * @return A boolean value.
-     */
-
-    public boolean isStopped();
-}
+package gnu.dtools.ritopt;
+
+/**
+ * Implementors are capable of being stopped. This interface is used
+ * by the StreamPrinters in the SimpleProcess class so that it if an
+ * error has occurred.
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public interface Stoppable {
+
+    /**
+     * Stop the implemetor from performing some sort of processing.
+     */
+
+    public void stop();
+
+    /**
+     * Returns whether the implementor has stopped.
+     *
+     * @return A boolean value.
+     */
+
+    public boolean isStopped();
+}
diff --git a/src/java/gnu/dtools/ritopt/StreamPrinter.java b/src/java/gnu/dtools/ritopt/StreamPrinter.java
index d54fcb9..5e63328 100644
--- a/src/java/gnu/dtools/ritopt/StreamPrinter.java
+++ b/src/java/gnu/dtools/ritopt/StreamPrinter.java
@@ -1,191 +1,191 @@
-package gnu.dtools.ritopt;
-
-/**
- * StreamPrinter.java
- *
- * Version:
- *   $Id: StreamPrinter.java,v 1.1 2004/05/20 20:45:47 mortenalver Exp $
- */
-
-import java.io.*;
-
-/**
- * Reads data from an input stream and outputs to a print stream. This class
- * is used by the OptionMenu class to read from both standard output and
- * standard error simultaneously when a shell command is executed. Since the
- * StreamPrinter processes streams on a separate thread, deadlock is
- * prevented.<p>
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class StreamPrinter implements Runnable, Stoppable {
-
-    /**
-     * The input stream to read from.
-     */
-
-    private InputStream stream;
-
-    /**
-     * The print stream to redirect to.
-     */
-
-    private PrintStream out;
-
-    /**
-     * The object to stop.
-     */
-
-    private Stoppable stop;
-
-    /**
-     * Whether this StreamPrinter has stopped processing.
-     */
-
-    private boolean stopped;
-
-    /**
-     * Whether the buffer should be flushed.
-     */
-
-    private boolean flush;
-
-    /**
-     * The thread associated with this StreamPrinter.
-     */
-
-    private Thread thread;
-
-    /**
-     * Constructs a new StreamPrinter.
-     *
-     * @param s The stream to read from.
-     * @param p The stream to output to.
-     */
-
-    public StreamPrinter( InputStream s, PrintStream p ) {
-	stream = s;
-	out = p;
-	thread = new Thread( this );
-    }
-
-    /**
-     * Starts the thread associated with this StreamPrinter.
-     */
-
-    public void start() throws InterruptedException {
-	thread.start();
-    }
-
-    /**
-     * Sets the object to stop when this object is finished.
-     *
-     * @param tostop The object to stop.
-     */
-
-    public void setStop( Stoppable tostop ) {
-	synchronized( this ) {
-	    stop = tostop;
-	}
-    }
-
-    /**
-     * Returns whether this StreamPrinter has stopped processing.
-     *
-     * @returns A boolean value.
-     */
-
-    public boolean isStopped() {
-	return stopped;
-    }
-
-    /**
-     * Sets whether the output stream should be flushed after each output
-     * step.
-     *
-     * @param b A boolean value.
-     */
-
-    public void setFlush( boolean flush ) {
-	synchronized ( this ) {
-	    this.flush = flush;
-	}
-    }
-
-    /**
-     * Stops this StreamPrinter's processing. 
-     */
-
-    public void stop() {
-	synchronized( this ) {
-	    stopped = true;
-	}
-	if ( stop != null ) {
-	    synchronized( stop ) {
-		if ( !stop.isStopped() ) {
-		    stop.stop();
-		}
-	    }
-	}
-    }
-
-    /**
-     * Joins this StreamPrinter's thread with the other threads.
-     */
-
-    public void join() throws InterruptedException {
-	thread.join();
-    }
-
-    /**
-     * Start the StreamPrinter thread. This is done automatically during
-     * construction.
-     */
-
-    // This implementation is lousy; buffering is needed.
-    public void run() {
-	int buf;
-	try {
-	    boolean me;
-	    while ( !stopped && ( buf = stream.read() ) != -1 ) {
-		synchronized( this ) {
-		    me = flush;
-		}
-		synchronized( out ) {
-		    out.print( (char)buf );
-		    if ( me ) out.flush();
-		}
-	    }
-	}
-	catch ( IOException e ) {
-	    out.println( "I/O error" );
-	}
-	finally {
-	    synchronized( out ) {
-		out.flush();
-	    }
-	    stop();
-	}
-    }
-}
+package gnu.dtools.ritopt;
+
+/**
+ * StreamPrinter.java
+ *
+ * Version:
+ *   $Id: StreamPrinter.java 322 2004-05-20 20:45:47Z mortenalver $
+ */
+
+import java.io.*;
+
+/**
+ * Reads data from an input stream and outputs to a print stream. This class
+ * is used by the OptionMenu class to read from both standard output and
+ * standard error simultaneously when a shell command is executed. Since the
+ * StreamPrinter processes streams on a separate thread, deadlock is
+ * prevented.<p>
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class StreamPrinter implements Runnable, Stoppable {
+
+    /**
+     * The input stream to read from.
+     */
+
+    private InputStream stream;
+
+    /**
+     * The print stream to redirect to.
+     */
+
+    private PrintStream out;
+
+    /**
+     * The object to stop.
+     */
+
+    private Stoppable stop;
+
+    /**
+     * Whether this StreamPrinter has stopped processing.
+     */
+
+    private boolean stopped;
+
+    /**
+     * Whether the buffer should be flushed.
+     */
+
+    private boolean flush;
+
+    /**
+     * The thread associated with this StreamPrinter.
+     */
+
+    private Thread thread;
+
+    /**
+     * Constructs a new StreamPrinter.
+     *
+     * @param s The stream to read from.
+     * @param p The stream to output to.
+     */
+
+    public StreamPrinter( InputStream s, PrintStream p ) {
+	stream = s;
+	out = p;
+	thread = new Thread( this );
+    }
+
+    /**
+     * Starts the thread associated with this StreamPrinter.
+     */
+
+    public void start() throws InterruptedException {
+	thread.start();
+    }
+
+    /**
+     * Sets the object to stop when this object is finished.
+     *
+     * @param tostop The object to stop.
+     */
+
+    public void setStop( Stoppable tostop ) {
+	synchronized( this ) {
+	    stop = tostop;
+	}
+    }
+
+    /**
+     * Returns whether this StreamPrinter has stopped processing.
+     *
+     * @returns A boolean value.
+     */
+
+    public boolean isStopped() {
+	return stopped;
+    }
+
+    /**
+     * Sets whether the output stream should be flushed after each output
+     * step.
+     *
+     * @param b A boolean value.
+     */
+
+    public void setFlush( boolean flush ) {
+	synchronized ( this ) {
+	    this.flush = flush;
+	}
+    }
+
+    /**
+     * Stops this StreamPrinter's processing. 
+     */
+
+    public void stop() {
+	synchronized( this ) {
+	    stopped = true;
+	}
+	if ( stop != null ) {
+	    synchronized( stop ) {
+		if ( !stop.isStopped() ) {
+		    stop.stop();
+		}
+	    }
+	}
+    }
+
+    /**
+     * Joins this StreamPrinter's thread with the other threads.
+     */
+
+    public void join() throws InterruptedException {
+	thread.join();
+    }
+
+    /**
+     * Start the StreamPrinter thread. This is done automatically during
+     * construction.
+     */
+
+    // This implementation is lousy; buffering is needed.
+    public void run() {
+	int buf;
+	try {
+	    boolean me;
+	    while ( !stopped && ( buf = stream.read() ) != -1 ) {
+		synchronized( this ) {
+		    me = flush;
+		}
+		synchronized( out ) {
+		    out.print( (char)buf );
+		    if ( me ) out.flush();
+		}
+	    }
+	}
+	catch ( IOException e ) {
+	    out.println( "I/O error" );
+	}
+	finally {
+	    synchronized( out ) {
+		out.flush();
+	    }
+	    stop();
+	}
+    }
+}
diff --git a/src/java/gnu/dtools/ritopt/StringOption.java b/src/java/gnu/dtools/ritopt/StringOption.java
index 12d3454..b37682e 100644
--- a/src/java/gnu/dtools/ritopt/StringOption.java
+++ b/src/java/gnu/dtools/ritopt/StringOption.java
@@ -1,184 +1,184 @@
-package gnu.dtools.ritopt;
-
-/**
- * StringOption.java
- *
- * Version:
- *    $Id: StringOption.java,v 1.2 2005/11/08 04:53:27 mortenalver Exp $
- */
-
-/**
- * This class is used for options with String values. 
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class StringOption extends Option {
-
-    /**
-     * The value of this string option.
-     */
-
-    private String value = "";
-
-    /**
-     * Constructs a string option that is initially set to zero.
-     */
-
-    public StringOption() {
-	this( "" );
-    }
-
-    /**
-     * Constructs a string option by copying the string option passed.
-     *
-     * @param op     The character option to copy.
-     */
-
-    public StringOption( StringOption op ) {
-	super( op );
-	op.value = op.getValue();
-    }
-
-    /**
-     * Constructs a string option initialized with the value passed.
-     *
-     * @param value    The initial value of this string option.
-     */
-
-    public StringOption( String value ) {
-	this( value, null );
-    }
-
-    /**
-     * Constructs a string option initialized with the value and
-     * long option passed.
-     *
-     * @param value      The initial value of this string option.
-     * @param longOption The long option associated with string option.
-     */
-
-    public StringOption( String value, String longOption ) {
-	this( value, longOption, '\0' );
-    }
-
-    /**
-     * Constructs a character option initialized with the value and
-     * short option passed.
-     *
-     * @param value       The initial value of this string option.
-     * @param shortOption The short option associated with this option.
-     */
-
-    public StringOption( String value, char shortOption ) {
-	this( value, null, shortOption );
-    }
-
-    /**
-     * Constructs a string option initialized with the value, short
-     * and long option passed.
-     *
-     * @param shortOption The short option associated with this option.
-     * @param longOption  The long option associated with this option.
-     * @param value       The initial value of this string option.
-     */
-
-    public StringOption( String value, String longOption, char shortOption ) {
-	super( longOption, shortOption );
-	this.value = value;
-    }
-
-    /**
-     * Return the value as an object.
-     *
-     * @return This value as an option.
-     */
-
-    public Object getObject() {
-	return value;
-    }
-
-    /**
-     * Modify this option based on a string representation.
-     *
-     * @param     value String representation of the object.
-     * @exception OptionModificationException Thrown if an error occurs
-     *                                  during modification of an option.
-     */
-
-    public void modify( String value ) throws OptionModificationException {
-	this.value = value;
-    }
-
-    /**
-     * Modify this option based on a string representation.
-     *
-     * @param     value String representation of the object.
-     * @exception OptionModificationException Thrown if an error occurs
-     *                                  during modification of an option.
-     */
-
-    public void setValue( String value ) throws OptionModificationException {
-	modify( value );
-    }
-
-    /**
-     * Modify this option using a string value.
-     *
-     * @param     value A string value.
-     */
-
-    public String getValue() {
-	return value;
-    }
-
-    /**
-     * Return this option as a string.
-     *
-     * @return This option as a string.
-     */
-
-    public String getStringValue() {
-	return value;
-    }
-
-    /**
-     * Returns the type name of this option. For an StringOption, "STRING"
-     * is returned.
-     *
-     * @return The type name of this option.
-     */
-
-    public String getTypeName() {
-	return "STRING";
-    }
-
-    /**
-     * Returns a string representation of this object.
-     *
-     * @return A string representation of this object.
-     */
-
-    public String toString() {
-	return value;
-    }
-
-}
+package gnu.dtools.ritopt;
+
+/**
+ * StringOption.java
+ *
+ * Version:
+ *    $Id: StringOption.java 1318 2005-11-08 04:53:29Z mortenalver $
+ */
+
+/**
+ * This class is used for options with String values. 
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class StringOption extends Option {
+
+    /**
+     * The value of this string option.
+     */
+
+    private String value = "";
+
+    /**
+     * Constructs a string option that is initially set to zero.
+     */
+
+    public StringOption() {
+	this( "" );
+    }
+
+    /**
+     * Constructs a string option by copying the string option passed.
+     *
+     * @param op     The character option to copy.
+     */
+
+    public StringOption( StringOption op ) {
+	super( op );
+	op.value = op.getValue();
+    }
+
+    /**
+     * Constructs a string option initialized with the value passed.
+     *
+     * @param value    The initial value of this string option.
+     */
+
+    public StringOption( String value ) {
+	this( value, null );
+    }
+
+    /**
+     * Constructs a string option initialized with the value and
+     * long option passed.
+     *
+     * @param value      The initial value of this string option.
+     * @param longOption The long option associated with string option.
+     */
+
+    public StringOption( String value, String longOption ) {
+	this( value, longOption, '\0' );
+    }
+
+    /**
+     * Constructs a character option initialized with the value and
+     * short option passed.
+     *
+     * @param value       The initial value of this string option.
+     * @param shortOption The short option associated with this option.
+     */
+
+    public StringOption( String value, char shortOption ) {
+	this( value, null, shortOption );
+    }
+
+    /**
+     * Constructs a string option initialized with the value, short
+     * and long option passed.
+     *
+     * @param shortOption The short option associated with this option.
+     * @param longOption  The long option associated with this option.
+     * @param value       The initial value of this string option.
+     */
+
+    public StringOption( String value, String longOption, char shortOption ) {
+	super( longOption, shortOption );
+	this.value = value;
+    }
+
+    /**
+     * Return the value as an object.
+     *
+     * @return This value as an option.
+     */
+
+    public Object getObject() {
+	return value;
+    }
+
+    /**
+     * Modify this option based on a string representation.
+     *
+     * @param     value String representation of the object.
+     * @exception OptionModificationException Thrown if an error occurs
+     *                                  during modification of an option.
+     */
+
+    public void modify( String value ) throws OptionModificationException {
+	this.value = value;
+    }
+
+    /**
+     * Modify this option based on a string representation.
+     *
+     * @param     value String representation of the object.
+     * @exception OptionModificationException Thrown if an error occurs
+     *                                  during modification of an option.
+     */
+
+    public void setValue( String value ) throws OptionModificationException {
+	modify( value );
+    }
+
+    /**
+     * Modify this option using a string value.
+     *
+     * @param     value A string value.
+     */
+
+    public String getValue() {
+	return value;
+    }
+
+    /**
+     * Return this option as a string.
+     *
+     * @return This option as a string.
+     */
+
+    public String getStringValue() {
+	return value;
+    }
+
+    /**
+     * Returns the type name of this option. For an StringOption, "STRING"
+     * is returned.
+     *
+     * @return The type name of this option.
+     */
+
+    public String getTypeName() {
+	return "STRING";
+    }
+
+    /**
+     * Returns a string representation of this object.
+     *
+     * @return A string representation of this object.
+     */
+
+    public String toString() {
+	return value;
+    }
+
+}
diff --git a/src/java/gnu/dtools/ritopt/Utility.java b/src/java/gnu/dtools/ritopt/Utility.java
index 2a81779..c99e248 100644
--- a/src/java/gnu/dtools/ritopt/Utility.java
+++ b/src/java/gnu/dtools/ritopt/Utility.java
@@ -1,339 +1,339 @@
-package gnu.dtools.ritopt;
-
-/**
- * Utility.java
- *
- * Version:
- *    $Id: Utility.java,v 1.2 2005/11/08 04:53:27 mortenalver Exp $
- */
-
-/**
- * This class provides static utility members for some basic string operations.
- *
- * <hr>
- *
- * <pre>
- * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
- *
- * ritopt 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.
-
- * ritopt 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 ritopt; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * </pre>
- *
- * @author Damian Eads
- */
-
-public class Utility {
-
-    /**
-     * Returns true if any of the characters in the list appear in the
-     * check string passed.
-     *
-     * @param check The string to check.
-     * @param list  The list of valid characters.
-     *
-     * @return true if the criteria of this method is satisfied.
-     */
-
-    public static boolean contains( String check, String list ) {
-	for ( int n = 0; n < list.length(); n++ ) {
-	    if ( check.indexOf( list.substring( n, n + 1 ) ) != -1 )
-		return true;
-	}
-	return false;
-    }
-
-    /**
-     * Returns the number of occurances the character specification
-     * appears in the check string passed.
-     *
-     * @param check The string to check.
-     * @param spec  The character specification.
-     *
-     * @return the number of occurances of the character specification.
-     */
-
-    public static int count( String check, char spec ) {
-        int sum = 0;
-	for ( int n = 0; n < check.length(); n++ ) {
-	    if ( check.charAt( 0 ) == spec ) sum++;
-	}
-	return sum;
-    }
-
-    /**
-     * Returns true if any of the characters in the list are equal to
-     * the check character.
-     *
-     * @param check The character to check.
-     * @param list  The list of valid characters.
-     *
-     * @return true if any of the characters in the list equal the check
-     *              character. 
-     */
-
-    public static boolean contains( char check, String list ) {
-	return contains( "" + check, list );
-    }
-
-    /**
-     * Returns true if the string only contains letters in the phonetic
-     * alphabet.
-     *
-     * @param check The string to check.
-     *
-     * @return If this method's criteria is matched.
-     */
-
-    public static boolean isAlpha( String check ) {
-	boolean retval = false;
-	for ( int n = 0; n < check.length(); n++ ) {
-	    retval = isAlphaLower( check.charAt( n ) ) ||
-		isAlphaUpper( check.charAt( n ) );
-	}
-	return retval;
-    }
-
-    /**
-     * Returns true if the string only contains lower case letters in the
-     * phonetic alphabet.
-     *
-     * @param check The string to check.
-     *
-     * @return If this method's criteria is matched.
-     */
-
-    public static boolean isAlphaLower( String check ) {
-	boolean retval = false;
-	for ( int n = 0; n < check.length(); n++ ) {
-	    retval = isAlphaLower( check.charAt( n ) );
-	}
-	return retval;
-    }
-
-    /**
-     * Returns true if the string only contains upper case letters in the
-     * phonetic alphabet.
-     *
-     * @param check The string to check.
-     *
-     * @return If this method's criteria is matched.
-     */
-
-    public static boolean isAlphaUpper( String check ) {
-	boolean retval = false;
-	for ( int n = 0; n < check.length(); n++ ) {
-	    retval = isAlphaUpper( check.charAt( n ) );
-	}
-	return retval;
-    }
-
-    /**
-     * Returns true if the character is a letter in the phonetic alphabetic.
-     *
-     * @param check The character to check.
-     *
-     * @return true if this method's criteria is matched.
-     */
-
-    public static boolean isAlpha( char check ) {
-	return isAlphaLower( check ) || isAlphaUpper( check );
-    }
-
-    /**
-     * Returns true if the character is a lower case letter in the
-     * phonetic alphabetic.
-     *
-     * @param check The character to check.
-     *
-     * @return true if this method's criteria is matched.
-     */
-
-    public static boolean isAlphaLower( char check ) {
-	return check >= 'a' && check <= 'z';
-    }
-
-    /**
-     * Returns true if the character is a upper case letter in the
-     * phonetic alphabetic.
-     *
-     * @param check The character to check.
-     *
-     * @return true if this method's criteria is matched.
-     */
-
-    public static boolean isAlphaUpper( char check ) {
-	return check >= 'A' && check <= 'Z';
-    }
-
-    /**
-     * Returns true if the character is a letter in the phonetic alphabetic
-     * or is a decimal number.
-     *
-     * @param check The character to check.
-     *
-     * @return true if this method's criteria is matched.
-     */
-
-    public static boolean isAlphaNumeric( char check ) {
-	return isAlpha( check ) || isNumeric( check );
-    }
-
-    /**
-     * Returns true if the character is a decimal number.
-     *
-     * @param check The character to check.
-     *
-     * @return true if this method's criteria is matched.
-     */
-
-    public static boolean isNumeric( char check ) {
-	return check >= '0' && check <= '9'; 
-    }
-
-    /**
-     * Returns a string with no more and no less than <em>n</em> characters
-     * where n is the length. If the string passed is less than this length,
-     * an appropriate number of spaces is concatenated. If the string is
-     * longer than the length passed, a substring of the length passed
-     * is returned.
-     *
-     * @param s       The string to expand.
-     * @param length  The required length.
-     *
-     * @return The expanded string.
-     */
-
-    public static String expandString( String s, int length ) {
-	if ( s.length() > length ) s = s.substring( 0, length );
-	return s + getSpaces( length - s.length() );
-    }
-
-    /**
-     * Returns a string containing the number of spaces passed as an
-     * argument.
-     *
-     * @param count The number of spaces in the string returned.
-     *
-     * @return a string containing the number of spaces passed.
-     */
-
-    public static String getSpaces( int count ) {
-	return repeat( ' ', count );
-    }
-
-    /**
-     * Returns a string with a character repeated based on a count passed.
-     *
-     * @param c     The character to repeat.
-     * @param count The number of times to repeat the character.
-     */
-
-    public static String repeat( char c, int count ) {
-	StringBuffer retval = new StringBuffer( count );
-	for ( int n = 0; n < count; n++ ) {
-	    retval.append( c );
-	}
-	return retval.toString();
-    }
-
-    /**
-     * Trim spaces off the left side of this string.
-     *
-     * @param s The string to trim.
-     *
-     * @return  The trimmed string.
-     */
-
-    public static String ltrim( String s ) {
-	StringBuffer buf = new StringBuffer( s );
-	for ( int n = 0; n < buf.length() && buf.charAt( n ) == ' '; ) {
-	    buf.delete( 0, 1 );
-	}
-	return buf.toString();
-    }
-
-    /**
-     * Trim spaces off the right side of this string.
-     *
-     * @param s The string to trim.
-     *
-     * @return  The trimmed string.
-     */
-
-    public static String rtrim( String s ) {
-	StringBuffer buf = new StringBuffer( s );
-	for ( int k = buf.length() - 1; k >= 0 && buf.charAt( k ) == ' ';
-	      k = buf.length() - 1 ) {
-	    buf.delete( buf.length() - 1, buf.length() );
-	}
-	return buf.toString();
-    }
-
-    /**
-     * Trim spaces off both sides of this string.
-     *
-     * @param s The string to trim.
-     *
-     * @return  The trimmed string.
-     */
-
-    public static String trim( String s ) {
-	return ltrim( rtrim( s ) );
-    }
-
-    /**
-     * Takes a line (presumably from a file) and removes a comment if
-     * one exists. If the comment character is enclosed within a literal
-     * string defined by the delimiter passed, then the character is
-     * ignored.
-     *
-     * @param s         The string to strip comments off.
-     * @param delim     The string delimiter.
-     * @param comment   The comment character.
-     *
-     * @return A string stripped of comments.
-     */
-
-    public static String stripComments( String s, char delim, char comment ) {
-	String retval = s;
-	boolean q = false;
-	for ( int n = 0; n < s.length(); n++ ) {
-	    if ( s.charAt( n ) == delim ) {
-		q = !q;
-	    }
-	    else if ( !q && s.charAt( n ) == comment ) {
-		retval = s.substring( 0, n );
-	    }
-	}
-	return retval;
-    }
-
-    /**
-     * Returns a string with the passed string repeated based on the 
-     * integer count passed.
-     *
-     * @param s     The string to repeat.
-     * @param count The number of times to repeat the string.
-     *
-     * @return      The repeated string.
-     */
-
-    public static String repeat( String s, int count ) {
-	StringBuffer retval = new StringBuffer( s.length() * count );
-	for ( int n = 0; n < count; n++ ) {
-	    retval.append( s );
-	}
-	return retval.toString();
-    }
-}
+package gnu.dtools.ritopt;
+
+/**
+ * Utility.java
+ *
+ * Version:
+ *    $Id: Utility.java 1318 2005-11-08 04:53:29Z mortenalver $
+ */
+
+/**
+ * This class provides static utility members for some basic string operations.
+ *
+ * <hr>
+ *
+ * <pre>
+ * Copyright (C) Damian Ryan Eads, 2001. All Rights Reserved.
+ *
+ * ritopt 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.
+
+ * ritopt 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 ritopt; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * </pre>
+ *
+ * @author Damian Eads
+ */
+
+public class Utility {
+
+    /**
+     * Returns true if any of the characters in the list appear in the
+     * check string passed.
+     *
+     * @param check The string to check.
+     * @param list  The list of valid characters.
+     *
+     * @return true if the criteria of this method is satisfied.
+     */
+
+    public static boolean contains( String check, String list ) {
+	for ( int n = 0; n < list.length(); n++ ) {
+	    if ( check.indexOf( list.substring( n, n + 1 ) ) != -1 )
+		return true;
+	}
+	return false;
+    }
+
+    /**
+     * Returns the number of occurances the character specification
+     * appears in the check string passed.
+     *
+     * @param check The string to check.
+     * @param spec  The character specification.
+     *
+     * @return the number of occurances of the character specification.
+     */
+
+    public static int count( String check, char spec ) {
+        int sum = 0;
+	for ( int n = 0; n < check.length(); n++ ) {
+	    if ( check.charAt( 0 ) == spec ) sum++;
+	}
+	return sum;
+    }
+
+    /**
+     * Returns true if any of the characters in the list are equal to
+     * the check character.
+     *
+     * @param check The character to check.
+     * @param list  The list of valid characters.
+     *
+     * @return true if any of the characters in the list equal the check
+     *              character. 
+     */
+
+    public static boolean contains( char check, String list ) {
+	return contains( "" + check, list );
+    }
+
+    /**
+     * Returns true if the string only contains letters in the phonetic
+     * alphabet.
+     *
+     * @param check The string to check.
+     *
+     * @return If this method's criteria is matched.
+     */
+
+    public static boolean isAlpha( String check ) {
+	boolean retval = false;
+	for ( int n = 0; n < check.length(); n++ ) {
+	    retval = isAlphaLower( check.charAt( n ) ) ||
+		isAlphaUpper( check.charAt( n ) );
+	}
+	return retval;
+    }
+
+    /**
+     * Returns true if the string only contains lower case letters in the
+     * phonetic alphabet.
+     *
+     * @param check The string to check.
+     *
+     * @return If this method's criteria is matched.
+     */
+
+    public static boolean isAlphaLower( String check ) {
+	boolean retval = false;
+	for ( int n = 0; n < check.length(); n++ ) {
+	    retval = isAlphaLower( check.charAt( n ) );
+	}
+	return retval;
+    }
+
+    /**
+     * Returns true if the string only contains upper case letters in the
+     * phonetic alphabet.
+     *
+     * @param check The string to check.
+     *
+     * @return If this method's criteria is matched.
+     */
+
+    public static boolean isAlphaUpper( String check ) {
+	boolean retval = false;
+	for ( int n = 0; n < check.length(); n++ ) {
+	    retval = isAlphaUpper( check.charAt( n ) );
+	}
+	return retval;
+    }
+
+    /**
+     * Returns true if the character is a letter in the phonetic alphabetic.
+     *
+     * @param check The character to check.
+     *
+     * @return true if this method's criteria is matched.
+     */
+
+    public static boolean isAlpha( char check ) {
+	return isAlphaLower( check ) || isAlphaUpper( check );
+    }
+
+    /**
+     * Returns true if the character is a lower case letter in the
+     * phonetic alphabetic.
+     *
+     * @param check The character to check.
+     *
+     * @return true if this method's criteria is matched.
+     */
+
+    public static boolean isAlphaLower( char check ) {
+	return check >= 'a' && check <= 'z';
+    }
+
+    /**
+     * Returns true if the character is a upper case letter in the
+     * phonetic alphabetic.
+     *
+     * @param check The character to check.
+     *
+     * @return true if this method's criteria is matched.
+     */
+
+    public static boolean isAlphaUpper( char check ) {
+	return check >= 'A' && check <= 'Z';
+    }
+
+    /**
+     * Returns true if the character is a letter in the phonetic alphabetic
+     * or is a decimal number.
+     *
+     * @param check The character to check.
+     *
+     * @return true if this method's criteria is matched.
+     */
+
+    public static boolean isAlphaNumeric( char check ) {
+	return isAlpha( check ) || isNumeric( check );
+    }
+
+    /**
+     * Returns true if the character is a decimal number.
+     *
+     * @param check The character to check.
+     *
+     * @return true if this method's criteria is matched.
+     */
+
+    public static boolean isNumeric( char check ) {
+	return check >= '0' && check <= '9'; 
+    }
+
+    /**
+     * Returns a string with no more and no less than <em>n</em> characters
+     * where n is the length. If the string passed is less than this length,
+     * an appropriate number of spaces is concatenated. If the string is
+     * longer than the length passed, a substring of the length passed
+     * is returned.
+     *
+     * @param s       The string to expand.
+     * @param length  The required length.
+     *
+     * @return The expanded string.
+     */
+
+    public static String expandString( String s, int length ) {
+	if ( s.length() > length ) s = s.substring( 0, length );
+	return s + getSpaces( length - s.length() );
+    }
+
+    /**
+     * Returns a string containing the number of spaces passed as an
+     * argument.
+     *
+     * @param count The number of spaces in the string returned.
+     *
+     * @return a string containing the number of spaces passed.
+     */
+
+    public static String getSpaces( int count ) {
+	return repeat( ' ', count );
+    }
+
+    /**
+     * Returns a string with a character repeated based on a count passed.
+     *
+     * @param c     The character to repeat.
+     * @param count The number of times to repeat the character.
+     */
+
+    public static String repeat( char c, int count ) {
+	StringBuffer retval = new StringBuffer( count );
+	for ( int n = 0; n < count; n++ ) {
+	    retval.append( c );
+	}
+	return retval.toString();
+    }
+
+    /**
+     * Trim spaces off the left side of this string.
+     *
+     * @param s The string to trim.
+     *
+     * @return  The trimmed string.
+     */
+
+    public static String ltrim( String s ) {
+	StringBuffer buf = new StringBuffer( s );
+	for ( int n = 0; n < buf.length() && buf.charAt( n ) == ' '; ) {
+	    buf.delete( 0, 1 );
+	}
+	return buf.toString();
+    }
+
+    /**
+     * Trim spaces off the right side of this string.
+     *
+     * @param s The string to trim.
+     *
+     * @return  The trimmed string.
+     */
+
+    public static String rtrim( String s ) {
+	StringBuffer buf = new StringBuffer( s );
+	for ( int k = buf.length() - 1; k >= 0 && buf.charAt( k ) == ' ';
+	      k = buf.length() - 1 ) {
+	    buf.delete( buf.length() - 1, buf.length() );
+	}
+	return buf.toString();
+    }
+
+    /**
+     * Trim spaces off both sides of this string.
+     *
+     * @param s The string to trim.
+     *
+     * @return  The trimmed string.
+     */
+
+    public static String trim( String s ) {
+	return ltrim( rtrim( s ) );
+    }
+
+    /**
+     * Takes a line (presumably from a file) and removes a comment if
+     * one exists. If the comment character is enclosed within a literal
+     * string defined by the delimiter passed, then the character is
+     * ignored.
+     *
+     * @param s         The string to strip comments off.
+     * @param delim     The string delimiter.
+     * @param comment   The comment character.
+     *
+     * @return A string stripped of comments.
+     */
+
+    public static String stripComments( String s, char delim, char comment ) {
+	String retval = s;
+	boolean q = false;
+	for ( int n = 0; n < s.length(); n++ ) {
+	    if ( s.charAt( n ) == delim ) {
+		q = !q;
+	    }
+	    else if ( !q && s.charAt( n ) == comment ) {
+		retval = s.substring( 0, n );
+	    }
+	}
+	return retval;
+    }
+
+    /**
+     * Returns a string with the passed string repeated based on the 
+     * integer count passed.
+     *
+     * @param s     The string to repeat.
+     * @param count The number of times to repeat the string.
+     *
+     * @return      The repeated string.
+     */
+
+    public static String repeat( String s, int count ) {
+	StringBuffer retval = new StringBuffer( s.length() * count );
+	for ( int n = 0; n < count; n++ ) {
+	    retval.append( s );
+	}
+	return retval.toString();
+    }
+}
diff --git a/src/java/jalopy.format.convention.xml b/src/java/jalopy.format.convention.xml
index d0802e9..ca00fc1 100755
--- a/src/java/jalopy.format.convention.xml
+++ b/src/java/jalopy.format.convention.xml
@@ -1,406 +1,406 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<jalopy>
-    <general>
-        <compliance>
-            <version>1</version>
-        </compliance>
-        <style>
-            <description>Jalopy convention definitions for the JabRef project</description>
-            <name>JabRef convention</name>
-        </style>
-    </general>
-    <inspector>
-        <enable>false</enable>
-        <naming>
-            <classes>
-                <abstract>[A-Z][a-zA-Z0-9]+</abstract>
-                <general>[A-Z][a-zA-Z0-9]+</general>
-            </classes>
-            <fields>
-                <default>[a-z][\w]+</default>
-                <defaultStatic>[a-z][\w]+</defaultStatic>
-                <defaultStaticFinal>[a-zA-Z][\w]+</defaultStaticFinal>
-                <private>[a-z][\w]+</private>
-                <privateStatic>[a-z][\w]+</privateStatic>
-                <privateStaticFinal>[a-zA-Z][\w]+</privateStaticFinal>
-                <protected>[a-z][\w]+</protected>
-                <protectedStatic>[a-z][\w]+</protectedStatic>
-                <protectedStaticFinal>[a-zA-Z][\w]+</protectedStaticFinal>
-                <public>[a-z][\w]+</public>
-                <publicStatic>[a-z][\w]+</publicStatic>
-                <publicStaticFinal>[a-zA-Z][\w]+</publicStaticFinal>
-            </fields>
-            <interfaces>[A-Z][a-zA-Z0-9]+</interfaces>
-            <labels>\w+</labels>
-            <methods>
-                <default>[a-z][\w]+</default>
-                <defaultStatic>[a-z][\w]+</defaultStatic>
-                <defaultStaticFinal>[a-z][\w]+</defaultStaticFinal>
-                <private>[a-z][\w]+</private>
-                <privateStatic>[a-z][\w]+</privateStatic>
-                <privateStaticFinal>[a-z][\w]+</privateStaticFinal>
-                <protected>[a-z][\w]+</protected>
-                <protectedStatic>[a-z][\w]+</protectedStatic>
-                <protectedStaticFinal>[a-z][\w]+</protectedStaticFinal>
-                <public>[a-z][\w]+</public>
-                <publicStatic>[a-z][\w]+</publicStatic>
-                <publicStaticFinal>[a-z][\w]+</publicStaticFinal>
-            </methods>
-            <packages>[a-z]+(?:\.[a-z]+)*</packages>
-            <parameters>
-                <default>[a-z][\w]+</default>
-                <final>[a-z][\w]+</final>
-            </parameters>
-            <variables>[a-z][\w]*</variables>
-        </naming>
-        <tips>
-            <adhereToNamingConvention>false</adhereToNamingConvention>
-            <alwaysOverrideEquals>false</alwaysOverrideEquals>
-            <alwaysOverrideHashCode>false</alwaysOverrideHashCode>
-            <avoidThreadGroups>false</avoidThreadGroups>
-            <declareCollectionComment>false</declareCollectionComment>
-            <dontIgnoreExceptions>false</dontIgnoreExceptions>
-            <dontSubstituteObjectEquals>false</dontSubstituteObjectEquals>
-            <neverDeclareException>false</neverDeclareException>
-            <neverDeclareThrowable>false</neverDeclareThrowable>
-            <neverInvokeWaitOutsideLoop>false</neverInvokeWaitOutsideLoop>
-            <neverReturnZeroArrays>false</neverReturnZeroArrays>
-            <neverUseEmptyFinally>false</neverUseEmptyFinally>
-            <obeyContractEquals>false</obeyContractEquals>
-            <overrideToString>false</overrideToString>
-            <referToObjectsByInterface>false</referToObjectsByInterface>
-            <replaceStructureWithClass>false</replaceStructureWithClass>
-            <stringLiterallI18n>false</stringLiterallI18n>
-            <useInterfaceOnlyForTypes>false</useInterfaceOnlyForTypes>
-            <wrongCollectionComment>false</wrongCollectionComment>
-        </tips>
-    </inspector>
-    <internal>
-        <version>6</version>
-    </internal>
-    <messages>
-        <priority>
-            <general>30000</general>
-            <parser>30000</parser>
-            <parserJavadoc>30000</parserJavadoc>
-            <printer>30000</printer>
-            <printerJavadoc>30000</printerJavadoc>
-            <transform>30000</transform>
-        </priority>
-        <showErrorStackTrace>true</showErrorStackTrace>
-    </messages>
-    <misc>
-        <threadCount>1</threadCount>
-    </misc>
-    <printer>
-        <alignment>
-            <methodCallChain>true</methodCallChain>
-            <parameterMethodDeclaration>false</parameterMethodDeclaration>
-            <ternaryOperator>true</ternaryOperator>
-            <variableAssignment>false</variableAssignment>
-            <variableIdentifier>false</variableIdentifier>
-        </alignment>
-        <backup>
-            <directory>bak</directory>
-            <level>0</level>
-        </backup>
-        <blanklines>
-            <after>
-                <block>1</block>
-                <braceLeft>0</braceLeft>
-                <class>1</class>
-                <declaration>0</declaration>
-                <footer>1</footer>
-                <header>0</header>
-                <interface>1</interface>
-                <lastImport>2</lastImport>
-                <method>1</method>
-                <package>1</package>
-            </after>
-            <before>
-                <block>1</block>
-                <braceRight>0</braceRight>
-                <caseBlock>1</caseBlock>
-                <comment>
-                    <javadoc>1</javadoc>
-                    <multiline>1</multiline>
-                    <singleline>1</singleline>
-                </comment>
-                <controlStatement>1</controlStatement>
-                <declaration>1</declaration>
-                <footer>0</footer>
-                <header>0</header>
-            </before>
-            <keepUpTo>1</keepUpTo>
-        </blanklines>
-        <braces>
-            <empty>
-                <cuddle>false</cuddle>
-                <insertStatement>false</insertStatement>
-            </empty>
-            <insert>
-                <dowhile>true</dowhile>
-                <for>true</for>
-                <ifelse>true</ifelse>
-                <while>true</while>
-            </insert>
-            <remove>
-                <block>true</block>
-                <dowhile>false</dowhile>
-                <for>false</for>
-                <ifelse>false</ifelse>
-                <while>false</while>
-            </remove>
-            <treatDifferent>
-                <methodClass>false</methodClass>
-                <methodClassIfWrapped>false</methodClassIfWrapped>
-            </treatDifferent>
-        </braces>
-        <chunks>
-            <blanklines>true</blanklines>
-            <comments>true</comments>
-        </chunks>
-        <comments>
-            <format>
-                <multiline>false</multiline>
-            </format>
-            <javadoc>
-                <check>
-                    <innerclass>false</innerclass>
-                    <tags>false</tags>
-                    <throwsTags>false</throwsTags>
-                </check>
-                <fieldsShort>true</fieldsShort>
-                <generate>
-                    <class>1</class>
-                    <constructor>0</constructor>
-                    <field>0</field>
-                    <method>0</method>
-                </generate>
-                <parseComments>false</parseComments>
-                <tags>
-                    <in-line />
-                    <standard />
-                </tags>
-                <templates>
-                    <method>
-                        <bottom> */</bottom>
-                        <exception> * @throws $exceptionType$ DOCUMENT ME!</exception>
-                        <param> * @param $paramType$ DOCUMENT ME!</param>
-                        <return> * @return DOCUMENT ME!</return>
-                        <top>/**| * DOCUMENT ME!</top>
-                    </method>
-                </templates>
-            </javadoc>
-            <remove>
-                <javadoc>false</javadoc>
-                <multiline>false</multiline>
-                <singleline>false</singleline>
-            </remove>
-            <separator>
-                <fillCharacter>/</fillCharacter>
-                <insert>true</insert>
-                <insertRecursive>false</insertRecursive>
-                <text>
-                    <class>Inner Classes</class>
-                    <constructor>Constructors</constructor>
-                    <field>Instance fields</field>
-                    <initializer>Instance initializers</initializer>
-                    <interface>Inner Interfaces</interface>
-                    <method>Methods</method>
-                    <static>Static fields/initializers</static>
-                </text>
-            </separator>
-        </comments>
-        <environment />
-        <footer>
-            <keys />
-            <smartMode>5</smartMode>
-            <text>///////////////////////////////////////////////////////////////////////////////
-//  END OF FILE.
-///////////////////////////////////////////////////////////////////////////////</text>
-            <use>true</use>
-        </footer>
-
-        <!-- header should not used, because there are some LGPL sources and other authors -->
-        <header>
-            <keys>JOELib header</keys>
-            <smartMode>5</smartMode>
-			<text>///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: jalopy.format.convention.xml,v $
-//  Language: Java
-//  Compiler: JDK 1.4
-//  Version:  $Revision: 1.1 $
-//            $Date: 2004/01/28 22:41:11 $
-//            $Author: wegner $
-//
-//  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
-//
-//  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 version 2 of the License.
-//
-//  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.
-///////////////////////////////////////////////////////////////////////////////</text>
-            <use>false</use>
-        </header>
-        <history>
-            <policy>disabled</policy>
-        </history>
-        <imports>
-            <grouping>
-                <defaultDepth>3</defaultDepth>
-                <packages>*:0|gnu:2|java:2|javax:2|org:2|com:2|net:2</packages>
-            </grouping>
-            <policy>disabled</policy>
-            <sort>true</sort>
-        </imports>
-
-        <indentation>
-            <caseFromSwitch>false</caseFromSwitch>
-            <continuation>
-                <block>true</block>
-                <operator>false</operator>
-            </continuation>
-            <firstColumnComments>true</firstColumnComments>
-            <label>false</label>
-            <policy>
-                <deep>false</deep>
-            </policy>
-            <sizes>
-                <braceCuddled>1</braceCuddled>
-                <braceLeft>0</braceLeft>
-                <braceRight>0</braceRight>
-                <braceRightAfter>1</braceRightAfter>
-                <continuation>4</continuation>
-                <deep>55</deep>
-                <extends>-1</extends>
-                <general>4</general>
-                <implements>-1</implements>
-                <leading>0</leading>
-                <tabs>8</tabs>
-                <throws>-1</throws>
-                <trailingComment>1</trailingComment>
-            </sizes>
-            <tabs>
-                <enable>false</enable>
-                <onlyLeading>false</onlyLeading>
-            </tabs>
-        </indentation>
-        <misc>
-            <arrayBracketsAfterIdent>false</arrayBracketsAfterIdent>
-            <forceFormatting>false</forceFormatting>
-            <insertExpressionParentheses>true</insertExpressionParentheses>
-            <insertLoggingConditional>true</insertLoggingConditional>
-            <insertTrailingNewline>true</insertTrailingNewline>
-            <insertUID>false</insertUID>
-        </misc>
-        <sorting>
-            <declaration>
-                <class>true</class>
-                <constructor>true</constructor>
-                <enable>true</enable>
-                <interface>true</interface>
-                <method>true</method>
-                <order>static|field|initializer|constructor|method|interface|class</order>
-                <variable>true</variable>
-            </declaration>
-            <modifier>
-                <enable>false</enable>
-                <order>public|protected|private|abstract|static|final|synchronized|transient|volatile|native|strictfp</order>
-            </modifier>
-        </sorting>
-
-        <whitespace>
-            <after>
-                <comma>true</comma>
-                <semicolon>true</semicolon>
-                <typeCast>true</typeCast>
-            </after>
-            <before>
-                <braces>false</braces>
-                <brackets>false</brackets>
-                <bracketsTypes>false</bracketsTypes>
-                <caseColon>false</caseColon>
-                <operator>
-                    <not>false</not>
-                </operator>
-                <parentheses>
-                    <methodCall>false</methodCall>
-                    <methodDeclaration>false</methodDeclaration>
-                    <statement>true</statement>
-                </parentheses>
-            </before>
-            <padding>
-                <braces>false</braces>
-                <brackets>false</brackets>
-                <operator>
-                    <assignment>true</assignment>
-                    <bitwise>true</bitwise>
-                    <logical>true</logical>
-                    <mathematical>true</mathematical>
-                    <relational>true</relational>
-                    <shift>true</shift>
-                </operator>
-                <parenthesis>false</parenthesis>
-                <typeCast>false</typeCast>
-            </padding>
-        </whitespace>
-        <wrapping>
-            <always>
-                <after>
-                    <arrayElement>0</arrayElement>
-                    <braceRight>true</braceRight>
-                    <extendsTypes>false</extendsTypes>
-                    <implementsTypes>false</implementsTypes>
-                    <label>true</label>
-                    <methodCallChained>false</methodCallChained>
-                    <ternaryOperator>
-                        <first>false</first>
-                        <second>false</second>
-                    </ternaryOperator>
-                    <throwsTypes>false</throwsTypes>
-                </after>
-                <before>
-                    <braceLeft>true</braceLeft>
-                    <extends>false</extends>
-                    <implements>false</implements>
-                    <throws>false</throws>
-                </before>
-                <parameter>
-                    <methodCall>false</methodCall>
-                    <methodCallNested>false</methodCallNested>
-                    <methodDeclaration>false</methodDeclaration>
-                </parameter>
-            </always>
-            <general>
-                <beforeOperator>false</beforeOperator>
-                <enable>true</enable>
-                <lineLength>80</lineLength>
-            </general>
-            <ondemand>
-                <after>
-                    <assignment>false</assignment>
-                    <leftParenthesis>false</leftParenthesis>
-                    <parameter>false</parameter>
-                    <types>
-                        <extends>false</extends>
-                        <implements>false</implements>
-                        <throws>false</throws>
-                    </types>
-                </after>
-                <before>
-                    <rightParenthesis>false</rightParenthesis>
-                </before>
-                <groupingParentheses>false</groupingParentheses>
-            </ondemand>
-        </wrapping>
-    </printer>
-</jalopy>
-
-<!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-   END OF FILE
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
+<?xml version="1.0" encoding="UTF-8"?>
+<jalopy>
+    <general>
+        <compliance>
+            <version>1</version>
+        </compliance>
+        <style>
+            <description>Jalopy convention definitions for the JabRef project</description>
+            <name>JabRef convention</name>
+        </style>
+    </general>
+    <inspector>
+        <enable>false</enable>
+        <naming>
+            <classes>
+                <abstract>[A-Z][a-zA-Z0-9]+</abstract>
+                <general>[A-Z][a-zA-Z0-9]+</general>
+            </classes>
+            <fields>
+                <default>[a-z][\w]+</default>
+                <defaultStatic>[a-z][\w]+</defaultStatic>
+                <defaultStaticFinal>[a-zA-Z][\w]+</defaultStaticFinal>
+                <private>[a-z][\w]+</private>
+                <privateStatic>[a-z][\w]+</privateStatic>
+                <privateStaticFinal>[a-zA-Z][\w]+</privateStaticFinal>
+                <protected>[a-z][\w]+</protected>
+                <protectedStatic>[a-z][\w]+</protectedStatic>
+                <protectedStaticFinal>[a-zA-Z][\w]+</protectedStaticFinal>
+                <public>[a-z][\w]+</public>
+                <publicStatic>[a-z][\w]+</publicStatic>
+                <publicStaticFinal>[a-zA-Z][\w]+</publicStaticFinal>
+            </fields>
+            <interfaces>[A-Z][a-zA-Z0-9]+</interfaces>
+            <labels>\w+</labels>
+            <methods>
+                <default>[a-z][\w]+</default>
+                <defaultStatic>[a-z][\w]+</defaultStatic>
+                <defaultStaticFinal>[a-z][\w]+</defaultStaticFinal>
+                <private>[a-z][\w]+</private>
+                <privateStatic>[a-z][\w]+</privateStatic>
+                <privateStaticFinal>[a-z][\w]+</privateStaticFinal>
+                <protected>[a-z][\w]+</protected>
+                <protectedStatic>[a-z][\w]+</protectedStatic>
+                <protectedStaticFinal>[a-z][\w]+</protectedStaticFinal>
+                <public>[a-z][\w]+</public>
+                <publicStatic>[a-z][\w]+</publicStatic>
+                <publicStaticFinal>[a-z][\w]+</publicStaticFinal>
+            </methods>
+            <packages>[a-z]+(?:\.[a-z]+)*</packages>
+            <parameters>
+                <default>[a-z][\w]+</default>
+                <final>[a-z][\w]+</final>
+            </parameters>
+            <variables>[a-z][\w]*</variables>
+        </naming>
+        <tips>
+            <adhereToNamingConvention>false</adhereToNamingConvention>
+            <alwaysOverrideEquals>false</alwaysOverrideEquals>
+            <alwaysOverrideHashCode>false</alwaysOverrideHashCode>
+            <avoidThreadGroups>false</avoidThreadGroups>
+            <declareCollectionComment>false</declareCollectionComment>
+            <dontIgnoreExceptions>false</dontIgnoreExceptions>
+            <dontSubstituteObjectEquals>false</dontSubstituteObjectEquals>
+            <neverDeclareException>false</neverDeclareException>
+            <neverDeclareThrowable>false</neverDeclareThrowable>
+            <neverInvokeWaitOutsideLoop>false</neverInvokeWaitOutsideLoop>
+            <neverReturnZeroArrays>false</neverReturnZeroArrays>
+            <neverUseEmptyFinally>false</neverUseEmptyFinally>
+            <obeyContractEquals>false</obeyContractEquals>
+            <overrideToString>false</overrideToString>
+            <referToObjectsByInterface>false</referToObjectsByInterface>
+            <replaceStructureWithClass>false</replaceStructureWithClass>
+            <stringLiterallI18n>false</stringLiterallI18n>
+            <useInterfaceOnlyForTypes>false</useInterfaceOnlyForTypes>
+            <wrongCollectionComment>false</wrongCollectionComment>
+        </tips>
+    </inspector>
+    <internal>
+        <version>6</version>
+    </internal>
+    <messages>
+        <priority>
+            <general>30000</general>
+            <parser>30000</parser>
+            <parserJavadoc>30000</parserJavadoc>
+            <printer>30000</printer>
+            <printerJavadoc>30000</printerJavadoc>
+            <transform>30000</transform>
+        </priority>
+        <showErrorStackTrace>true</showErrorStackTrace>
+    </messages>
+    <misc>
+        <threadCount>1</threadCount>
+    </misc>
+    <printer>
+        <alignment>
+            <methodCallChain>true</methodCallChain>
+            <parameterMethodDeclaration>false</parameterMethodDeclaration>
+            <ternaryOperator>true</ternaryOperator>
+            <variableAssignment>false</variableAssignment>
+            <variableIdentifier>false</variableIdentifier>
+        </alignment>
+        <backup>
+            <directory>bak</directory>
+            <level>0</level>
+        </backup>
+        <blanklines>
+            <after>
+                <block>1</block>
+                <braceLeft>0</braceLeft>
+                <class>1</class>
+                <declaration>0</declaration>
+                <footer>1</footer>
+                <header>0</header>
+                <interface>1</interface>
+                <lastImport>2</lastImport>
+                <method>1</method>
+                <package>1</package>
+            </after>
+            <before>
+                <block>1</block>
+                <braceRight>0</braceRight>
+                <caseBlock>1</caseBlock>
+                <comment>
+                    <javadoc>1</javadoc>
+                    <multiline>1</multiline>
+                    <singleline>1</singleline>
+                </comment>
+                <controlStatement>1</controlStatement>
+                <declaration>1</declaration>
+                <footer>0</footer>
+                <header>0</header>
+            </before>
+            <keepUpTo>1</keepUpTo>
+        </blanklines>
+        <braces>
+            <empty>
+                <cuddle>false</cuddle>
+                <insertStatement>false</insertStatement>
+            </empty>
+            <insert>
+                <dowhile>true</dowhile>
+                <for>true</for>
+                <ifelse>true</ifelse>
+                <while>true</while>
+            </insert>
+            <remove>
+                <block>true</block>
+                <dowhile>false</dowhile>
+                <for>false</for>
+                <ifelse>false</ifelse>
+                <while>false</while>
+            </remove>
+            <treatDifferent>
+                <methodClass>false</methodClass>
+                <methodClassIfWrapped>false</methodClassIfWrapped>
+            </treatDifferent>
+        </braces>
+        <chunks>
+            <blanklines>true</blanklines>
+            <comments>true</comments>
+        </chunks>
+        <comments>
+            <format>
+                <multiline>false</multiline>
+            </format>
+            <javadoc>
+                <check>
+                    <innerclass>false</innerclass>
+                    <tags>false</tags>
+                    <throwsTags>false</throwsTags>
+                </check>
+                <fieldsShort>true</fieldsShort>
+                <generate>
+                    <class>1</class>
+                    <constructor>0</constructor>
+                    <field>0</field>
+                    <method>0</method>
+                </generate>
+                <parseComments>false</parseComments>
+                <tags>
+                    <in-line />
+                    <standard />
+                </tags>
+                <templates>
+                    <method>
+                        <bottom> */</bottom>
+                        <exception> * @throws $exceptionType$ DOCUMENT ME!</exception>
+                        <param> * @param $paramType$ DOCUMENT ME!</param>
+                        <return> * @return DOCUMENT ME!</return>
+                        <top>/**| * DOCUMENT ME!</top>
+                    </method>
+                </templates>
+            </javadoc>
+            <remove>
+                <javadoc>false</javadoc>
+                <multiline>false</multiline>
+                <singleline>false</singleline>
+            </remove>
+            <separator>
+                <fillCharacter>/</fillCharacter>
+                <insert>true</insert>
+                <insertRecursive>false</insertRecursive>
+                <text>
+                    <class>Inner Classes</class>
+                    <constructor>Constructors</constructor>
+                    <field>Instance fields</field>
+                    <initializer>Instance initializers</initializer>
+                    <interface>Inner Interfaces</interface>
+                    <method>Methods</method>
+                    <static>Static fields/initializers</static>
+                </text>
+            </separator>
+        </comments>
+        <environment />
+        <footer>
+            <keys />
+            <smartMode>5</smartMode>
+            <text>///////////////////////////////////////////////////////////////////////////////
+//  END OF FILE.
+///////////////////////////////////////////////////////////////////////////////</text>
+            <use>true</use>
+        </footer>
+
+        <!-- header should not used, because there are some LGPL sources and other authors -->
+        <header>
+            <keys>JOELib header</keys>
+            <smartMode>5</smartMode>
+			<text>///////////////////////////////////////////////////////////////////////////////
+//  Filename: $RCSfile$
+//  Language: Java
+//  Compiler: JDK 1.4
+//  Version:  $Revision: 148 $
+//            $Date: 2004-01-28 23:42:25 +0100 (Wed, 28 Jan 2004) $
+//            $Author: wegner $
+//
+//  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
+//
+//  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 version 2 of the License.
+//
+//  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.
+///////////////////////////////////////////////////////////////////////////////</text>
+            <use>false</use>
+        </header>
+        <history>
+            <policy>disabled</policy>
+        </history>
+        <imports>
+            <grouping>
+                <defaultDepth>3</defaultDepth>
+                <packages>*:0|gnu:2|java:2|javax:2|org:2|com:2|net:2</packages>
+            </grouping>
+            <policy>disabled</policy>
+            <sort>true</sort>
+        </imports>
+
+        <indentation>
+            <caseFromSwitch>false</caseFromSwitch>
+            <continuation>
+                <block>true</block>
+                <operator>false</operator>
+            </continuation>
+            <firstColumnComments>true</firstColumnComments>
+            <label>false</label>
+            <policy>
+                <deep>false</deep>
+            </policy>
+            <sizes>
+                <braceCuddled>1</braceCuddled>
+                <braceLeft>0</braceLeft>
+                <braceRight>0</braceRight>
+                <braceRightAfter>1</braceRightAfter>
+                <continuation>4</continuation>
+                <deep>55</deep>
+                <extends>-1</extends>
+                <general>4</general>
+                <implements>-1</implements>
+                <leading>0</leading>
+                <tabs>8</tabs>
+                <throws>-1</throws>
+                <trailingComment>1</trailingComment>
+            </sizes>
+            <tabs>
+                <enable>false</enable>
+                <onlyLeading>false</onlyLeading>
+            </tabs>
+        </indentation>
+        <misc>
+            <arrayBracketsAfterIdent>false</arrayBracketsAfterIdent>
+            <forceFormatting>false</forceFormatting>
+            <insertExpressionParentheses>true</insertExpressionParentheses>
+            <insertLoggingConditional>true</insertLoggingConditional>
+            <insertTrailingNewline>true</insertTrailingNewline>
+            <insertUID>false</insertUID>
+        </misc>
+        <sorting>
+            <declaration>
+                <class>true</class>
+                <constructor>true</constructor>
+                <enable>true</enable>
+                <interface>true</interface>
+                <method>true</method>
+                <order>static|field|initializer|constructor|method|interface|class</order>
+                <variable>true</variable>
+            </declaration>
+            <modifier>
+                <enable>false</enable>
+                <order>public|protected|private|abstract|static|final|synchronized|transient|volatile|native|strictfp</order>
+            </modifier>
+        </sorting>
+
+        <whitespace>
+            <after>
+                <comma>true</comma>
+                <semicolon>true</semicolon>
+                <typeCast>true</typeCast>
+            </after>
+            <before>
+                <braces>false</braces>
+                <brackets>false</brackets>
+                <bracketsTypes>false</bracketsTypes>
+                <caseColon>false</caseColon>
+                <operator>
+                    <not>false</not>
+                </operator>
+                <parentheses>
+                    <methodCall>false</methodCall>
+                    <methodDeclaration>false</methodDeclaration>
+                    <statement>true</statement>
+                </parentheses>
+            </before>
+            <padding>
+                <braces>false</braces>
+                <brackets>false</brackets>
+                <operator>
+                    <assignment>true</assignment>
+                    <bitwise>true</bitwise>
+                    <logical>true</logical>
+                    <mathematical>true</mathematical>
+                    <relational>true</relational>
+                    <shift>true</shift>
+                </operator>
+                <parenthesis>false</parenthesis>
+                <typeCast>false</typeCast>
+            </padding>
+        </whitespace>
+        <wrapping>
+            <always>
+                <after>
+                    <arrayElement>0</arrayElement>
+                    <braceRight>true</braceRight>
+                    <extendsTypes>false</extendsTypes>
+                    <implementsTypes>false</implementsTypes>
+                    <label>true</label>
+                    <methodCallChained>false</methodCallChained>
+                    <ternaryOperator>
+                        <first>false</first>
+                        <second>false</second>
+                    </ternaryOperator>
+                    <throwsTypes>false</throwsTypes>
+                </after>
+                <before>
+                    <braceLeft>true</braceLeft>
+                    <extends>false</extends>
+                    <implements>false</implements>
+                    <throws>false</throws>
+                </before>
+                <parameter>
+                    <methodCall>false</methodCall>
+                    <methodCallNested>false</methodCallNested>
+                    <methodDeclaration>false</methodDeclaration>
+                </parameter>
+            </always>
+            <general>
+                <beforeOperator>false</beforeOperator>
+                <enable>true</enable>
+                <lineLength>80</lineLength>
+            </general>
+            <ondemand>
+                <after>
+                    <assignment>false</assignment>
+                    <leftParenthesis>false</leftParenthesis>
+                    <parameter>false</parameter>
+                    <types>
+                        <extends>false</extends>
+                        <implements>false</implements>
+                        <throws>false</throws>
+                    </types>
+                </after>
+                <before>
+                    <rightParenthesis>false</rightParenthesis>
+                </before>
+                <groupingParentheses>false</groupingParentheses>
+            </ondemand>
+        </wrapping>
+    </printer>
+</jalopy>
+
+<!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   END OF FILE
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
diff --git a/src/java/net/sf/jabref/AppearancePrefsTab.java b/src/java/net/sf/jabref/AppearancePrefsTab.java
index dbc140f..8ddc05d 100644
--- a/src/java/net/sf/jabref/AppearancePrefsTab.java
+++ b/src/java/net/sf/jabref/AppearancePrefsTab.java
@@ -22,7 +22,7 @@ import com.jgoodies.forms.layout.FormLayout;
 class AppearancePrefsTab extends JPanel implements PrefsTab {
 
     JabRefPreferences _prefs;
-    private JCheckBox colorCodes, antialias, overrideFonts;//, useCustomIconTheme;
+    private JCheckBox colorCodes, overrideFonts;//, useCustomIconTheme;
     private GridBagLayout gbl = new GridBagLayout();
     private JButton fontButton = new JButton(Globals.lang("Set table font"));
     private ColorSetupPanel colorPanel = new ColorSetupPanel();
@@ -46,8 +46,8 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
 
         colorCodes = new JCheckBox(Globals.lang
                    ("Color codes for required and optional fields"));
-        antialias = new JCheckBox(Globals.lang
-                  ("Use antialiasing font"));
+        /*antialias = new JCheckBox(Globals.lang
+                  ("Use antialiasing font"));*/
         overrideFonts = new JCheckBox(Globals.lang("Override default font settings"));
 
         //useCustomIconTheme = new JCheckBox(Globals.lang("Use custom icon theme"));
@@ -68,8 +68,8 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
         builder.append(overrideFonts);
         builder.nextLine();
         builder.appendSeparator(Globals.lang("Table appearance"));
-        builder.append(antialias);
-        builder.nextLine();
+        //builder.append(antialias);
+        //builder.nextLine();
         builder.append(colorCodes);
         builder.nextLine();
         builder.append(fontButton);
@@ -134,7 +134,7 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
 
     public void setValues() {
         colorCodes.setSelected(_prefs.getBoolean("tableColorCodesOn"));
-        antialias.setSelected(_prefs.getBoolean("antialias"));
+        //antialias.setSelected(_prefs.getBoolean("antialias"));
         fontSize.setText("" + _prefs.getInt("menuFontSize"));
         oldMenuFontSize = _prefs.getInt("menuFontSize");
         overrideFonts.setSelected(_prefs.getBoolean("overrideDefaultFonts"));
@@ -153,7 +153,7 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
     public void storeSettings() {
 
         _prefs.putBoolean("tableColorCodesOn", colorCodes.isSelected());
-        _prefs.putBoolean("antialias", antialias.isSelected());
+        //_prefs.putBoolean("antialias", antialias.isSelected());
         _prefs.put("fontFamily", font.getFamily());
         _prefs.putInt("fontStyle", font.getStyle());
         _prefs.putInt("fontSize", font.getSize());
diff --git a/src/java/net/sf/jabref/BasePanel.java b/src/java/net/sf/jabref/BasePanel.java
index 99575d7..04888b2 100644
--- a/src/java/net/sf/jabref/BasePanel.java
+++ b/src/java/net/sf/jabref/BasePanel.java
@@ -161,6 +161,8 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
     StringDialog stringDialog = null;
     // Keeps track of the string dialog if it is open.
 
+    SaveDatabaseAction saveAction;
+
     /**
      * The group selector component for this database. Instantiated by the
      * SidePaneManager if necessary, or from this class if merging groups from a
@@ -273,6 +275,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
     }
 
     private void setupActions() {
+        saveAction = new SaveDatabaseAction(this);
         
         actions.put("undo", undoAction);
         actions.put("redo", redoAction);
@@ -363,162 +366,11 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
 
 
         // The action for saving a database.
-        actions.put("save", new AbstractWorker() {
-            private boolean success = false, cancelled = false;
-            public void init() throws Throwable {
-                success = false;
-                cancelled = false;
-                if (getFile() == null)
-                    runCommand("saveAs");
-                else {
-
-                    if (updatedExternally || Globals.fileUpdateMonitor.hasBeenModified(fileMonitorHandle)) {
-                        String[] opts = new String[]{Globals.lang("Review changes"), Globals.lang("Save"),
-                                Globals.lang("Cancel")};
-                        int answer = JOptionPane.showOptionDialog(frame, Globals.lang("File has been updated externally. "
-                                + "What do you want to do?"), Globals.lang("File updated externally"),
-                                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
-                                null, opts, opts[0]);
-                        /*  int choice = JOptionPane.showConfirmDialog(frame, Globals.lang("File has been updated externally. "
-+"Are you sure you want to save?"), Globals.lang("File updated externally"),
-                       JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);*/
-
-                        if (answer == JOptionPane.CANCEL_OPTION)
-                            return;
-                        else if (answer == JOptionPane.YES_OPTION) {
-                            ChangeScanner scanner = new ChangeScanner(frame, BasePanel.this); //, panel.database(), panel.metaData());
-                            //try {
-                            scanner.changeScan(getFile());
-                            setUpdatedExternally(false);
-                            SwingUtilities.invokeLater(new Runnable() {
-                                public void run() {
-                                    sidePaneManager.hide("fileUpdate");
-                                }
-                            });
-
-                            //} catch (IOException ex) {
-                            //    ex.printStackTrace();
-                            //}
-
-                            return;
-                        }
-                    }
-
-                    frame.output(Globals.lang("Saving database") + "...");
-                    saving = true;
-                }
-            }
-
-            public void update() {
-                if (success) {
-                	// Reset title of tab
-                    frame.setTabTitle(BasePanel.this, getFile().getName(),
-                            getFile().getAbsolutePath());
-                    frame.output(Globals.lang("Saved database")+" '"
-                             +getFile().getPath()+"'.");
-                } else if (!cancelled) {
-                    frame.output(Globals.lang("Save failed"));
-                }
-            }
-
-            public void run() {
-                if (getFile() == null) {
-                    cancelled = true;
-                    return;
-                }
-
-                try {
-                    // If the option is set, autogenerate keys for all entries that are
-                    // lacking keys, before saving:
-                    autoGenerateKeysBeforeSaving();
-                    
-                    // Now save the database:
-                    success = saveDatabase(getFile(), false, encoding);
-
-                    //Util.pr("Testing resolve string... BasePanel line 237");
-                    //Util.pr("Resolve aq: "+database.resolveString("aq"));
-                    //Util.pr("Resolve text: "+database.resolveForStrings("A text which refers to the string #aq# and #billball#, hurra."));
-
-                    try {
-                        Globals.fileUpdateMonitor.updateTimeStamp(fileMonitorHandle);
-                    } catch (IllegalArgumentException ex) {
-                        // This means the file has not yet been registered, which is the case
-                        // when doing a "Save as". Maybe we should change the monitor so no
-                        // exception is cast.
-                    }
-                    saving = false;
-                    if (success) {
-                        undoManager.markUnchanged();
-                        // (Only) after a successful save the following
-                        // statement marks that the base is unchanged
-                        // since last save:
-                        nonUndoableChange = false;
-                        baseChanged = false;
-                        updatedExternally = false;
-                    }
-                } catch (SaveException ex2) {
-                    ex2.printStackTrace();
-                }
-            }
-        });
+        actions.put("save", saveAction);
 
         actions.put("saveAs", new BaseAction() {
             public void action() throws Throwable {
-                
-                /*JPanel options = new JPanel();
-                DefaultFormBuilder builder = new DefaultFormBuilder(options, new FormLayout("left:pref", "pref, pref, pref"));
-                //options.setLayout(new GridLayout(2,1));
-                ButtonGroup bg = new ButtonGroup();
-                JRadioButton sAll = new JRadioButton("<html>All entries</html>");
-                JRadioButton sSel = new JRadioButton("<html>Selected<br>entries</html>");
-                sAll.setSelected(true);
-                bg.add(sAll);
-                bg.add(sSel);
-                builder.append(Globals.lang("Include")+":");
-                builder.append(sAll);
-                builder.append(sSel);
-                builder.appendGlueRow();
-                options.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));*/
-                String chosenFile = Globals.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")), ".bib",
-                            JFileChooser.SAVE_DIALOG, false, null);//options);
-                if (chosenFile == null)
-                    return; // cancelled
-                File f = new File(chosenFile);
-                // Check if the file already exists:
-                if (f.exists() && (JOptionPane.showConfirmDialog
-                                (frame, "'"+f.getName()+"' "+Globals.lang("exists. Overwrite file?"),
-                                Globals.lang("Save database"), JOptionPane.OK_CANCEL_OPTION)
-                                != JOptionPane.OK_OPTION)) {
-                    return; // cancelled
-                }
-                // Save:
-                //if (sAll.isSelected()) {
-                    //
-                    // Normal save
-                    //
-                    if (chosenFile != null) {
-                        metaData.setFile(f);
-                        Globals.prefs.put("workingDirectory", f.getParent());
-                        runCommand("save");
-                        // Register so we get notifications about outside changes to the file.
-                        try {
-                            fileMonitorHandle = Globals.fileUpdateMonitor.addUpdateListener(BasePanel.this,getFile());
-                        } catch (IOException ex) {
-                            ex.printStackTrace();
-                        }
-                        frame.getFileHistory().newFile(metaData.getFile().getPath());
-                    }
-                /*}
-                else {
-                    //
-                    // Save selected entries
-                    //
-                    File expFile = new File(chosenFile);
-                    saveDatabase(expFile, true, encoding);
-                    frame.getFileHistory().newFile(expFile.getPath());
-                    frame.output(Globals.lang("Saved selected to")+" '"
-                                 +expFile.getPath()+"'.");
-                } */
+                saveAction.saveAs();
             }
         });
 
@@ -535,6 +387,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                           Globals.lang("exists. Overwrite file?"),
                           Globals.lang("Save database"), JOptionPane.OK_CANCEL_OPTION)
                          == JOptionPane.OK_OPTION)) {
+
                       saveDatabase(expFile, true, Globals.prefs.get("defaultEncoding"));
                       //runCommand("save");
                       frame.getFileHistory().newFile(expFile.getPath());
@@ -751,7 +604,9 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                           for (int i=0; i<bes.length; i++) {
                             try {
                               BibtexEntry be = (BibtexEntry)(bes[i].clone());
-                                Util.setAutomaticFields(be);
+                                Util.setAutomaticFields(be,
+                                        Globals.prefs.getBoolean("overwriteOwner"),
+                                        Globals.prefs.getBoolean("overwriteTimeStamp"));
 
                               // We have to clone the
                               // entries, since the pasted
@@ -1219,7 +1074,8 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
 
                   if (tidialog.okPressed())
                   {
-                      Util.setAutomaticFields(Arrays.asList(new BibtexEntry[] {bibEntry}));
+                      Util.setAutomaticFields(Arrays.asList(new BibtexEntry[] {bibEntry}),
+                              false, false);
                     insertEntry(bibEntry) ;
                   }
                 }
@@ -1548,7 +1404,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                 // Set owner/timestamp if options are enabled:
                 ArrayList list = new ArrayList();
                 list.add(be);
-                Util.setAutomaticFields(list);
+                Util.setAutomaticFields(list, true, true);
 
                 // Create an UndoableInsertEntry object.
                 undoManager.addEdit(new UndoableInsertEntry(database, be, BasePanel.this));
@@ -2532,4 +2388,37 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         return frame.groupSelector;
     }
 
+
+    public boolean isUpdatedExternally() {
+        return updatedExternally;
+    }
+
+
+    public String getFileMonitorHandle() {
+        return fileMonitorHandle;
+    }
+
+
+    public void setFileMonitorHandle(String fileMonitorHandle) {
+        this.fileMonitorHandle = fileMonitorHandle;
+    }
+
+    public SidePaneManager getSidePaneManager() {
+        return sidePaneManager;
+    }
+
+
+    public void setNonUndoableChange(boolean nonUndoableChange) {
+        this.nonUndoableChange = nonUndoableChange;
+    }
+
+    public void setBaseChanged(boolean baseChanged) {
+        this.baseChanged = baseChanged;
+    }
+
+
+    public void setSaving(boolean saving) {
+        this.saving = saving;
+    }
+
 }
diff --git a/src/java/net/sf/jabref/BibtexEntry.java b/src/java/net/sf/jabref/BibtexEntry.java
index c0f89b0..b0fa8a8 100644
--- a/src/java/net/sf/jabref/BibtexEntry.java
+++ b/src/java/net/sf/jabref/BibtexEntry.java
@@ -138,7 +138,21 @@ public class BibtexEntry
                 "Every BibtexEntry must have a type.  Instead of null, use type OTHER");
         }
 
-        _type = type;
+        BibtexEntryType oldType = _type;
+
+        try {
+            // We set the type before throwing the changeEvent, to enable
+            // the change listener to access the new value if the change
+            // sets off a change in database sorting etc.
+            _type = type;
+            firePropertyChangedEvent(GUIGlobals.TYPE_HEADER,
+                    oldType != null ? oldType.getName() : null,
+                    type != null ? type.getName() : null);
+        } catch (PropertyVetoException pve) {
+            pve.printStackTrace();
+        }
+
+
     }
 
     /**
diff --git a/src/java/net/sf/jabref/BibtexFields.java b/src/java/net/sf/jabref/BibtexFields.java
index acfac4d..a3475c2 100644
--- a/src/java/net/sf/jabref/BibtexFields.java
+++ b/src/java/net/sf/jabref/BibtexFields.java
@@ -178,6 +178,7 @@ public class BibtexFields
     add( dummy ) ;
 
     dummy = new BibtexSingleField( OWNER, false, GUIGlobals.SMALL_W ) ;
+    dummy.setExtras("setOwner");
     dummy.setPrivate();
     add(dummy) ;
 
diff --git a/src/java/net/sf/jabref/EntryEditor.java b/src/java/net/sf/jabref/EntryEditor.java
index a5f4d0e..898e4dd 100644
--- a/src/java/net/sf/jabref/EntryEditor.java
+++ b/src/java/net/sf/jabref/EntryEditor.java
@@ -326,11 +326,10 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
      *            Field name
      * @return Component to show, or null if none.
      */
-    public JComponent getExtra(String string, FieldEditor editor) {
-        final FieldEditor ed = editor;
+    public JComponent getExtra(String string, final FieldEditor ed) {
 
         // fieldName and parameter string identically ????
-        final String fieldName = editor.getFieldName();
+        final String fieldName = ed.getFieldName();
 
         String s = BibtexFields.getFieldExtras(string);
 
@@ -358,7 +357,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
         if ((s != null) && s.equals("external")) {
 
             // Add external viewer listener for "pdf" and "url" fields.
-            ((JComponent) editor).addMouseListener(new ExternalViewerListener());
+            ((JComponent) ed).addMouseListener(new ExternalViewerListener());
 
             return null;
         } else if ((s != null) && s.equals("journalNames")) {
@@ -368,25 +367,25 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
             // these.
             JPanel controls = new JPanel();
             controls.setLayout(new BorderLayout());
-            if (panel.metaData.getData(Globals.SELECTOR_META_PREFIX + editor.getFieldName()) != null) {
-                FieldContentSelector ws = new FieldContentSelector(frame, panel, frame, editor,
+            if (panel.metaData.getData(Globals.SELECTOR_META_PREFIX + ed.getFieldName()) != null) {
+                FieldContentSelector ws = new FieldContentSelector(frame, panel, frame, ed,
                     panel.metaData, storeFieldAction, false, ", ");
                 contentSelectors.add(ws);
                 controls.add(ws, BorderLayout.NORTH);
             }
-            controls.add(JournalAbbreviations.getNameSwitcher(this, editor, panel.undoManager),
+            controls.add(JournalAbbreviations.getNameSwitcher(this, ed, panel.undoManager),
                 BorderLayout.SOUTH);
             return controls;
-        } else if (panel.metaData.getData(Globals.SELECTOR_META_PREFIX + editor.getFieldName()) != null) {
-            FieldContentSelector ws = new FieldContentSelector(frame, panel, frame, editor,
+        } else if (panel.metaData.getData(Globals.SELECTOR_META_PREFIX + ed.getFieldName()) != null) {
+            FieldContentSelector ws = new FieldContentSelector(frame, panel, frame, ed,
                 panel.metaData, storeFieldAction, false,
-                (editor.getFieldName().equals("author") ? " and " : ", "));
+                (ed.getFieldName().equals("author") ? " and " : ", "));
             contentSelectors.add(ws);
 
             return ws;
         } else if ((s != null) && s.equals("browse")) {
             JButton but = new JButton(Globals.lang("Browse"));
-            ((JComponent) editor).addMouseListener(new ExternalViewerListener());
+            ((JComponent) ed).addMouseListener(new ExternalViewerListener());
 
             // but.setBackground(GUIGlobals.lightGray);
             but.addActionListener(new ActionListener() {
@@ -428,18 +427,28 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
          * new ExternalFilePanel(frame, this, "ps", off, ed); return pan; }
          */
         else if ((s != null) && s.equals("url")) {
-            ((JComponent) editor).setDropTarget(new DropTarget((Component) editor,
-                DnDConstants.ACTION_NONE, new SimpleUrlDragDrop(editor, storeFieldAction)));
+            ((JComponent) ed).setDropTarget(new DropTarget((Component) ed,
+                DnDConstants.ACTION_NONE, new SimpleUrlDragDrop(ed, storeFieldAction)));
 
             return null;
         }
 
+        else if ((s != null) && (s.equals("setOwner"))) {
+            JButton button = new JButton(Globals.lang("Auto"));
+            button.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent actionEvent) {
+                    ed.setText(Globals.prefs.get("defaultOwner"));
+                    storeFieldAction.actionPerformed(new ActionEvent(ed, 0, ""));
+                }
+            });
+            return button;
+        }
         else
             return null;
     }
 
     private void setupSourcePanel() {
-        source = new JTextArea() {
+        source = new JTextArea();/* {
             private boolean antialias = Globals.prefs.getBoolean("antialias");
 
             public void paint(Graphics g) {
@@ -449,7 +458,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
                         RenderingHints.VALUE_ANTIALIAS_ON);
                 super.paint(g2);
             }
-        };
+        };*/
 
         //DefaultFormBuilder builder = new DefaultFormBuilder
         //        (srcPanel, new FormLayout( "fill:pref:grow", "fill:pref:grow"));
diff --git a/src/java/net/sf/jabref/EntryEditorTab.java b/src/java/net/sf/jabref/EntryEditorTab.java
index ca331e5..6b8a8f4 100644
--- a/src/java/net/sf/jabref/EntryEditorTab.java
+++ b/src/java/net/sf/jabref/EntryEditorTab.java
@@ -55,7 +55,7 @@ import net.sf.jabref.gui.FileListEditor;
  * A single tab displayed in the EntryEditor holding several FieldEditors.
  * 
  * @author $Author: mortenalver $
- * @version $Revision: 1.23 $ ($Date: 2007/06/13 20:47:58 $)
+ * @version $Revision: 2114 $ ($Date: 2007-06-13 22:47:58 +0200 (Wed, 13 Jun 2007) $)
  * 
  */
 public class EntryEditorTab {
diff --git a/src/java/net/sf/jabref/FieldComparator.java b/src/java/net/sf/jabref/FieldComparator.java
index f1b465a..61fb208 100644
--- a/src/java/net/sf/jabref/FieldComparator.java
+++ b/src/java/net/sf/jabref/FieldComparator.java
@@ -13,8 +13,8 @@ import java.util.Comparator;
  * 
  * Current Version:
  * 
- * @author $Author: coezbek $
- * @version $Revision: 1.6 $ ($Date: 2006/12/17 23:50:07 $)
+ * @author $Author: mortenalver $
+ * @version $Revision: 2165 $ ($Date: 2007-07-07 17:21:54 +0200 (Sat, 07 Jul 2007) $)
  * 
  * TODO: Testcases
  * 
@@ -109,7 +109,7 @@ public class FieldComparator implements Comparator {
 			result = -(((Integer) f1).compareTo(f2AsInteger));
 		} else {
 			String ours = ((String) f1).toLowerCase(), theirs = ((String) f2).toLowerCase();
-			result = ours.compareTo(theirs);
+            result = ours.compareTo(theirs);
 		}
 
 		return result * localMultiplier;
diff --git a/src/java/net/sf/jabref/FieldContentSelector.java b/src/java/net/sf/jabref/FieldContentSelector.java
index f3e768a..a2892a2 100644
--- a/src/java/net/sf/jabref/FieldContentSelector.java
+++ b/src/java/net/sf/jabref/FieldContentSelector.java
@@ -37,11 +37,7 @@ import java.awt.event.ActionListener;
 import java.util.Iterator;
 import java.util.Vector;
 
-import javax.swing.AbstractAction;
-import javax.swing.Box;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
+import javax.swing.*;
 
 import com.jgoodies.forms.layout.Sizes;
 import com.jgoodies.looks.Options;
@@ -52,8 +48,8 @@ import com.jgoodies.looks.Options;
  * 
  * Used to manage keywords and authors for instance.
  * 
- * @author $Author: coezbek $
- * @version $Revision: 1.22 $ ($Date: 2006/08/31 23:13:30 $)
+ * @author $Author: mortenalver $
+ * @version $Revision: 2166 $ ($Date: 2007-07-08 19:03:50 +0200 (Sun, 08 Jul 2007) $)
  * 
  */
 public class FieldContentSelector extends JComponent {
@@ -70,7 +66,8 @@ public class FieldContentSelector extends JComponent {
 
 	BasePanel panel;
 
-	String delimiter;
+    private AbstractAction action;
+    String delimiter;
 
 	/**
 	 * 
@@ -97,16 +94,17 @@ public class FieldContentSelector extends JComponent {
 	 *            Whether to put a 2 pixel horizontal strut between combobox and
 	 *            button.
 	 */
-	public FieldContentSelector(JabRefFrame jabRefFrame, final BasePanel panel,
-		Window ownerFrameOrDialog, final FieldEditor editor, final MetaData metaData,
+	public FieldContentSelector(JabRefFrame frame, final BasePanel panel,
+		Window owner, final FieldEditor editor, final MetaData metaData,
 		final AbstractAction action, boolean horizontalLayout, String delimiter) {
 
-		this.frame = jabRefFrame;
+		this.frame = frame;
 		this.editor = editor;
 		this.metaData = metaData;
 		this.panel = panel;
-		this.owner = ownerFrameOrDialog;
-		this.delimiter = delimiter;
+		this.owner = owner;
+        this.action = action;
+        this.delimiter = delimiter;
 
 		comboBox = new JComboBox() {
 			public Dimension getPreferredSize() {
@@ -147,40 +145,19 @@ public class FieldContentSelector extends JComponent {
 				if (e.getActionCommand().equals("comboBoxChanged") && (e.getModifiers() == 0))
 					return;
 
-				// The first element is only for show.
-				// CO: Why?
-				if (comboBox.getSelectedIndex() == 0)
-					return;
-
-				String chosen = (String) comboBox.getSelectedItem();
-				if (chosen == null || chosen.equals(""))
-					return;
-
-				// The following is not possible at the moment since the
-				// combobox cannot be edited!
-
-				// User edited in a new word. Add it.
-				// if (comboBox.getSelectedIndex() == -1)
-				// addWord(chosen);
-
-				// TODO: could improve checking as not do add the same item twice
-				if (!editor.getText().equals(""))
-					editor.append(FieldContentSelector.this.delimiter);
-
-				editor.append(chosen);
-
-				comboBox.setSelectedIndex(0);
-
-				// Fire event that we changed the editor
-				if (action != null)
-					action.actionPerformed(new ActionEvent(editor, 0, ""));
-
-				// Transfer focus to the editor.
-				editor.requestFocus();
+				selectionMade();
 			}
 		});
+        // Add an action for the Enter key that signals a selection:
+        comboBox.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "enter");
+        comboBox.getActionMap().put("enter", new AbstractAction() {
+            public void actionPerformed(ActionEvent actionEvent) {
+                selectionMade();
+                comboBox.setPopupVisible(false);
+            }
+        });
 
-		add(comboBox);
+        add(comboBox);
 
 		if (horizontalLayout)
 			add(Box.createHorizontalStrut(Sizes.dialogUnitXAsPixel(2, this)));
@@ -192,11 +169,11 @@ public class FieldContentSelector extends JComponent {
 		manage.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
 				// I don't get the difference here:
-				ContentSelectorDialog2 csd = owner instanceof Frame ? new ContentSelectorDialog2(
-					(Frame) owner, frame, panel, true, metaData, editor.getFieldName())
-					: new ContentSelectorDialog2((Dialog) owner, frame, panel, true, metaData,
+				ContentSelectorDialog2 csd = FieldContentSelector.this.owner instanceof Frame ? new ContentSelectorDialog2(
+					(Frame) FieldContentSelector.this.owner, FieldContentSelector.this.frame, panel, true, metaData, editor.getFieldName())
+					: new ContentSelectorDialog2((Dialog) FieldContentSelector.this.owner, FieldContentSelector.this.frame, panel, true, metaData,
 						editor.getFieldName());
-				Util.placeDialog(csd, frame);
+				Util.placeDialog(csd, FieldContentSelector.this.frame);
 
 				// Calling setVisible(true) will open the modal dialog and block
 				// for the dialog to close.
@@ -208,7 +185,40 @@ public class FieldContentSelector extends JComponent {
 		});
 	}
 
-	void rebuildComboBox() {
+    private void selectionMade() {
+        // The first element is only for show.
+        // CO: Why?
+        if (comboBox.getSelectedIndex() == 0)
+            return;
+
+        String chosen = (String) comboBox.getSelectedItem();
+        if (chosen == null || chosen.equals(""))
+            return;
+
+        // The following is not possible at the moment since the
+        // combobox cannot be edited!
+
+        // User edited in a new word. Add it.
+        // if (comboBox.getSelectedIndex() == -1)
+        // addWord(chosen);
+
+        // TODO: could improve checking as not do add the same item twice
+        if (!editor.getText().equals(""))
+            editor.append(FieldContentSelector.this.delimiter);
+
+        editor.append(chosen);
+
+        comboBox.setSelectedIndex(0);
+
+        // Fire event that we changed the editor
+        if (action != null)
+            action.actionPerformed(new ActionEvent(editor, 0, ""));
+
+        // Transfer focus to the editor.
+        editor.requestFocus();
+    }
+
+    void rebuildComboBox() {
 		comboBox.removeAllItems();
 
 		// TODO: CO - What for?
diff --git a/src/java/net/sf/jabref/FieldEditor.java b/src/java/net/sf/jabref/FieldEditor.java
index 789db75..771d848 100644
--- a/src/java/net/sf/jabref/FieldEditor.java
+++ b/src/java/net/sf/jabref/FieldEditor.java
@@ -38,7 +38,7 @@ import javax.swing.JLabel;
  * FieldEditors is a common interface between the FieldTextField and FieldTextArea.
  * 
  * @author $Author: mortenalver $
- * @version $Revision: 1.7 $ ($Date: 2007/02/16 22:03:15 $)
+ * @version $Revision: 1938 $ ($Date: 2007-02-16 23:03:17 +0100 (Fri, 16 Feb 2007) $)
  *
  */
 public interface FieldEditor {
diff --git a/src/java/net/sf/jabref/FieldTextArea.java b/src/java/net/sf/jabref/FieldTextArea.java
index a965c52..0228a40 100644
--- a/src/java/net/sf/jabref/FieldTextArea.java
+++ b/src/java/net/sf/jabref/FieldTextArea.java
@@ -43,7 +43,7 @@ import javax.swing.JTextArea;
  * multi-line input.
  * 
  * @author $Author: mortenalver $
- * @version $Revision: 1.22 $ ($Date: 2007/02/16 22:03:15 $)
+ * @version $Revision: 2173 $ ($Date: 2007-07-10 11:20:11 +0200 (Tue, 10 Jul 2007) $)
  * 
  */
 public class FieldTextArea extends JTextArea implements FieldEditor {
@@ -91,12 +91,12 @@ public class FieldTextArea extends JTextArea implements FieldEditor {
 		return getPreferredSize();
 	}
 
-	public void paint(Graphics g) {
+	/*public void paint(Graphics g) {
 		Graphics2D g2 = (Graphics2D) g;
 		if (antialias)
 			g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 		super.paint(g2);
-	}
+	}*/
 
 	public String getFieldName() {
 		return fieldName;
diff --git a/src/java/net/sf/jabref/FieldTextField.java b/src/java/net/sf/jabref/FieldTextField.java
index 9b2a3f9..9f23645 100644
--- a/src/java/net/sf/jabref/FieldTextField.java
+++ b/src/java/net/sf/jabref/FieldTextField.java
@@ -100,12 +100,12 @@ public class FieldTextField extends JTextField implements FieldEditor {
         setFont(GUIGlobals.CURRENTFONT);
     }
 
-    public void paint(Graphics g) {
+    /*public void paint(Graphics g) {
 		Graphics2D g2 = (Graphics2D) g;
 		if (antialias)
 			g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 		super.paint(g2);
-	}
+	}*/
 
     public void paste(String textToInsert) {
 		int sel = getSelectionEnd() - getSelectionStart();
diff --git a/src/java/net/sf/jabref/FontSelectorDialog.java b/src/java/net/sf/jabref/FontSelectorDialog.java
index 64d97a5..0dfd861 100644
--- a/src/java/net/sf/jabref/FontSelectorDialog.java
+++ b/src/java/net/sf/jabref/FontSelectorDialog.java
@@ -44,9 +44,9 @@ import javax.swing.*;
  * A font chooser widget.
  * @author Slava Pestov (jEdit), Sylvain Reynal
  * @since jpicedt 1.3.2.beta-9
- * @version $Id: FontSelectorDialog.java,v 1.7 2006/04/26 08:46:57 kiar Exp $
+ * @version $Id: FontSelectorDialog.java 1529 2006-04-26 08:48:34Z kiar $
  * <p>
- * $Log: FontSelectorDialog.java,v $
+ * $Log$
  * Revision 1.7  2006/04/26 08:46:57  kiar
  * fix dialog.show() deprecation messages, change build.xml
  *
diff --git a/src/java/net/sf/jabref/GUIGlobals.java b/src/java/net/sf/jabref/GUIGlobals.java
index 536d689..6aa2d24 100644
--- a/src/java/net/sf/jabref/GUIGlobals.java
+++ b/src/java/net/sf/jabref/GUIGlobals.java
@@ -313,7 +313,15 @@ public class GUIGlobals {
 		return u != null ? new ImageIcon(getIconUrl(name)) : null;
 	}
 
-	/**
+    /**
+     * Get a Map of all application icons mapped from their keys.
+     * @return A Map containing all icons used in the application.
+     */
+    public static Map getAllIcons() {
+        return Collections.unmodifiableMap(iconMap);
+    }
+
+    /**
 	 * Read a typical java property file into a HashMap. Currently doesn't support escaping
 	 * of the '=' character - it simply looks for the first '=' to determine where the key ends.
 	 * Both the key and the value is trimmed for whitespace at the ends.
diff --git a/src/java/net/sf/jabref/GeneralRenderer.java b/src/java/net/sf/jabref/GeneralRenderer.java
index f9404c8..bc8ab02 100644
--- a/src/java/net/sf/jabref/GeneralRenderer.java
+++ b/src/java/net/sf/jabref/GeneralRenderer.java
@@ -5,24 +5,18 @@ import javax.swing.*;
 import java.awt.*;
 
 /**
- * Created by IntelliJ IDEA.
- * User: alver
- * Date: May 30, 2005
- * Time: 9:43:45 PM
- * To change this template use File | Settings | File Templates.
+ * Renderer for table cells, which supports both Icons, JLabels and plain text.
  */
 public class GeneralRenderer /*extends JTable implements TableCellRenderer {*/ extends DefaultTableCellRenderer {
-    private boolean antialiasing;
 
-    public GeneralRenderer(Color c, boolean antialiasing) {
+    public GeneralRenderer(Color c) {
         super();
-        this.antialiasing = antialiasing;
         setBackground(c);
     }
 
 
-    public GeneralRenderer(Color c, Color fg, boolean antialiasing) {
-        this(c, antialiasing);
+    public GeneralRenderer(Color c, Color fg) {
+        this(c);
         setForeground(fg);
     }
 
@@ -55,7 +49,7 @@ public class GeneralRenderer /*extends JTable implements TableCellRenderer {*/ e
         }
     }
 
-      public void paint(Graphics g) {
+    /*  public void paint(Graphics g) {
         Graphics2D g2 = (Graphics2D)g;
         //System.out.println(antialiasing);
         if (antialiasing) {
@@ -68,6 +62,6 @@ public class GeneralRenderer /*extends JTable implements TableCellRenderer {*/ e
         }
           super.paint(g2);
 
-    }
+    }*/
 
 }
diff --git a/src/java/net/sf/jabref/GeneralTab.java b/src/java/net/sf/jabref/GeneralTab.java
index a7596ff..725f97e 100644
--- a/src/java/net/sf/jabref/GeneralTab.java
+++ b/src/java/net/sf/jabref/GeneralTab.java
@@ -13,10 +13,10 @@ import com.jgoodies.forms.builder.*;
 public class GeneralTab extends JPanel implements PrefsTab {
 
     private JCheckBox backup, openLast,
-    defSort, ctrlClick,
-    useOwner, keyDuplicateWarningDialog, keyEmptyWarningDialog, autoDoubleBraces,
+    defSort, ctrlClick, useOwner, overwriteOwner,
+    keyDuplicateWarningDialog, keyEmptyWarningDialog, autoDoubleBraces,
     confirmDelete, allowEditing, /*preserveFormatting, */useImportInspector,
-    useImportInspectorForSingle, inspectionWarnDupli, useTimeStamp;
+    useImportInspectorForSingle, inspectionWarnDupli, useTimeStamp, overwriteTimeStamp;
     private JRadioButton
         saveOriginalOrder, saveAuthorOrder, saveTableOrder,
         resolveStringsStandard, resolveStringsAll;
@@ -41,6 +41,12 @@ public class GeneralTab extends JPanel implements PrefsTab {
         useOwner = new JCheckBox(Globals.lang("Mark new entries with owner name") + ":");
         useTimeStamp = new JCheckBox(Globals.lang("Mark new entries with addition date") + ". "
             +Globals.lang("Date format")+ ":");
+        overwriteOwner = new JCheckBox(Globals.lang("Overwrite"));
+        overwriteTimeStamp = new JCheckBox(Globals.lang("Overwrite"));
+        overwriteOwner.setToolTipText(Globals.lang("If a pasted or imported entry already has "
+            +"the field set, overwrite."));
+        overwriteTimeStamp.setToolTipText(Globals.lang("If a pasted or imported entry already has "
+            +"the field set, overwrite."));
         keyDuplicateWarningDialog = new JCheckBox(Globals.lang("Show warning dialog when a duplicate BibTeX key is entered"));
         keyEmptyWarningDialog = new JCheckBox(Globals.lang("Show warning dialog when an empty BibTeX key is entered")); // JZTODO lyrics
         confirmDelete = new JCheckBox(Globals.lang("Show confirmation dialog when deleting entries"));
@@ -131,19 +137,23 @@ public class GeneralTab extends JPanel implements PrefsTab {
         builder.add(keyEmptyWarningDialog, cc.xy(2, 29));
         // Create a new panel with its own FormLayout for the last items:
         FormLayout layout2 = new FormLayout
-                ("left:pref, 8dlu, fill:60dlu, 4dlu, left:pref, 4dlu, fill:60dlu, 4dlu, fill:pref", "");
+                ("left:pref, 8dlu, fill:50dlu, 4dlu, left:pref, 4dlu, left:pref, 4dlu, fill:50dlu, 4dlu, fill:pref", "");
         DefaultFormBuilder builder2 = new DefaultFormBuilder(layout2);
         builder2.append(useOwner);
         builder2.append(defOwnerField);
+        builder2.append(overwriteOwner);
         JButton hlp = new JButton(ownerHelp);
         hlp.setText(null);
         hlp.setPreferredSize(new Dimension(24, 24));
         builder2.append(hlp);
+        //builder2.nextLine();
+
         builder2.nextLine();
         builder2.append(useTimeStamp);
-        builder2.append(timeStampFormat);
-        builder2.append(Globals.lang("Field name")+":");
         builder2.append(timeStampField);
+        builder2.append(overwriteTimeStamp);
+        builder2.append(Globals.lang("Field name")+":");
+        builder2.append(timeStampFormat);
         hlp = new JButton(timeStampHelp);
         hlp.setText(null);
         hlp.setPreferredSize(new Dimension(24, 24));
@@ -174,7 +184,9 @@ public class GeneralTab extends JPanel implements PrefsTab {
         defSort.setSelected(_prefs.getBoolean("defaultAutoSort"));
         ctrlClick.setSelected(_prefs.getBoolean("ctrlClick"));
         useOwner.setSelected(_prefs.getBoolean("useOwner"));
+        overwriteOwner.setSelected(_prefs.getBoolean("overwriteOwner"));
         useTimeStamp.setSelected(_prefs.getBoolean("useTimeStamp"));
+        overwriteTimeStamp.setSelected(_prefs.getBoolean("overwriteTimeStamp"));
         keyDuplicateWarningDialog.setSelected(_prefs.getBoolean("dialogWarningForDuplicateKey"));
         keyEmptyWarningDialog.setSelected(_prefs.getBoolean("dialogWarningForEmptyKey"));
         confirmDelete.setSelected(_prefs.getBoolean("confirmDelete"));
@@ -224,7 +236,9 @@ public class GeneralTab extends JPanel implements PrefsTab {
         _prefs.putBoolean("backup", backup.isSelected());
         _prefs.putBoolean("openLastEdited", openLast.isSelected());
         _prefs.putBoolean("useOwner", useOwner.isSelected());
+        _prefs.putBoolean("overwriteOwner", overwriteOwner.isSelected());
         _prefs.putBoolean("useTimeStamp", useTimeStamp.isSelected());
+        _prefs.putBoolean("overwriteTimeStamp", overwriteTimeStamp.isSelected());
         _prefs.putBoolean("dialogWarningForDuplicateKey", keyDuplicateWarningDialog.isSelected());
         _prefs.putBoolean("dialogWarningForEmptyKey", keyEmptyWarningDialog.isSelected());
         _prefs.putBoolean("confirmDelete", confirmDelete.isSelected());
diff --git a/src/java/net/sf/jabref/Globals.java b/src/java/net/sf/jabref/Globals.java
index beca834..6038b50 100644
--- a/src/java/net/sf/jabref/Globals.java
+++ b/src/java/net/sf/jabref/Globals.java
@@ -152,7 +152,10 @@ public class Globals {
 	public static final String NEWLINE = System.getProperty("line.separator");
     public static final int NEWLINE_LENGTH = System.getProperty("line.separator").length();
 
-	/**
+    // Instantiate logger:
+    private static Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
+
+    /**
 	 * true if we have unix newlines
 	 */
 	public static final boolean UNIX_NEWLINE = NEWLINE.equals("\n");
@@ -163,21 +166,21 @@ public class Globals {
 	// string. Used when writing database to file.
 
 	public static void logger(String s) {
-		Logger.global.info(s);
+		logger.info(s);
 	}
 
 	public static void turnOffLogging() { // only log exceptions
-		Logger.global.setLevel(java.util.logging.Level.SEVERE);
+		logger.setLevel(java.util.logging.Level.SEVERE);
 	}
 
 	// should be only called once
 	public static void turnOnConsoleLogging() {
-		Logger.global.addHandler(consoleHandler);
+		logger.addHandler(consoleHandler);
 
 	}
 
 	public static void turnOnFileLogging() {
-		Logger.global.setLevel(java.util.logging.Level.ALL);
+		logger.setLevel(java.util.logging.Level.ALL);
 		java.util.logging.Handler handler;
 		handler = new ConsoleHandler();
 		/*
@@ -185,7 +188,7 @@ public class Globals {
 		 * catch (IOException e) { //can't open log file so use console
 		 * e.printStackTrace(); }
 		 */
-		Logger.global.addHandler(handler);
+		logger.addHandler(handler);
 
 		handler.setFilter(new Filter() { // select what gets logged
 				public boolean isLoggable(LogRecord record) {
@@ -375,7 +378,7 @@ public class Globals {
 	 * @param directory
 	 * @param extension
 	 * @param updateWorkingdirectory
-	 * @return
+	 * @return an array of selected file paths, or an empty array if no selection is made.
 	 */
 	public static String[] getMultipleFiles(JFrame owner, File directory, String extension,
 		boolean updateWorkingdirectory) {
@@ -456,7 +459,7 @@ public class Globals {
 				updateWorkingDirectory, dirOnly, off);
 		}
 
-		JFileChooser fc = null;
+		JFileChooser fc;
 		try {
 			fc = new JabRefFileChooser(directory);
                         if (accessory != null)
@@ -840,8 +843,9 @@ public class Globals {
 		HTMLCHARS.put("vZ", "Ž"); // "Zcaron"
 		HTMLCHARS.put("vz", "ž"); // "zcaron"
 		// Symbol #383 (f) has no special Latex command
+        HTMLCHARS.put("%", "%"); // percent sign
 
-		XML_CHARS.put("\\{\\\\\\\"\\{a\\}\\}", "&#x00E4;");
+        XML_CHARS.put("\\{\\\\\\\"\\{a\\}\\}", "&#x00E4;");
 		XML_CHARS.put("\\{\\\\\\\"\\{A\\}\\}", "&#x00C4;");
 		XML_CHARS.put("\\{\\\\\\\"\\{e\\}\\}", "&#x00EB;");
 		XML_CHARS.put("\\{\\\\\\\"\\{E\\}\\}", "&#x00CB;");
diff --git a/src/java/net/sf/jabref/HelpContent.java b/src/java/net/sf/jabref/HelpContent.java
index 8e39aad..dd1bf87 100644
--- a/src/java/net/sf/jabref/HelpContent.java
+++ b/src/java/net/sf/jabref/HelpContent.java
@@ -177,12 +177,12 @@ public class HelpContent extends JTextPane {
 		return pane;
 	}
 
-	public void paintComponent(Graphics g) {
+	/*public void paintComponent(Graphics g) {
 		Graphics2D g2 = (Graphics2D) g;
 		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 		g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
 		super.paintComponent(g2);
-	}
+	}*/
 
 	public class MyNextVisualPositionAction extends TextAction {
 		private Action textActn;
diff --git a/src/java/net/sf/jabref/HelpDialog.java b/src/java/net/sf/jabref/HelpDialog.java
index dbf136f..b48d7c7 100644
--- a/src/java/net/sf/jabref/HelpDialog.java
+++ b/src/java/net/sf/jabref/HelpDialog.java
@@ -43,7 +43,7 @@ import javax.swing.event.HyperlinkListener;
  * This is a non-modal help Dialog. The contents of the help is specified by
  * calling showPage().
  * 
- * @version $Revision: 1.9 $ ($Date: 2006/08/26 21:24:39 $)
+ * @version $Revision: 1726 $ ($Date: 2006-08-26 23:24:39 +0200 (Sat, 26 Aug 2006) $)
  * 
  */
 public class HelpDialog extends JDialog implements HyperlinkListener {
diff --git a/src/java/net/sf/jabref/JabRef.java b/src/java/net/sf/jabref/JabRef.java
index 04157c0..363e115 100644
--- a/src/java/net/sf/jabref/JabRef.java
+++ b/src/java/net/sf/jabref/JabRef.java
@@ -710,9 +710,9 @@ lastEdLoop:
                 splashScreen = null;
             }
 
-            JOptionPane.showMessageDialog(null, Globals.lang("Please note that this "
+            /*JOptionPane.showMessageDialog(null, Globals.lang("Please note that this "
                 +"is an early beta version. Do not use it without backing up your files!"),
-                    Globals.lang("Beta version"), JOptionPane.WARNING_MESSAGE);
+                    Globals.lang("Beta version"), JOptionPane.WARNING_MESSAGE);*/
 
             //Util.pr(": Showing frame");
             jrf.setVisible(true);
diff --git a/src/java/net/sf/jabref/JabRefFrame.java b/src/java/net/sf/jabref/JabRefFrame.java
index ba14af7..cfa5a9c 100644
--- a/src/java/net/sf/jabref/JabRefFrame.java
+++ b/src/java/net/sf/jabref/JabRefFrame.java
@@ -27,10 +27,8 @@
 
 package net.sf.jabref;
 
-import net.sf.jabref.export.SaveAllAction;
 import net.sf.jabref.gui.*;
 import net.sf.jabref.label.*;
-import net.sf.jabref.export.ExpandEndnoteFilters;
 import net.sf.jabref.imports.*;
 import net.sf.jabref.wizard.auximport.gui.*;
 
@@ -45,8 +43,7 @@ import java.net.URL;
 import net.sf.jabref.undo.NamedCompound;
 import net.sf.jabref.undo.UndoableInsertEntry;
 import net.sf.jabref.undo.UndoableRemoveEntry;
-import net.sf.jabref.export.ExportCustomizationDialog;
-import net.sf.jabref.export.ExportFormats;
+import net.sf.jabref.export.*;
 
 import java.lang.reflect.*;
 import javax.swing.event.*;
@@ -538,7 +535,13 @@ public JabRefPreferences prefs() {
           if (answer == JOptionPane.YES_OPTION) {
             // The user wants to save.
             try {
-              basePanel().runCommand("save");
+              //basePanel().runCommand("save");
+                SaveDatabaseAction saveAction = new SaveDatabaseAction(basePanel());
+                saveAction.runCommand();
+                if (saveAction.isCancelled() || !saveAction.isSuccess())
+                    // The action was either cancelled or unsuccessful.
+                    // Break!
+                    close = false;
             }
             catch (Throwable ex) {
               // Something prevented the file
@@ -1537,7 +1540,12 @@ public JabRefPreferences prefs() {
                 if (answer == JOptionPane.YES_OPTION) {
                     // The user wants to save.
                     try {
-                        basePanel().runCommand("save");
+                        SaveDatabaseAction saveAction = new SaveDatabaseAction(basePanel());
+                        saveAction.runCommand();
+                        if (saveAction.isCancelled() || !saveAction.isSuccess())
+                            // The action either not cancelled or unsuccessful.
+                            // Break! 
+                            close = false;
                     } catch (Throwable ex) {
                         // Something prevented the file
                         // from being saved. Break!!!
@@ -1907,7 +1915,8 @@ class FetchCiteSeerAction
       int addedEntries = 0;
 
     // Set owner and timestamp fields:
-    Util.setAutomaticFields(bibentries);
+    Util.setAutomaticFields(bibentries, Globals.prefs.getBoolean("overwriteOwner"),
+            Globals.prefs.getBoolean("overwriteTimeStamp"));
 
     if (intoNew || (tabbedPane.getTabCount() == 0)) {
       // Import into new database.
diff --git a/src/java/net/sf/jabref/JabRefPreferences.java b/src/java/net/sf/jabref/JabRefPreferences.java
index c6a9e5c..b0b76ab 100644
--- a/src/java/net/sf/jabref/JabRefPreferences.java
+++ b/src/java/net/sf/jabref/JabRefPreferences.java
@@ -240,6 +240,7 @@ public class JabRefPreferences {
         defaults.put("fileColumn", Boolean.TRUE);
         defaults.put("citeseerColumn", Boolean.FALSE);
         defaults.put("useOwner", Boolean.TRUE);
+        defaults.put("overwriteOwner", Boolean.FALSE);
         defaults.put("allowTableEditing", Boolean.FALSE);
         defaults.put("dialogWarningForDuplicateKey", Boolean.TRUE);
         defaults.put("dialogWarningForEmptyKey", Boolean.TRUE);
@@ -295,6 +296,7 @@ public class JabRefPreferences {
         defaults.put("generateKeysAfterInspection", Boolean.TRUE);
         defaults.put("warnAboutDuplicatesInInspection", Boolean.TRUE);
         defaults.put("useTimeStamp", Boolean.TRUE);
+        defaults.put("overwriteTimeStamp", Boolean.FALSE);
         defaults.put("timeStampFormat", "yyyy.MM.dd");
 //        defaults.put("timeStampField", "timestamp");
         defaults.put("timeStampField", BibtexFields.TIMESTAMP);
@@ -863,13 +865,16 @@ public class JabRefPreferences {
         list.add(new ExternalFileType("PostScript", "ps", get("psviewer"), "psSmall"));
         list.add(new ExternalFileType("Word file", "doc", "oowriter", "openoffice"));
         list.add(new ExternalFileType("OpenDocument text", "odt", "oowriter", "openoffice"));
+        list.add(new ExternalFileType("Excel file", "xls", "oocalc", "openoffice"));
+        list.add(new ExternalFileType("OpenDocument spreadsheet", "ods", "oocalc", "openoffice"));
         list.add(new ExternalFileType("PowerPoint file", "ppt", "ooimpress", "openoffice"));
         list.add(new ExternalFileType("OpenDocument presentation", "odp", "ooimpress", "openoffice"));
+        list.add(new ExternalFileType("Rich Text Format", "rtf", "oowriter", "openoffice"));
         list.add(new ExternalFileType("PNG image", "png", "gimp", "picture"));
         list.add(new ExternalFileType("GIF image", "gif", "gimp", "picture"));
+        list.add(new ExternalFileType("JPG image", "jpg", "gimp", "picture"));
         list.add(new ExternalFileType("Text file", "txt", "emacs", "emacs"));
         ExternalFileType tp = new ExternalFileType("URL", "html", "firefox", "www");
-        tp.setRemote(true);
         list.add(tp);
 
         // Under Windows we initialize all file types with an empty viewer app, to
diff --git a/src/java/net/sf/jabref/PrefsDialog3.java b/src/java/net/sf/jabref/PrefsDialog3.java
index 75bd61d..e646eb4 100644
--- a/src/java/net/sf/jabref/PrefsDialog3.java
+++ b/src/java/net/sf/jabref/PrefsDialog3.java
@@ -193,7 +193,8 @@ public class PrefsDialog3 extends JDialog {
 					setValues();
 					BibtexEntryType.loadCustomEntryTypes(prefs);
 					frame.removeCachedEntryEditors();
-				} catch (IOException ex) {
+                    Globals.prefs.updateEntryEditorTabList();
+                } catch (IOException ex) {
 					JOptionPane.showMessageDialog(PrefsDialog3.this, Globals
 						.lang("Could not import preferences")
 						+ ": " + ex.getMessage(), Globals.lang("Import preferences"),
diff --git a/src/java/net/sf/jabref/PrefsTab.java b/src/java/net/sf/jabref/PrefsTab.java
index 0d8947e..03ae9fb 100644
--- a/src/java/net/sf/jabref/PrefsTab.java
+++ b/src/java/net/sf/jabref/PrefsTab.java
@@ -7,7 +7,7 @@ package net.sf.jabref;
  * It needs to extend from Component.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.5 $ ($Date: 2007/01/22 23:00:47 $)
+ * @version $Revision: 1904 $ ($Date: 2007-01-23 00:00:48 +0100 (Tue, 23 Jan 2007) $)
  *
  */
 public interface PrefsTab {
diff --git a/src/java/net/sf/jabref/PreviewPanel.java b/src/java/net/sf/jabref/PreviewPanel.java
index f23b855..52e734d 100644
--- a/src/java/net/sf/jabref/PreviewPanel.java
+++ b/src/java/net/sf/jabref/PreviewPanel.java
@@ -25,7 +25,7 @@ import net.sf.jabref.export.layout.LayoutHelper;
  * Displays an BibtexEntry using the given layout format.
  * 
  * @author $Author: mortenalver $
- * @version $Revision: 1.16 $ ($Date: 2007/01/25 17:46:57 $)
+ * @version $Revision: 2173 $ ($Date: 2007-07-10 11:20:11 +0200 (Tue, 10 Jul 2007) $)
  *
  */
 public class PreviewPanel extends JEditorPane implements VetoableChangeListener {
@@ -158,14 +158,14 @@ public class PreviewPanel extends JEditorPane implements VetoableChangeListener
 		return getPreferredSize();
 	}
 
-	public void paintComponent(Graphics g) {
+	/*public void paintComponent(Graphics g) {
 		Graphics2D g2 = (Graphics2D) g;
 		Object hint = g2.getRenderingHint(RenderingHints.KEY_ANTIALIASING);
 		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 		g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
 		super.paintComponent(g2);
 		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, hint);
-	}
+	}*/
 
     /**
      * The PreviewPanel has registered itself as an event listener with the currently displayed
diff --git a/src/java/net/sf/jabref/SidePane.java b/src/java/net/sf/jabref/SidePane.java
index 2d01f04..71b7229 100644
--- a/src/java/net/sf/jabref/SidePane.java
+++ b/src/java/net/sf/jabref/SidePane.java
@@ -43,7 +43,7 @@ import javax.swing.JScrollPane;
  * The side pane is displayed at the right side of JabRef and shows instances of
  * SidePaneComponents, for instance the GroupSelector, or the SearchManager2.
  * 
- * @version $Revision: 1.16 $ ($Date: 2006/08/30 20:04:48 $)
+ * @version $Revision: 1738 $ ($Date: 2006-08-30 22:04:48 +0200 (Wed, 30 Aug 2006) $)
  * 
  */
 public class SidePane extends JPanel {
diff --git a/src/java/net/sf/jabref/SidePaneManager.java b/src/java/net/sf/jabref/SidePaneManager.java
index ea41547..b24a5d0 100644
--- a/src/java/net/sf/jabref/SidePaneManager.java
+++ b/src/java/net/sf/jabref/SidePaneManager.java
@@ -40,7 +40,7 @@ import javax.swing.event.ChangeListener;
  * Manages visibility of SideShowComponents in a given newly constructed
  * sidePane.
  * 
- * @version $Revision: 1.23 $ ($Date: 2007/01/25 18:35:44 $)
+ * @version $Revision: 1910 $ ($Date: 2007-01-25 19:35:45 +0100 (Thu, 25 Jan 2007) $)
  * 
  */
 public class SidePaneManager {
diff --git a/src/java/net/sf/jabref/Util.java b/src/java/net/sf/jabref/Util.java
index 944aff0..f12b8cd 100644
--- a/src/java/net/sf/jabref/Util.java
+++ b/src/java/net/sf/jabref/Util.java
@@ -35,13 +35,7 @@
 //               (now we cannot change the dateformat dynamicly, sorry)
 package net.sf.jabref;
 
-import java.awt.BorderLayout;
-import java.awt.CardLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.Point;
+import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.*;
@@ -53,30 +47,27 @@ import java.nio.charset.CharsetEncoder;
 import java.text.NumberFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.swing.Box;
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
+import javax.swing.*;
 import javax.swing.undo.UndoableEdit;
 
 import net.sf.jabref.export.layout.LayoutEntry;
 import net.sf.jabref.export.layout.LayoutFormatter;
 import net.sf.jabref.external.ExternalFileType;
-import net.sf.jabref.external.UnknownExternalFileType;
 import net.sf.jabref.external.ExternalFileTypeEntryEditor;
+import net.sf.jabref.external.UnknownExternalFileType;
 import net.sf.jabref.groups.AbstractGroup;
 import net.sf.jabref.groups.KeywordGroup;
+import net.sf.jabref.gui.AutoCompleter;
+import net.sf.jabref.gui.FileListEntry;
+import net.sf.jabref.gui.FileListEntryEditor;
+import net.sf.jabref.gui.FileListTableModel;
 import net.sf.jabref.imports.CiteSeerFetcher;
 import net.sf.jabref.undo.NamedCompound;
 import net.sf.jabref.undo.UndoableFieldChange;
-import net.sf.jabref.gui.*;
 
 import com.jgoodies.forms.builder.DefaultFormBuilder;
 import com.jgoodies.forms.layout.FormLayout;
@@ -654,6 +645,8 @@ public class Util {
                                                  ExternalFileType fileType) throws IOException {
 
 
+        boolean httpLink = link.toLowerCase().startsWith("http");
+
         // For other platforms we'll try to find the file type:
 		File file = new File(link);
 
@@ -683,33 +676,36 @@ public class Util {
         else
             dirs = new String[] { dir, fileDir };
 
-        File tmp = expandFilename(link, dirs);
-        if (tmp != null)
-            file = tmp;
-
+        if (!httpLink) {
+            File tmp = expandFilename(link, dirs);
+            if (tmp != null)
+                file = tmp;
+        }
 
-		// Check if we have arrived at an existing file:
-		if (file.exists() && (fileType != null)) {
+		// Check if we have arrived at a file type, and either an http link or an existing file:
+		if ((httpLink || file.exists()) && (fileType != null)) {
 			// Open the file:
 			try {
-				if (Globals.ON_MAC) {
-					String[] cmd = { "/usr/bin/open", "-a", fileType.getOpenWith(), file.getPath() };
+                String filePath = httpLink ? link : file.getPath();
+                if (Globals.ON_MAC) {
+					String[] cmd = { "/usr/bin/open", "-a", fileType.getOpenWith(), filePath };
 					Runtime.getRuntime().exec(cmd);
 				} else if (Globals.ON_WIN) {
                     if ((fileType.getOpenWith() != null) && (fileType.getOpenWith().length() > 0)) {
                         // Application is specified. Use it:
-                        openFileWithApplicationOnWindows(file.getPath(), fileType.getOpenWith());
+                        openFileWithApplicationOnWindows(filePath, fileType.getOpenWith());
                     } else
-                        openFileOnWindows(file.getPath(), true);
+                        openFileOnWindows(filePath, true);
 				} else {
-					String[] cmdArray = new String[] { fileType.getOpenWith(), file.getPath() };
+					String[] cmdArray = new String[] { fileType.getOpenWith(), filePath };
 					Runtime.getRuntime().exec(cmdArray);
 				}
 			} catch (IOException e) {
-				e.printStackTrace();
+                throw e;
+                /*e.printStackTrace();
 				System.err.println("An error occured on the command: " + fileType.getOpenWith()
 					+ " #" + link);
-				System.err.println(e.getMessage());
+				System.err.println(e.getMessage());*/
 			}
 
 		} else {
@@ -1060,9 +1056,9 @@ public static void openExternalFileUnknown(JabRefFrame frame, BibtexEntry entry,
 		return s.substring(beginIndex, endIndex);
 	}
 
-	public static ArrayList parseMethodsCalls(String calls) throws RuntimeException {
+	public static ArrayList<String[]> parseMethodsCalls(String calls) throws RuntimeException {
 
-		ArrayList result = new ArrayList();
+		ArrayList<String[]> result = new ArrayList<String[]>();
 
 		char[] c = calls.toCharArray();
 
@@ -1080,19 +1076,50 @@ public static void openExternalFileUnknown(JabRefFrame frame, BibtexEntry entry,
 
 					String method = calls.substring(start, i);
 
+					// Skip the brace
 					i++;
-					i++;
-
-					int startParam = i;
-					i++;
-
-					while (i + 1 < c.length && !(c[i] == '"' && c[i + 1] == ')')) {
-						i++;
+					if (i < c.length){
+						if (c[i] == '"'){
+							// Parameter is in format "xxx"
+							
+							// Skip "
+							i++;
+		
+							int startParam = i;
+							i++;
+		                    boolean escaped = false;
+							while (i + 1 < c.length &&
+                                    !(!escaped && c[i] == '"' && c[i + 1] == ')')) {
+                                if (c[i] == '\\') {
+                                    escaped = !escaped;
+                                }
+                                else
+                                    escaped = false;
+                                i++;
+
+                            }
+		
+							String param = calls.substring(startParam, i);
+                            result.add(new String[] { method, param });
+						} else {
+							// Parameter is in format xxx
+							
+							int startParam = i;
+	
+							while (i < c.length && c[i] != ')') {
+								i++;
+							}
+		
+							String param = calls.substring(startParam, i);
+                            		                    
+							result.add(new String[] { method, param });
+							
+							
+						}
+					} else {
+						// Incorrecly terminated open brace
+						result.add(new String[] { method });
 					}
-
-					String param = calls.substring(startParam, i);
-
-					result.add(new String[] { method, param });
 				} else {
 					String method = calls.substring(start, i);
 					result.add(new String[] { method });
@@ -1642,17 +1669,22 @@ public static void openExternalFileUnknown(JabRefFrame frame, BibtexEntry entry,
 	 * @param bibs
 	 *            List of bibtex entries
 	 */
-	public static void setAutomaticFields(List bibs) {
+	public static void setAutomaticFields(List bibs, boolean overwriteOwner,
+             boolean overwriteTimestamp) {
 		String defaultOwner = Globals.prefs.get("defaultOwner");
 		String timestamp = easyDateFormat();
-		boolean setOwner = Globals.prefs.getBoolean("useOwner"), setTimeStamp = Globals.prefs
-			.getBoolean("useTimeStamp");
+		boolean globalSetOwner = Globals.prefs.getBoolean("useOwner"),
+                globalSetTimeStamp = Globals.prefs.getBoolean("useTimeStamp");
 		String timeStampField = Globals.prefs.get("timeStampField");
 		// Iterate through all entries
 		for (int i = 0; i < bibs.size(); i++) {
 			// Get current entry
 			BibtexEntry curEntry = (BibtexEntry) bibs.get(i);
-			setAutomaticFields(curEntry, setOwner, defaultOwner, setTimeStamp, timeStampField,
+            boolean setOwner = globalSetOwner &&
+                (overwriteOwner || (curEntry.getField(BibtexFields.OWNER)==null));
+            boolean setTimeStamp = globalSetTimeStamp &&
+                (overwriteTimestamp || (curEntry.getField(timeStampField)==null));
+            setAutomaticFields(curEntry, setOwner, defaultOwner, setTimeStamp, timeStampField,
 				timestamp);
 
 		}
@@ -1666,13 +1698,21 @@ public static void openExternalFileUnknown(JabRefFrame frame, BibtexEntry entry,
 	 * 
 	 * @param entry
 	 *            The entry to set fields for.
+     * @param overwriteOwner
+     *              Indicates whether owner should be set if it is already set.
+     * @param overwriteTimestamp
+     *              Indicates whether timestamp should be set if it is already set.
 	 */
-	public static void setAutomaticFields(BibtexEntry entry) {
+	public static void setAutomaticFields(BibtexEntry entry, boolean overwriteOwner,
+                                          boolean overwriteTimestamp) {
 		String defaultOwner = Globals.prefs.get("defaultOwner");
 		String timestamp = easyDateFormat();
-		boolean setOwner = Globals.prefs.getBoolean("useOwner"), setTimeStamp = Globals.prefs
-			.getBoolean("useTimeStamp");
-		String timeStampField = Globals.prefs.get("timeStampField");
+        String timeStampField = Globals.prefs.get("timeStampField");
+        boolean setOwner = Globals.prefs.getBoolean("useOwner") &&
+            (overwriteOwner || (entry.getField(BibtexFields.OWNER)==null));
+        boolean setTimeStamp = Globals.prefs.getBoolean("useTimeStamp") &&
+            (overwriteTimestamp || (entry.getField(timeStampField)==null));
+
 		setAutomaticFields(entry, setOwner, defaultOwner, setTimeStamp, timeStampField, timestamp);
 	}
 
diff --git a/src/java/net/sf/jabref/XmpPrefsTab.java b/src/java/net/sf/jabref/XmpPrefsTab.java
index bc490fa..b83da0d 100644
--- a/src/java/net/sf/jabref/XmpPrefsTab.java
+++ b/src/java/net/sf/jabref/XmpPrefsTab.java
@@ -26,7 +26,7 @@ import com.jgoodies.forms.layout.FormLayout;
  * Allows the user to enable and configure the XMP privacy filter.
  * 
  * @author $Author: mortenalver $
- * @version $Revision: 1.2 $ ($Date: 2007/01/31 16:52:09 $)
+ * @version $Revision: 1922 $ ($Date: 2007-01-31 17:52:09 +0100 (Wed, 31 Jan 2007) $)
  * 
  */
 class XmpPrefsTab extends JPanel implements PrefsTab {
diff --git a/src/java/net/sf/jabref/bst/BibtexPurify.java b/src/java/net/sf/jabref/bst/BibtexPurify.java
index 70f5530..a543ee2 100644
--- a/src/java/net/sf/jabref/bst/BibtexPurify.java
+++ b/src/java/net/sf/jabref/bst/BibtexPurify.java
@@ -1,4 +1,4 @@
-// $Id: BibtexPurify.java,v 1.1 2006/11/11 17:11:39 coezbek Exp $
+// $Id: BibtexPurify.java 1799 2006-11-11 17:11:39Z coezbek $
 package net.sf.jabref.bst;
 
 
@@ -12,7 +12,7 @@ package net.sf.jabref.bst;
  * pushes the null string.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/11/11 17:11:39 $)
+ * @version $Revision: 1799 $ ($Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $)
  * 
  */
 public class BibtexPurify {
diff --git a/src/java/net/sf/jabref/bst/BibtexTextPrefix.java b/src/java/net/sf/jabref/bst/BibtexTextPrefix.java
index f4e20fb..08faf2f 100644
--- a/src/java/net/sf/jabref/bst/BibtexTextPrefix.java
+++ b/src/java/net/sf/jabref/bst/BibtexTextPrefix.java
@@ -1,4 +1,4 @@
-// $Id: BibtexTextPrefix.java,v 1.1 2006/11/11 17:11:39 coezbek Exp $
+// $Id: BibtexTextPrefix.java 1799 2006-11-11 17:11:39Z coezbek $
 package net.sf.jabref.bst;
 
 
@@ -16,7 +16,7 @@ package net.sf.jabref.bst;
  * complains and pushes the null string.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/11/11 17:11:39 $)
+ * @version $Revision: 1799 $ ($Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $)
  * 
  */
 public class BibtexTextPrefix {
diff --git a/src/java/net/sf/jabref/bst/BibtexWidth.java b/src/java/net/sf/jabref/bst/BibtexWidth.java
index 002762c..27cb0da 100644
--- a/src/java/net/sf/jabref/bst/BibtexWidth.java
+++ b/src/java/net/sf/jabref/bst/BibtexWidth.java
@@ -1,4 +1,4 @@
-// $Id: BibtexWidth.java,v 1.1 2006/11/11 17:11:39 coezbek Exp $
+// $Id: BibtexWidth.java 1799 2006-11-11 17:11:39Z coezbek $
 package net.sf.jabref.bst;
 
 
@@ -12,7 +12,7 @@ package net.sf.jabref.bst;
  * pushes the null string.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/11/11 17:11:39 $)
+ * @version $Revision: 1799 $ ($Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $)
  * 
  */
 public class BibtexWidth {
diff --git a/src/java/net/sf/jabref/bst/PurifyFunction.java b/src/java/net/sf/jabref/bst/PurifyFunction.java
index 1fb25a8..cbbe5e0 100644
--- a/src/java/net/sf/jabref/bst/PurifyFunction.java
+++ b/src/java/net/sf/jabref/bst/PurifyFunction.java
@@ -17,7 +17,7 @@ import net.sf.jabref.bst.VM.BstFunction;
  * pushes the null string.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/11/11 17:11:39 $)
+ * @version $Revision: 1799 $ ($Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $)
  * 
  */
 public class PurifyFunction implements BstFunction {
diff --git a/src/java/net/sf/jabref/bst/TextPrefixFunction.java b/src/java/net/sf/jabref/bst/TextPrefixFunction.java
index acb6e23..e7594c9 100644
--- a/src/java/net/sf/jabref/bst/TextPrefixFunction.java
+++ b/src/java/net/sf/jabref/bst/TextPrefixFunction.java
@@ -22,7 +22,7 @@ characters; furthermore, this function appends any needed matching
 pushes the null string.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/11/11 17:11:39 $)
+ * @version $Revision: 1799 $ ($Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $)
  * 
  */
 public class TextPrefixFunction implements BstFunction {
diff --git a/src/java/net/sf/jabref/bst/VM.java b/src/java/net/sf/jabref/bst/VM.java
index 1626248..9b0d691 100644
--- a/src/java/net/sf/jabref/bst/VM.java
+++ b/src/java/net/sf/jabref/bst/VM.java
@@ -36,7 +36,7 @@ import org.antlr.runtime.tree.Tree;
  * http://texcatalogue.sarovar.org/entries/bibtex.html#Download
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.3 $ ($Date: 2006/11/23 22:37:19 $)
+ * @version $Revision: 1811 $ ($Date: 2006-11-23 23:37:19 +0100 (Thu, 23 Nov 2006) $)
  * 
  */
 
diff --git a/src/java/net/sf/jabref/bst/WidthFunction.java b/src/java/net/sf/jabref/bst/WidthFunction.java
index 7b10662..e884fd2 100644
--- a/src/java/net/sf/jabref/bst/WidthFunction.java
+++ b/src/java/net/sf/jabref/bst/WidthFunction.java
@@ -18,7 +18,7 @@ import net.sf.jabref.bst.VM.BstFunction;
  * 
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/11/11 17:11:39 $)
+ * @version $Revision: 1799 $ ($Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $)
  * 
  */
 public class WidthFunction implements BstFunction {
diff --git a/src/java/net/sf/jabref/export/ExportFormat.java b/src/java/net/sf/jabref/export/ExportFormat.java
index dadcc2a..78f81b0 100644
--- a/src/java/net/sf/jabref/export/ExportFormat.java
+++ b/src/java/net/sf/jabref/export/ExportFormat.java
@@ -7,6 +7,7 @@ import net.sf.jabref.export.layout.Layout;
 import net.sf.jabref.export.layout.LayoutHelper;
 
 import javax.swing.filechooser.FileFilter;
+import javax.swing.*;
 import java.util.List;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -79,6 +80,7 @@ public class ExportFormat {
                               final String encoding,
                               Set entries) throws Exception {
 
+        
         File outFile = new File(file);
         SaveSession ss = getSaveSession(encoding, outFile);
         final String dir;
@@ -102,7 +104,7 @@ public class ExportFormat {
         }
         // Write the header
         if (beginLayout != null) {
-            ps.write(beginLayout.doLayout(database));
+            ps.write(beginLayout.doLayout(database, encoding));
         }
         // changed section - end (arudert)
 
@@ -167,7 +169,7 @@ public class ExportFormat {
         
         // Write the header
         if (endLayout != null) {
-            ps.write(endLayout.doLayout(database));
+            ps.write(endLayout.doLayout(database, encoding));
         }
 
         finalizeSaveSession(ss);
@@ -180,7 +182,7 @@ public class ExportFormat {
         return ss;
     }
 
-    public void finalizeSaveSession(final SaveSession ss) throws Exception, SaveException {
+    public void finalizeSaveSession(final SaveSession ss) throws Exception {
         ss.getWriter().flush();
         ss.getWriter().close();
 
diff --git a/src/java/net/sf/jabref/export/ExportFormats.java b/src/java/net/sf/jabref/export/ExportFormats.java
index 4c13b81..d177fb9 100644
--- a/src/java/net/sf/jabref/export/ExportFormats.java
+++ b/src/java/net/sf/jabref/export/ExportFormats.java
@@ -1,9 +1,6 @@
 package net.sf.jabref.export;
 
-import net.sf.jabref.Globals;
-import net.sf.jabref.JabRefFrame;
-import net.sf.jabref.MnemonicAwareAction;
-import net.sf.jabref.BibtexEntry;
+import net.sf.jabref.*;
 
 import javax.swing.*;
 import javax.swing.filechooser.FileFilter;
@@ -132,57 +129,78 @@ public class ExportFormats {
 
 			public void actionPerformed(ActionEvent e) {
 				ExportFormats.initAllExports();
-				JFileChooser fc = ExportFormats.createExportFileChooser(Globals.prefs
-					.get("exportWorkingDirectory"));
+				JFileChooser fc = ExportFormats.createExportFileChooser(
+                    Globals.prefs.get("exportWorkingDirectory"));
 				fc.showSaveDialog(frame);
 				File file = fc.getSelectedFile();
 				if (file == null)
 					return;
 				FileFilter ff = fc.getFileFilter();
 				if (ff instanceof ExportFileFilter) {
-					try {
-						ExportFileFilter eff = (ExportFileFilter) ff;
-						String path = file.getPath();
-						if (!path.endsWith(eff.getExportFormat().getExtension()))
-							path = path + eff.getExportFormat().getExtension();
-						file = new File(path);
-						if (file.exists()) {
-							// Warn that the file exists:
-							if (JOptionPane.showConfirmDialog(frame, "'" + file.getName() + "' "
-								+ Globals.lang("exists. Overwrite file?"), Globals.lang("Export"),
-								JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION)
-								return;
-						}
-						ExportFormat format = eff.getExportFormat();
-						Set<String> entryIds = null;
-						if (selectedOnly) {
-							BibtexEntry[] selected = frame.basePanel().getSelectedEntries();
-							entryIds = new HashSet<String>();
-							for (int i = 0; i < selected.length; i++) {
-								BibtexEntry bibtexEntry = selected[i];
-								entryIds.add(bibtexEntry.getId());
-							}
-						}
-						
-						// Make sure we remember which filter was used, to set
-						// the default for next time:
-						Globals.prefs.put("lastUsedExport", format.getConsoleName());
-						Globals.prefs.put("exportWorkingDirectory", file.getParent());
-						
-						format.performExport(frame.basePanel().database(), file.getPath(), frame
-							.basePanel().getEncoding(), entryIds);
-						
-					} catch (Exception ex) {
-						ex.printStackTrace();
-
-						frame.output(Globals.lang("Could not save file") + " - " + ex.getMessage());
-						
-						// Need to warn the user that saving failed!
-						JOptionPane.showMessageDialog(frame, Globals.lang("Could not save file")
-							+ ".\n" + ex.getMessage(), Globals.lang("Save database"),
-							JOptionPane.ERROR_MESSAGE);
-					}
-				}
+
+                    ExportFileFilter eff = (ExportFileFilter) ff;
+                    String path = file.getPath();
+                    if (!path.endsWith(eff.getExportFormat().getExtension()))
+                        path = path + eff.getExportFormat().getExtension();
+                    file = new File(path);
+                    if (file.exists()) {
+                        // Warn that the file exists:
+                        if (JOptionPane.showConfirmDialog(frame, "'" + file.getName() + "' "
+                            + Globals.lang("exists. Overwrite file?"), Globals.lang("Export"),
+                            JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION)
+                            return;
+                    }
+                    final ExportFormat format = eff.getExportFormat();
+                    Set<String> entryIds = null;
+                    if (selectedOnly) {
+                        BibtexEntry[] selected = frame.basePanel().getSelectedEntries();
+                        entryIds = new HashSet<String>();
+                        for (int i = 0; i < selected.length; i++) {
+                            BibtexEntry bibtexEntry = selected[i];
+                            entryIds.add(bibtexEntry.getId());
+                        }
+                    }
+
+                    // Make sure we remember which filter was used, to set
+                    // the default for next time:
+                    Globals.prefs.put("lastUsedExport", format.getConsoleName());
+                    Globals.prefs.put("exportWorkingDirectory", file.getParent());
+                    final File finFile = file;
+                    final Set<String> finEntryIDs = entryIds;
+                    AbstractWorker exportWorker = new AbstractWorker() {
+                        String errorMessage = null;
+                        public void run() {
+                            try {
+                                format.performExport(frame.basePanel().database(), finFile.getPath(), frame
+                                    .basePanel().getEncoding(), finEntryIDs);
+                            } catch (Exception ex) {
+                                //ex.printStackTrace();
+                                errorMessage = ex.getMessage();
+                            }
+                        }
+
+                        public void update() {
+                            // No error message. Report success:
+                            if (errorMessage == null) {
+                                frame.output(Globals.lang("%0 export successful", format.getDisplayName()));
+                            }
+                            // ... or show an error dialog:
+                            else {
+                                frame.output(Globals.lang("Could not save file")
+                                        + " - " + errorMessage);
+                                // Need to warn the user that saving failed!
+                                JOptionPane.showMessageDialog(frame, Globals.lang("Could not save file")
+                                    + ".\n" + errorMessage, Globals.lang("Save database"),
+                                    JOptionPane.ERROR_MESSAGE);
+                            }
+                        }
+                    };
+
+                    // Run the export action in a background thread:
+                    (exportWorker.getWorker()).run();
+                    // Run the update method:
+                    exportWorker.update();
+                }
 			}
 		}
 
diff --git a/src/java/net/sf/jabref/export/FieldFormatter.java b/src/java/net/sf/jabref/export/FieldFormatter.java
index bc95d2f..9e60482 100644
--- a/src/java/net/sf/jabref/export/FieldFormatter.java
+++ b/src/java/net/sf/jabref/export/FieldFormatter.java
@@ -28,7 +28,7 @@ package net.sf.jabref.export;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.5 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  * 
  */
 public interface FieldFormatter {
diff --git a/src/java/net/sf/jabref/export/FileActions.java b/src/java/net/sf/jabref/export/FileActions.java
index 7812591..cf6c574 100644
--- a/src/java/net/sf/jabref/export/FileActions.java
+++ b/src/java/net/sf/jabref/export/FileActions.java
@@ -120,8 +120,10 @@ public class FileActions
      * @param encoding String the name of the encoding, which is part of the header.
      */
     private static void writeBibFileHeader(Writer out, String encoding) throws IOException {
+        out.write("% ");
       out.write(GUIGlobals.SIGNATURE);
-      out.write(" "+GUIGlobals.version+"."+Globals.NEWLINE +GUIGlobals.encPrefix+encoding+Globals.NEWLINE +Globals.NEWLINE);
+      out.write(" "+GUIGlobals.version+"."+Globals.NEWLINE + "% " + 
+              GUIGlobals.encPrefix+encoding+Globals.NEWLINE +Globals.NEWLINE);
     }
 
     /**
diff --git a/src/java/net/sf/jabref/export/SaveDatabaseAction.java b/src/java/net/sf/jabref/export/SaveDatabaseAction.java
new file mode 100644
index 0000000..89b8c31
--- /dev/null
+++ b/src/java/net/sf/jabref/export/SaveDatabaseAction.java
@@ -0,0 +1,302 @@
+package net.sf.jabref.export;
+
+import net.sf.jabref.*;
+import net.sf.jabref.collab.ChangeScanner;
+
+import javax.swing.*;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.UnsupportedCharsetException;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
+
+/**
+ * Action for the "Save" and "Save as" operations called from BasePanel. This class is also used for
+ * save operations when closing a database or quitting the applications.
+ *
+ * The operations run synchronously, but offload the save operation from the event thread using Spin.
+ * Callers can query whether the operation was cancelled, or whether it was successful.
+ */
+public class SaveDatabaseAction extends AbstractWorker {
+    private BasePanel panel;
+    private JabRefFrame frame;
+    private boolean success = false, cancelled = false;
+
+    public SaveDatabaseAction(BasePanel panel) {
+
+        this.panel = panel;
+        this.frame = panel.frame();
+    }
+
+
+    public void init() throws Throwable {
+        success = false;
+        cancelled = false;
+        if (panel.getFile() == null)
+            saveAs();
+        else {
+
+            if (panel.isUpdatedExternally() || Globals.fileUpdateMonitor.hasBeenModified(panel.getFileMonitorHandle())) {
+                String[] opts = new String[]{Globals.lang("Review changes"), Globals.lang("Save"),
+                        Globals.lang("Cancel")};
+                int answer = JOptionPane.showOptionDialog(panel.frame(), Globals.lang("File has been updated externally. "
+                        + "What do you want to do?"), Globals.lang("File updated externally"),
+                        JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
+                        null, opts, opts[0]);
+                /*  int choice = JOptionPane.showConfirmDialog(frame, Globals.lang("File has been updated externally. "
++"Are you sure you want to save?"), Globals.lang("File updated externally"),
+               JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);*/
+
+                if (answer == JOptionPane.CANCEL_OPTION)
+                    return;
+                else if (answer == JOptionPane.YES_OPTION) {
+                    ChangeScanner scanner = new ChangeScanner(panel.frame(), panel); //, panel.database(), panel.metaData());
+                    //try {
+                    scanner.changeScan(panel.getFile());
+                    panel.setUpdatedExternally(false);
+                    SwingUtilities.invokeLater(new Runnable() {
+                        public void run() {
+                            panel.getSidePaneManager().hide("fileUpdate");
+                        }
+                    });
+
+                    //} catch (IOException ex) {
+                    //    ex.printStackTrace();
+                    //}
+
+                    return;
+                }
+            }
+
+            panel.frame().output(Globals.lang("Saving database") + "...");
+            panel.setSaving(true);
+        }
+    }
+
+    public void update() {
+        if (success) {
+            // Reset title of tab
+            frame.setTabTitle(panel, panel.getFile().getName(),
+                    panel.getFile().getAbsolutePath());
+            frame.output(Globals.lang("Saved database") + " '"
+                    + panel.getFile().getPath() + "'.");
+        } else if (!cancelled) {
+            frame.output(Globals.lang("Save failed"));
+        }
+    }
+
+    public void run() {
+        if (panel.getFile() == null) {
+            return;
+        }
+
+        try {
+            // If the option is set, autogenerate keys for all entries that are
+            // lacking keys, before saving:
+            panel.autoGenerateKeysBeforeSaving();
+
+            // Now save the database:
+            success = saveDatabase(panel.getFile(), false, panel.getEncoding());
+
+            //Util.pr("Testing resolve string... BasePanel line 237");
+            //Util.pr("Resolve aq: "+database.resolveString("aq"));
+            //Util.pr("Resolve text: "+database.resolveForStrings("A text which refers to the string #aq# and #billball#, hurra."));
+
+            try {
+                Globals.fileUpdateMonitor.updateTimeStamp(panel.getFileMonitorHandle());
+            } catch (IllegalArgumentException ex) {
+                // This means the file has not yet been registered, which is the case
+                // when doing a "Save as". Maybe we should change the monitor so no
+                // exception is cast.
+            }
+            panel.setSaving(false);
+            if (success) {
+                panel.undoManager.markUnchanged();
+                // (Only) after a successful save the following
+                // statement marks that the base is unchanged
+                // since last save:
+                panel.setNonUndoableChange(false);
+                panel.setBaseChanged(false);
+                panel.setUpdatedExternally(false);
+            }
+        } catch (SaveException ex2) {
+            ex2.printStackTrace();
+        }
+    }
+
+    private boolean saveDatabase(File file, boolean selectedOnly, String encoding) throws SaveException {
+        SaveSession session;
+        frame.block();
+        try {
+            if (!selectedOnly)
+                session = FileActions.saveDatabase(panel.database(), panel.metaData(), file,
+                        Globals.prefs, false, false, encoding);
+            else
+                session = FileActions.savePartOfDatabase(panel.database(), panel.metaData(), file,
+                        Globals.prefs, panel.getSelectedEntries(), encoding);
+
+        } catch (UnsupportedCharsetException ex2) {
+            JOptionPane.showMessageDialog(frame, Globals.lang("Could not save file. "
+                    + "Character encoding '%0' is not supported.", encoding),
+                    Globals.lang("Save database"), JOptionPane.ERROR_MESSAGE);
+            throw new SaveException("rt");
+        } catch (SaveException ex) {
+            if (ex.specificEntry()) {
+                // Error occured during processing of
+                // be. Highlight it:
+                int row = panel.mainTable.findEntry(ex.getEntry()),
+                        topShow = Math.max(0, row - 3);
+                panel.mainTable.setRowSelectionInterval(row, row);
+                panel.mainTable.scrollTo(topShow);
+                panel.showEntry(ex.getEntry());
+            } else ex.printStackTrace();
+
+            JOptionPane.showMessageDialog
+                    (frame, Globals.lang("Could not save file")
+                            + ".\n" + ex.getMessage(),
+                            Globals.lang("Save database"),
+                            JOptionPane.ERROR_MESSAGE);
+            throw new SaveException("rt");
+
+        } finally {
+            frame.unblock();
+        }
+
+        boolean commit = true;
+        if (!session.getWriter().couldEncodeAll()) {
+            DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("left:pref, 4dlu, fill:pref", ""));
+            JTextArea ta = new JTextArea(session.getWriter().getProblemCharacters());
+            ta.setEditable(false);
+            builder.append(Globals.lang("The chosen encoding '%0' could not encode the following characters: ",
+                    session.getEncoding()));
+            builder.append(ta);
+            builder.append(Globals.lang("What do you want to do?"));
+            String tryDiff = Globals.lang("Try different encoding");
+            int answer = JOptionPane.showOptionDialog(frame, builder.getPanel(), Globals.lang("Save database"),
+                    JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null,
+                    new String[]{Globals.lang("Save"), tryDiff, Globals.lang("Cancel")}, tryDiff);
+
+            if (answer == JOptionPane.NO_OPTION) {
+                // The user wants to use another encoding.
+                Object choice = JOptionPane.showInputDialog(frame, Globals.lang("Select encoding"), Globals.lang("Save database"),
+                        JOptionPane.QUESTION_MESSAGE, null, Globals.ENCODINGS, encoding);
+                if (choice != null) {
+                    String newEncoding = (String) choice;
+                    return saveDatabase(file, selectedOnly, newEncoding);
+                } else
+                    commit = false;
+            } else if (answer == JOptionPane.CANCEL_OPTION)
+                commit = false;
+
+
+        }
+
+        try {
+            if (commit) {
+                session.commit();
+                panel.setEncoding(encoding); // Make sure to remember which encoding we used.
+            } else
+                session.cancel();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return commit;
+    }
+
+    /**
+     * Run the "Save" operation. This method offloads the actual save operation to a background thread, but
+     * still runs synchronously using Spin (the method returns only after completing the operation).
+     */
+    public void runCommand() throws Throwable {
+        // This part uses Spin's features:
+        Worker wrk = getWorker();
+        // The Worker returned by getWorker() has been wrapped
+        // by Spin.off(), which makes its methods be run in
+        // a different thread from the EDT.
+        CallBack clb = getCallBack();
+
+        init(); // This method runs in this same thread, the EDT.
+        // Useful for initial GUI actions, like printing a message.
+
+        // The CallBack returned by getCallBack() has been wrapped
+        // by Spin.over(), which makes its methods be run on
+        // the EDT.
+        wrk.run(); // Runs the potentially time-consuming action
+        // without freezing the GUI. The magic is that THIS line
+        // of execution will not continue until run() is finished.
+        clb.update(); // Runs the update() method on the EDT.
+
+    }
+
+    public void save() throws Throwable {
+        runCommand();
+    }
+
+    /**
+     * Run the "Save as" operation. This method offloads the actual save operation to a background thread, but
+     * still runs synchronously using Spin (the method returns only after completing the operation).
+     */
+    public void saveAs() throws Throwable {
+        boolean repeat = true;
+        String chosenFile = null;
+        File f = null;
+        while (repeat) {
+            repeat = false;
+            chosenFile = Globals.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")), ".bib",
+                    JFileChooser.SAVE_DIALOG, false, null);
+            if (chosenFile == null) {
+                cancelled = true;
+                return; // cancelled
+            }
+            f = new File(chosenFile);
+            // Check if the file already exists:
+            if (f.exists() && (JOptionPane.showConfirmDialog
+                    (frame, "'" + f.getName() + "' " + Globals.lang("exists. Overwrite file?"),
+                            Globals.lang("Save database"), JOptionPane.OK_CANCEL_OPTION)
+                    != JOptionPane.OK_OPTION)) {
+                repeat = true;
+            }
+        }
+
+        if (chosenFile != null) {
+            File oldFile = panel.metaData().getFile();
+            panel.metaData().setFile(f);
+            Globals.prefs.put("workingDirectory", f.getParent());
+            runCommand();
+            // If the operation failed, revert the file field and return:
+            if (!success) {
+                panel.metaData().setFile(oldFile);
+                return;
+            }
+            // Register so we get notifications about outside changes to the file.
+            try {
+                panel.setFileMonitorHandle(Globals.fileUpdateMonitor.addUpdateListener(panel, panel.getFile()));
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+            frame.getFileHistory().newFile(panel.metaData().getFile().getPath());
+        }
+
+    }
+
+    /**
+     * Query whether the last operation was successful.
+     *
+     * @returns true if the last Save/SaveAs operation completed successfully, false otherwise.
+     */
+    public boolean isSuccess() {
+        return success;
+    }
+
+    /**
+     * Query whether the last operation was cancelled.
+     *
+     * @returns true if the last Save/SaveAs operation was cancelled from the file dialog or from another 
+     * query dialog, false otherwise.
+     */
+    public boolean isCancelled() {
+        return cancelled;
+    }
+}
diff --git a/src/java/net/sf/jabref/export/layout/AbstractParamLayoutFormatter.java b/src/java/net/sf/jabref/export/layout/AbstractParamLayoutFormatter.java
new file mode 100644
index 0000000..e4e92f7
--- /dev/null
+++ b/src/java/net/sf/jabref/export/layout/AbstractParamLayoutFormatter.java
@@ -0,0 +1,40 @@
+package net.sf.jabref.export.layout;
+
+import net.sf.jabref.export.layout.LayoutFormatter;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public abstract class AbstractParamLayoutFormatter implements ParamLayoutFormatter {
+
+    private static char SEPARATOR = ',';
+	
+    public static String[] parseArgument(String arg) {
+        List<String> parts = new ArrayList<String>();
+        StringBuilder current = new StringBuilder();
+        boolean escaped = false;
+        for (int i=0; i<arg.length(); i++) {
+            if ((arg.charAt(i) == SEPARATOR) && !escaped) {
+                parts.add(current.toString());
+                current = new StringBuilder();
+            } else if (arg.charAt(i) == '\\') {
+                if (escaped) {
+                    escaped = false;
+                    current.append(arg.charAt(i));
+                } else
+                    escaped = true;
+            } else if (escaped) {
+                if ((arg.charAt(i) != ',') && (arg.charAt(i) != '"'))
+                    current.append('\\');
+                current.append(arg.charAt(i));
+                escaped = false;
+            } else
+                current.append(arg.charAt(i));
+        }
+        parts.add(current.toString());
+	return parts.toArray(new String[parts.size()]);
+
+    }
+
+
+}
diff --git a/src/java/net/sf/jabref/export/layout/EntryLayout.java b/src/java/net/sf/jabref/export/layout/EntryLayout.java
index 8165fc6..81dd0a6 100755
--- a/src/java/net/sf/jabref/export/layout/EntryLayout.java
+++ b/src/java/net/sf/jabref/export/layout/EntryLayout.java
@@ -29,7 +29,7 @@ package net.sf.jabref.export.layout;
  * DOCUMENT ME!
  *
  * @author $author$
- * @version $Revision: 1.1 $
+ * @version $Revision: 148 $
  */
 public class EntryLayout
 {
diff --git a/src/java/net/sf/jabref/export/layout/FieldLayout.java b/src/java/net/sf/jabref/export/layout/FieldLayout.java
index 1432d42..dbfd837 100755
--- a/src/java/net/sf/jabref/export/layout/FieldLayout.java
+++ b/src/java/net/sf/jabref/export/layout/FieldLayout.java
@@ -29,7 +29,7 @@ package net.sf.jabref.export.layout;
  * DOCUMENT ME!
  *
  * @author $author$
- * @version $Revision: 1.1 $
+ * @version $Revision: 148 $
  */
 public class FieldLayout
 {
diff --git a/src/java/net/sf/jabref/export/layout/FieldLayoutFormatter.java b/src/java/net/sf/jabref/export/layout/FieldLayoutFormatter.java
index 723b6dc..09db4a0 100755
--- a/src/java/net/sf/jabref/export/layout/FieldLayoutFormatter.java
+++ b/src/java/net/sf/jabref/export/layout/FieldLayoutFormatter.java
@@ -29,7 +29,7 @@ package net.sf.jabref.export.layout;
  * DOCUMENT ME!
  *
  * @author $author$
- * @version $Revision: 1.1 $
+ * @version $Revision: 148 $
  */
 public interface FieldLayoutFormatter
 {
diff --git a/src/java/net/sf/jabref/export/layout/Layout.java b/src/java/net/sf/jabref/export/layout/Layout.java
index bf3a260..e9718ec 100755
--- a/src/java/net/sf/jabref/export/layout/Layout.java
+++ b/src/java/net/sf/jabref/export/layout/Layout.java
@@ -38,7 +38,7 @@ import java.io.IOException;
  * DOCUMENT ME!
  *
  * @author $author$
- * @version $Revision: 1.9 $
+ * @version $Revision: 2178 $
  */
 public class Layout
 {
@@ -116,10 +116,7 @@ public class Layout
             else if (si.i == LayoutHelper.IS_OPTION_FIELD)
             {
             }
-
-            //			else if (si.i == LayoutHelper.IS_OPTION_FIELD_PARAM)
-            //			{
-            //			}
+            
             if (blockEntries == null)
             {
                 tmpEntries.add(new LayoutEntry(si, classPrefix));
@@ -167,15 +164,13 @@ public class Layout
         return sb.toString();
     }
     
-    // added section - begin (arudert)
-    // note: string resolving not implemented yet
     /**
      * Returns the processed text. If the database argument is
      * null, no string references will be resolved. Otherwise all valid
      * string references will be replaced by the strings' contents. Even
      * recursive string references are resolved.
      */
-    public String doLayout(BibtexDatabase database)
+    public String doLayout(BibtexDatabase database, String encoding)
     {
         //System.out.println("LAYOUT: " + bibtex.getId());
         StringBuffer sb = new StringBuffer(100);
@@ -184,7 +179,7 @@ public class Layout
 
         for (int i = 0; i < layoutEntries.length; i++)
         {
-            fieldText = layoutEntries[i].doLayout(database);
+            fieldText = layoutEntries[i].doLayout(database, encoding);
 
             if (fieldText == null) 
             {
diff --git a/src/java/net/sf/jabref/export/layout/LayoutEntry.java b/src/java/net/sf/jabref/export/layout/LayoutEntry.java
index 0d0e362..fee690b 100755
--- a/src/java/net/sf/jabref/export/layout/LayoutEntry.java
+++ b/src/java/net/sf/jabref/export/layout/LayoutEntry.java
@@ -42,7 +42,7 @@ import wsi.ra.types.StringInt;
  * DOCUMENT ME!
  * 
  * @author $author$
- * @version $Revision: 1.17 $
+ * @version $Revision: 2301 $
  */
 public class LayoutEntry {
 	// ~ Instance fields
@@ -252,7 +252,13 @@ public class LayoutEntry {
 
 			return fieldEntry;
 		}
-		default:
+        case LayoutHelper.IS_ENCODING_NAME: {
+            // Printing the encoding name is not supported in entry layouts, only
+            // in begin/end layouts. This prevents breakage if some users depend
+            // on a field called "encoding". We simply return this field instead:
+            return BibtexDatabase.getResolvedField("encoding", bibtex, database);
+        }
+        default:
 			return "";
 		}
 	}
@@ -265,12 +271,12 @@ public class LayoutEntry {
 	 *            Bibtex Database
 	 * @return
 	 */
-	public String doLayout(BibtexDatabase database) {
+	public String doLayout(BibtexDatabase database, String encoding) {
 		if (type == LayoutHelper.IS_LAYOUT_TEXT) {
 			return text;
 		} else if (type == LayoutHelper.IS_SIMPLE_FIELD) {
 			throw new UnsupportedOperationException(
-				"bibtext entry fields not allowed in begin or end layout");
+				"bibtex entry fields not allowed in begin or end layout");
 		} else if ((type == LayoutHelper.IS_FIELD_START) || (type == LayoutHelper.IS_GROUP_START)) {
 			throw new UnsupportedOperationException(
 				"field and group starts not allowed in begin or end layout");
@@ -286,7 +292,9 @@ public class LayoutEntry {
 			}
 
 			return field;
-		}
+		} else if (type == LayoutHelper.IS_ENCODING_NAME) {
+            return encoding;
+        }
 		return "";
 	}
 
@@ -295,8 +303,7 @@ public class LayoutEntry {
 	public static LayoutFormatter getLayoutFormatter(String className, String classPrefix)
 		throws Exception {
 		LayoutFormatter f = null;
-
-		if (className.length() > 0) {
+        if (className.length() > 0) {
 			try {
 				try {
 					f = (LayoutFormatter) Class.forName(classPrefix + className).newInstance();
@@ -334,9 +341,15 @@ public class LayoutEntry {
 
 			String className = strings[0].trim();
 
-			try {
+            try {
 				LayoutFormatter f = getLayoutFormatter(className, classPrefix);
-				results.add(f);
+                // If this formatter accepts an argument, check if we have one, and
+                // set it if so:
+                if (f instanceof ParamLayoutFormatter) {
+                    if (strings.length >= 2)
+                        ((ParamLayoutFormatter)f).setArgument(strings[1]);
+                }
+                results.add(f);
 			} catch (Exception e) {
 
 				String formatterParameter = (String) userNameFormatter.get(className);
diff --git a/src/java/net/sf/jabref/export/layout/LayoutHelper.java b/src/java/net/sf/jabref/export/layout/LayoutHelper.java
index c5d42c8..f1e8f7b 100755
--- a/src/java/net/sf/jabref/export/layout/LayoutHelper.java
+++ b/src/java/net/sf/jabref/export/layout/LayoutHelper.java
@@ -42,7 +42,7 @@ import java.util.Vector;
  * DOCUMENT ME!
  *
  * @author $author$
- * @version $Revision: 1.10 $
+ * @version $Revision: 2178 $
  */
 public class LayoutHelper
 {
@@ -55,6 +55,7 @@ public class LayoutHelper
     public static final int IS_OPTION_FIELD = 5;
     public static final int IS_GROUP_START = 6;
     public static final int IS_GROUP_END = 7;
+    public static final int IS_ENCODING_NAME = 8;
     private static String currentGroup = null;
     
     //~ Instance fields ////////////////////////////////////////////////////////
@@ -439,14 +440,22 @@ public class LayoutHelper
                     {
                         // get field name
                         getBracketedField(IS_FIELD_END);
-                        
                         return;
                     }
                     else if (name.equalsIgnoreCase("endgroup"))
                     {
                         // get field name
-                        getBracketedField(IS_GROUP_END);                        
-                    }                                        
+                        getBracketedField(IS_GROUP_END);
+                        return;
+                    }
+                    else if (name.equalsIgnoreCase("encoding"))
+                    {
+                        // Print the name of the current encoding used for export.
+                        // This is only supported in begin/end layouts, not in
+                        // entry layouts.
+                        parsedEntries.add(new StringInt(name, IS_ENCODING_NAME));
+                        return;
+                    }
                 }
                 
                 // for all other cases
diff --git a/src/java/net/sf/jabref/export/layout/ParamLayoutFormatter.java b/src/java/net/sf/jabref/export/layout/ParamLayoutFormatter.java
new file mode 100644
index 0000000..dbdfd04
--- /dev/null
+++ b/src/java/net/sf/jabref/export/layout/ParamLayoutFormatter.java
@@ -0,0 +1,22 @@
+package net.sf.jabref.export.layout;
+
+import net.sf.jabref.export.layout.LayoutFormatter;
+
+/**
+ * This interface extends LayoutFormatter, adding the capability of taking
+ * and additional parameter. Such a parameter is specified in the layout file
+ * by the following construct: \format[MyFormatter(argument){\field}
+ * If and only if MyFormatter is a class that implements ParamLayoutFormatter,
+ * it will be set up with the argument given in the parenthesis by way of the
+ * method setArgument(String). If no argument is given, the formatter will be
+ * invoked without the setArgument() method being called first.
+ */
+public interface ParamLayoutFormatter extends LayoutFormatter {
+
+    /**
+     * Method for setting the argument of this formatter.
+     * @param arg A String argument.
+     */
+    public void setArgument(String arg);
+
+}
diff --git a/src/java/net/sf/jabref/export/layout/format/AuthorFirstFirst.java b/src/java/net/sf/jabref/export/layout/format/AuthorFirstFirst.java
index ebcea24..6b414a4 100644
--- a/src/java/net/sf/jabref/export/layout/format/AuthorFirstFirst.java
+++ b/src/java/net/sf/jabref/export/layout/format/AuthorFirstFirst.java
@@ -35,7 +35,7 @@ import net.sf.jabref.AuthorList;
  * 
  * 
  * @author  $Author: coezbek $
- * @version $Revision: 1.6 $ $Date: 2006/11/11 17:11:39 $
+ * @version $Revision: 1799 $ $Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $
  * 
  */
 public class AuthorFirstFirst implements LayoutFormatter
diff --git a/src/java/net/sf/jabref/export/layout/format/AuthorLastFirst.java b/src/java/net/sf/jabref/export/layout/format/AuthorLastFirst.java
index c83e5c7..81a4b28 100644
--- a/src/java/net/sf/jabref/export/layout/format/AuthorLastFirst.java
+++ b/src/java/net/sf/jabref/export/layout/format/AuthorLastFirst.java
@@ -1,5 +1,5 @@
-/*  Version:  $Revision: 1.4 $
-              $Date: 2006/08/12 15:36:45 $
+/*  Version:  $Revision: 1694 $
+              $Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $
               $Author: coezbek $
 
     Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
diff --git a/src/java/net/sf/jabref/export/layout/format/AuthorOrgSci.java b/src/java/net/sf/jabref/export/layout/format/AuthorOrgSci.java
index 21f2ef2..917053e 100644
--- a/src/java/net/sf/jabref/export/layout/format/AuthorOrgSci.java
+++ b/src/java/net/sf/jabref/export/layout/format/AuthorOrgSci.java
@@ -21,7 +21,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * </p>
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/09/03 15:19:08 $)
+ * @version $Revision: 1748 $ ($Date: 2006-09-03 17:20:38 +0200 (Sun, 03 Sep 2006) $)
  * 
  */
 public class AuthorOrgSci implements LayoutFormatter {
diff --git a/src/java/net/sf/jabref/export/layout/format/CompositeFormat.java b/src/java/net/sf/jabref/export/layout/format/CompositeFormat.java
index b39570f..d84ff90 100644
--- a/src/java/net/sf/jabref/export/layout/format/CompositeFormat.java
+++ b/src/java/net/sf/jabref/export/layout/format/CompositeFormat.java
@@ -7,7 +7,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * order.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/09/03 15:19:08 $)
+ * @version $Revision: 1748 $ ($Date: 2006-09-03 17:20:38 +0200 (Sun, 03 Sep 2006) $)
  * 
  */
 public class CompositeFormat implements LayoutFormatter {
diff --git a/src/java/net/sf/jabref/export/layout/format/CreateDocBookAuthors.java b/src/java/net/sf/jabref/export/layout/format/CreateDocBookAuthors.java
index 29260ab..08afd3a 100755
--- a/src/java/net/sf/jabref/export/layout/format/CreateDocBookAuthors.java
+++ b/src/java/net/sf/jabref/export/layout/format/CreateDocBookAuthors.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: CreateDocBookAuthors.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner
-//  Version:  $Revision: 1.8 $
-//            $Date: 2005/10/23 03:36:09 $
+//  Version:  $Revision: 1296 $
+//            $Date: 2005-10-23 05:36:09 +0200 (Sun, 23 Oct 2005) $
 //            $Author: mortenalver $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -33,7 +33,7 @@ import net.sf.jabref.AuthorList;
  * Create DocBook authors formatter.
  *
  * @author $author$
- * @version $Revision: 1.8 $
+ * @version $Revision: 1296 $
  */
 public class CreateDocBookAuthors implements LayoutFormatter
 {
diff --git a/src/java/net/sf/jabref/export/layout/format/CreateDocBookEditors.java b/src/java/net/sf/jabref/export/layout/format/CreateDocBookEditors.java
index e147850..f90ff4a 100755
--- a/src/java/net/sf/jabref/export/layout/format/CreateDocBookEditors.java
+++ b/src/java/net/sf/jabref/export/layout/format/CreateDocBookEditors.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: CreateDocBookEditors.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner
-//  Version:  $Revision: 1.1 $
-//            $Date: 2005/01/27 21:28:01 $
+//  Version:  $Revision: 742 $
+//            $Date: 2005-01-27 22:31:00 +0100 (Thu, 27 Jan 2005) $
 //            $Author: egonw $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -33,7 +33,7 @@ import net.sf.jabref.imports.*;
  * Create DocBook editors formatter.
  *
  * @author $author$
- * @version $Revision: 1.1 $
+ * @version $Revision: 742 $
  */
 public class CreateDocBookEditors extends CreateDocBookAuthors
 {
diff --git a/src/java/net/sf/jabref/export/layout/format/CurrentDate.java b/src/java/net/sf/jabref/export/layout/format/CurrentDate.java
index 8e077d8..6d6f35a 100644
--- a/src/java/net/sf/jabref/export/layout/format/CurrentDate.java
+++ b/src/java/net/sf/jabref/export/layout/format/CurrentDate.java
@@ -38,7 +38,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * If none is given, the format pattern will be <code>yyyy.MM.dd hh:mm:ss z</code></p>
  *
  * @author andreas_sf at rudert-home dot de
- * @version $Revision: 1.1 $
+ * @version $Revision: 1329 $
  */
 public class CurrentDate implements LayoutFormatter
 {
diff --git a/src/java/net/sf/jabref/export/layout/format/DOICheck.java b/src/java/net/sf/jabref/export/layout/format/DOICheck.java
index a8ad56c..42a3f54 100644
--- a/src/java/net/sf/jabref/export/layout/format/DOICheck.java
+++ b/src/java/net/sf/jabref/export/layout/format/DOICheck.java
@@ -8,7 +8,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * Will prepend "http://dx.doi.org/" if only doi number and not a URL is given.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/11/12 02:42:42 $)
+ * @version $Revision: 1807 $ ($Date: 2006-11-12 03:42:42 +0100 (Sun, 12 Nov 2006) $)
  *
  */
 public class DOICheck implements LayoutFormatter {
diff --git a/src/java/net/sf/jabref/export/layout/format/FileLink.java b/src/java/net/sf/jabref/export/layout/format/FileLink.java
new file mode 100644
index 0000000..d05b251
--- /dev/null
+++ b/src/java/net/sf/jabref/export/layout/format/FileLink.java
@@ -0,0 +1,77 @@
+package net.sf.jabref.export.layout.format;
+
+import net.sf.jabref.export.layout.LayoutFormatter;
+import net.sf.jabref.export.layout.ParamLayoutFormatter;
+import net.sf.jabref.gui.FileListTableModel;
+import net.sf.jabref.gui.FileListEntry;
+import net.sf.jabref.Globals;
+import net.sf.jabref.Util;
+import net.sf.jabref.GUIGlobals;
+
+import java.io.File;
+
+/**
+ * Export formatter that handles the file link list of JabRef 2.3 and later, by
+ * selecting the first file link, if any, specified by the field.
+ */
+public class FileLink implements ParamLayoutFormatter {
+
+    String fileType = null;
+
+    public String format(String field) {
+        FileListTableModel tableModel = new FileListTableModel();
+        if (field == null)
+            return "";
+
+        tableModel.setContent(field);
+        String link = null;
+        if (fileType == null) {
+            // No file type specified. Simply take the first link.
+            if (tableModel.getRowCount() > 0)
+                link = tableModel.getEntry(0).getLink();
+            else
+                link = null;
+        }
+        else {
+            // A file type is specified:
+            for (int i=0; i< tableModel.getRowCount(); i++) {
+                FileListEntry flEntry = tableModel.getEntry(i);
+                if (flEntry.getType().getName().toLowerCase().equals(fileType)) {
+                    link = flEntry.getLink();
+                    break;
+                }
+            }
+        }
+        
+        if (link == null)
+            return "";
+        // Search in the standard file directory:
+        /* TODO: oops, this part is not sufficient. We need access to the
+         database's metadata in order to check if the database overrides
+         the standard file directory */
+        String dir = Globals.prefs.get(GUIGlobals.FILE_FIELD+"Directory");
+		File f = Util.expandFilename(link, new String[] { dir, "." });
+
+        /*
+		 * Stumbled over this while investigating
+		 *
+		 * https://sourceforge.net/tracker/index.php?func=detail&aid=1469903&group_id=92314&atid=600306
+		 */
+		if (f != null) {
+			return f.getPath();//f.toURI().toString();
+		} else {
+			return link;
+		}
+
+
+    }
+
+    /**
+     * This method is called if the layout file specifies an argument for this
+     * formatter. We use it as an indicator of which file type we should look for.
+     * @param arg The file type.
+     */
+    public void setArgument(String arg) {
+        fileType = arg;
+    }
+}
diff --git a/src/java/net/sf/jabref/export/layout/format/GetOpenOfficeType.java b/src/java/net/sf/jabref/export/layout/format/GetOpenOfficeType.java
index ffb02de..8e0c088 100755
--- a/src/java/net/sf/jabref/export/layout/format/GetOpenOfficeType.java
+++ b/src/java/net/sf/jabref/export/layout/format/GetOpenOfficeType.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: GetOpenOfficeType.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner
-//  Version:  $Revision: 1.2 $
-//            $Date: 2005/03/06 21:02:19 $
+//  Version:  $Revision: 806 $
+//            $Date: 2005-03-06 22:02:25 +0100 (Sun, 06 Mar 2005) $
 //            $Author: mortenalver $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -30,7 +30,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * 
  * Based on the RemoveBrackets.java class (Revision 1.2) by mortenalver
  * @author $author$
- * @version $Revision: 1.2 $
+ * @version $Revision: 806 $
  */
 public class GetOpenOfficeType implements LayoutFormatter
 {
diff --git a/src/java/net/sf/jabref/export/layout/format/HTMLChars.java b/src/java/net/sf/jabref/export/layout/format/HTMLChars.java
index 17c7ff8..9f2d461 100644
--- a/src/java/net/sf/jabref/export/layout/format/HTMLChars.java
+++ b/src/java/net/sf/jabref/export/layout/format/HTMLChars.java
@@ -6,7 +6,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
 /**
  * This formatter escapes characters so they are suitable for HTML.
  * 
- * @version $Revision: 1.10 $ ($Date: 2007/01/19 00:12:49 $)
+ * @version $Revision: 2281 $ ($Date: 2007-08-21 22:47:40 +0200 (Tue, 21 Aug 2007) $)
  */
 public class HTMLChars implements LayoutFormatter {
 
@@ -41,16 +41,16 @@ public class HTMLChars implements LayoutFormatter {
 				currentCommand = new StringBuffer();
 			} else if (!incommand && (c == '{' || c == '}')) {
 				// Swallow the brace.
-			} else if (Character.isLetter((char) c)
-				|| (Globals.SPECIAL_COMMAND_CHARS.indexOf("" + (char) c) >= 0)) {
+			} else if (Character.isLetter((char) c) || (c == '%')
+				|| (Globals.SPECIAL_COMMAND_CHARS.indexOf(String.valueOf((char)c)) >= 0)) {
 				escaped = false;
-				if (!incommand)
+
+                if (!incommand)
 					sb.append((char) c);
 					// Else we are in a command, and should not keep the letter.
 				else {
 					currentCommand.append((char) c);
-
-					testCharCom: if ((currentCommand.length() == 1)
+                    testCharCom: if ((currentCommand.length() == 1)
 						&& (Globals.SPECIAL_COMMAND_CHARS.indexOf(currentCommand.toString()) >= 0)) {
 						// This indicates that we are in a command of the type
 						// \^o or \~{n}
@@ -81,7 +81,7 @@ public class HTMLChars implements LayoutFormatter {
 						//	Are we already at the end of the string?
 						if (i + 1 == field.length()){
 							String command = currentCommand.toString();
-							Object result = Globals.HTMLCHARS.get(command);
+                            Object result = Globals.HTMLCHARS.get(command);
 							/* If found, then use translated version. If not,
 							 * then keep
 							 * the text of the parameter intact.
@@ -100,13 +100,14 @@ public class HTMLChars implements LayoutFormatter {
 
 				if (!incommand) {
 					sb.append((char) c);
-				} else if (Character.isWhitespace(c) || c == '{') {
+				} else if (Character.isWhitespace(c) || (c == '{') || (c == '}')) {
 					// First test if we are already at the end of the string.
 					// if (i >= field.length()-1)
 					// break testContent;
 
 					String command = currentCommand.toString();
-					// Then test if we are dealing with a italics or bold
+                                                
+                    // Then test if we are dealing with a italics or bold
 					// command.
 					// If so, handle.
 					if (command.equals("emph") || command.equals("textit")) {
@@ -118,7 +119,7 @@ public class HTMLChars implements LayoutFormatter {
 						IntAndString part = getPart(field, i, true);
 						i += part.i;
 						sb.append("<b>").append(part.s).append("</b>");
-					} else if (c == '{'){
+					} else if (c == '{') {
 						IntAndString part = getPart(field, i, true);
 						i += part.i;
 						argument = part.s;
@@ -136,7 +137,18 @@ public class HTMLChars implements LayoutFormatter {
 								sb.append(argument);
 							}
 						}
-					} else {
+                    } else if (c == '}') {
+                        // This end brace terminates a command. This can be the case in
+                        // constructs like {\aa}. The correct behaviour should be to
+                        // substitute the evaluated command and swallow the brace:
+                        Object result = Globals.HTMLCHARS.get(command);
+                        if (result != null) {
+                            sb.append((String) result);
+                        } else {
+                            // If the command is unknown, just print it:
+                            sb.append(command);
+                        }
+                    } else {
 						Object result = Globals.HTMLCHARS.get(command);
 						if (result != null) {
 							sb.append((String) result);
@@ -145,9 +157,11 @@ public class HTMLChars implements LayoutFormatter {
 						}
 						sb.append(' ');
 					}
-				} else if (c == '}') {
-					argument = "";
-				} else {
+				}/* else if (c == '}') {
+                    System.out.printf("com term by }: '%s'\n", currentCommand.toString());
+
+                    argument = "";
+				}*/ else {
 					/*
 					 * TODO: this point is reached, apparently, if a command is
 					 * terminated in a strange way, such as with "$\omega$".
diff --git a/src/java/net/sf/jabref/export/layout/format/HTMLParagraphs.java b/src/java/net/sf/jabref/export/layout/format/HTMLParagraphs.java
index 24c2d3f..cbf74b1 100644
--- a/src/java/net/sf/jabref/export/layout/format/HTMLParagraphs.java
+++ b/src/java/net/sf/jabref/export/layout/format/HTMLParagraphs.java
@@ -10,7 +10,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * wrap the paragraph in HTML-p-tags.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/21 20:58:27 $)
+ * @version $Revision: 1719 $ ($Date: 2006-08-21 22:58:27 +0200 (Mon, 21 Aug 2006) $)
  * 
  */
 public class HTMLParagraphs implements LayoutFormatter {
diff --git a/src/java/net/sf/jabref/export/layout/format/NameFormat.java b/src/java/net/sf/jabref/export/layout/format/NameFormat.java
index 6a9f71c..e9986d8 100644
--- a/src/java/net/sf/jabref/export/layout/format/NameFormat.java
+++ b/src/java/net/sf/jabref/export/layout/format/NameFormat.java
@@ -68,7 +68,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * For more examples see the test-cases.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/11/11 17:11:39 $)
+ * @version $Revision: 1799 $ ($Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $)
  *
  */
 public class NameFormat implements LayoutFormatter {
diff --git a/src/java/net/sf/jabref/export/layout/format/NoSpaceBetweenAbbreviations.java b/src/java/net/sf/jabref/export/layout/format/NoSpaceBetweenAbbreviations.java
index fb3d23b..8569019 100644
--- a/src/java/net/sf/jabref/export/layout/format/NoSpaceBetweenAbbreviations.java
+++ b/src/java/net/sf/jabref/export/layout/format/NoSpaceBetweenAbbreviations.java
@@ -18,7 +18,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * <p>
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/09/03 15:19:08 $)
+ * @version $Revision: 1748 $ ($Date: 2006-09-03 17:20:38 +0200 (Sun, 03 Sep 2006) $)
  * 
  */
 public class NoSpaceBetweenAbbreviations implements LayoutFormatter {
diff --git a/src/java/net/sf/jabref/export/layout/format/RTFChars.java b/src/java/net/sf/jabref/export/layout/format/RTFChars.java
index e5fbb5e..d60157b 100644
--- a/src/java/net/sf/jabref/export/layout/format/RTFChars.java
+++ b/src/java/net/sf/jabref/export/layout/format/RTFChars.java
@@ -17,7 +17,7 @@ import net.sf.jabref.Globals;
  *   4.) Take special care to save all unicode characters correctly. 
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.7 $ ($Date: 2007/01/19 00:12:49 $)
+ * @version $Revision: 1896 $ ($Date: 2007-01-19 01:12:49 +0100 (Fri, 19 Jan 2007) $)
  *
  */
 public class RTFChars implements LayoutFormatter {
diff --git a/src/java/net/sf/jabref/export/layout/format/RemoveBrackets.java b/src/java/net/sf/jabref/export/layout/format/RemoveBrackets.java
index 2245395..263c191 100755
--- a/src/java/net/sf/jabref/export/layout/format/RemoveBrackets.java
+++ b/src/java/net/sf/jabref/export/layout/format/RemoveBrackets.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: RemoveBrackets.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner
-//  Version:  $Revision: 1.2 $
-//            $Date: 2004/01/31 19:27:40 $
+//  Version:  $Revision: 151 $
+//            $Date: 2004-01-31 20:32:33 +0100 (Sat, 31 Jan 2004) $
 //            $Author: mortenalver $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -29,7 +29,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * Remove brackets formatter.
  *
  * @author $author$
- * @version $Revision: 1.2 $
+ * @version $Revision: 151 $
  */
 public class RemoveBrackets implements LayoutFormatter
 {
diff --git a/src/java/net/sf/jabref/export/layout/format/RemoveBracketsAddComma.java b/src/java/net/sf/jabref/export/layout/format/RemoveBracketsAddComma.java
index a210615..4e07232 100644
--- a/src/java/net/sf/jabref/export/layout/format/RemoveBracketsAddComma.java
+++ b/src/java/net/sf/jabref/export/layout/format/RemoveBracketsAddComma.java
@@ -1,64 +1,64 @@
-///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: RemoveBracketsAddComma.java,v $
-//  Purpose:  Atom representation.
-//  Language: Java
-//  Compiler: JDK 1.4
-//  Authors:  Joerg K. Wegner
-//  Version:  $Revision: 1.1 $
-//            $Date: 2005/01/18 20:44:29 $
-//            $Author: mortenalver $
-//
-//  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
-//
-//  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 version 2 of the License.
-//
-//  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.
-///////////////////////////////////////////////////////////////////////////////
-
-package net.sf.jabref.export.layout.format;
-
-import net.sf.jabref.export.layout.LayoutFormatter;
-
-
-/**
- * Remove brackets formatter.
- *
- * @author $author$
- * @version $Revision: 1.1 $
- */
-public class RemoveBracketsAddComma implements LayoutFormatter
-{
-    //~ Methods ////////////////////////////////////////////////////////////////
-
-    public String format(String fieldText)
-    {
-        String fieldEntry = fieldText;
-        StringBuffer sb = new StringBuffer(fieldEntry.length());
-
-        for (int i = 0; i < fieldEntry.length(); i++)
-	    {
-		//System.out.print(fieldEntry.charAt(i));
-		if ((fieldEntry.charAt(i) != '{') && (fieldEntry.charAt(i) != '}'))
-		    {
-			//System.out.print(fieldEntry.charAt(i));
-			sb.append(fieldEntry.charAt(i));
-		    }
-		if (fieldEntry.charAt(i) == '}')
-		    {
-			sb.append(",");
-		    }
-	    }
-	
-        fieldEntry = sb.toString();
-        return fieldEntry;
-    }
-}
-///////////////////////////////////////////////////////////////////////////////
-//  END OF FILE.
-///////////////////////////////////////////////////////////////////////////////
-
+///////////////////////////////////////////////////////////////////////////////
+//  Filename: $RCSfile$
+//  Purpose:  Atom representation.
+//  Language: Java
+//  Compiler: JDK 1.4
+//  Authors:  Joerg K. Wegner
+//  Version:  $Revision: 720 $
+//            $Date: 2005-01-18 21:44:30 +0100 (Tue, 18 Jan 2005) $
+//            $Author: mortenalver $
+//
+//  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
+//
+//  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 version 2 of the License.
+//
+//  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.
+///////////////////////////////////////////////////////////////////////////////
+
+package net.sf.jabref.export.layout.format;
+
+import net.sf.jabref.export.layout.LayoutFormatter;
+
+
+/**
+ * Remove brackets formatter.
+ *
+ * @author $author$
+ * @version $Revision: 720 $
+ */
+public class RemoveBracketsAddComma implements LayoutFormatter
+{
+    //~ Methods ////////////////////////////////////////////////////////////////
+
+    public String format(String fieldText)
+    {
+        String fieldEntry = fieldText;
+        StringBuffer sb = new StringBuffer(fieldEntry.length());
+
+        for (int i = 0; i < fieldEntry.length(); i++)
+	    {
+		//System.out.print(fieldEntry.charAt(i));
+		if ((fieldEntry.charAt(i) != '{') && (fieldEntry.charAt(i) != '}'))
+		    {
+			//System.out.print(fieldEntry.charAt(i));
+			sb.append(fieldEntry.charAt(i));
+		    }
+		if (fieldEntry.charAt(i) == '}')
+		    {
+			sb.append(",");
+		    }
+	    }
+	
+        fieldEntry = sb.toString();
+        return fieldEntry;
+    }
+}
+///////////////////////////////////////////////////////////////////////////////
+//  END OF FILE.
+///////////////////////////////////////////////////////////////////////////////
+
diff --git a/src/java/net/sf/jabref/export/layout/format/RemoveTilde.java b/src/java/net/sf/jabref/export/layout/format/RemoveTilde.java
index af8c0b2..e1f6b78 100644
--- a/src/java/net/sf/jabref/export/layout/format/RemoveTilde.java
+++ b/src/java/net/sf/jabref/export/layout/format/RemoveTilde.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: RemoveTilde.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner
-//  Version:  $Revision: 1.1 $
-//            $Date: 2007/06/12 21:32:01 $
+//  Version:  $Revision: 2107 $
+//            $Date: 2007-06-12 23:32:01 +0200 (Tue, 12 Jun 2007) $
 //            $Author: coezbek $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -30,7 +30,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * Usefull for formatting Latex code.
  * 
  * @author $author$
- * @version $Revision: 1.1 $
+ * @version $Revision: 2107 $
  */
 public class RemoveTilde implements LayoutFormatter {
 
diff --git a/src/java/net/sf/jabref/export/layout/format/RemoveWhitespace.java b/src/java/net/sf/jabref/export/layout/format/RemoveWhitespace.java
index 495f259..c0f2108 100755
--- a/src/java/net/sf/jabref/export/layout/format/RemoveWhitespace.java
+++ b/src/java/net/sf/jabref/export/layout/format/RemoveWhitespace.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: RemoveWhitespace.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner
-//  Version:  $Revision: 1.2 $
-//            $Date: 2005/03/06 21:02:19 $
+//  Version:  $Revision: 806 $
+//            $Date: 2005-03-06 22:02:25 +0100 (Sun, 06 Mar 2005) $
 //            $Author: mortenalver $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -30,7 +30,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  *
  * Based on the RemoveBrackets.java class (Revision 1.2) by mortenalver
  * @author $author$
- * @version $Revision: 1.2 $
+ * @version $Revision: 806 $
  */
 public class RemoveWhitespace implements LayoutFormatter
 {
diff --git a/src/java/net/sf/jabref/export/layout/format/Replace.java b/src/java/net/sf/jabref/export/layout/format/Replace.java
new file mode 100644
index 0000000..c1d37aa
--- /dev/null
+++ b/src/java/net/sf/jabref/export/layout/format/Replace.java
@@ -0,0 +1,55 @@
+package net.sf.jabref.export.layout.format;
+
+import net.sf.jabref.export.layout.AbstractParamLayoutFormatter;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * Formatter that does regexp replacement.
+ *
+ * To use this formatter, a two-part argument must be given. The parts are
+ * separated by a comma. To indicate the comma character, use an escape
+ * sequence: \,
+ *
+ * The first part is the regular expression to search for. The regular expression
+ * is written normally, without extra escape sequences for backslashes. A description
+ * of Java regular expressions can be found at:
+ *   http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
+ *
+ * The second part is the text to replace all matches with.
+ *
+ * For instance:
+ *  \format[Replace(and,&)]{\author} :
+ *      will output the "author" field after replacing all occurences of "and"
+ *      by "&"
+ *
+ *  \format[Replace(\s,_)]{\author} :
+ *      will output the "author" field after replacing all whitespace
+ *      by underscores.
+ *
+ *  \format[Replace(\,,;)]{\author} :
+ *      will output the "author" field after replacing all commas by semicolons.
+ *
+ */
+public class Replace extends AbstractParamLayoutFormatter {
+
+    private String regex = null, replaceWith = null;
+
+
+    public void setArgument(String arg) {
+        String[] parts = parseArgument(arg);
+
+        if (parts.length < 2)
+            return; // TODO: too few arguments. Print an error message here?
+        regex = parts[0];
+        replaceWith = parts[1];
+
+    }
+
+    public String format(String fieldText) {
+        if (regex == null)
+            return fieldText; // TODO: argument missing or invalid. Print an error message here?
+        return fieldText.replaceAll(regex, replaceWith);
+    }
+}
diff --git a/src/java/net/sf/jabref/export/layout/format/ResolvePDF.java b/src/java/net/sf/jabref/export/layout/format/ResolvePDF.java
index d03f3d3..a52b492 100644
--- a/src/java/net/sf/jabref/export/layout/format/ResolvePDF.java
+++ b/src/java/net/sf/jabref/export/layout/format/ResolvePDF.java
@@ -12,13 +12,18 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * 
  * TODO Search also relative to Bib-file.
  * 
- * @author $Author: coezbek $
- * @version $Revision: 1.5 $ ($Date: 2006/08/27 21:04:28 $)
+ * @author $Author: mortenalver $
+ * @version $Revision: 2181 $ ($Date: 2007-07-11 22:31:20 +0200 (Wed, 11 Jul 2007) $)
  */
 public class ResolvePDF implements LayoutFormatter {
 
 	public String format(String field) {
-		String dir = Globals.prefs.get("pdfDirectory");
+
+        // Search in the standard PDF directory:
+        /* TODO: oops, this part is not sufficient. We need access to the
+          database's metadata in order to check if the database overrides
+          the standard file directory */
+        String dir = Globals.prefs.get("pdfDirectory");
 		File f = Util.expandFilename(field, new String[] { dir, "." });
 		
 		/*
@@ -26,7 +31,7 @@ public class ResolvePDF implements LayoutFormatter {
 		 * 
 		 * https://sourceforge.net/tracker/index.php?func=detail&aid=1469903&group_id=92314&atid=600306
 		 */
-		if (f != null){
+		if (f != null) {
 			return f.toURI().toString();
 		} else {
 			return field;
diff --git a/src/java/net/sf/jabref/export/layout/format/ToLowerCase.java b/src/java/net/sf/jabref/export/layout/format/ToLowerCase.java
index 9fd9583..c4be267 100755
--- a/src/java/net/sf/jabref/export/layout/format/ToLowerCase.java
+++ b/src/java/net/sf/jabref/export/layout/format/ToLowerCase.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: ToLowerCase.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Egon Willighagen
-//  Version:  $Revision: 1.4 $
-//            $Date: 2006/11/11 17:11:39 $
+//  Version:  $Revision: 1799 $
+//            $Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $
 //            $Author: coezbek $
 //
 //  Copyright (c) Egon Willighagen
@@ -28,7 +28,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * Remove brackets formatter.
  * 
  * @author $author$
- * @version $Revision: 1.4 $
+ * @version $Revision: 1799 $
  */
 public class ToLowerCase implements LayoutFormatter {
 
diff --git a/src/java/net/sf/jabref/export/layout/format/WrapContent.java b/src/java/net/sf/jabref/export/layout/format/WrapContent.java
new file mode 100644
index 0000000..ecd1732
--- /dev/null
+++ b/src/java/net/sf/jabref/export/layout/format/WrapContent.java
@@ -0,0 +1,39 @@
+package net.sf.jabref.export.layout.format;
+
+import net.sf.jabref.export.layout.AbstractParamLayoutFormatter;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * This formatter outputs the input value after adding a prefix and a postfix,
+ * as long as the input value is non-empty. If the input value is empty, an
+ * empty string is output (the prefix and postfix are not output in this case).
+ *
+ * The formatter requires an argument containing the prefix and postix separated
+ * by a comma. To include a the comma character in either, use an escape sequence
+ * (\,).
+ */
+public class WrapContent extends AbstractParamLayoutFormatter {
+
+    
+    private String before = null, after = null;
+
+
+    public void setArgument(String arg) {
+	String[] parts = parseArgument(arg);
+        if (parts.length < 2)
+	   return;
+        before = parts[0];
+        after = parts[1];
+    }
+
+    public String format(String fieldText) {
+	if (before == null)
+	    return "";
+    	if (fieldText.length() == 0)
+	    return "";
+	else
+	    return new StringBuilder(before).append(fieldText).append(after).toString();    
+    }
+}
diff --git a/src/java/net/sf/jabref/export/layout/format/XMLChars.java b/src/java/net/sf/jabref/export/layout/format/XMLChars.java
index 10f0da6..7836305 100644
--- a/src/java/net/sf/jabref/export/layout/format/XMLChars.java
+++ b/src/java/net/sf/jabref/export/layout/format/XMLChars.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: XMLChars.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner, Morten O. Alver
-//  Version:  $Revision: 1.4 $
-//            $Date: 2006/01/22 13:42:18 $
+//  Version:  $Revision: 1428 $
+//            $Date: 2006-01-22 14:42:18 +0100 (Sun, 22 Jan 2006) $
 //            $Author: wegner $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -32,7 +32,7 @@ import net.sf.jabref.Globals;
  * Changes {\^o} or {\^{o}} to ?
  *
  * @author $author$
- * @version $Revision: 1.4 $
+ * @version $Revision: 1428 $
  */
 public class XMLChars implements LayoutFormatter
 {
@@ -68,11 +68,11 @@ public class XMLChars implements LayoutFormatter
 		// now some copy-paste problems most often occuring in abstracts when copied from PDF
 		// AND: this is accepted in the abstract of bibtex files, so are forced to catch those cases
 		int code;
-		char character;
-		StringBuffer buffer=new StringBuffer(fieldText.length()<<1);
-    for ( int i = 0; i < fieldText.length(); i++)
+		char character;
+		StringBuffer buffer=new StringBuffer(fieldText.length()<<1);
+    for ( int i = 0; i < fieldText.length(); i++)
     {
-    	character = fieldText.charAt(i);
+    	character = fieldText.charAt(i);
       code = ((int) character);
       //System.out.println(""+character+" "+code);
       if((code<40 && code!=32)||code>125){
@@ -92,7 +92,7 @@ public class XMLChars implements LayoutFormatter
       	}
     		// force roundtripping
       	if(alphabet)buffer.append((char)code);
-      }
+      }
     }
     fieldText=buffer.toString();
 
diff --git a/src/java/net/sf/jabref/external/ExternalFileMenuItem.java b/src/java/net/sf/jabref/external/ExternalFileMenuItem.java
index 0aa4caa..91c71cc 100644
--- a/src/java/net/sf/jabref/external/ExternalFileMenuItem.java
+++ b/src/java/net/sf/jabref/external/ExternalFileMenuItem.java
@@ -18,7 +18,7 @@ public class ExternalFileMenuItem extends JMenuItem implements ActionListener {
     private BibtexEntry entry;
     final String link;
     final MetaData metaData;
-    final ExternalFileType fileType;
+    ExternalFileType fileType;
     final JabRefFrame frame;
 
     public ExternalFileMenuItem(JabRefFrame frame, BibtexEntry entry, String name,
@@ -53,6 +53,7 @@ public class ExternalFileMenuItem extends JMenuItem implements ActionListener {
                     .trim().toLowerCase() : null;
                 // Now we know the extension, check if it is one we know about:
                 type = Globals.prefs.getExternalFileTypeByExt(extension);
+                fileType = type;
             }
 
             if (type instanceof UnknownExternalFileType)
@@ -64,6 +65,21 @@ public class ExternalFileMenuItem extends JMenuItem implements ActionListener {
 
 
         } catch (IOException e1) {
+            // See if we should show an error message concerning the application to open the
+            // link with. We check if the file type is set, and if the file type has a non-empty
+            // application link. If that link is referred by the error message, we can assume
+            // that the problem is in the open-with-application setting:
+            if ((fileType != null) && (fileType.getOpenWith() != null)
+                && (fileType.getOpenWith().length() > 0) &&
+                    (e1.getMessage().indexOf(fileType.getOpenWith()) >= 0)) {
+
+                JOptionPane.showMessageDialog(frame, Globals.lang("Unable to open link. "
+                    +"The application '%0' associated with the file type '%1' could not be called.",
+                        fileType.getOpenWith(), fileType.getName()),
+                        Globals.lang("Could not open link"), JOptionPane.ERROR_MESSAGE);
+                return;
+            }
+
             e1.printStackTrace();
         }
 
diff --git a/src/java/net/sf/jabref/external/ExternalFilePanel.java b/src/java/net/sf/jabref/external/ExternalFilePanel.java
index b2e29f3..0c7848a 100644
--- a/src/java/net/sf/jabref/external/ExternalFilePanel.java
+++ b/src/java/net/sf/jabref/external/ExternalFilePanel.java
@@ -43,7 +43,7 @@ import net.sf.jabref.util.XMPUtil;
  * Current Version:
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.24 $ ($Date: 2007/06/13 01:39:50 $)
+ * @version $Revision: 2110 $ ($Date: 2007-06-13 03:39:51 +0200 (Wed, 13 Jun 2007) $)
  * 
  */
 public class ExternalFilePanel extends JPanel {
diff --git a/src/java/net/sf/jabref/external/ExternalFileType.java b/src/java/net/sf/jabref/external/ExternalFileType.java
index 1855eb1..2ba4c3c 100644
--- a/src/java/net/sf/jabref/external/ExternalFileType.java
+++ b/src/java/net/sf/jabref/external/ExternalFileType.java
@@ -13,15 +13,16 @@ public class ExternalFileType implements Comparable {
 
     protected String name, extension, openWith, iconName;
     protected ImageIcon icon;
-    protected boolean remote = false;
+    protected JLabel label = new JLabel();
 
     public ExternalFileType(String name, String extension, String openWith,
                             String iconName) {
+        label.setText(null);
         this.name = name;
+        label.setToolTipText(this.name);
         this.extension = extension;
         this.openWith = openWith;
-        this.iconName = iconName;
-        this.icon = GUIGlobals.getImage(iconName);
+        setIconName(iconName);
     }
 
     /**
@@ -41,10 +42,11 @@ public class ExternalFileType implements Comparable {
         if ((val == null) || (val.length < 4))
             throw new IllegalArgumentException("Cannot contruct ExternalFileType without four elements in String[] argument.");
         this.name = val[0];
+        label.setToolTipText(this.name);
         this.extension = val[1];
         this.openWith = val[2];
-        this.iconName = val[3];
-        this.icon = GUIGlobals.getImage(val[3]);
+        label.setText(null);
+        setIconName(val[3]);
     }
 
     /**
@@ -64,6 +66,7 @@ public class ExternalFileType implements Comparable {
 
     public void setName(String name) {
         this.name = name;
+        label.setToolTipText(this.name);
     }
 
     public String getExtension() {
@@ -75,19 +78,6 @@ public class ExternalFileType implements Comparable {
     }
 
     /**
-     * Query whether this type of links is remote. Remote links are ignored when
-     * synchronizing links.
-     * @return true if the type is remote.
-     */
-    public boolean isRemote() {
-        return remote;
-    }
-
-    public void setRemote(boolean remote) {
-        this.remote = remote;
-    }
-
-    /**
      * Get the bibtex field name used to extension to this file type.
      * Currently we assume that field name equals filename extension.
      * @return The field name.
@@ -104,6 +94,35 @@ public class ExternalFileType implements Comparable {
         this.openWith = openWith;
     }
 
+    /**
+     * Set the string associated with this file type's icon. The string is used
+     * to get the actual icon by the method GUIGlobals.getIcon(String)
+     * @param name The icon name to use.
+     */
+    public void setIconName(String name) {
+        this.iconName = name;
+        this.icon = GUIGlobals.getImage(iconName);
+        label.setIcon(this.icon);
+    }
+
+    /**
+     * Obtain a JLabel instance set with this file type's icon. The same JLabel
+     * is returned from each call of this method.
+     * @return the label.
+     */
+    public JLabel getIconLabel() {
+        return label;
+    }
+
+    /**
+     * Get the string associated with this file type's icon. The string is used
+     * to get the actual icon by the method GUIGlobals.getIcon(String)
+     * @return The icon name.
+     */
+    public String getIconName() {
+        return iconName;
+    }
+
     public ImageIcon getIcon() {
         return icon;
     }
diff --git a/src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java b/src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java
index 27f1566..ed30023 100644
--- a/src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java
+++ b/src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java
@@ -30,6 +30,7 @@ public class ExternalFileTypeEntryEditor {
     JTextField extension = new JTextField(),
         name = new JTextField(),
         application = new JTextField();
+    String selectedIcon = null;
     JButton icon = new JButton(GUIGlobals.getImage("picture"));
     JButton ok = new JButton(Globals.lang("Ok")),
             cancel = new JButton(Globals.lang("Cancel"));
@@ -117,7 +118,16 @@ public class ExternalFileTypeEntryEditor {
 
         icon.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent actionEvent) {
-                JOptionPane.showMessageDialog(null, "Sorry, the icon can unfortunately not be changed in this version of JabRef");
+                String initSel = ExternalFileTypeEntryEditor.this.entry.getIconName();
+                if (selectedIcon != null)
+                    initSel = selectedIcon;
+                IconSelection ic = new IconSelection(diag, initSel);
+                ic.setVisible(true);
+                if (ic.isOkPressed()) {
+                    selectedIcon = ic.getSelectedIconKey();
+                    icon.setIcon(GUIGlobals.getImage(selectedIcon));
+                }
+                //JOptionPane.showMessageDialog(null, "Sorry, the icon can unfortunately not be changed in this version of JabRef");
             }
         });
 
@@ -184,11 +194,14 @@ public class ExternalFileTypeEntryEditor {
             useDefault.setSelected(true);
         else
             other.setSelected(true);
+        selectedIcon = null;
     }
 
     public void storeSettings(ExternalFileType entry) {
         entry.setName(name.getText().trim());
         entry.setExtension(extension.getText().trim());
+        if (selectedIcon != null)
+            entry.setIconName(selectedIcon);
         if (!Globals.ON_WIN) {
             entry.setOpenWith(application.getText().trim());
         } else {
diff --git a/src/java/net/sf/jabref/external/FileLinksUpgradeWarning.java b/src/java/net/sf/jabref/external/FileLinksUpgradeWarning.java
index 85370e3..5724dde 100644
--- a/src/java/net/sf/jabref/external/FileLinksUpgradeWarning.java
+++ b/src/java/net/sf/jabref/external/FileLinksUpgradeWarning.java
@@ -56,7 +56,7 @@ public class FileLinksUpgradeWarning implements PostOpenAction {
     public void performAction(BasePanel panel, ParserResult pr) {
         // Find out which actions should be offered:
         // Only offer to change Preferences if file column is not already visible:
-        boolean offerChangeSettings = !Globals.prefs.getBoolean("fileColumn");
+        boolean offerChangeSettings = !Globals.prefs.getBoolean("fileColumn") || !showsFileInGenFields();
         // Only offer to upgrade links if the pdf/ps fields are used:
         boolean offerChangeDatabase = linksFound(pr.getDatabase(), FIELDS_TO_LOOK_FOR);
         // If the "file" directory is not set, offer to migrate pdf/ps dir:
@@ -171,23 +171,10 @@ public class FileLinksUpgradeWarning implements PostOpenAction {
             Globals.prefs.putBoolean("fileColumn", Boolean.TRUE);
 
             // Modify General fields if necessary:
-            boolean found = false;
-            EntryEditorTabList tabList = Globals.prefs.getEntryEditorTabList();
-            outer: for (int i=0; i<tabList.getTabCount(); i++) {
-                List fields = tabList.getTabFields(i);
-                for (Iterator j=fields.iterator(); j.hasNext();) {
-                    String field = (String)j.next();
-                    //System.out.println(field);
-                    if (field.equals(GUIGlobals.FILE_FIELD)) {
-                        found = true;
-                        break outer;
-                    }
-                }
-            }
-            // If we didn't find the file field, insert it at the bottom of the first tab:
-            if (!found) {
+            // If we don't find the file field, insert it at the bottom of the first tab:
+            if (!showsFileInGenFields()) {
                 String gfs = Globals.prefs.get(Globals.prefs.CUSTOM_TAB_FIELDS+"0");
-                System.out.println(gfs);
+                //System.out.println(gfs);
                 StringBuffer sb = new StringBuffer(gfs);
                 if (gfs.length() > 0)
                     sb.append(";");
@@ -200,4 +187,20 @@ public class FileLinksUpgradeWarning implements PostOpenAction {
         }
     }
 
+    private boolean showsFileInGenFields() {
+        boolean found = false;
+        EntryEditorTabList tabList = Globals.prefs.getEntryEditorTabList();
+        outer: for (int i=0; i<tabList.getTabCount(); i++) {
+            List fields = tabList.getTabFields(i);
+            for (Iterator j=fields.iterator(); j.hasNext();) {
+                String field = (String)j.next();
+                if (field.equals(GUIGlobals.FILE_FIELD)) {
+                    found = true;
+                    break outer;
+                }
+            }
+        }
+        return found;
+    }
+
 }
diff --git a/src/java/net/sf/jabref/external/IconSelection.java b/src/java/net/sf/jabref/external/IconSelection.java
new file mode 100644
index 0000000..7dd1944
--- /dev/null
+++ b/src/java/net/sf/jabref/external/IconSelection.java
@@ -0,0 +1,151 @@
+package net.sf.jabref.external;
+
+import net.sf.jabref.Globals;
+import net.sf.jabref.GUIGlobals;
+
+import javax.swing.*;
+import java.util.*;
+import java.util.List;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.*;
+
+import com.jgoodies.forms.builder.ButtonBarBuilder;
+
+/**
+ * Dialog box for choosing an icon for an external file type.
+ */
+public class IconSelection extends JDialog {
+
+    JList icons;
+    List<String> iconKeys;
+    DefaultListModel listModel;
+    JButton ok = new JButton(Globals.lang("Ok")),
+        cancel = new JButton(Globals.lang("Cancel"));
+    private boolean okPressed = false;
+    private int selected = -1;
+    private JDialog parent;
+
+    public IconSelection(JDialog parent, String initialSelection) {
+        super(parent, Globals.lang("Select icon"), true);
+        this.parent = parent;
+        init(initialSelection);
+    }
+
+    public void setVisible(boolean visible) {
+        if (visible) {
+            okPressed = false;
+            selected = -1;
+        }
+        super.setVisible(visible);
+    }
+
+    /**
+     * After dialog has closed, this method reports whether a selection was made
+     * or it was cancelled.
+     * @return true if a selection was made.
+     */
+    public boolean isOkPressed() {
+        return okPressed;
+    }
+
+    public String getSelectedIconKey() {
+        if (selected >= 0)
+            return iconKeys.get(selected);
+        else
+            return null;
+    }
+
+    private void init(String initialSelection) {
+        int initSelIndex = -1;
+        iconKeys = new ArrayList<String>();
+        Map icns = GUIGlobals.getAllIcons();
+        HashSet<ImageIcon> iconSet = new LinkedHashSet<ImageIcon>();
+        for (Iterator i=icns.keySet().iterator(); i.hasNext();) {
+            String key = (String)i.next();
+            ImageIcon icon = GUIGlobals.getImage(key);
+            if (!iconSet.contains(icon)) {
+                iconKeys.add(key);
+                if (key.equals(initialSelection))
+                    initSelIndex = iconKeys.size()-1;
+            }
+            iconSet.add(icon);
+
+        }
+
+        listModel = new DefaultListModel();
+        icons = new JList(listModel);
+        for (Iterator<ImageIcon> iterator = iconSet.iterator(); iterator.hasNext();) {
+            listModel.addElement(new JLabel(iterator.next()));
+        }
+        class MyRenderer implements ListCellRenderer {
+            JLabel comp = new JLabel();
+            public MyRenderer() {
+                comp.setOpaque(true);
+                comp.setIconTextGap(0);
+                comp.setHorizontalAlignment(JLabel.CENTER);
+            }
+
+            public Component getListCellRendererComponent(JList list, Object value, int i,
+                                                          boolean isSelected, 
+                                                          boolean hasFocus) {
+                comp.setText(null);
+                comp.setIcon(((JLabel)value).getIcon());
+                if (isSelected) {
+                    comp.setBackground(list.getSelectionBackground());
+                    comp.setForeground(list.getSelectionForeground());
+                    comp.setBorder(BorderFactory.createEtchedBorder());
+                } else {
+                    comp.setBackground(list.getBackground());
+                    comp.setForeground(list.getForeground());
+                    comp.setBorder(null);
+                }
+
+                return comp;
+            }
+        }
+
+        if (initSelIndex >= 0)
+            icons.setSelectedIndex(initSelIndex);
+        icons.setCellRenderer(new MyRenderer());
+        icons.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+        icons.setLayoutOrientation(JList.HORIZONTAL_WRAP);
+
+        ButtonBarBuilder bb = new ButtonBarBuilder();
+        bb.addGlue();
+        bb.addGridded(ok);
+        bb.addGridded(cancel);
+        bb.addGlue();
+        bb.getPanel().setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+
+        ok.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent actionEvent) {
+                okPressed = true;
+                if (icons.getSelectedValue() != null)
+                    selected = icons.getSelectedIndex(); 
+                dispose();
+            }
+        });
+        cancel.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent actionEvent) {
+                okPressed = false;
+                dispose();
+            }
+        });
+        icons.addMouseListener(new MouseAdapter() {
+            public void mouseClicked(MouseEvent e) {
+                if (e.getClickCount() == 2) {
+
+                }
+            }
+        });
+
+        getContentPane().add(new JScrollPane(icons), BorderLayout.CENTER);
+        getContentPane().add(bb.getPanel(), BorderLayout.SOUTH);
+
+        pack();
+        setLocationRelativeTo(parent);
+    }
+}
diff --git a/src/java/net/sf/jabref/external/PushToEmacs.java b/src/java/net/sf/jabref/external/PushToEmacs.java
index 9f110b8..a13397d 100644
--- a/src/java/net/sf/jabref/external/PushToEmacs.java
+++ b/src/java/net/sf/jabref/external/PushToEmacs.java
@@ -58,7 +58,7 @@ public class PushToEmacs implements PushToApplication {
                 // so sh receives: (insert "\\cite{Blah2001}")
                 // so emacs receives: (insert "\cite{Blah2001}")
                 new String[] {"gnuclient", "-batch", "-eval",
-                "(insert \"\\\\" + Globals.prefs.get("citeCommand") +
+                "(insert \"\\\\" + Globals.prefs.get("citeCommand") +
                        "{" + keys + "}\")"};
 
             final Process p = Runtime.getRuntime().exec(com);
diff --git a/src/java/net/sf/jabref/external/SynchronizeFileField.java b/src/java/net/sf/jabref/external/SynchronizeFileField.java
index 6010737..9e18051 100644
--- a/src/java/net/sf/jabref/external/SynchronizeFileField.java
+++ b/src/java/net/sf/jabref/external/SynchronizeFileField.java
@@ -140,10 +140,12 @@ public class SynchronizeFileField extends AbstractWorker {
                     tableModel.setContent((String)old);
                     for (int j=0; j<tableModel.getRowCount(); j++) {
                         FileListEntry flEntry = tableModel.getEntry(j);
-                        // Test whether the file type is "remote", which e.g. is the case
-                        // for the URL file type. If it is, ignore this link:
-                        if (flEntry.getType().isRemote())
-                                continue;
+                        // See if the link looks like an URL:
+                        boolean httpLink = flEntry.getLink().toLowerCase().startsWith("http");
+                        if (httpLink)
+                            continue; // Don't check the remote file.
+                        // TODO: should there be an option to check remote links?
+                        
                         // Get an absolute path representation:
                         File file = Util.expandFilename(flEntry.getLink(), new String[]{dir, "."});
                         if ((file == null) || !file.exists()) {
diff --git a/src/java/net/sf/jabref/external/WriteXMPAction.java b/src/java/net/sf/jabref/external/WriteXMPAction.java
index 7a04291..07ba4d0 100644
--- a/src/java/net/sf/jabref/external/WriteXMPAction.java
+++ b/src/java/net/sf/jabref/external/WriteXMPAction.java
@@ -37,7 +37,7 @@ import com.jgoodies.forms.builder.ButtonBarBuilder;
  * to write the XMP data to the external pdf.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.3 $ ($Date: 2007/06/13 01:39:50 $)
+ * @version $Revision: 2110 $ ($Date: 2007-06-13 03:39:51 +0200 (Wed, 13 Jun 2007) $)
  * 
  */
 public class WriteXMPAction extends AbstractWorker {
diff --git a/src/java/net/sf/jabref/gui/CheckBoxFileChooser.java b/src/java/net/sf/jabref/gui/CheckBoxFileChooser.java
deleted file mode 100644
index 080ef09..0000000
--- a/src/java/net/sf/jabref/gui/CheckBoxFileChooser.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-  File: CheckBoxFileChooser.java
-
-  Copyright (c) 2006, The Cytoscape Consortium (www.cytoscape.org)
-
-  The Cytoscape Consortium is:
-  - Institute for Systems Biology
-  - University of California San Diego
-  - Memorial Sloan-Kettering Cancer Center
-  - Institut Pasteur
-  - Agilent Technologies
-
-  This library is free software; you can redistribute it and/or modify it
-  under the terms of the GNU Lesser General Public License as published
-  by the Free Software Foundation; either version 2.1 of the License, or
-  any later version.
-
-  This library 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.  The software and
-  documentation provided hereunder is on an "as is" basis, and the
-  Institute for Systems Biology and the Whitehead Institute
-  have no obligations to provide maintenance, support,
-  updates, enhancements or modifications.  In no event shall the
-  Institute for Systems Biology and the Whitehead Institute
-  be liable to any party for direct, indirect, special,
-  incidental or consequential damages, including lost profits, arising
-  out of the use of this software and its documentation, even if the
-  Institute for Systems Biology and the Whitehead Institute
-  have been advised of the possibility of such damage.  See
-  the GNU Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with this library; if not, write to the Free Software Foundation,
-  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-*/
-
-//-------------------------------------------------------------------------
-// $Revision$
-// $Date$
-// $Author$
-//-------------------------------------------------------------------------
-package net.sf.jabref.gui;
-
-import java.awt.*;
-import java.awt.event.*;
-
-//-------------------------------------------------------------------------
-import java.io.File;
-
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.filechooser.FileSystemView;
-
-
-//-------------------------------------------------------------------------
-/** extends JFileChooser by adding a JCheckBox at the bottom of the chooser
- */
-public class CheckBoxFileChooser extends JFileChooser {
-	JCheckBox jcb;
-	boolean jcbFlag = false;
-	String jcbLabel;
-
-	/**
-	 * Creates a new CheckBoxFileChooser object.
-	 *
-	 * @param currentDirectory  DOCUMENT ME!
-	 * @param checkBoxLabel  DOCUMENT ME!
-	 */
-	public CheckBoxFileChooser(File currentDirectory, String checkBoxLabel) {
-		super(currentDirectory, (FileSystemView) null);
-		jcbLabel = checkBoxLabel;
-	}
-
-	protected JDialog createDialog(Component parent) throws HeadlessException {
-		JDialog jd = super.createDialog(parent);
-		jcb = new JCheckBox(jcbLabel);
-        jcb.setBorder(BorderFactory.createEmptyBorder(0,10,2,0));
-        jcb.setSelected(jcbFlag);
-		jcb.addItemListener(new CheckBoxListener());
-        Container contentPane = jd.getContentPane();
-		contentPane.add(jcb, BorderLayout.SOUTH);
-		jd.pack();
-
-		return jd;
-	}
-
-	/** inner class for listening to the JCheckBox jcb
-	 *  and updating the boolean jcbFlag when appropriate
-	 */
-	private class CheckBoxListener implements ItemListener {
-		public void itemStateChanged(ItemEvent e) {
-			if (e.getStateChange() == ItemEvent.SELECTED)
-				jcbFlag = true;
-			else if (e.getStateChange() == ItemEvent.DESELECTED)
-				jcbFlag = false;
-		}
-	}
-
-	/** method for accessing last state of JCheckBox jcb */
-	public boolean getCheckBoxState() {
-		return jcbFlag;
-	}
-}
\ No newline at end of file
diff --git a/src/java/net/sf/jabref/gui/FileListEntryEditor.java b/src/java/net/sf/jabref/gui/FileListEntryEditor.java
index 5db3a04..48b7ee6 100644
--- a/src/java/net/sf/jabref/gui/FileListEntryEditor.java
+++ b/src/java/net/sf/jabref/gui/FileListEntryEditor.java
@@ -5,6 +5,8 @@ import com.jgoodies.forms.builder.ButtonBarBuilder;
 import com.jgoodies.forms.layout.FormLayout;
 
 import javax.swing.*;
+import javax.swing.event.DocumentListener;
+import javax.swing.event.DocumentEvent;
 
 import net.sf.jabref.*;
 import net.sf.jabref.external.ExternalFileType;
@@ -98,27 +100,33 @@ public class FileListEntryEditor {
                 diag.dispose();
             }
         });
-        link.addFocusListener(new FocusListener() {
-            public void focusGained(FocusEvent e) {
+        link.getDocument().addDocumentListener(new DocumentListener() {
+            public void insertUpdate(DocumentEvent documentEvent) {
+                checkExtension();
             }
-            public void focusLost(FocusEvent e) {
+            public void removeUpdate(DocumentEvent documentEvent) {
+            }
+            public void changedUpdate(DocumentEvent documentEvent) {
+                checkExtension();
+            }
+            private void checkExtension() {
                 if ((types.getSelectedIndex() == -1) &&
                         (link.getText().trim().length() > 0)) {
                     // Try to guess the file type:
                     String theLink = link.getText().trim();
-                    int index = theLink.indexOf('.');
+                    int index = theLink.lastIndexOf('.');
                     if ((index >= 0) && (index < theLink.length()-1)) {
 
                         ExternalFileType type = Globals.prefs.getExternalFileTypeByExt
                                 (theLink.substring(index+1));
                         if (type != null)
                             types.setSelectedItem(type);
-                            
                     }
                 }
             }
         });
 
+
         diag = new JDialog(parent, Globals.lang("Edit file link"), true);
         diag.getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
         diag.getContentPane().add(bb.getPanel(), BorderLayout.SOUTH);
diff --git a/src/java/net/sf/jabref/gui/FileListTableModel.java b/src/java/net/sf/jabref/gui/FileListTableModel.java
index 324f254..42c4756 100644
--- a/src/java/net/sf/jabref/gui/FileListTableModel.java
+++ b/src/java/net/sf/jabref/gui/FileListTableModel.java
@@ -88,6 +88,10 @@ public class FileListTableModel extends AbstractTableModel {
      * @param value The string representation
      */
     public void setContent(String value) {
+        setContent(value, false);
+    }
+
+    private FileListEntry setContent(String value, boolean firstOnly) {
         if (value == null)
             value = "";
         ArrayList newList = new ArrayList();
@@ -107,24 +111,51 @@ public class FileListTableModel extends AbstractTableModel {
             else if (!escaped && (c == ';')) {
                 thisEntry.add(sb.toString());
                 sb = new StringBuilder();
-                newList.add(decodeEntry(thisEntry));
-                thisEntry.clear();
+                if (firstOnly)
+                    return decodeEntry(thisEntry);
+                else {
+                    newList.add(decodeEntry(thisEntry));
+                    thisEntry.clear();
+                }
             }
             else sb.append(c);
             escaped = false;
         }
         if (sb.length() > 0)
             thisEntry.add(sb.toString());
-        if (thisEntry.size() > 0)
-            newList.add(decodeEntry(thisEntry));
-
+        if (thisEntry.size() > 0) {
+            if (firstOnly)
+                return decodeEntry(thisEntry);
+            else
+                newList.add(decodeEntry(thisEntry));
+        }
+          
         synchronized (list) {
             list.clear();
             list.addAll(newList);
         }
         fireTableChanged(new TableModelEvent(this));
+        return null;
+    }
+
+
+    /**
+     * Convenience method for finding a label corresponding to the type of the
+     * first file link in the given field content. The difference between using
+     * this method and using setContent() on an instance of FileListTableModel
+     * is a slight optimization: with this method, parsing is discontinued after
+     * the first entry has been found.
+     * @param content The file field content, as fed to this class' setContent() method.
+     * @return A JLabel set up with no text and the icon of the first entry's file type,
+     *  or null if no entry was found.
+     */
+    public static JLabel getFirstLabel(String content) {
+        FileListTableModel tm = new FileListTableModel();
+        FileListEntry entry = tm.setContent(content, true);
+        return entry != null ? entry.getType().getIconLabel() : null;
     }
 
+    
     private FileListEntry decodeEntry(ArrayList contents) {
         return new FileListEntry(getElementIfAvailable(contents, 0),
                 getElementIfAvailable(contents, 1),
diff --git a/src/java/net/sf/jabref/gui/GenFieldsCustomizer.java b/src/java/net/sf/jabref/gui/GenFieldsCustomizer.java
index a1e347f..fbe9849 100644
--- a/src/java/net/sf/jabref/gui/GenFieldsCustomizer.java
+++ b/src/java/net/sf/jabref/gui/GenFieldsCustomizer.java
@@ -132,7 +132,6 @@ public class GenFieldsCustomizer extends JDialog {
               return;
           }
 
-          System.out.println(Globals.prefs.CUSTOM_TAB_NAME + i);
           Globals.prefs.put((Globals.prefs.CUSTOM_TAB_NAME + i), parts[0]);
           Globals.prefs.put((Globals.prefs.CUSTOM_TAB_FIELDS + i), parts[1].toLowerCase());
       }
diff --git a/src/java/net/sf/jabref/gui/ImportInspectionDialog.java b/src/java/net/sf/jabref/gui/ImportInspectionDialog.java
index fe79999..b24e9d7 100644
--- a/src/java/net/sf/jabref/gui/ImportInspectionDialog.java
+++ b/src/java/net/sf/jabref/gui/ImportInspectionDialog.java
@@ -2,6 +2,7 @@ package net.sf.jabref.gui;
 
 import net.sf.jabref.*;
 import net.sf.jabref.external.DownloadExternalFile;
+import net.sf.jabref.external.ExternalFileMenuItem;
 import net.sf.jabref.groups.GroupTreeNode;
 import net.sf.jabref.groups.AllEntriesGroup;
 import net.sf.jabref.groups.AbstractGroup;
@@ -39,7 +40,7 @@ import ca.odell.glazedlists.swing.EventSelectionModel;
  * 
  * @author alver
  * @author $Author: mortenalver $
- * @version $Revision: 1.34 $ ($Date: 2007/06/13 20:47:58 $)
+ * @version $Revision: 2279 $ ($Date: 2007-08-21 19:30:22 +0200 (Tue, 21 Aug 2007) $)
  *
  */
 public class ImportInspectionDialog extends JDialog {
@@ -87,10 +88,10 @@ public class ImportInspectionDialog extends JDialog {
     private final int
         DUPL_COL = 1,
         FILE_COL = 2,
-        PDF_COL = 3,
-        PS_COL = 4,
-        URL_COL = 5,
-        PAD = 6;
+        PDF_COL = -1,//3,
+        PS_COL = -2,//4,
+        URL_COL = 3,//5,
+        PAD = 4; // 6;
 
     /**
      * The "defaultSelected" boolean value determines if new entries added are selected for import or not.
@@ -126,7 +127,7 @@ public class ImportInspectionDialog extends JDialog {
         EventTableModel tableModelGl = new EventTableModel(sortedList,
                 new EntryTableFormat());
         glTable = new EntryTable(tableModelGl);
-        GeneralRenderer renderer = new GeneralRenderer(Color.white, true);
+        GeneralRenderer renderer = new GeneralRenderer(Color.white);
         glTable.setDefaultRenderer(JLabel.class, renderer);
         glTable.setDefaultRenderer(String.class, renderer);
         glTable.getInputMap().put(Globals.prefs.getKey("Delete"), "delete");
@@ -167,8 +168,8 @@ public class ImportInspectionDialog extends JDialog {
         popup.add(new LinkLocalFile());
         popup.add(new DownloadFile());
         popup.add(new AutoSetLinks());
-        popup.add(new AttachFile("pdf"));
-        popup.add(new AttachFile("ps"));
+        //popup.add(new AttachFile("pdf"));
+        //popup.add(new AttachFile("ps"));
         popup.add(new AttachUrl());
         getContentPane().add(centerPan, BorderLayout.CENTER);
 
@@ -575,7 +576,8 @@ public class ImportInspectionDialog extends JDialog {
                 boolean groupingCanceled = false;
 
                 // Set owner/timestamp if options are enabled:
-                Util.setAutomaticFields(selected);
+                Util.setAutomaticFields(selected, Globals.prefs.getBoolean("overwriteOwner"),
+                    Globals.prefs.getBoolean("overwriteTimeStamp"));
 
 
                 for (Iterator i = selected.iterator(); i.hasNext();) {
@@ -784,8 +786,41 @@ public class ImportInspectionDialog extends JDialog {
      */
     class TableClickListener implements MouseListener {
 
+        public boolean isIconColumn(int col) {
+            return (col == FILE_COL) || (col == PDF_COL) || (col == PS_COL)
+                    || (col == URL_COL);
+        }
+
         public void mouseClicked(MouseEvent e) {
+            final int col = glTable.columnAtPoint(e.getPoint()),
+              row = glTable.rowAtPoint(e.getPoint());
+            if (isIconColumn(col)) {
+                BibtexEntry entry = (BibtexEntry)sortedList.get(row);
 
+                switch (col) {
+                    case FILE_COL:
+                        Object o = entry.getField(GUIGlobals.FILE_FIELD);
+                        if (o != null) {
+                            FileListTableModel tableModel = new FileListTableModel();
+                            tableModel.setContent((String)o);
+                            if (tableModel.getRowCount() == 0)
+                                return;
+                            FileListEntry fl = tableModel.getEntry(0);
+                            (new ExternalFileMenuItem(frame, entry, "", fl.getLink(), null, panel.metaData(), fl.getType())).
+                                    actionPerformed(null);
+                        }
+                        break;
+                    case URL_COL:
+                        openExternalLink("url", e);
+                        break;
+                    case PDF_COL:
+                        openExternalLink("pdf", e);
+                        break;
+                    case PS_COL:
+                        openExternalLink("ps", e);
+                        break;
+                }
+            }
         }
 
         public void mouseEntered(MouseEvent e) {
@@ -796,10 +831,81 @@ public class ImportInspectionDialog extends JDialog {
 
         }
 
+        /**
+         * Show right-click menu. If the click happened in an icon column that presents its own popup menu,
+         * show that. Otherwise, show the ordinary popup menu.
+         * @param e The mouse event that triggered the popup.
+         */
+        public void showPopup(MouseEvent e) {
+            final int col = glTable.columnAtPoint(e.getPoint());
+            switch (col) {
+                case FILE_COL:
+                    showFileFieldMenu(e);
+                    break;
+                default:
+                    showOrdinaryRightClickMenu(e);
+                    break;
+            }
+
+        }
+
+        public void showOrdinaryRightClickMenu(MouseEvent e) {
+            popup.show(glTable, e.getX(), e.getY());
+        }
+
+        /**
+         * Show the popup menu for the FILE field.
+         * @param e The mouse event that triggered the popup.
+         */
+        public void showFileFieldMenu(MouseEvent e) {
+            final int row = glTable.rowAtPoint(e.getPoint());
+            BibtexEntry entry = (BibtexEntry)sortedList.get(row);
+            JPopupMenu menu = new JPopupMenu();
+            int count = 0;
+            Object o = entry.getField(GUIGlobals.FILE_FIELD);
+            FileListTableModel fileList = new FileListTableModel();
+            fileList.setContent((String)o);
+            // If there are one or more links, open the first one:
+            for (int i=0; i<fileList.getRowCount(); i++) {
+                FileListEntry flEntry = fileList.getEntry(i);
+                String description = flEntry.getDescription();
+                if ((description == null) || (description.trim().length() == 0))
+                    description = flEntry.getLink();
+                menu.add(new ExternalFileMenuItem(panel.frame(), entry, description,
+                        flEntry.getLink(), flEntry.getType().getIcon(), panel.metaData(),
+                        flEntry.getType()));
+                count++;
+            }
+            if (count == 0) {
+                showOrdinaryRightClickMenu(e);
+            }
+            else
+                menu.show(glTable, e.getX(), e.getY());
+        }
+
+        /**
+         * Open old-style external links after user clicks icon.
+         * @param fieldName The name of the BibTeX field this icon is used for.
+         * @param e The MouseEvent that triggered this operation.
+         */
+        public void openExternalLink(String fieldName, MouseEvent e) {
+            final int row = glTable.rowAtPoint(e.getPoint());
+            BibtexEntry entry = (BibtexEntry)sortedList.get(row);
+
+            Object link = entry.getField(fieldName);
+            try {
+                if (link != null)
+                    Util.openExternalViewer(panel.metaData(), (String) link, fieldName);
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+        }
+
+
         public void mouseReleased(MouseEvent e) {
             // Check if the user has right-clicked. If so, open the right-click menu.
             if (e.isPopupTrigger()) {
-                popup.show(glTable, e.getX(), e.getY());
+                showPopup(e);
                 return;
             }
         }
@@ -807,7 +913,7 @@ public class ImportInspectionDialog extends JDialog {
         public void mousePressed(MouseEvent e) {
             // Check if the user has right-clicked. If so, open the right-click menu.
             if (e.isPopupTrigger()) {
-                popup.show(glTable, e.getX(), e.getY());
+                showPopup(e);
                 return;
             }
 
@@ -1112,7 +1218,7 @@ public class ImportInspectionDialog extends JDialog {
     }
 
     class EntryTable extends JTable {
-        GeneralRenderer renderer = new GeneralRenderer(Color.white, true);
+        GeneralRenderer renderer = new GeneralRenderer(Color.white);
         public EntryTable(TableModel model) {
             super(model);
         }
diff --git a/src/java/net/sf/jabref/gui/MainTable.java b/src/java/net/sf/jabref/gui/MainTable.java
index 447184e..0c6dc01 100644
--- a/src/java/net/sf/jabref/gui/MainTable.java
+++ b/src/java/net/sf/jabref/gui/MainTable.java
@@ -454,27 +454,26 @@ public class MainTable extends JTable {
 
     public static void updateRenderers() {
 
-        boolean antialiasing = Globals.prefs.getBoolean("antialias");
         defRenderer = new GeneralRenderer(Globals.prefs.getColor("tableBackground"),
-                Globals.prefs.getColor("tableText"), antialiasing);
-        reqRenderer = new GeneralRenderer(Globals.prefs.getColor("tableReqFieldBackground"), Globals.prefs.getColor("tableText"), antialiasing);
-        optRenderer = new GeneralRenderer(Globals.prefs.getColor("tableOptFieldBackground"), Globals.prefs.getColor("tableText"), antialiasing);
-        incRenderer = new IncompleteRenderer(antialiasing);
-        compRenderer = new CompleteRenderer(Globals.prefs.getColor("tableBackground"), antialiasing);
-        markedNumberRenderer = new CompleteRenderer(Globals.prefs.getColor("markedEntryBackground"), antialiasing);
-        grayedOutNumberRenderer = new CompleteRenderer(Globals.prefs.getColor("grayedOutBackground"), antialiasing);
-        veryGrayedOutNumberRenderer = new CompleteRenderer(Globals.prefs.getColor("veryGrayedOutBackground"), antialiasing);
+                Globals.prefs.getColor("tableText"));
+        reqRenderer = new GeneralRenderer(Globals.prefs.getColor("tableReqFieldBackground"), Globals.prefs.getColor("tableText"));
+        optRenderer = new GeneralRenderer(Globals.prefs.getColor("tableOptFieldBackground"), Globals.prefs.getColor("tableText"));
+        incRenderer = new IncompleteRenderer();
+        compRenderer = new CompleteRenderer(Globals.prefs.getColor("tableBackground"));
+        markedNumberRenderer = new CompleteRenderer(Globals.prefs.getColor("markedEntryBackground"));
+        grayedOutNumberRenderer = new CompleteRenderer(Globals.prefs.getColor("grayedOutBackground"));
+        veryGrayedOutNumberRenderer = new CompleteRenderer(Globals.prefs.getColor("veryGrayedOutBackground"));
         grayedOutRenderer = new GeneralRenderer(Globals.prefs.getColor("grayedOutBackground"),
-            Globals.prefs.getColor("grayedOutText"), antialiasing);
+            Globals.prefs.getColor("grayedOutText"));
         veryGrayedOutRenderer = new GeneralRenderer(Globals.prefs.getColor("veryGrayedOutBackground"),
-                Globals.prefs.getColor("veryGrayedOutText"), antialiasing);
+                Globals.prefs.getColor("veryGrayedOutText"));
         markedRenderer = new GeneralRenderer(Globals.prefs.getColor("markedEntryBackground"),
-                Globals.prefs.getColor("tableText"), antialiasing);
+                Globals.prefs.getColor("tableText"));
     }
 
     static class IncompleteRenderer extends GeneralRenderer {
-        public IncompleteRenderer(boolean antialiasing) {
-            super(Globals.prefs.getColor("incompleteEntryBackground"), antialiasing);
+        public IncompleteRenderer() {
+            super(Globals.prefs.getColor("incompleteEntryBackground"));
             super.setToolTipText(Globals.lang("This entry is incomplete"));
         }
 
@@ -488,8 +487,8 @@ public class MainTable extends JTable {
     }
 
     static class CompleteRenderer extends GeneralRenderer {
-        public CompleteRenderer(Color color, boolean antialiasing) {
-            super(color, antialiasing);
+        public CompleteRenderer(Color color) {
+            super(color);
         }
 
         protected void setNumber(int number) {
diff --git a/src/java/net/sf/jabref/gui/MainTableFormat.java b/src/java/net/sf/jabref/gui/MainTableFormat.java
index e2a02a1..179b460 100644
--- a/src/java/net/sf/jabref/gui/MainTableFormat.java
+++ b/src/java/net/sf/jabref/gui/MainTableFormat.java
@@ -15,6 +15,8 @@ import net.sf.jabref.Util;
 import ca.odell.glazedlists.gui.TableFormat;
 import ca.odell.glazedlists.matchers.Matcher;
 
+import javax.swing.*;
+
 /**
  * Created by IntelliJ IDEA.
  * User: alver
@@ -109,7 +111,10 @@ public class MainTableFormat implements TableFormat {
                 return null;
 
             // Ok, so we are going to display an icon. Find out which one, and return it:
-            o = GUIGlobals.getTableIcon(iconType[hasField]);
+            if (iconType[hasField].equals(GUIGlobals.FILE_FIELD)) {
+                o = FileListTableModel.getFirstLabel((String)be.getField(GUIGlobals.FILE_FIELD));
+            } else
+                o = GUIGlobals.getTableIcon(iconType[hasField]);
         } else if (columns[col - padleft].equals(GUIGlobals.TYPE_HEADER)) {
             o = be.getType().getName();
         } else {
diff --git a/src/java/net/sf/jabref/gui/date/DatePickerButton.java b/src/java/net/sf/jabref/gui/date/DatePickerButton.java
index 22596fb..0f31742 100644
--- a/src/java/net/sf/jabref/gui/date/DatePickerButton.java
+++ b/src/java/net/sf/jabref/gui/date/DatePickerButton.java
@@ -56,6 +56,7 @@ public class DatePickerButton implements ActionListener {
     public DatePickerButton(FieldEditor pEditor) {
         datePicker.showButtonOnly(true);
         datePicker.addActionListener(this);
+        datePicker.setShowTodayButton(true);
         panel.setLayout(new BorderLayout());
         panel.add(datePicker, BorderLayout.WEST);
         editor = pEditor;
diff --git a/src/java/net/sf/jabref/imports/AppendDatabaseAction.java b/src/java/net/sf/jabref/imports/AppendDatabaseAction.java
index 6903b69..888716b 100644
--- a/src/java/net/sf/jabref/imports/AppendDatabaseAction.java
+++ b/src/java/net/sf/jabref/imports/AppendDatabaseAction.java
@@ -101,11 +101,14 @@ public class AppendDatabaseAction extends BaseAction {
           MetaData meta = new MetaData(pr.getMetaData(), pr.getDatabase());
 
           if (importEntries) { // Add entries
+              boolean overwriteOwner = Globals.prefs.getBoolean("overwriteOwner");
+              boolean overwriteTimeStamp = Globals.prefs.getBoolean("overwriteTimeStamp");
               Iterator i = fromDatabase.getKeySet().iterator();
               while (i.hasNext()) {
                   originalEntry = fromDatabase.getEntryById((String) i.next());
                   BibtexEntry be = (BibtexEntry) (originalEntry.clone());
                   be.setId(Util.createNeutralId());
+                  Util.setAutomaticFields(be, overwriteOwner, overwriteTimeStamp);
                   database.insertEntry(be);
                   appendedEntries.add(be);
                   originalEntries.add(originalEntry);
diff --git a/src/java/net/sf/jabref/imports/BibtexParser.java b/src/java/net/sf/jabref/imports/BibtexParser.java
index d287f46..5981ee5 100644
--- a/src/java/net/sf/jabref/imports/BibtexParser.java
+++ b/src/java/net/sf/jabref/imports/BibtexParser.java
@@ -570,7 +570,12 @@ public class BibtexParser {
 			} else if (Character.isDigit((char) c)) { // value is a number
 
 				String numString = parseTextToken();
-				try {
+                // Morten Alver 2007-07-04: I don't see the point of parsing the integer
+                // and converting it back to a string, so I'm removing the construct below
+                // the following line:
+                value.append(numString);
+                /*
+                try {
 					// Fixme: What is this for?
 					value.append(String.valueOf(Integer.parseInt(numString)));
 				} catch (NumberFormatException e) {
@@ -578,6 +583,7 @@ public class BibtexParser {
 					// Used to fix [ 1594123 ] Failure to import big numbers
 					value.append(numString);
 				}
+				*/
 			} else if (c == '#') {
 				consume('#');
 			} else {
@@ -911,8 +917,9 @@ public class BibtexParser {
         while (keepon) {
             c = peek();
             headerText.append((char) c);
-            if (((piv == 0) && Character.isWhitespace((char) c))
-                    || (c == GUIGlobals.SIGNATURE.charAt(piv))) {
+            if ((piv == 0) && (Character.isWhitespace((char) c) || (c == '%')))
+                read();
+            else if (c == GUIGlobals.SIGNATURE.charAt(piv)) {
                 piv++;
                 read();
             }
diff --git a/src/java/net/sf/jabref/imports/CopacImporter.java b/src/java/net/sf/jabref/imports/CopacImporter.java
index 8d05b29..20e752e 100644
--- a/src/java/net/sf/jabref/imports/CopacImporter.java
+++ b/src/java/net/sf/jabref/imports/CopacImporter.java
@@ -20,7 +20,7 @@ import net.sf.jabref.BibtexFields;
  * http://copac.ac.uk/faq/#format
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2007/02/06 16:27:22 $)
+ * @version $Revision: 1933 $ ($Date: 2007-02-06 17:27:22 +0100 (Tue, 06 Feb 2007) $)
  * 
  */
 public class CopacImporter extends ImportFormat {
diff --git a/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java b/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
index 9e4d89c..a3b89b9 100644
--- a/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
+++ b/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
@@ -6,6 +6,8 @@ import net.sf.jabref.gui.ImportInspectionDialog;
 
 import javax.swing.*;
 import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLEncoder;
 import java.net.MalformedURLException;
 import java.net.ConnectException;
 import java.io.*;
@@ -31,6 +33,7 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
     String startUrl = "http://ieeexplore.ieee.org";
     String searchUrlPart = "/search/freesearchresult.jsp?queryText=";
     String endUrl = "+%3Cin%3E+metadata&ResultCount=25&ResultStart=";
+    String risUrl = "http://ieeexplore.ieee.org/xpls/citationAct";
     private int perPage = 25, hits = 0, unparseable = 0, parsed = 0;
     private boolean shouldContinue = false;
     private JCheckBox fetchAstracts = new JCheckBox(Globals.lang("Include abstracts"), false);
@@ -65,6 +68,9 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
     Pattern abstractLinkPattern = Pattern.compile(
             "<a href=\"(.+)\" class=\"bodyCopySpaced\">Abstract</a>");
 
+    Pattern ieeeArticleNumberPattern =
+        Pattern.compile("<a href=\".*arnumber=(\\d+).*\">");
+
     public JPanel getOptionsPanel() {
         JPanel pan = new JPanel();
         pan.setLayout(new BorderLayout());
@@ -230,7 +236,43 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
 
     }
 
-    private BibtexEntry parseNextEntry(String allText, int startIndex, int entryNumber) {
+    private BibtexEntry parseEntryRis(String number)
+        throws IOException
+    {
+        URL url;
+        URLConnection conn;
+        try {
+            url = new URL(risUrl);
+            conn = url.openConnection();
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+            return null;
+        }
+        conn.setDoInput(true);
+        conn.setDoOutput(true);
+        conn.setRequestProperty("Content-Type",
+                "application/x-www-form-urlencoded");
+        PrintWriter out = new PrintWriter(
+                conn.getOutputStream());
+        out.write(
+                "fileFormate=ris&arnumber="+
+                URLEncoder.encode(
+                    "<arnumber>"+number+"</arnumber>",
+                    "UTF-8"));
+        out.flush();
+        out.close();
+        InputStream inp = conn.getInputStream();
+        List items = new RisImporter().importEntries(inp);
+        inp.close();
+        if (items.size() > 0)
+            return (BibtexEntry)items.get(0);
+        else
+            return null;
+    }
+
+    private BibtexEntry parseNextEntry(String allText, int startIndex, int entryNumber)
+    {
+        BibtexEntry entry = null;
         String toFind = new StringBuffer().append("<div align=\"left\"><strong>")
                 .append(entryNumber).append(".</strong></div>").toString();
         int index = allText.indexOf(toFind, startIndex);
@@ -241,6 +283,31 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
         if (index >= 0) {
             piv = index+1;
             String text = allText.substring(index, endIndex);
+            // Fetching abstracts takes time, and causes a lot
+            // of requests, so this should be optional or disabled:
+            if (fetchingAbstracts) {
+                Matcher number =
+                    ieeeArticleNumberPattern.matcher(text);
+                if (number.find()) {
+                    try {
+                        entry = parseEntryRis(number.group(1));
+                    } catch (IOException e) {
+                        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+                    }
+                }
+            }
+            if (entry != null) { // fetch successful
+                // we just need to add DOI, it is not included in RIS.
+                int pgInd = text.indexOf("Digital Object Identifier ");
+                if (pgInd >= 0) {
+                    int fieldEnd = text.indexOf("<br>", pgInd);
+                    if (fieldEnd >= 0) {
+                        entry.setField("doi",
+                            text.substring(pgInd+26, fieldEnd).trim());
+                    }
+                }
+                return entry;
+            }
             BibtexEntryType type;
             String sourceField;
             if (text.indexOf("IEEE JNL") >= 0) {
@@ -252,7 +319,7 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
             }
 
             index = 0;
-            BibtexEntry entry = new BibtexEntry(Util.createNeutralId(), type);
+            entry = new BibtexEntry(Util.createNeutralId(), type);
             //System.out.println(text);
             Matcher m1 = entryPattern1.matcher(text);
             Matcher m2 = entryPattern2.matcher(text);
@@ -366,24 +433,6 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
                 }
             }
 
-            // Fetching abstracts takes time, and causes a lot of requests, so this should
-            // be optional or disabled:
-            if (fetchingAbstracts) {
-                Matcher abstractLink = abstractLinkPattern.matcher(text);
-                if (abstractLink.find()) {
-                    StringBuffer sb = new StringBuffer(startUrl).append(abstractLink.group(1));
-                    //System.out.println(sb.toString());
-                    try {
-                        String abstractText = fetchAbstract(sb.toString());
-                        if ((abstractText != null) && (abstractText.length() > 0) &&
-                                !abstractText.equalsIgnoreCase("not available")) {
-                            entry.setField("abstract", convertHTMLChars(abstractText));
-                        }
-                    } catch (IOException e) {
-                        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-                    }
-                }
-            }
 
             return entry;
         }
diff --git a/src/java/net/sf/jabref/imports/ImportFormatReader.java b/src/java/net/sf/jabref/imports/ImportFormatReader.java
index 3fac1ca..27edf4a 100644
--- a/src/java/net/sf/jabref/imports/ImportFormatReader.java
+++ b/src/java/net/sf/jabref/imports/ImportFormatReader.java
@@ -474,7 +474,7 @@ public class ImportFormatReader {
 			} catch (Exception e) {
 			}
 		}
-      System.out.println("Used format: "+usedFormat);
+      //System.out.println("Used format: "+usedFormat);
     // Finally, if all else fails, see if it is a BibTeX file:
     if (entryList == null) {
 	try {
@@ -483,7 +483,8 @@ public class ImportFormatReader {
 		|| (pr.getDatabase().getStringCount() > 0)) {
 		entryList = pr;
         pr.setFile(new File(filename));
-		usedFormat = BIBTEX_FORMAT;
+            
+        usedFormat = BIBTEX_FORMAT;
 	    }
 	} catch (Throwable ex) {
 	    //ex.printStackTrace();
diff --git a/src/java/net/sf/jabref/imports/ImportMenuItem.java b/src/java/net/sf/jabref/imports/ImportMenuItem.java
index e4608d2..15d9db2 100644
--- a/src/java/net/sf/jabref/imports/ImportMenuItem.java
+++ b/src/java/net/sf/jabref/imports/ImportMenuItem.java
@@ -257,7 +257,8 @@ public class ImportMenuItem extends JMenuItem implements ActionListener {
             if (o[1] instanceof List) {
                 List entries = (List) o[1];
                 anythingUseful = anythingUseful | (entries.size() > 0);
-                Util.setAutomaticFields(entries); // set timestamp and owner
+                Util.setAutomaticFields(entries, Globals.prefs.getBoolean("overwriteOwner"),
+                        Globals.prefs.getBoolean("overwriteTimeStamp")); // set timestamp and owner
                 for (Iterator j = entries.iterator(); j.hasNext();) {
                     BibtexEntry entry = (BibtexEntry) j.next();
                     try {
diff --git a/src/java/net/sf/jabref/imports/IsiImporter.java b/src/java/net/sf/jabref/imports/IsiImporter.java
index b16d60c..3190b77 100644
--- a/src/java/net/sf/jabref/imports/IsiImporter.java
+++ b/src/java/net/sf/jabref/imports/IsiImporter.java
@@ -35,7 +35,7 @@ import net.sf.jabref.util.CaseChanger;
  * </ul>
  * 
  * @author $Author: mortenalver $
- * @version $Revision: 1.21 $ ($Date: 2006/09/05 21:50:23 $)
+ * @version $Revision: 1751 $ ($Date: 2006-09-05 23:50:23 +0200 (Tue, 05 Sep 2006) $)
  * 
  */
 public class IsiImporter extends ImportFormat {
diff --git a/src/java/net/sf/jabref/imports/OAI2Fetcher.java b/src/java/net/sf/jabref/imports/OAI2Fetcher.java
index 88c1658..4f58aae 100644
--- a/src/java/net/sf/jabref/imports/OAI2Fetcher.java
+++ b/src/java/net/sf/jabref/imports/OAI2Fetcher.java
@@ -35,7 +35,7 @@ import org.xml.sax.helpers.DefaultHandler;
  * @author Ulrich Stärk
  * @author Christian Kopf
  * 
- * @version $Revision: 1.5 $ ($Date: 2007/03/10 19:22:06 $)
+ * @version $Revision: 1970 $ ($Date: 2007-03-10 20:22:06 +0100 (Sat, 10 Mar 2007) $)
  * 
  */
 public class OAI2Fetcher implements EntryFetcher, Runnable {
diff --git a/src/java/net/sf/jabref/imports/OAI2Handler.java b/src/java/net/sf/jabref/imports/OAI2Handler.java
index d6ad321..742d6e9 100644
--- a/src/java/net/sf/jabref/imports/OAI2Handler.java
+++ b/src/java/net/sf/jabref/imports/OAI2Handler.java
@@ -13,7 +13,7 @@ import org.xml.sax.helpers.DefaultHandler;
  * @author Christian Kopf
  * @author Christopher Oezbek
  * 
- * @version $Revision: 1.4 $ ($Date: 2007/02/09 10:06:36 $)
+ * @version $Revision: 1935 $ ($Date: 2007-02-09 11:06:36 +0100 (Fri, 09 Feb 2007) $)
  * 
  */
 public class OAI2Handler extends DefaultHandler {
diff --git a/src/java/net/sf/jabref/imports/OpenDatabaseAction.java b/src/java/net/sf/jabref/imports/OpenDatabaseAction.java
index 94cff01..ebbc7af 100644
--- a/src/java/net/sf/jabref/imports/OpenDatabaseAction.java
+++ b/src/java/net/sf/jabref/imports/OpenDatabaseAction.java
@@ -272,17 +272,20 @@ public class OpenDatabaseAction extends MnemonicAwareAction {
         StringBuffer headerText = new StringBuffer();
         try {
             boolean keepon = true;
-            int piv = 0;
+            int piv = 0, offset = 0;
             int c;
 
             while (keepon) {
                 c = reader.read();
-                headerText.append((char) c);
-                if (((piv == 0) && Character.isWhitespace((char) c))
-                        || (c == GUIGlobals.SIGNATURE.charAt(piv)))
-                    piv++;
-                else //if (((char)c) == '@')
-                    keepon = false;
+                if ((piv == 0) && ((c == '%') || (Character.isWhitespace((char)c))))
+                    offset++;
+                else {
+                    headerText.append((char) c);
+                    if (c == GUIGlobals.SIGNATURE.charAt(piv))
+                        piv++;
+                    else //if (((char)c) == '@')
+                        keepon = false;
+                }
                 //System.out.println(headerText.toString());
                 found:
                 if (piv == GUIGlobals.SIGNATURE.length()) {
@@ -292,10 +295,15 @@ public class OpenDatabaseAction extends MnemonicAwareAction {
                     //    System.out.println("'"+headerText.toString().substring(0, headerText.length()-GUIGlobals.SIGNATURE.length())+"'");
                     // Found the signature. The rest of the line is unknown, so we skip
                     // it:
-                    while (reader.read() != '\n') ;
-
-                    // Then we must skip the "Encoding: "
-                    for (int i = 0; i < GUIGlobals.encPrefix.length(); i++) {
+                    while (reader.read() != '\n');
+                    // If the next line starts with something like "% ", handle this:
+                    while (((c =reader.read()) == '%') || (Character.isWhitespace((char)c)));
+                    // Then we must skip the "Encoding: ". We may already have read the first
+                    // character:
+                    if ((char)c != GUIGlobals.encPrefix.charAt(0))
+                        break found;
+
+                    for (int i = 1; i < GUIGlobals.encPrefix.length(); i++) {
                         if (reader.read() != GUIGlobals.encPrefix.charAt(i))
                             break found; // No,
                         // it
@@ -304,13 +312,16 @@ public class OpenDatabaseAction extends MnemonicAwareAction {
                         // to
                         // match.
                     }
-
+                    
                     // If ok, then read the rest of the line, which should contain the
                     // name
                     // of the encoding:
                     StringBuffer sb = new StringBuffer();
 
-                    while ((c = reader.read()) != '\n') sb.append((char) c);
+                    while ((c = reader.read()) != '\n') {
+                        sb.append((char) c);
+                    }
+
 
                     suppliedEncoding = sb.toString();
                 }
diff --git a/src/java/net/sf/jabref/imports/PdfXmpImporter.java b/src/java/net/sf/jabref/imports/PdfXmpImporter.java
index c4310e8..a8edeb3 100644
--- a/src/java/net/sf/jabref/imports/PdfXmpImporter.java
+++ b/src/java/net/sf/jabref/imports/PdfXmpImporter.java
@@ -11,7 +11,7 @@ import net.sf.jabref.util.XMPUtil;
  * Wraps the XMPUtility function to be used as an ImportFormat.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/13 13:17:00 $)
+ * @version $Revision: 1699 $ ($Date: 2006-08-13 15:17:52 +0200 (Sun, 13 Aug 2006) $)
  * 
  */
 public class PdfXmpImporter extends ImportFormat {
diff --git a/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java b/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java
index 730befd..43d457a 100644
--- a/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java
+++ b/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java
@@ -282,6 +282,16 @@ public class LabelPatternUtil {
                   _sbvalue.append(getTitleWords(1, _entry));
                 }
 
+               else if (val.matches("keyword\\d+")) {
+                    int num = Integer.parseInt(val.substring(7));
+                    String kw = _entry.getField("keywords").toString();
+                    if (kw != null) {
+                        String[] keywords = kw.split("[,;]\\s*");
+                        if ((num > 0) && (num < keywords.length))
+                            _sbvalue.append(keywords[num-1].trim());
+                    }
+               }
+
                 // we havent seen any special demands
                 else {
                   _sbvalue.append(_entry.getField(val).toString());
diff --git a/src/java/net/sf/jabref/util/CaseChangeMenu.java b/src/java/net/sf/jabref/util/CaseChangeMenu.java
index c9a011b..38a5ec5 100644
--- a/src/java/net/sf/jabref/util/CaseChangeMenu.java
+++ b/src/java/net/sf/jabref/util/CaseChangeMenu.java
@@ -2,7 +2,7 @@ package net.sf.jabref.util;
 
 /* Mp3dings - manage mp3 meta-information
  * Copyright (C) 2003 Moritz Ringler
- * $Id: CaseChangeMenu.java,v 1.2 2005/03/20 20:47:51 mortenalver Exp $
+ * $Id: CaseChangeMenu.java 864 2005-03-20 20:47:54Z mortenalver $
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
diff --git a/src/java/net/sf/jabref/util/CaseChanger.java b/src/java/net/sf/jabref/util/CaseChanger.java
index fa0c56b..198c9a7 100644
--- a/src/java/net/sf/jabref/util/CaseChanger.java
+++ b/src/java/net/sf/jabref/util/CaseChanger.java
@@ -2,7 +2,7 @@ package net.sf.jabref.util;
 
 /* Mp3dings - manage mp3 meta-information
  * Copyright (C) 2003 Moritz Ringler
- * $Id: CaseChanger.java,v 1.5 2006/08/03 22:22:00 coezbek Exp $
+ * $Id: CaseChanger.java 1615 2006-08-03 22:22:01Z coezbek $
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -29,7 +29,7 @@ import java.util.regex.Matcher;
  * 
  * @author Moritz Ringler
  * 
- * @version $Revision: 1.5 $ ($Date: 2006/08/03 22:22:00 $)
+ * @version $Revision: 1615 $ ($Date: 2006-08-04 00:22:01 +0200 (Fri, 04 Aug 2006) $)
  */
 public class CaseChanger {
 
diff --git a/src/java/net/sf/jabref/util/XMPUtil.java b/src/java/net/sf/jabref/util/XMPUtil.java
index 48ac2be..8250069 100644
--- a/src/java/net/sf/jabref/util/XMPUtil.java
+++ b/src/java/net/sf/jabref/util/XMPUtil.java
@@ -51,7 +51,7 @@ import org.pdfbox.pdmodel.common.PDMetadata;
  * 
  * Synchronization
  * 
- * @version $Revision: 1.5.2.1 $ ($Date: 2007/06/29 13:56:21 $)
+ * @version $Revision: 2141 $ ($Date: 2007-06-29 15:56:21 +0200 (Fri, 29 Jun 2007) $)
  */
 public class XMPUtil {
 
diff --git a/src/java/net/sf/jabref/wizard/integrity/IntegrityCheck.java b/src/java/net/sf/jabref/wizard/integrity/IntegrityCheck.java
index eb8b826..13e1030 100644
--- a/src/java/net/sf/jabref/wizard/integrity/IntegrityCheck.java
+++ b/src/java/net/sf/jabref/wizard/integrity/IntegrityCheck.java
@@ -178,13 +178,14 @@ public class IntegrityCheck
 //        back.add("bad end (" +fieldName +" field)");
         failed = true ;
       }
-      if (structure.indexOf("NN,NN") > -1)
+      /*if (structure.indexOf("NN,NN") > -1)
       {
         messages.add( new IntegrityMessage( IntegrityMessage.NAME_SEMANTIC_WARNING,
                                             entry, fieldName, null))  ;
+
 //        back.add("something could be wrong in " +fieldName +" field") ;
         failed = true ;
-      }
+      } */
 
 //      if (failed)
 //        System.out.println(authors +" #" +structure.toString() +"#") ;
diff --git a/src/java/tests/net/sf/jabref/FileBasedTestCase.java b/src/java/tests/net/sf/jabref/FileBasedTestCase.java
index 17e8aca..a3c8399 100644
--- a/src/java/tests/net/sf/jabref/FileBasedTestCase.java
+++ b/src/java/tests/net/sf/jabref/FileBasedTestCase.java
@@ -16,7 +16,7 @@ import net.sf.jabref.imports.ParserResult;
  * functions.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.5 $ ($Date: 2007/05/30 23:53:36 $)
+ * @version $Revision: 2092 $ ($Date: 2007-05-31 01:53:37 +0200 (Thu, 31 May 2007) $)
  * 
  */
 public class FileBasedTestCase extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/bst/BibtexWidthTest.java b/src/java/tests/net/sf/jabref/bst/BibtexWidthTest.java
index a19abac..e36e968 100644
--- a/src/java/tests/net/sf/jabref/bst/BibtexWidthTest.java
+++ b/src/java/tests/net/sf/jabref/bst/BibtexWidthTest.java
@@ -32,7 +32,7 @@ import junit.framework.TestCase;
  </code>
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/11/11 17:11:39 $)
+ * @version $Revision: 1799 $ ($Date: 2006-11-11 18:11:39 +0100 (Sat, 11 Nov 2006) $)
  * 
  */
 public class BibtexWidthTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorAbbreviatorTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorAbbreviatorTest.java
index f9fd39a..c8af677 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorAbbreviatorTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorAbbreviatorTest.java
@@ -34,7 +34,7 @@ import net.sf.jabref.export.layout.format.AuthorLastFirstAbbreviator;
  * Is the save as the AuthorLastFirstAbbreviator.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  * 
  */
 public class AuthorAbbreviatorTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorAndsCommaReplacerTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorAndsCommaReplacerTest.java
index 29189eb..f353251 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorAndsCommaReplacerTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorAndsCommaReplacerTest.java
@@ -31,7 +31,7 @@ import net.sf.jabref.export.layout.format.AuthorAndsCommaReplacer;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  * 
  */
 public class AuthorAndsCommaReplacerTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorAndsReplacerTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorAndsReplacerTest.java
index 7ee2eaf..b07234d 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorAndsReplacerTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorAndsReplacerTest.java
@@ -31,7 +31,7 @@ import net.sf.jabref.export.layout.format.AuthorAndsReplacer;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.2 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  * 
  */
 public class AuthorAndsReplacerTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstAbbrLastCommasTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstAbbrLastCommasTest.java
index a0f86c6..0dd67f7 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstAbbrLastCommasTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstAbbrLastCommasTest.java
@@ -32,7 +32,7 @@ import net.sf.jabref.export.layout.format.AuthorFirstAbbrLastCommas;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  *
  */
 public class AuthorFirstAbbrLastCommasTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstAbbrLastOxfordCommasTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstAbbrLastOxfordCommasTest.java
index 041c99f..7eb340d 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstAbbrLastOxfordCommasTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstAbbrLastOxfordCommasTest.java
@@ -31,7 +31,7 @@ import net.sf.jabref.export.layout.format.AuthorFirstAbbrLastOxfordCommas;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  *
  */
 public class AuthorFirstAbbrLastOxfordCommasTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstFirstTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstFirstTest.java
index 5407197..9a3b458 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstFirstTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstFirstTest.java
@@ -30,7 +30,7 @@ import net.sf.jabref.export.layout.format.AuthorFirstFirst;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  * 
  */
 public class AuthorFirstFirstTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstLastCommasTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstLastCommasTest.java
index 35d741d..cab79e6 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstLastCommasTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstLastCommasTest.java
@@ -31,7 +31,7 @@ import net.sf.jabref.export.layout.format.AuthorFirstLastCommas;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  *
  */
 public class AuthorFirstLastCommasTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstLastOxfordCommasTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstLastOxfordCommasTest.java
index 89be3fc..6ce8422 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstLastOxfordCommasTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorFirstLastOxfordCommasTest.java
@@ -31,7 +31,7 @@ import net.sf.jabref.export.layout.format.AuthorFirstLastOxfordCommas;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  *
  */
 public class AuthorFirstLastOxfordCommasTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbrCommasTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbrCommasTest.java
index 3188df4..e00af3d 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbrCommasTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbrCommasTest.java
@@ -31,7 +31,7 @@ import net.sf.jabref.export.layout.format.AuthorLastFirstAbbrCommas;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  *
  */
 public class AuthorLastFirstAbbrCommasTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbrOxfordCommasTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbrOxfordCommasTest.java
index 83682e7..74c6c4a 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbrOxfordCommasTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbrOxfordCommasTest.java
@@ -31,7 +31,7 @@ import net.sf.jabref.export.layout.format.AuthorLastFirstAbbrOxfordCommas;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  *
  */
 public class AuthorLastFirstAbbrOxfordCommasTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstCommasTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstCommasTest.java
index 6a88ef0..04b94f8 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstCommasTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstCommasTest.java
@@ -31,7 +31,7 @@ import net.sf.jabref.export.layout.format.AuthorLastFirstCommas;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  * 
  */
 public class AuthorLastFirstCommasTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstOxfordCommasTest.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstOxfordCommasTest.java
index f9bf854..e459bd1 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstOxfordCommasTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstOxfordCommasTest.java
@@ -31,7 +31,7 @@ import net.sf.jabref.export.layout.format.AuthorLastFirstOxfordCommas;
 /**
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/12 15:36:45 $)
+ * @version $Revision: 1694 $ ($Date: 2006-08-12 17:36:45 +0200 (Sat, 12 Aug 2006) $)
  *
  */
 public class AuthorLastFirstOxfordCommasTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/export/layout/format/ResolvePDFTest.java b/src/java/tests/net/sf/jabref/export/layout/format/ResolvePDFTest.java
index b3ce0e1..6a742cd 100644
--- a/src/java/tests/net/sf/jabref/export/layout/format/ResolvePDFTest.java
+++ b/src/java/tests/net/sf/jabref/export/layout/format/ResolvePDFTest.java
@@ -12,7 +12,7 @@ import tests.net.sf.jabref.FileBasedTestCase;
  * Testing the PDF resolver.
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.1 $ ($Date: 2006/08/27 21:04:27 $)
+ * @version $Revision: 1730 $ ($Date: 2006-08-27 23:04:28 +0200 (Sun, 27 Aug 2006) $)
  *
  */
 public class ResolvePDFTest extends FileBasedTestCase {
diff --git a/src/java/tests/net/sf/jabref/imports/IsiImporterTest.java b/src/java/tests/net/sf/jabref/imports/IsiImporterTest.java
index 2b0def8..542ed32 100644
--- a/src/java/tests/net/sf/jabref/imports/IsiImporterTest.java
+++ b/src/java/tests/net/sf/jabref/imports/IsiImporterTest.java
@@ -15,7 +15,7 @@ import net.sf.jabref.imports.IsiImporter;
  * Test cases for the IsiImporter
  * 
  * @author $Author: coezbek $
- * @version $Revision: 1.7 $ ($Date: 2007/02/06 16:27:21 $)
+ * @version $Revision: 1933 $ ($Date: 2007-02-06 17:27:22 +0100 (Tue, 06 Feb 2007) $)
  * 
  */
 public class IsiImporterTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/imports/OAI2ImportTest.java b/src/java/tests/net/sf/jabref/imports/OAI2ImportTest.java
index 113046e..eec1cde 100644
--- a/src/java/tests/net/sf/jabref/imports/OAI2ImportTest.java
+++ b/src/java/tests/net/sf/jabref/imports/OAI2ImportTest.java
@@ -22,7 +22,7 @@ import org.xml.sax.SAXException;
  * @author Christian Kopf
  * @author Christopher Oezbek
  * 
- * @version $Revision: 1.4.2.1 $ ($Date: 2007/06/29 13:56:21 $)
+ * @version $Revision: 2141 $ ($Date: 2007-06-29 15:56:21 +0200 (Fri, 29 Jun 2007) $)
  * 
  */
 public class OAI2ImportTest extends TestCase {
diff --git a/src/java/tests/net/sf/jabref/imports/RisTest.ris b/src/java/tests/net/sf/jabref/imports/RisTest.ris
deleted file mode 100644
index c80bd41..0000000
--- a/src/java/tests/net/sf/jabref/imports/RisTest.ris
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-TY  - JOUR
-A1  - Stottrup,J G
-T1  - The elusive copepods: their production and suitability in marine aquaculture
-Y1  - 2000
-JF  - Aquaculture Research
-JO  - Aquaculture Research
-SP  - 703
-EP  - 711
-VL  - 31
-IS  - 8-9
-M3  - doi:10.1046/j.1365-2109.2000.00488.x
-UR  - http://www.blackwell-synergy.com/doi/abs/10.1046/j.1365-2109.2000.00488.x
-N2  - Abstract Despite the fact that the suitability of copepods as live prey for marine fish larvae is now well established, their use in aquaculture remains sporadic. Although of lower nutritional value, the relative ease of production of rotifers (Brachionus spp.) and Artemia nauplii continues to ensure their predominance. Studies in the literature have highlighted differences in the levels and ratios of fatty acids, lipid classes and pigments between copepods and traditional live pre [...]
-ER  -
diff --git a/src/java/wsi/ra/tool/ExternalHelper.java b/src/java/wsi/ra/tool/ExternalHelper.java
index 868d6b2..58dc56c 100755
--- a/src/java/wsi/ra/tool/ExternalHelper.java
+++ b/src/java/wsi/ra/tool/ExternalHelper.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: ExternalHelper.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner, Gerd Mueller
-//  Version:  $Revision: 1.1 $
-//            $Date: 2004/01/28 22:41:11 $
+//  Version:  $Revision: 148 $
+//            $Date: 2004-01-28 23:42:25 +0100 (Wed, 28 Jan 2004) $
 //            $Author: wegner $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -27,7 +27,7 @@ package wsi.ra.tool;
  *
  * @author     wegnerj
  * @license GPL
- * @cvsversion    $Revision: 1.1 $, $Date: 2004/01/28 22:41:11 $
+ * @cvsversion    $Revision: 148 $, $Date: 2004-01-28 23:42:25 +0100 (Wed, 28 Jan 2004) $
  */
 public class ExternalHelper
 {
diff --git a/src/java/wsi/ra/tool/ResourceLoader.java b/src/java/wsi/ra/tool/ResourceLoader.java
index 2a16695..375c8bb 100755
--- a/src/java/wsi/ra/tool/ResourceLoader.java
+++ b/src/java/wsi/ra/tool/ResourceLoader.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: ResourceLoader.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner, Gerd Mueller
-//  Version:  $Revision: 1.1 $
-//            $Date: 2004/01/28 22:41:11 $
+//  Version:  $Revision: 148 $
+//            $Date: 2004-01-28 23:42:25 +0100 (Wed, 28 Jan 2004) $
 //            $Author: wegner $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -47,7 +47,7 @@ import java.util.zip.*;
  * @author     Robin Friedman, rfriedman at TriadTherapeutics.com
  * @author     Gerd Mueller
  * @license GPL
- * @cvsversion    $Revision: 1.1 $, $Date: 2004/01/28 22:41:11 $
+ * @cvsversion    $Revision: 148 $, $Date: 2004-01-28 23:42:25 +0100 (Wed, 28 Jan 2004) $
  */
 public class ResourceLoader
 {
diff --git a/src/java/wsi/ra/tool/WSITools.java b/src/java/wsi/ra/tool/WSITools.java
index 4e0102b..985d953 100755
--- a/src/java/wsi/ra/tool/WSITools.java
+++ b/src/java/wsi/ra/tool/WSITools.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: WSITools.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner
-//  Version:  $Revision: 1.2 $
-//            $Date: 2005/11/08 04:53:29 $
+//  Version:  $Revision: 1318 $
+//            $Date: 2005-11-08 05:53:29 +0100 (Tue, 08 Nov 2005) $
 //            $Author: mortenalver $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -38,7 +38,7 @@ import java.util.Vector;
  *
  * @author     wegnerj
  * @license GPL
- * @cvsversion    $Revision: 1.2 $, $Date: 2005/11/08 04:53:29 $
+ * @cvsversion    $Revision: 1318 $, $Date: 2005-11-08 05:53:29 +0100 (Tue, 08 Nov 2005) $
  */
 public class WSITools
 {
diff --git a/src/java/wsi/ra/types/StringInt.java b/src/java/wsi/ra/types/StringInt.java
index 03c1b11..3ec510b 100755
--- a/src/java/wsi/ra/types/StringInt.java
+++ b/src/java/wsi/ra/types/StringInt.java
@@ -1,11 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-//  Filename: $RCSfile: StringInt.java,v $
+//  Filename: $RCSfile$
 //  Purpose:  Atom representation.
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Joerg K. Wegner
-//  Version:  $Revision: 1.1 $
-//            $Date: 2004/01/28 22:41:11 $
+//  Version:  $Revision: 148 $
+//            $Date: 2004-01-28 23:42:25 +0100 (Wed, 28 Jan 2004) $
 //            $Author: wegner $
 //
 //  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
@@ -34,7 +34,7 @@ package wsi.ra.types;
  *
  * @author     wegnerj
  * @license GPL
- * @cvsversion    $Revision: 1.1 $, $Date: 2004/01/28 22:41:11 $
+ * @cvsversion    $Revision: 148 $, $Date: 2004-01-28 23:42:25 +0100 (Wed, 28 Jan 2004) $
  */
 public class StringInt implements java.io.Serializable
 {
diff --git a/src/resource/IntegrityMessage_it.properties b/src/resource/IntegrityMessage_it.properties
index 670ff72..5aa57af 100644
--- a/src/resource/IntegrityMessage_it.properties
+++ b/src/resource/IntegrityMessage_it.properties
@@ -1,11 +1,11 @@
-#! created/edited by Popeye version 0.51 sunshine (popeye.sourceforge.net)
-
-ITEXT_1=suggerimenti
-ITEXT_1001=avvertenza
-ITEXT_2001=fallito
-ITEXT_1010=inizio del campo $FIELD
-ITEXT_1011=terminatore errato (campo $FIELD)
-ITEXT_1012=possibile errore nel campo $FIELD
-ITEXT_10=Il campo $FIELD contiene maiuscole non mascherate da {}
-ITEXT_11=Il campo $FIELD deve contenere un numero a 4 cifre
-ITEXT_2010=Il campo $FIELD contiene una parentesi graffa chiusa inattesa
+#! created/edited by Popeye version 0.51 sunshine (popeye.sourceforge.net)
+
+ITEXT_1=suggerimenti
+ITEXT_1001=avvertenza
+ITEXT_2001=fallito
+ITEXT_1010=inizio del campo $FIELD
+ITEXT_1011=terminatore errato (campo $FIELD)
+ITEXT_1012=possibile errore nel campo $FIELD
+ITEXT_10=Il campo $FIELD contiene maiuscole non mascherate da {}
+ITEXT_11=Il campo $FIELD deve contenere un numero a 4 cifre
+ITEXT_2010=Il campo $FIELD contiene una parentesi graffa chiusa inattesa
diff --git a/src/resource/JabRef_de.properties b/src/resource/JabRef_de.properties
index 188dc80..9c484a6 100644
--- a/src/resource/JabRef_de.properties
+++ b/src/resource/JabRef_de.properties
@@ -598,8 +598,6 @@ Existing_file=Bestehende_Datei
 exists._Overwrite_file?=existiert._Ersetzen?
 exists.Overwrite?=ist_vorhanden._\u00dcberschreiben?
 
-Exit=Beenden
-
 Expand_subtree=Unterbaum_aufklappen
 
 Export=Exportieren
@@ -957,8 +955,6 @@ Loading_session...=Lade_Sitzung...
 Look_and_feel=Aussehen
 Looking_for_pdf...=Suche_nach_pdf...
 
-Mac_file_dialog=Mac_Dateidialog
-
 Main_layout_file=Haupt-Layoutdatei
 
 Main_PDF_directory=Standard-Ordner_f\u00FCr_PDF-Dateien
@@ -1795,7 +1791,6 @@ Your_new_key_bindings_have_been_stored.=Ihre_neuen_Tastenk\u00FCrzel_wurden_gesp
 Save_all_open_databases=Alle_ge\u00f6ffneten_Dateien_speichern
 
 
-Include=Einbeziehen
 Automatically_remove_exact_duplicates=Exakte_Duplikate_automatisch_l\u00f6schen
 Enable_word/name_autocompletion=Autovervollst\u00e4ndigung_aktivieren
 Editor_options=Herausgeber-Optionen
@@ -1811,7 +1806,7 @@ File_type=Dateityp
 Edit_file_link=Link_bearbeiten
 
 Path_to_LatexEditor_(LEd.exe)=Pfad_zu_LatexEditor_(LEd.exe)
-Move_external_links_to_'file'_field=Externe_Links_in_das_Feld_'Datei'_verschieben
+Move_external_links_to_'file'_field=Externe_Links_in_das_Feld_'file'_verschieben
 Push_selection_to_Vim=Auswahl_in_Vim_einf\u00fcgen
 Pushed_citations_to_Vim=Literaturangaben_in_Vim_eingef\u00fcgt
 
@@ -1900,7 +1895,7 @@ Reset_file_type_definitons=Definitionen_der_Dateitypen_zur\u00fccksetzen
 Edit_file_type=Dateityp_bearbeiten
 Could_not_run_the_'vim'_program.=Das_Programm_'vim'_konnte_nicht_gestartet_werden.
 
-Show_file_column=Zeige_Datei-Spalte
+Show_file_column=Datei-Spalte_anzeigen
 This_database_was_written_using_an_older_version_of_JabRef.=Diese_Datei_wurde_mit_einer_\u00e4lteren_JabRef-Version_erstellt.
 
 File_'%0'_is_already_open.=Datei_'%0'_ist_bereits_ge\u00f6ffnet.
@@ -1931,7 +1926,7 @@ Finished_autosetting_external_links.=Automatische_Einstellung_externer_Links_abg
 No_files_found.=Keine_Dateien_gefunden.
 
 External_file_links=Links_zu_externen_Dateien
-Main_%0_directory=Hauptverzeichnis_f\u00fcr_%0
+Main_%0_directory=Standard-Ordner_f\u00fcr_Dateien_(%0)
 Synchronize_file_links=Links_zu_Dateien_synchronisieren
 Upgrade_external_PDF/PS_links_to_use_the_'%0'_field.=Externe_PDF/PS-Links_aktualisieren,_um_das_Feld_'%0'_zu_benutzen.
 Broken_link=Ung\u00fcltiger_Link
@@ -1945,3 +1940,37 @@ Autoset_external_links=Externe_Links_werden_automatisch_gesetzt
 Link_local_file=Link_zu_lokaler_Datei
 
 Searching_for_files=Suche_nach_Dateien
+
+Could_not_open_link=Link_konnte_nicht_ge\u00f6ffnet_werden
+The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=Die_Anwendung_'%0',_die_dem_Dateityp_'%1'_zugeordnet_ist,_konnte_nicht_gestartet_werden.
+
+Native_file_dialog=Nativer_Dateidialog
+Beta_version=Beta-Version
+Do_not_write_the_following_fields_to_XMP_Metadata:=Folgende_Felder_nicht_in_die_XMP-Metadaten_schreiben:
+MIS_Quarterly=MIS_Quarterly
+Use_default_viewer=Standard-Anwendung_benutzen
+Select_icon=Icon_ausw\u00e4hlen
+
+Copy_to_clipboard=In_die_Zwischenablage_kopieren
+Paste_from_clipboard=Aus_der_Zwischenablage_einf\u00fcgen
+lower=kleinbuchstaben
+UPPER=GROSSBUCHSTABEN
+Upper_Each_First=Jeden_Ersten_Buchstaben_Gro\u00df
+Upper_first=Ersten_Buchstaben_gro\u00df
+Replace_comma_by_and_where_appropriate=Komma_an_passenden_Stellen_durch_'and'_ersetzen
+
+%0_export_successful=%0-Export_erfolgreich
+
+The_current_version_features_a_new_way_of_handling_links_to_external_files.<br>To_take_advantage_of_this,_your_links_must_be_changed_into_the_new_format,_and<br>JabRef_must_be_configured_to_show_the_new_links.=Die_aktuelle_Version_hat_eine_neue_Methode,_Links_zu_externen_Dateien_zu_behandeln.<br>Um_sie_zu_nutzen,_m\u00fcssen_Ihre_Links_in_das_neue_Format_\u00fcbertragen_werden<br>und_JabRef_muss_konfiguriert_werden,_um_die_neuen_Links_anzuzeigen.
+This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=JabRef_sucht_nach_jeder_%0-Dateiendung_und_\u00fcberpr\u00fcft,_ob_die_Datei_existiert.<br>Falls_nicht,_erhalten_Sie_Optionen,_um_das_Problem_zu_l\u00f6sen.
+You_have_changed_the_look_and_feel_setting._You_must_restart_JabRef_for_this_to_come_into_effect.=Sie_haben_die_Einstellungen_des_Erscheinungsbildes_('look_and_feel')_ge\u00e4ndert._Sie_m\u00fcssen_JabRef_neu_starten,_damit_die_\u00c4nderungen_in_Kraft_treten.
+Warning:_could_not_complete_file_repair;_your_file_may_have_been_corrupted._Error_message:_=Achtung:_Dateiwiederherstellung_konnte_nicht_durchgef\u00fchrt_werden;_die_Datei_k\u00f6nnte_besch\u00e4digt_sein._Fehlermeldung:_
+Could_not_save_file._Character_encoding_'%0'_is_not_supported.=Die_Datei_konnte_nicht_gespeichert_werden._Die_Zeichenkodierung_'%0'_wird_nicht_unterst\u00fctzt.
+Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=\u00d6ffnen_des_Links_nicht_m\u00f6glich._Die_Anwendung_'%0',_die_dem_Dateityp_'%1'_zugeordnet_ist,_konnte_nicht_aufgerufen_werden.
+Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running<BR>with_correct_server_name.=Verbindung_zum_Vim-Server_fehlgeschlagen._Vergewissern_Sie_sich,<br>dass_Vim_mit_korrektem_Servernamen_l\u00e4uft.
+All_entries_of_this_type_will_be_declared_typeless._Continue?=Alle_Eintr\u00e4ge_dieses_Typs_werden_als_'ohne_Typ'_angesehen._Fortfahren?
+Field_names_are_not_allowed_to_contain_white_space_or_the_following_characters=Feldbezeichnungen_d\u00fcrfen_keine_Leerzeichen_enthalten_und_keine_der_folgenden_Zeichen
+%0_entries_found._To_reduce_server_load,_abstracts_will_only_be_downloaded_for_searches_returning_%1_hits_or_less.=%0_Eintr\u00e4ge_gefunden._Um_die_Serverlast_zu_verringern,_werden_abstracts_nur_bei_Suchen_mit_%1_oder_weniger_Treffern_heruntergeladen.
+A_string_with_that_label_already_exists=Ein_String_mit_diesem_Label_ist_bereits_vorhanden
+
+Overwrite=
diff --git a/src/resource/JabRef_du.properties b/src/resource/JabRef_du.properties
index 2307808..1463325 100644
--- a/src/resource/JabRef_du.properties
+++ b/src/resource/JabRef_du.properties
@@ -598,8 +598,6 @@ Existing_file=Bestaande_bestand
 exists._Overwrite_file?=bestaat_reeds._Bestand_overschrijven?
 exists.Overwrite?=bestaat._Overschrijven?
 
-Exit=Afsluiten
-
 Expand_subtree=Subboom_uitklappen
 
 Export=Exporteren
@@ -956,8 +954,6 @@ Loading_session...=Sessie_aan_het_laden...
 Look_and_feel="Look_and_feel"
 Looking_for_pdf...=
 
-Mac_file_dialog=Mac_bestandsdialoog
-
 Main_layout_file=Hoofd_layoutbestand
 
 Main_PDF_directory=Hoofd_PDF-map
@@ -1791,7 +1787,6 @@ Your_new_key_bindings_have_been_stored.=Uw_nieuwe_sneltoetsen_zijn_opgeslagen.
 
 Save_all_open_databases=
 
-Include=
 Automatically_remove_exact_duplicates=
 Enable_word/name_autocompletion=
 Editor_options=
@@ -1943,3 +1938,36 @@ Autoset_external_links=
 Link_local_file=
 
 Searching_for_files=
+
+Could_not_open_link=
+The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=
+
+Native_file_dialog=
+Error:_=
+Beta_version=
+Do_not_write_the_following_fields_to_XMP_Metadata:=
+MIS_Quarterly=MIS_Quarterly
+Use_default_viewer=
+Select_icon=
+
+Copy_to_clipboard=
+Paste_from_clipboard=
+lower=
+UPPER=
+Upper_Each_First=
+Upper_first=
+Replace_comma_by_and_where_appropriate=
+%0_export_successful=
+
+The_current_version_features_a_new_way_of_handling_links_to_external_files.<br>To_take_advantage_of_this,_your_links_must_be_changed_into_the_new_format,_and<br>JabRef_must_be_configured_to_show_the_new_links.=
+This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=
+You_have_changed_the_look_and_feel_setting._You_must_restart_JabRef_for_this_to_come_into_effect.=
+Warning:_could_not_complete_file_repair;_your_file_may_have_been_corrupted._Error_message:_=
+Could_not_save_file._Character_encoding_'%0'_is_not_supported.=
+Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=
+Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running<BR>with_correct_server_name.=
+All_entries_of_this_type_will_be_declared_typeless._Continue?=
+Field_names_are_not_allowed_to_contain_white_space_or_the_following_characters=
+%0_entries_found._To_reduce_server_load,_abstracts_will_only_be_downloaded_for_searches_returning_%1_hits_or_less.=
+A_string_with_that_label_already_exists=
+Overwrite=
diff --git a/src/resource/JabRef_en.properties b/src/resource/JabRef_en.properties
index e81aec3..a80df60 100644
--- a/src/resource/JabRef_en.properties
+++ b/src/resource/JabRef_en.properties
@@ -588,8 +588,6 @@ Existing_file=Existing_file
 exists._Overwrite_file?=exists._Overwrite_file?
 exists.Overwrite?=exists._Overwrite?
 
-Exit=Exit
-
 Expand_subtree=Expand_subtree
 
 #previousentrynottranslated.Toviewit,openGroupinterfaceandclickonthe"newgroup"button
@@ -942,8 +940,6 @@ Loading_session...=Loading_session...
 Look_and_feel=Look_and_feel
 Looking_for_pdf...=Looking_for_pdf...
 
-Mac_file_dialog=Mac_file_dialog
-
 Main_layout_file=Main_layout_file
 
 Main_PDF_directory=Main_PDF_directory
@@ -1771,7 +1767,6 @@ Your_new_key_bindings_have_been_stored.=Your_new_key_bindings_have_been_stored.
 
 Save_all_open_databases=Save_all_open_databases
 
-Include=Include
 Automatically_remove_exact_duplicates=Automatically_remove_exact_duplicates
 Enable_word/name_autocompletion=Enable_word/name_autocompletion
 Editor_options=Editor_options
@@ -1923,3 +1918,39 @@ Autoset_external_links=Autoset_external_links
 Link_local_file=Link_local_file
 
 Searching_for_files=Searching_for_files
+Could_not_open_link=Could_not_open_link
+The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.
+
+Native_file_dialog=Native_file_dialog
+Error:_=Error:_
+Beta_version=Beta_version
+Do_not_write_the_following_fields_to_XMP_Metadata:=Do_not_write_the_following_fields_to_XMP_Metadata:
+MIS_Quarterly=MIS_Quarterly
+Use_default_viewer=Use_default_viewer
+Select_icon=Select_icon
+
+Copy_to_clipboard=Copy_to_clipboard
+Paste_from_clipboard=Paste_from_clipboard
+lower=lower
+UPPER=UPPER
+Upper_Each_First=Upper_Each_First
+Upper_first=Upper_first
+Replace_comma_by_and_where_appropriate=Replace_comma_by_and_where_appropriate
+
+%0_export_successful=%0_export_successful
+
+
+The_current_version_features_a_new_way_of_handling_links_to_external_files.<br>To_take_advantage_of_this,_your_links_must_be_changed_into_the_new_format,_and<br>JabRef_must_be_configured_to_show_the_new_links.=The_current_version_features_a_new_way_of_handling_links_to_external_files.<br>To_take_advantage_of_this,_your_links_must_be_changed_into_the_new_format,_and<br>JabRef_must_be_configured_to_show_the_new_links.
+This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.
+You_have_changed_the_look_and_feel_setting._You_must_restart_JabRef_for_this_to_come_into_effect.=You_have_changed_the_look_and_feel_setting._You_must_restart_JabRef_for_this_to_come_into_effect.
+Warning:_could_not_complete_file_repair;_your_file_may_have_been_corrupted._Error_message:_=Warning:_could_not_complete_file_repair;_your_file_may_have_been_corrupted._Error_message:_
+Could_not_save_file._Character_encoding_'%0'_is_not_supported.=Could_not_save_file._Character_encoding_'%0'_is_not_supported.
+Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.
+Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running<BR>with_correct_server_name.=Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running<BR>with_correct_server_name.
+All_entries_of_this_type_will_be_declared_typeless._Continue?=All_entries_of_this_type_will_be_declared_typeless._Continue?
+Field_names_are_not_allowed_to_contain_white_space_or_the_following_characters=Field_names_are_not_allowed_to_contain_white_space_or_the_following_characters
+%0_entries_found._To_reduce_server_load,_abstracts_will_only_be_downloaded_for_searches_returning_%1_hits_or_less.=%0_entries_found._To_reduce_server_load,_abstracts_will_only_be_downloaded_for_searches_returning_%1_hits_or_less.
+A_string_with_that_label_already_exists=A_string_with_that_label_already_exists
+
+
+Overwrite=Overwrite
diff --git a/src/resource/JabRef_fr.properties b/src/resource/JabRef_fr.properties
index cbd1618..43ec956 100644
--- a/src/resource/JabRef_fr.properties
+++ b/src/resource/JabRef_fr.properties
@@ -42,7 +42,7 @@ Add_to_group=Ajouter_au_groupe
 Added_group_"%0".=Groupe_"%0"_ajout\u00e9.
 Added_new=Nouvel_ajout
 Added_string=Cha\u00EEne_ajout\u00E9e
-Additionally,_entries_whose_<b>%0</b>_field_does_not_contain_<b>%1</b>_can_be_assigned_manually_to_this_group_by_selecting_them_then_using_either_drag_and_drop_or_the_context_menu._This_process_adds_the_term_<b>%1</b>_to_each_entry's_<b>%0</b>_field._Entries_can_be_removed_manually_from_this_group_by_selecting_them_then_using_the_context_menu._This_process_removes_the_term_<b>%1</b>_from_each_entry's_<b>%0</b>_field.=De_plus,_des_entr\u00e9es_dont_le_champ_<b>%0</b>_ne_contient_pas_<b>%1 [...]
+Additionally,_entries_whose_<b>%0</b>_field_does_not_contain_<b>%1</b>_can_be_assigned_manually_to_this_group_by_selecting_them_then_using_either_drag_and_drop_or_the_context_menu._This_process_adds_the_term_<b>%1</b>_to_each_entry's_<b>%0</b>_field._Entries_can_be_removed_manually_from_this_group_by_selecting_them_then_using_the_context_menu._This_process_removes_the_term_<b>%1</b>_from_each_entry's_<b>%0</b>_field.=De_plus,_des_entr\u00e9es_dont_le_champ_<b>%0</b>_ne_contient_pas_<b>%1 [...]
 Advanced=Avanc\u00E9
 All_Entries=Toutes_les_entr\u00e9es
 All_entries=Toutes_les_entr\u00E9es
@@ -65,7 +65,7 @@ Assigned_%0_entries_to_group_"%1".=%0_entr\u00e9es_ajout\u00e9es_au_groupe_"%1".
 Assigned_1_entry_to_group_"%0".=Une_entr\u00e9e_ajout\u00e9e_au_groupe_"%0".
 Attach_%0_file=Attacher_le_fichier_%0
 Attach_URL=Attacher_l'URL
-Attempt_to_autoset_%0_links_for_your_entries._Autoset_works_if_a_%0_file_in_your_%0_directory_or_a_subdirectory<BR>is_named_identically_to_an_entry's_BibTeX_key,_plus_extension.=Cela_tente_de_d\u00e9finir_automatiquement_les_liens_%0_de_vos_entr\u00e9es._La_d\u00e9finition_automatique_fonctionne_si_un_fichier_%0_dans_votre_r\u00e9pertoire_%0_ou_dans_un_sous-r\u00e9pertoire<BR>porte_le_m\u00EAme_nom_que_la_clef_d'une_entr\u00e9e_BibTeX,_l'extension_en_plus.
+Attempt_to_autoset_%0_links_for_your_entries._Autoset_works_if_a_%0_file_in_your_%0_directory_or_a_subdirectory<BR>is_named_identically_to_an_entry's_BibTeX_key,_plus_extension.=Cela_tente_de_d\u00e9finir_automatiquement_les_liens_%0_de_vos_entr\u00e9es.<BR>La_d\u00e9finition_automatique_fonctionne_si_un_fichier_%0_dans_votre_r\u00e9pertoire_%0<BR>ou_dans_un_sous-r\u00e9pertoire_porte_le_m\u00EAme_nom_que_la_clef_d'une_entr\u00e9e_BibTeX,<BR>_l'extension_en_plus.
 Auto=Auto
 Autodetect_format=D\u00E9tection_automatique_du_format
 Autogenerate_BibTeX_key=Cr\u00E9ation_automatique_des_clefs_BibTeX
@@ -244,7 +244,7 @@ Do_not_wrap_the_following_fields_when_saving=Ne_pas_renvoyer_\u00e0_la_ligne_les
 Docbook=Docbook
 Done=Termin\u00E9
 Down=Bas
-Download=T\u00E9l\u00E9chargement
+Download=T\u00E9l\u00E9charger
 Download_completed=T\u00E9l\u00E9chargement_termin\u00E9
 Download_file=T\u00E9l\u00E9charger_le_fichier
 Downloading...=T\u00E9l\u00E9chargement...
@@ -277,7 +277,7 @@ Enter_URL_to_download=Entrer_l'URL_de_t\u00E9l\u00E9chargement
 entries=entr\u00E9es
 Entries_cannot_be_manually_assigned_to_or_removed_from_this_group.=Des_entr\u00e9es_ne_peuvent_pas_ajout\u00e9es_ou_supprim\u00e9es_manuellement_de_ce_groupe.
 Entries_exported_to_clipboard=Entr\u00E9es_export\u00E9es_vers_le_presse-papiers
-entries_have_undefined_BibTeX_key=Des_entr\u00e9es_ont_des_clef_BibTeX_non_d\u00e9finies
+entries_have_undefined_BibTeX_key=Des_entr\u00e9es_ont_des_clefs_BibTeX_non_d\u00e9finies
 entries_into_new_database=entr\u00E9es_dans_la_nouvelle_base
 entry=entr\u00E9e
 Entry_editor=Editeur_d'entr\u00E9e
@@ -300,7 +300,6 @@ Exceptions=Exceptions
 Existing_file=Fichier_existant
 exists._Overwrite_file?=existe._Ecraser_le_fichier_?
 exists.Overwrite?=existe._Ecraser_?
-Exit=Quitter
 Expand_subtree=D\u00e9velopper_le_sous-arbre
 Export=Exporter
 Export_entry_types=Exporter_les_types_d'entr\u00e9es
@@ -482,7 +481,6 @@ Load_session=Charger_la_session
 Loading_session...=Chargement_de_la_session...
 Look_and_feel=Apparence
 Looking_for_pdf...=Recherche_de_pdf...
-Mac_file_dialog=S\u00e9lectionneur_de_fichiers_Mac
 Main_layout_file=Principal_fichier_de_mise_en_page
 Main_PDF_directory=R\u00E9pertoire_PDF_principal_
 Main_PS_directory=R\u00e9pertoire_PS_principal_
@@ -847,7 +845,7 @@ unable_to_access_LyX-pipe=Incapable_d'acc\u00E9der_au_canal_de_transmission_LyX
 Unable_to_create_graphical_interface=Incapable_de_cr\u00e9er_l'interface_graphique
 Unable_to_parse_clipboard_text_as_Bibtex_entries.=Incapable_de_traiter_le_texte_du_presse-papiers_comme_des_entr\u00e9es_BibTeX.
 Unable_to_parse_the_following_URL=Incapable_de_traiter_l'ULR_suivante
-Unable_to_read_default_icon_theme.=Impossilbe_de_lire_le_th\u00e8me_d'ic\u00f4nes_par_d\u00e9faut
+Unable_to_read_default_icon_theme.=Impossible_de_lire_le_th\u00e8me_d'ic\u00f4nes_par_d\u00e9faut
 Unable_to_read_icon_theme_file=Impossible_de_lire_le_fichier_de_th\u00e8me_d'ic\u00f4nes
 unable_to_write_to=Incapable_d'\u00e9crire_sur
 Undo=Annuler
@@ -874,7 +872,7 @@ Use_custom_icon_theme=Utiliser_un_th\u00e8me_d'ic\u00f4nes_personnalis\u00e9
 Use_inspection_window_also_when_a_single_entry_is_imported.=Utiliser_la_fen\u00EAtre_d'inspection_m\u00EAme_quand_une_seule_entr\u00e9e_est_import\u00e9e.
 Use_native_file_dialog=Utiliser_le_s\u00e9lectionneur_de_fichiers_natif
 Use_other_look_and_feel=Utiliser_une_autre_apparence
-Use_Regular_Expression_Search=Rechercher_l'expression_r\u00e9guli\u00e8re
+Use_Regular_Expression_Search=Utiliser_l'expression_r\u00e9guli\u00e8re_pour_la_recherche
 Use_regular_expressions=Utiliser_les_expressions_r\u00E9guli\u00E8res
 Use_the_following_delimiter_character(s)=Utiliser_le(s)_caract\u00e8re(s)_de_s\u00E9paration_suivant(s)
 Uses_default_application=Utilise_l'application_par_d\u00e9faut
@@ -911,20 +909,19 @@ You_must_select_at_least_one_row_to_perform_this_operation.=Vous_devez_s\u00E9le
 You_must_set_both_BibTeX_key_and_%0_directory=Vous_devez_d\u00E9finir_\u00E0_la_fois_la_clef_BibTeX_et_le_r\u00E9pertoire_%0
 Your_new_key_bindings_have_been_stored.=Votre_nouvelle_affectation_de_touche_a_\u00E9t\u00E9_sauvegard\u00E9e
 Save_all_open_databases=Sauvegarder_toutes_les_bases_ouvertes
-Include=Inclure
 Automatically_remove_exact_duplicates=Supprimer_automatiquement_les_doublons_identiques
 Enable_word/name_autocompletion=Autoriser_l'auto-g\u00e9n\u00e9ration_des_mots/noms
 Editor_options=Options_d'\u00e9diteur
 Use_autocompletion_for_the_following_fields=Utiliser_l'auto-g\u00e9n\u00e9ration_pour_les_champs_suivants
-Saving_all_databases...=Sauvergarde_de_toutes_les_bases...
+Saving_all_databases...=Sauvegarde_de_toutes_les_bases...
 Save_all_finished.=Sauvegarde_de_tout_termin\u00e9e.
 Saved_%0_databases.=%0_bases_sauv\u00e9es.
 No_databases_saved.=Aucune_base_sauv\u00e9e.
-Connection_to_IEEEXplore_failed=Echec_de_la_connection_\u00e0_IEEEXplore
+Connection_to_IEEEXplore_failed=Echec_de_la_connexion_\u00e0_IEEEXplore
 Link=Lien
 File_type=Type_de_fichier
 Edit_file_link=Editer_le_lien_de_fichier
-Path_to_LatexEditor_(LEd.exe)=Chemin_vers_LatexEditor_(LEd.exe)
+Path_to_LatexEditor_(LEd.exe)=Chemin_vers_LatexEditor_(LEd.exe)_
 Move_external_links_to_'file'_field=D\u00E9placer_les_liens_externes_vers_le_champ_'fichier'
 Push_selection_to_Vim=Envoyer_la_s\u00E9lection_dans_Vim
 Pushed_citations_to_Vim=Envoyer_les_citations_dans_Vim
@@ -938,18 +935,18 @@ No_entries_found_for_the_search_string_'%0'=Pas_d'entr\u00E9e_pour_la_cha\u00EEn
 
 
 
-The_chosen_encoding_'%0'_could_not_encode_the_following_characters:_=L'encodage_'%0'_choisi_ne_peut_pas_encoder_les_caract\u00e8res_suivant_:_
+The_chosen_encoding_'%0'_could_not_encode_the_following_characters:_=L'encodage_'%0'_choisi_ne_peut_pas_encoder_les_caract\u00e8res_suivants_:_
 Operation_not_supported=Op\u00e9ration_non_support\u00e9e
 Drag_and_Drop_Error=Erreur_de_Glisser-D\u00e9poser
 File_download=T\u00e9l\u00e9chargement_de_fichier
 Error_while_downloading_file:=Erreur_lors_du_t\u00e9l\u00e9chargement_du_fichier_:
 Only_one_item_is_supported=Un_seul_objet_est_support\u00e9
-Do_not_write_the_following_fields_to_XMP_Metadata\:=Ne_pas_\u00e9crire_les_champs_suivants_dans_les_m\u00e9ta-donn\u00e9es_XMP_:
+Do_not_write_the_following_fields_to_XMP_Metadata\:=Ne_pas_\u00e9crire_les_champs_suivants_dans_les_m\u00e9tadonn\u00e9es_XMP_:
 <HTML>Could_not_find_file_'%0'<BR>linked_from_entry_'%1'</HTML>=<HTML>Le_fichier_'%0'_n'a_pas_pu_\u00EAtre_trouv\u00e9_<BR>\u00e0_partir_du_lien_de_l'entr\u00e9e_'%1'</HTML>
 Drop_%0=D\u00e9poser_%0
 Link_to_file_%0=Lien_vers_le_fichier_%0
 The_PDF_contains_one_or_several_bibtex-records.\nDo_you_want_to_import_these_as_new_entries_into_the_current_database?=Le_PDF_contient_un_ou_plusieurs_enregistrements_BibTeX.\nVoulez-vous_les_importer_comme_de_nouvelles_entr\u00e9es_dans_la_base_de_donn\u00e9es_actuelle_?
-XMP_metadata_found_in_PDF:_%0=M\u00e9ta-donn\u00e9es_XMP_trouv\u00e9es_dans_le_PDF:_%0
+XMP_metadata_found_in_PDF:_%0=M\u00e9tadonn\u00e9es_XMP_trouv\u00e9es_dans_le_PDF:_%0
 Link_to_PDF_%0=Lien_vers_PDF_%0
 %0_directory_is_not_set_or_does_not_exist!=Le_r\u00e9pertoire_%0_n'est_pas_param\u00e9tr\u00e9_ou_n'existe_pas_!
 %0_directory_is_'%1':=Le_r\u00e9pertoire_%0_est_'%1'_:
@@ -958,15 +955,15 @@ Wrote_XMP_to_'%0'.=XMP_\u00e9crites_dans_'%0'.
 Error_writing_XMP_to_file:_%0=Erreur_lors_de_l'\u00e9criture_des_XMP_dans_le_fichier_%0
 Error_while_writing_XMP_%0=Erreur_lors_de_l'\u00e9criture_des_XMP_%0
 Error_writing_XMP_to_'%0'...=Erreur_lors_de_l'\u00e9criture_des_XMP_dans_'%0'...
-Error_converting_Bibtex_to_XMP:_%0=Erreur_lors_de_la_conversion_de_BibTeX_en_XMP:_%0
+Error_converting_Bibtex_to_XMP:_%0=Erreur_lors_de_la_conversion_de_BibTeX_en_XMP_:_%0
 Error_while_converting_BibtexEntry_to_XMP_%0=Erreur_lors_de_la_conversion_de_l'entr\u00e9e_BibTeX_en_XMP_%0
 Error_converting_XMP_to_'%0'...=Erreur_lors_de_la_conversion_d'XMP_en_'%0'
 Could_not_find_directory_for_%0-files:_%1=Le_r\u00e9pertoire_n'a_pas_pu_\u00EAtre_trouv\u00e9_pour_les_fichiers_%0_:_%1
 Invalid_URL:_=URL_invalide_:_
 This_operation_requires_at_least_one_entry.=Cette_op\u00e9ration_n\u00e9cessite_au_moins_une_entr\u00e9e.
-Write_XMP-metadata=Ecrire_les_m\u00e9ta-donn\u00e9es_XMP
-Write_XMP-metadata_for_all_PDFs_in_current_database?=Ecrire_les_m\u00e9ta-donn\u00e9es_XMP_pour_tous_les_PDFs_dans_la_base_courante_?
-No_XMP_metadata_found_in_=Pas_de_m\u00e9ta-donn\u00e9es_XMP_trouv\u00e9es_dans_
+Write_XMP-metadata=Ecrire_les_m\u00e9tadonn\u00e9es_XMP
+Write_XMP-metadata_for_all_PDFs_in_current_database?=Ecrire_les_m\u00e9tadonn\u00e9es_XMP_pour_tous_les_PDFs_dans_la_base_courante_?
+No_XMP_metadata_found_in_=Pas_de_m\u00e9tadonn\u00e9es_XMP_trouv\u00e9es_dans_
 Drog_PDF=xxx
 Please_refer_to_the_JabRef_help_manual_on_using_the_CiteSeer_tools=S'il_vous_pla\u00eet,_consultez_le_manuel_d'aide_de_JabRef_sur_l'utilisation_des_outils_CiteSeer
 Search_IEEExplore=Recherche_IEEExplore
@@ -978,8 +975,8 @@ Unabbreviated_%0_journal_names.=%0_noms_de_journaux_d\u00e9velopp\u00e9s.
 
 Help_contents=Contenu_de_l'aide
 Edit_entry=Editer_l'entr\u00E9e
-Save_database_as_...=Sauvegarder_la_base_sous_...
-Save_selected_as_...=Sauvegarder_la_s\u00E9lection_sous_...
+Save_database_as_...=Sauvegarder_la_base_sous...
+Save_selected_as_...=Sauvegarder_la_s\u00E9lection_sous...
 Toggle_search_panel=Afficher/Masquer_la_fen\u00EAtre_de_recherche
 Append_contents_from_a_BibTeX_database_into_the_currently_viewed_database=Ajouter_le_contenu_d'une_base_BibTeX_\u00E0_la_base_actuelle
 Edit_strings=Editer_les_cha\u00EEnes
@@ -1009,8 +1006,8 @@ Icon=Ic\u00f4ne
 Path_to_%0_not_defined=Chemin_vers_%0_non_d\u00E9fini
 
 Error\:_=Erreur_:_
-Path_to_Vim=Chemin_de_Vim
-Vim_Server_Name=Nom_du_serveur_Vim
+Path_to_Vim=Chemin_de_Vim_
+Vim_Server_Name=Nom_du_serveur_Vim_
 MS_Office_2007=MS_Office_2007
 Manage_external_file_types=G\u00E9rer_les_types_de_fichiers_externes
 All_custom_file_types_will_be_lost._Proceed?=Tous_les_types_de_fichiers_personnalis\u00E9s_seront_perdus._Continuer_?
@@ -1021,7 +1018,7 @@ Could_not_run_the_'vim'_program.=Le_programme_'vim'_n'a_pas_pu_\u00EAtre_lanc\u0
 Show_file_column=Afficher_la_colonne_Fichier
 This_database_was_written_using_an_older_version_of_JabRef.=Cette_base_a_\u00E9t\u00E9_\u00E9crite_par_une_version_ant\u00E9rieure_de_JabRef.
 
-File_'%0'_is_already_open.=Le fichier_'%0'_est_d\u00E9j\u00E0_ouvert.
+File_'%0'_is_already_open.=Le_fichier_'%0'_est_d\u00E9j\u00E0_ouvert.
 
 File_has_been_updated_externally._What_do_you_want_to_do?=Le_fichier_a_\u00E9t\u00E9_mis_\u00E0_jour_externalement._Que_voulez-vous_faire_?
 
@@ -1029,14 +1026,14 @@ Entry_has_no_citekey=L'entr\u00E9e_n'a_pas_de_clef_BibTeX
 Cannot_rename_for_several_entries.=Renommage_impossible_pour_plusieurs_entr\u00E9es
 Rename_to_match_citekey=Renommer_pour_correspondre_\u00E0_la_clef_BibTeX
 
-This_will_move_all_external_links_from_the_'pdf'_and_'ps'_fields_into_the_'%0'_field._Proceed?=Ceci_d\u00E09placera_tous_les_liens_externes_des champs_'pdf'_et_'ps'_dans_le_champ_'%0'._Continuer_?
+This_will_move_all_external_links_from_the_'pdf'_and_'ps'_fields_into_the_'%0'_field._Proceed?=Ceci_d\u00E09placera_tous_les_liens_externes_des_champs_'pdf'_et_'ps'_dans_le_champ_'%0'._Continuer_?
 
 Upgrade_external_links=Mettre_\u00E0_jour_les_liens_externes
 Upgraded_links.=Liens_mis_\u00E0_jour.
 
 Change_file_type=Changer_le_type_de_fichier
-Define_'%0'=Definir_'%0'
-This_external_link_is_of_the_type_'%0',_which_is_undefined._What_do_you_want_to_do?=Ce lien externe est du type_'%0',_qui_est_ind\u00E9fini._ Que_voulez-vous_faire_?
+Define_'%0'=D\u00E9finir_'%0'
+This_external_link_is_of_the_type_'%0',_which_is_undefined._What_do_you_want_to_do?=Ce_lien_externe_est_du_type_'%0',_qui_est_ind\u00E9fini._Que_voulez-vous_faire_?
 Unable_to_open_file.=Impossible_d'ouvrir_le_fichier
 Undefined_file_type=Type_de_fichier_ind\u00E9fini
 
@@ -1049,18 +1046,53 @@ No_files_found.=Fichiers_non_trouv\u00E9s.
 Target_file_cannot_be_a_directory.=Le_fichier_cible_ne_peut_pas_\u00EAtre_un_r\u00E9pertoire.
 This_entry_has_no_BibTeX_key._Generate_key_now?=Cette_entr\u00E9e_n'a_pas_de_clef_BibTeX._En_g\u00E9n\u00E9rer_une_maintenant_?
 
-External_file_links=liens_vers_les_fichiers_externes 
+External_file_links=Liens_vers_les_fichiers_externes
 Main_%0_directory=R\u00E9pertoire_principal_%0
 Synchronize_file_links=Synchroniser_les_liens_vers_les_fichiers
-Upgrade_external_PDF/PS_links_to_use_the_'%0'_field.=Mettre_\u00E0_jour_les liens_externes_PDF/PS_pour_utiliser_le_champ_'%0'.
+Upgrade_external_PDF/PS_links_to_use_the_'%0'_field.=Mettre_\u00E0_jour_les_liens_externes_PDF/PS_pour_utiliser_le_champ_'%0'.
 Broken_link=Lien_invalide
-Change_table_column_and_General_fields_settings_to_use_the_new_feature=Modifier_les colonnes_de_la_table_et_les_param\u00e8tres_des_champs_g\u00e9n\u00e9raux_pour_utiliser_cette_nouvelle_fonction
+Change_table_column_and_General_fields_settings_to_use_the_new_feature=Modifier_les_colonnes_de_la_table_et_les_param\u00e8tres_des_champs_g\u00e9n\u00e9raux_pour_utiliser_cette_nouvelle_fonction
 Upgrade_old_external_file_links_to_use_the_new_feature=Mettre_\u00E0_jour_les_anciens_liens_vers_les_fichiers_externes_pour_utiliser_cette_nouvelle_fonction
 Set_main_external_file_directory=D\u00E9finir_le_r\u00E9pertoire_principal_des_fichiers_externes
 Do_not_show_these_options_in_the_future=Ne_pas_afficher_ces_options_\u00E0_l'avenir
-File_directory=
+File_directory=R\u00E9pertoire_de_fichiers
 Autosetting_links=D\u00E9finition_automatique_des_liens
 Autoset_external_links=D\u00E9finir_automatiquement_les_liens_externes
 Link_local_file=Lier_le_fichier_local
 
 Searching_for_files=Recherche_de_fichiers...
+
+Could_not_open_link=Le_lien_n'a_pas_pu_\u00EAtre_ouvert
+The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=L'application_'%0'_associ\u00E9e_avec_le_type_de_fichier_'%1'_n'a_pas_pu_\u00EAtre_lanc\u00E9e.
+
+Native_file_dialog=Dialogue_de_fichier_natif
+Error:_=Erreur_:_
+Beta_version=Version_Beta
+Do_not_write_the_following_fields_to_XMP_Metadata:=Ne_pas_\u00E9crire_les_champs_suivants_dans_les_m\u00E9tadonn\u00E9es_XMP_:
+MIS_Quarterly=MIS_Quarterly
+Use_default_viewer=Utiliser_l'afficheur_par_d\u00E9faut
+Select_icon=S\u00E9lectionner_un_ic\u00f4ne
+
+Copy_to_clipboard=Copier_dans_le_presse-papier
+Paste_from_clipboard=Coller_depuis_le_presse-papier
+lower=minuscule
+UPPER=MAJUSCULE
+Upper_Each_First=Majuscule_Chaque_Premi\u00E8re
+Upper_first=Majuscule_premi\u00E8re
+Replace_comma_by_and_where_appropriate=Remplacer_les_virgules_quand_appropri\u00E9
+
+%0_export_successful=%0_:_Exportation_r\u00E9ussie
+
+The_current_version_features_a_new_way_of_handling_links_to_external_files.<br>To_take_advantage_of_this,_your_links_must_be_changed_into_the_new_format,_and<br>JabRef_must_be_configured_to_show_the_new_links.=La_version_actuelle_a_une_nouvelle_fa\u00E7on_de_g\u00E9rer_les_liens_vers_des_fichiers_externes.<br>Pour_en_profiter,_vos_liens_doivent_\u00EAtre_convertis_en_un_autre_format<br>et_JabRef_doit_\u00EAtre_configur\u00E9_pour_afficher_les_nouveaux_liens.
+This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=JabRef_va_consid\u00E9rer_chaque_extension_de_%0_et_v\u00E9rifier_si_le_fichier_existe.<BR>Dans_la_n\u00E9gative,_un_choix_d'options_vous_sera_propos\u00E9_pour_r\u00E9soudre_le_probl\u00E8me.
+You_have_changed_the_look_and_feel_setting._You_must_restart_JabRef_for_this_to_come_into_effect.=Vous_avez_chang\u00E9_les_param\u00e8tres_d'apparence._Vous_devez_red\u00E9marrer_JabRef_pour_que_ce_changement_prenne_effet.
+Warning:_could_not_complete_file_repair;_your_file_may_have_been_corrupted._Error_message:_=Avertissement_:_La_r\u00E9paration_du_fichier_n'a_pas_pu_\u00EAtre_termin\u00E9e_;_votre_fichier_peut_avoir_\u00E9t\u00E9_corrompu._Message_d'erreur_:_
+Could_not_save_file._Character_encoding_'%0'_is_not_supported.=Le_fichier_n'a_pas_pu_\u00EAtre_sauvegard\u00E9._L'encodage_de_caract\u00E8res_'%0'_n'est_pas_support\u00E9.
+Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=Impossible_d'ouvrir_un_lien._L'application_'%0'_associ\u00E9e_avec_le_type_de_fichier_'%1'_n'a_pu_\u00EAtre_appel\u00E9e.
+Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running<BR>with_correct_server_name.=La_connexion_au_serveur_Vim_a_\u00e9chou\u00e9._Assurez-vous_que_Vim_tourne<BR>avec_le_bon_nom_de_serveur.
+All_entries_of_this_type_will_be_declared_typeless._Continue?=Toutes_les_entr\u00E9es_de_ce_type_seront_d\u00E9clar\u00E9es_'sans_type'._Continuer_?
+Field_names_are_not_allowed_to_contain_white_space_or_the_following_characters=Les_noms_de_champs_ne_peuvent_pas_contenir_d'espace_ou_l'un_des_caract\u00E8res_suivants
+%0_entries_found._To_reduce_server_load,_abstracts_will_only_be_downloaded_for_searches_returning_%1_hits_or_less.=%0_entr\u00E9es_trouv\u00E9es._Pour_r\u00E9duire_la_charge_du_serveur,_les_r\u00E9sum\u00E9_ne_seront_t\u00E9l\u00E9charg\u00E9s_que_pour_les_requ\u00EAtes_renvoyant_%1_r\u00E9sultats_ou_moins.
+A_string_with_that_label_already_exists=Une_cha\u00EEne_avec_ce_nom_existe_d\u00E9j\u00e0
+
+Overwrite=Ecraser
diff --git a/src/resource/JabRef_it.properties b/src/resource/JabRef_it.properties
index f0daf49..6ab89a4 100644
--- a/src/resource/JabRef_it.properties
+++ b/src/resource/JabRef_it.properties
@@ -110,7 +110,7 @@ case_insensitive=non_distingue__maiuscole_e_minuscole
 case_sensitive=distingue__maiuscole_e_minuscole
 Case_sensitive=Distingue__maiuscole_e_minuscole
 change_assignment_of_entries=modifica_l'assegnazione_delle_voci
-Change_case=Inverti_maiuscola/minuscola
+Change_case=Inverti_maiuscolo/minuscolo
 Change_entry_type=Cambia_tipo_di_voce
 change_key=modifica_la_chiave_BibTeX
 Change_of_Grouping_Method=Cambia_Metodo_di_Raggruppamento
@@ -166,6 +166,7 @@ Copied_cell_contents=Contenuto_delle_celle_copiato
 Copied_key=Chiave_BibTeX_copiata
 Copied_keys=Chiavi_BibTeX_copiate
 Copy=Copia
+Copy_to_clipboard=Copia_negli_appunti
 Copy_BibTeX_key=Copia_chiave_BibTeX
 Could_not_call_executable=Non_\u00e8_possibile_effetuare_la_chiamata_dell'eseguibile
 Could_not_connect_to_a_running_gnuserv_process._Make_sure_that_Emacs_or_XEmacs_is_running,<BR>and_that_the_server_has_been_started_(by_running_the_command_'gnuserv-start').=Impossibile_la_connessione_a_un_processo_gnuserv_in_esecuzione._Accertarsi_che_Emacs_o_XEmacs_siano_in_esecuzione,<BR>e_che_il_server_sia_stato_avviato_(con_il_comando_'gnuserv-start').
@@ -308,7 +309,6 @@ Exceptions=Eccezioni
 Existing_file=File_esistente
 exists._Overwrite_file?=esiste._Sovrascrivere_il_file?
 exists.Overwrite?=esiste._Sovrascrivere?
-Exit=Uscita
 Expand_subtree=Espandere_il_sotto-albero
 Export=Esporta
 Export_entry_types=Esporta_tipo_di_voce
@@ -503,7 +503,6 @@ Loading_session...=Caricamento_sessione...
 Look_and_feel=Aspetto
 Looking_for_pdf...=Ricerca_del_file_pdf...
 
-Mac_file_dialog=Finestra_di_dialogo_file_Mac
 Main_layout_file=File_di_layout_principale
 Main_PDF_directory=Cartella_file_PDF_principale
 Main_PS_directory=Cartella_file_PS_principale
@@ -955,7 +954,6 @@ Your_new_key_bindings_have_been_stored.=La_nuova_assegnazione_di_tasti_\u00e8_st
 
 Save_all_open_databases=Salva_tutti_i_database_aperti
 
-Include=Includi
 Automatically_remove_exact_duplicates=Rimuovi_automaticamente_i_duplicati_esatti
 Enable_word/name_autocompletion=Abilita_autocompletamento_di_parole/nomi
 Editor_options=Opzioni_dell'editor
@@ -1112,3 +1110,38 @@ Link_local_file=Collegamento_al_file_locale
 
 Searching_for_files=Ricerca_dei_file
 
+
+Could_not_open_link=Impossibile_aprire_il_collegamento
+The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=Impossibile_avviare_l'applicazione_'%0'_associata_con_il_tipo_di_file'%1'.
+
+Native_file_dialog=Dialogo_File_nativo
+# key below duplicate, also with colon "escaped" by a backslash 
+Error:_=
+Beta_version=Versione_Beta
+# key below already already present with colon "escaped" by a backslash
+Do_not_write_the_following_fields_to_XMP_Metadata:=Non_scrivere_i_dati_dei_campi_seguenti_nei_metadati_XMP:
+MIS_Quarterly=MIS_Quarterly
+Use_default_viewer=Usa_il_visualizzatore_predefinito
+Select_icon=Seleziona_l'icona
+
+Paste_from_clipboard=Incolla_dagli_appunti
+lower=minuscolo
+UPPER=MAIUSCOLO
+Upper_Each_First=Prime_Lettere_In_Maiuscolo
+Upper_first=Prima_lettera_in_maiuscolo
+Replace_comma_by_and_where_appropriate=Sostituisci_le_virgole_con_'and'_dove_appropriato
+
+%0_export_successful=
+
+The_current_version_features_a_new_way_of_handling_links_to_external_files.<br>To_take_advantage_of_this,_your_links_must_be_changed_into_the_new_format,_and<br>JabRef_must_be_configured_to_show_the_new_links.=
+This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=
+You_have_changed_the_look_and_feel_setting._You_must_restart_JabRef_for_this_to_come_into_effect.=
+Warning:_could_not_complete_file_repair;_your_file_may_have_been_corrupted._Error_message:_=
+Could_not_save_file._Character_encoding_'%0'_is_not_supported.=
+Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=
+Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running<BR>with_correct_server_name.=
+All_entries_of_this_type_will_be_declared_typeless._Continue?=
+Field_names_are_not_allowed_to_contain_white_space_or_the_following_characters=
+%0_entries_found._To_reduce_server_load,_abstracts_will_only_be_downloaded_for_searches_returning_%1_hits_or_less.=
+A_string_with_that_label_already_exists=
+Overwrite=
diff --git a/src/resource/JabRef_no.properties b/src/resource/JabRef_no.properties
index 24a4ad6..0669853 100644
--- a/src/resource/JabRef_no.properties
+++ b/src/resource/JabRef_no.properties
@@ -307,7 +307,6 @@ Exceptions=Feilinformasjon
 Existing_file=Eksisterende_fil
 exists._Overwrite_file?=eksisterer._Erstatt_filen?
 exists.Overwrite?=eksisterer._Skriv_over?
-Exit=Avslutt
 Expand_subtree=\u00c5pne_forgrening
 Export=Eksporter
 Export_entry_types=Eksporter_enhetstyper
@@ -498,7 +497,6 @@ Loading_session...=Gjenoppretter_tilstand...
 Look_and_feel=Utseende
 Looking_for_pdf...=Ser_etter_pdf...
 
-Mac_file_dialog=Mac-fildialog
 Main_layout_file=Hoved-layoutfil
 Main_PDF_directory=Hovedkatalog_for_PDF-filer
 Main_PS_directory=Hovedkatalog_for_PS-filer
@@ -939,7 +937,6 @@ Your_new_key_bindings_have_been_stored.=Dine_nye_hurtigtaster_har_blitt_lagret.
 
 Save_all_open_databases=
 
-Include=
 Automatically_remove_exact_duplicates=
 Enable_word/name_autocompletion=
 Editor_options=
@@ -1091,3 +1088,36 @@ Autoset_external_links=
 Link_local_file=
 
 Searching_for_files=
+
+Could_not_open_link=
+The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=
+
+Native_file_dialog=
+Error:_=
+Beta_version=
+Do_not_write_the_following_fields_to_XMP_Metadata:=
+MIS_Quarterly=MIS_Quarterly
+Use_default_viewer=
+Select_icon=
+
+Copy_to_clipboard=
+Paste_from_clipboard=
+lower=
+UPPER=
+Upper_Each_First=
+Upper_first=
+Replace_comma_by_and_where_appropriate=
+%0_export_successful=
+
+The_current_version_features_a_new_way_of_handling_links_to_external_files.<br>To_take_advantage_of_this,_your_links_must_be_changed_into_the_new_format,_and<br>JabRef_must_be_configured_to_show_the_new_links.=
+This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=
+You_have_changed_the_look_and_feel_setting._You_must_restart_JabRef_for_this_to_come_into_effect.=
+Warning:_could_not_complete_file_repair;_your_file_may_have_been_corrupted._Error_message:_=
+Could_not_save_file._Character_encoding_'%0'_is_not_supported.=
+Unable_to_open_link._The_application_'%0'_associated_with_the_file_type_'%1'_could_not_be_called.=
+Could_not_connect_to_Vim_server._Make_sure_that_Vim_is_running<BR>with_correct_server_name.=
+All_entries_of_this_type_will_be_declared_typeless._Continue?=
+Field_names_are_not_allowed_to_contain_white_space_or_the_following_characters=
+%0_entries_found._To_reduce_server_load,_abstracts_will_only_be_downloaded_for_searches_returning_%1_hits_or_less.=
+A_string_with_that_label_already_exists=
+Overwrite=
diff --git a/src/resource/Menu_de.properties b/src/resource/Menu_de.properties
index 2c61a55..30c6370 100644
--- a/src/resource/Menu_de.properties
+++ b/src/resource/Menu_de.properties
@@ -82,7 +82,7 @@ Insert_selected_citations_into_LyX/Kile=Ausgew\u00E4hlte_Literaturangaben_in_&Ly
 
 Insert_selected_citations_into_WinEdt=&Ausgew\u00E4hlte_Literaturangaben_in_WinEdt_einf\u00FCgen
 
-Integrity_check=\u00dcberpr\u00fcfung_der_&Integrit\u00e4t
+Integrity_check=\u00dcberpr\u00fcfung_der_Integrit\u00e4t
 
 # Help
 JabRef_help=JabRef-&Hilfe
@@ -146,7 +146,7 @@ Save_session=Sitzung_&speichern
 # Tools
 Search=&Suchen
 
-Search_IEEEXplore=&IEEEXplore_abfragen
+Search_IEEEXplore=IEEEXplore_abfragen
 
 Select_all=&Alle_ausw\u00E4hlen
 
@@ -196,9 +196,11 @@ Write_XMP-metadata_to_PDFs=&XMP-Metadaten_in_PDFs_schreiben
 
 Set/clear_fields=&Felder_setzen/l\u00f6schen
 Export_selected_entries=Ausgew\u00e4hlte_Eintr\u00e4ge_e&xportieren
-Fetch_ArXiv.org=&ArXiv.org_abrufen
+Fetch_ArXiv.org=ArXiv.org_abrufen
 Sessions=S&itzungen
 Save_all=A&lle_speichern
 
 Upgrade_external_links=Externe_Links_aktualisieren
 Manage_external_file_types=Externe_Dateitypen_verwalten
+
+Open_file=Datei_\u00f6ffnen
diff --git a/src/resource/Menu_du.properties b/src/resource/Menu_du.properties
index 2ce0614..e16302d 100644
--- a/src/resource/Menu_du.properties
+++ b/src/resource/Menu_du.properties
@@ -209,3 +209,5 @@ Save_all=
 Upgrade_external_links=
 
 Manage_external_file_types=
+
+Open_file=
diff --git a/src/resource/Menu_en.properties b/src/resource/Menu_en.properties
index 45c6461..84d1c63 100644
--- a/src/resource/Menu_en.properties
+++ b/src/resource/Menu_en.properties
@@ -119,3 +119,5 @@ Save_all=Save_all
 
 Upgrade_external_links=Upgrade_external_links
 Manage_external_file_types=Manage_external_file_types
+
+Open_file=Open_file
\ No newline at end of file
diff --git a/src/resource/Menu_fr.properties b/src/resource/Menu_fr.properties
index 11728f1..d77e5fc 100644
--- a/src/resource/Menu_fr.properties
+++ b/src/resource/Menu_fr.properties
@@ -107,3 +107,5 @@ Save_all=Sauvegarder_tout
 
 Upgrade_external_links=Mettre_\u00E0_jour_les_liens_externes
 Manage_external_file_types=G\u00E9rer_les_types_de_fichiers_externes
+
+Open_file=Ouvrir_un_fichier
\ No newline at end of file
diff --git a/src/resource/Menu_it.properties b/src/resource/Menu_it.properties
index 16ed491..1512043 100644
--- a/src/resource/Menu_it.properties
+++ b/src/resource/Menu_it.properties
@@ -116,3 +116,5 @@ Save_all=Salva_tutti
 
 Upgrade_external_links=Aggiorna_i_collegamenti_esterni
 Manage_external_file_types=Gestione_dei_tipi_di_file_esterni
+
+Open_file=Apri_file
diff --git a/src/resource/Menu_no.properties b/src/resource/Menu_no.properties
index f9ae512..db843df 100644
--- a/src/resource/Menu_no.properties
+++ b/src/resource/Menu_no.properties
@@ -115,3 +115,5 @@ Save_all=
 
 Upgrade_external_links=
 Manage_external_file_types=
+
+Open_file=
diff --git a/src/resource/build.properties b/src/resource/build.properties
index 1236820..5bd2fde 100644
--- a/src/resource/build.properties
+++ b/src/resource/build.properties
@@ -1,3 +1,3 @@
-builddate=June 29 2007
-build=83
-version=2.3b
\ No newline at end of file
+builddate=August 29 2007
+build=117
+version=2.3b2
\ No newline at end of file
diff --git a/src/resource/layout/bibtexml.layout b/src/resource/layout/bibtexml.layout
index 57090a4..5b9e2a0 100755
--- a/src/resource/layout/bibtexml.layout
+++ b/src/resource/layout/bibtexml.layout
@@ -1,35 +1,36 @@
-<bibtex:entry id="\bibtexkey">
-  <bibtex:\format[ToLowerCase]{\bibtextype}>
-\begin{author}    <bibtex:author>\format[XMLChars,AuthorFirstFirst]{\author}</bibtex:author>\end{author}
-\begin{editor}    <bibtex:editor>\format[XMLChars,AuthorFirstFirst]{\editor}</bibtex:editor>\end{editor}
-\begin{title}    <bibtex:title>\format[XMLChars]{\title}</bibtex:title>\end{title}
-\begin{booktitle}    <bibtex:booktitle>\format[XMLChars]{\booktitle}</bibtex:booktitle>\end{booktitle}
-\begin{journal}    <bibtex:journal>\format[XMLChars]{\journal}</bibtex:journal>\end{journal}
-\begin{publisher}    <bibtex:publisher>\format[XMLChars]{\publisher}</bibtex:publisher>\end{publisher}
-\begin{year}    <bibtex:year>\year</bibtex:year>\end{year}
-\begin{volume}    <bibtex:volume>\format[XMLChars]{\volume}</bibtex:volume>\end{volume}
-\begin{month}    <bibtex:month>\format[XMLChars]{\month}</bibtex:month>\end{month}
-\begin{chapter}    <bibtex:chapter>\format[XMLChars]{\chapter}</bibtex:chapter>\end{chapter}
-\begin{pages}    <bibtex:pages>\format[FormatPagesForXML]{\pages}</bibtex:pages>\end{pages}
-\begin{number}    <bibtex:number>\format[XMLChars]{\number}</bibtex:number>\end{number}
-\begin{edition}    <bibtex:edition>\format[XMLChars]{\edition}</bibtex:edition>\end{edition}
-\begin{series}    <bibtex:series>\format[XMLChars]{\series}</bibtex:series>\end{series}
-\begin{institution}    <bibtex:institution>\format[XMLChars]{\institution}</bibtex:institution>\end{institution}
-\begin{organization}    <bibtex:organization>\format[XMLChars]{\organization}</bibtex:organization>\end{organization}
-\begin{school}    <bibtex:school>\format[XMLChars]{\school}</bibtex:school>\end{school}
-\begin{address}    <bibtex:address>\format[XMLChars]{\address}</bibtex:address>\end{address}
-\begin{howpublished}    <bibtex:howpublished>\format[XMLChars]{\howpublished}</bibtex:howpublished>\end{howpublished}
-\begin{abstract}    <bibtex:abstract>\format[XMLChars]{\abstract}</bibtex:abstract>\end{abstract}
-\begin{url}    <bibtex:url>\format[XMLChars]{\url}</bibtex:url>\end{url}
-\begin{doi}    <bibtex:doi>\format[XMLChars]{\doi}</bibtex:doi>\end{doi}
-\begin{eid}    <bibtex:eid>\format[XMLChars]{\eid}</bibtex:eid>\end{eid}
-\begin{pdf}    <bibtex:pdf>\format[ResolvePDF,XMLChars]{\pdf}</bibtex:pdf>\end{pdf}
-\begin{type}    <bibtex:type>\format[XMLChars]{\type}</bibtex:type>\end{type}
-\begin{crossref}    <bibtex:crossref>\format[XMLChars]{\crossref}</bibtex:crossref>\end{crossref}
-\begin{annote}    <bibtex:annote>\format[XMLChars]{\annote}</bibtex:annote>\end{annote}
-\begin{keywords}    <bibtex:keywords>\format[XMLChars]{\keywords}</bibtex:keywords>\end{keywords}
-\begin{comment}    <bibtex:comment>\format[XMLChars]{\comment}</bibtex:comment>\end{comment}
-\begin{note}    <bibtex:note>\format[XMLChars]{\note}</bibtex:note>\end{note}
-\begin{key}    <bibtex:key>\format[XMLChars]{\key}</bibtex:key>\end{key}
-  </bibtex:\format[ToLowerCase]{\bibtextype}>
-</bibtex:entry>
+<bibtex:entry id="\bibtexkey">
+  <bibtex:\format[ToLowerCase]{\bibtextype}>
+\begin{author}    <bibtex:author>\format[XMLChars,AuthorFirstFirst]{\author}</bibtex:author>\end{author}
+\begin{editor}    <bibtex:editor>\format[XMLChars,AuthorFirstFirst]{\editor}</bibtex:editor>\end{editor}
+\begin{title}    <bibtex:title>\format[XMLChars]{\title}</bibtex:title>\end{title}
+\begin{booktitle}    <bibtex:booktitle>\format[XMLChars]{\booktitle}</bibtex:booktitle>\end{booktitle}
+\begin{journal}    <bibtex:journal>\format[XMLChars]{\journal}</bibtex:journal>\end{journal}
+\begin{publisher}    <bibtex:publisher>\format[XMLChars]{\publisher}</bibtex:publisher>\end{publisher}
+\begin{year}    <bibtex:year>\year</bibtex:year>\end{year}
+\begin{volume}    <bibtex:volume>\format[XMLChars]{\volume}</bibtex:volume>\end{volume}
+\begin{month}    <bibtex:month>\format[XMLChars]{\month}</bibtex:month>\end{month}
+\begin{chapter}    <bibtex:chapter>\format[XMLChars]{\chapter}</bibtex:chapter>\end{chapter}
+\begin{pages}    <bibtex:pages>\format[FormatPagesForXML]{\pages}</bibtex:pages>\end{pages}
+\begin{number}    <bibtex:number>\format[XMLChars]{\number}</bibtex:number>\end{number}
+\begin{edition}    <bibtex:edition>\format[XMLChars]{\edition}</bibtex:edition>\end{edition}
+\begin{series}    <bibtex:series>\format[XMLChars]{\series}</bibtex:series>\end{series}
+\begin{institution}    <bibtex:institution>\format[XMLChars]{\institution}</bibtex:institution>\end{institution}
+\begin{organization}    <bibtex:organization>\format[XMLChars]{\organization}</bibtex:organization>\end{organization}
+\begin{school}    <bibtex:school>\format[XMLChars]{\school}</bibtex:school>\end{school}
+\begin{address}    <bibtex:address>\format[XMLChars]{\address}</bibtex:address>\end{address}
+\begin{howpublished}    <bibtex:howpublished>\format[XMLChars]{\howpublished}</bibtex:howpublished>\end{howpublished}
+\begin{abstract}    <bibtex:abstract>\format[XMLChars]{\abstract}</bibtex:abstract>\end{abstract}
+\begin{url}    <bibtex:url>\format[XMLChars]{\url}</bibtex:url>\end{url}
+\begin{doi}    <bibtex:doi>\format[XMLChars]{\doi}</bibtex:doi>\end{doi}
+\begin{eid}    <bibtex:eid>\format[XMLChars]{\eid}</bibtex:eid>\end{eid}
+\begin{pdf}    <bibtex:pdf>\format[ResolvePDF,XMLChars]{\pdf}</bibtex:pdf>\end{pdf}
+\format[FileLink(pdf),WrapContent("    <bibtex:pdf>,</bibtex:pdf>")]{\file}
+\begin{type}    <bibtex:type>\format[XMLChars]{\type}</bibtex:type>\end{type}
+\begin{crossref}    <bibtex:crossref>\format[XMLChars]{\crossref}</bibtex:crossref>\end{crossref}
+\begin{annote}    <bibtex:annote>\format[XMLChars]{\annote}</bibtex:annote>\end{annote}
+\begin{keywords}    <bibtex:keywords>\format[XMLChars]{\keywords}</bibtex:keywords>\end{keywords}
+\begin{comment}    <bibtex:comment>\format[XMLChars]{\comment}</bibtex:comment>\end{comment}
+\begin{note}    <bibtex:note>\format[XMLChars]{\note}</bibtex:note>\end{note}
+\begin{key}    <bibtex:key>\format[XMLChars]{\key}</bibtex:key>\end{key}
+  </bibtex:\format[ToLowerCase]{\bibtextype}>
+</bibtex:entry>
diff --git a/src/resource/layout/docbook.layout b/src/resource/layout/docbook.layout
index dfe23f8..deadab2 100755
--- a/src/resource/layout/docbook.layout
+++ b/src/resource/layout/docbook.layout
@@ -1,18 +1,18 @@
-<biblioentry xreflabel="\bibtexkey" id="\bibtexkey">
-   <authorgroup>
-\begin{author}       \format[XMLChars,CreateDocBookAuthors]{\author} \end{author}
-   </authorgroup>
-<citetitle pubwork="article">\format[XMLChars,RemoveLatexCommands]{\title}</citetitle>
-\begin{journal}   <citetitle pubwork="journal">\format[XMLChars]{\journal}</citetitle>\end{journal}
-\begin{publisher}   <publisher>
-      <publishername>\format[XMLChars]{\publisher}</publishername>
-   </publisher>\end{publisher}
-\begin{volume}   <volumenum>\volume</volumenum> \end{volume}
-\begin{edition}   <edition>\format[XMLChars,RemoveLatexCommands]{\edition}</edition> \end{edition}
-\begin{pages}   <artpagenums>\format[FormatPagesForXML]{\pages}</artpagenums> \end{pages}
-\begin{year}   <pubdate>\year</pubdate>  \end{year}
-\begin{abstract}   <abstract>
-      <para>\format[XMLChars,RemoveLatexCommands]{\abstract}
-      </para>
-   </abstract>\end{abstract}
-</biblioentry>
+<biblioentry xreflabel="\bibtexkey" id="\bibtexkey">
+   <authorgroup>
+\begin{author}       \format[XMLChars,CreateDocBookAuthors]{\author} \end{author}
+   </authorgroup>
+<citetitle pubwork="article">\format[XMLChars,RemoveLatexCommands]{\title}</citetitle>
+\begin{journal}   <citetitle pubwork="journal">\format[XMLChars]{\journal}</citetitle>\end{journal}
+\begin{publisher}   <publisher>
+      <publishername>\format[XMLChars]{\publisher}</publishername>
+   </publisher>\end{publisher}
+\begin{volume}   <volumenum>\volume</volumenum> \end{volume}
+\begin{edition}   <edition>\format[XMLChars,RemoveLatexCommands]{\edition}</edition> \end{edition}
+\begin{pages}   <artpagenums>\format[FormatPagesForXML]{\pages}</artpagenums> \end{pages}
+\begin{year}   <pubdate>\year</pubdate>  \end{year}
+\begin{abstract}   <abstract>
+      <para>\format[XMLChars,RemoveLatexCommands]{\abstract}
+      </para>
+   </abstract>\end{abstract}
+</biblioentry>
diff --git a/src/resource/layout/endnote/EndNote.article.layout b/src/resource/layout/endnote/EndNote.article.layout
index 7868de7..decbf22 100755
--- a/src/resource/layout/endnote/EndNote.article.layout
+++ b/src/resource/layout/endnote/EndNote.article.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 article
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.book.layout b/src/resource/layout/endnote/EndNote.book.layout
index 0d0e490..86f5b1d 100755
--- a/src/resource/layout/endnote/EndNote.book.layout
+++ b/src/resource/layout/endnote/EndNote.book.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 book
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.booklet.layout b/src/resource/layout/endnote/EndNote.booklet.layout
index 7a4455c..adb5a35 100755
--- a/src/resource/layout/endnote/EndNote.booklet.layout
+++ b/src/resource/layout/endnote/EndNote.booklet.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 booklet
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.inbook.layout b/src/resource/layout/endnote/EndNote.inbook.layout
index d0296c6..5f72995 100755
--- a/src/resource/layout/endnote/EndNote.inbook.layout
+++ b/src/resource/layout/endnote/EndNote.inbook.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 inbook
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.incollection.layout b/src/resource/layout/endnote/EndNote.incollection.layout
index 7d1c068..df32a90 100755
--- a/src/resource/layout/endnote/EndNote.incollection.layout
+++ b/src/resource/layout/endnote/EndNote.incollection.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 incollection
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.inproceedings.layout b/src/resource/layout/endnote/EndNote.inproceedings.layout
index 52dba9d..be42424 100755
--- a/src/resource/layout/endnote/EndNote.inproceedings.layout
+++ b/src/resource/layout/endnote/EndNote.inproceedings.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 inproceedings
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.layout b/src/resource/layout/endnote/EndNote.layout
index 3cf6bf1..dfcdfea 100755
--- a/src/resource/layout/endnote/EndNote.layout
+++ b/src/resource/layout/endnote/EndNote.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 \entrytype
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.manual.layout b/src/resource/layout/endnote/EndNote.manual.layout
index 37cac25..ee216b3 100755
--- a/src/resource/layout/endnote/EndNote.manual.layout
+++ b/src/resource/layout/endnote/EndNote.manual.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 manual
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.mastersthesis.layout b/src/resource/layout/endnote/EndNote.mastersthesis.layout
index 085ff35..192b93f 100755
--- a/src/resource/layout/endnote/EndNote.mastersthesis.layout
+++ b/src/resource/layout/endnote/EndNote.mastersthesis.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 mastersthesis
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.misc.layout b/src/resource/layout/endnote/EndNote.misc.layout
index f50b2c7..ae7c447 100755
--- a/src/resource/layout/endnote/EndNote.misc.layout
+++ b/src/resource/layout/endnote/EndNote.misc.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 misc
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.other.layout b/src/resource/layout/endnote/EndNote.other.layout
index 0bed803..08233ae 100755
--- a/src/resource/layout/endnote/EndNote.other.layout
+++ b/src/resource/layout/endnote/EndNote.other.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 other
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.phdthesis.layout b/src/resource/layout/endnote/EndNote.phdthesis.layout
index 534525d..1519870 100755
--- a/src/resource/layout/endnote/EndNote.phdthesis.layout
+++ b/src/resource/layout/endnote/EndNote.phdthesis.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 phdthesis
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.proceedings.layout b/src/resource/layout/endnote/EndNote.proceedings.layout
index e520c9c..503c1f6 100755
--- a/src/resource/layout/endnote/EndNote.proceedings.layout
+++ b/src/resource/layout/endnote/EndNote.proceedings.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 proceedings
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.techreport.layout b/src/resource/layout/endnote/EndNote.techreport.layout
index aa7e40c..29f794d 100755
--- a/src/resource/layout/endnote/EndNote.techreport.layout
+++ b/src/resource/layout/endnote/EndNote.techreport.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 techreport
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/EndNote.unpublished.layout b/src/resource/layout/endnote/EndNote.unpublished.layout
index 66f9507..ec926b5 100755
--- a/src/resource/layout/endnote/EndNote.unpublished.layout
+++ b/src/resource/layout/endnote/EndNote.unpublished.layout
@@ -26,7 +26,8 @@
 %*
 %L
 %M
-%1 \pdf
+\format[ResolvePDF,WrapContent(%1 ,)]{\pdf}
+\format[FileLink(pdf),WrapContent(%1 ,)]{\file}
 %2 \comment
 %3 unpublished
 %4 \crossref
@@ -36,7 +37,8 @@
 %K \keywords
 %X \abstract
 %Z \note
-%U \url
+\format[WrapContent(%U ,)]{\url}
+\format[FileLink(url),WrapContent(%U ,)]{\file}
 %+
 %^
 
diff --git a/src/resource/layout/endnote/Readme.txt b/src/resource/layout/endnote/Readme.txt
index 471830b..ce91dd8 100755
--- a/src/resource/layout/endnote/Readme.txt
+++ b/src/resource/layout/endnote/Readme.txt
@@ -15,7 +15,7 @@ Installation:
 *********************************************************************************
 EndNote Import from JabRef.eni
 This file must be placed in your EndNote Filters directory. On a Mac OS X system, the default directory is /Applications/EndNote 7/Filters. On a Windows XP system, the default directory is C:\Program Files\EndNote\Filters. The default EndNote Import filter will be able to import the files from JabRef, but supports fewer fields. You should then open up the Filter Manager (Edit->Import Filters->Open Filter Manager) and add it to your Favorites.
-
+
 EndNote Preferences
 The filter provided will only work if certain fields are added to EndNote's default Reference Types. Open up Preferences and click on Reference Types, then Modify Reference Types. The following table lists the field names that must be added to certain reference types for EndNote to support these fields. For example, the Publisher field for Journal Article is blank by default; Type in Publisher in this field. 
 
@@ -29,10 +29,10 @@ Tag	Generic Name 	New Field Name	Ref Types
 %3 	Custom 3	entrytype	(All)
 %4 	Custom 4	crossref	(All)
 %# 	Custom 5	owner		(All)
-%$ 	Custom 6	key		(All)
+%$ 	Custom 6	key		(All)
 (All = Journal Article, Book, Book Section, Conference Proceedings, Report, Thesis)
 
-EndNote.*.layout:
+EndNote.*.layout:
 These files must be kept together in a single directory.
 Start JabRef. In the "Options" menu you will find the button "Manage custom exports". The "Manage custom exports" interface will appear. Click the "Add new" button. You can choose a name for the export filter (e.g. "EndNote"). Specify the location of the main layout file (which is the file "EndNote.layout") by typing the full path or by using the "Browse" button. The file extension should be set to ".txt" Click "OK". Now you will find the new custom export filter in the "File" menu under [...]
 
diff --git a/src/resource/layout/html.begin.layout b/src/resource/layout/html.begin.layout
index 9f396e7..bc9fee5 100644
--- a/src/resource/layout/html.begin.layout
+++ b/src/resource/layout/html.begin.layout
@@ -1,42 +1,42 @@
-<!-- jabref.sf.net generated HTML layout  -->
-<!-- 2006-01-17 wegner added PMID linkout -->
-<html>
-<header>
-	<title>JabRef Output</title>
-	<style type="text/css">
-body {
-    font-family:Georgia, Garamond, Serif;
-    background-color:#ddd;
-}
-
-.bibtex_entry {
-    border:2px solid black;
-    margin:1em;
-}
-
-.bibtex_header {
-    border-bottom:solid gray 2px;
-}
-.bibtex_key {
-    font-size:small;
-    color:#555;
-    display:inline;
-	font-weight:bold;
-}
-
-.bibtex_content {
-    padding-bottom:1em;
-}
-
-.bibtex_author {
-    font-weight:bold;
-    padding-bottom:1em;
-}
-
-.bibtex_title {
-    font-weight:bold;
-    padding-bottom:1em;
-}
+<!-- jabref.sf.net generated HTML layout  -->
+<!-- 2006-01-17 wegner added PMID linkout -->
+<html>
+<header>
+	<title>JabRef Output</title>
+	<style type="text/css">
+body {
+    font-family:Georgia, Garamond, Serif;
+    background-color:#ddd;
+}
+
+.bibtex_entry {
+    border:2px solid black;
+    margin:1em;
+}
+
+.bibtex_header {
+    border-bottom:solid gray 2px;
+}
+.bibtex_key {
+    font-size:small;
+    color:#555;
+    display:inline;
+	font-weight:bold;
+}
+
+.bibtex_content {
+    padding-bottom:1em;
+}
+
+.bibtex_author {
+    font-weight:bold;
+    padding-bottom:1em;
+}
+
+.bibtex_title {
+    font-weight:bold;
+    padding-bottom:1em;
+}
 
 .bibtex_url, .bibtex_pmid, .bibtex_doi, .bibtex_citeseer {
     display:inline;
@@ -51,14 +51,14 @@ body {
 	font-weight:bold;
 	color:darkblue;
 
-}
-
-.bibtex_journal, .bibtex_year, .bibtex_volume, .bibtex_pages, .bibtex_publisher {
-    display:inline;
-}
-	</style>
-</header>
-<body>
-
-
+}
+
+.bibtex_journal, .bibtex_year, .bibtex_volume, .bibtex_pages, .bibtex_publisher {
+    display:inline;
+}
+	</style>
+</header>
+<body>
+
+
 <hr>
\ No newline at end of file
diff --git a/src/resource/layout/html.book.layout b/src/resource/layout/html.book.layout
index 086bcbe..4a848d2 100755
--- a/src/resource/layout/html.book.layout
+++ b/src/resource/layout/html.book.layout
@@ -5,6 +5,12 @@
 			<a name="\bibtexkey">\bibtexkey</a>
 		</div>
 
+        \begin{file}
+		<div class="bibtex_pdf">
+			\format[FileLink(pdf),WrapContent(<a href=",">pdf</a>)]{\file}
+		</div>
+		\end{file}
+
 		\begin{pdf}
 		<div class="bibtex_pdf">
 			<a href="\format[ResolvePDF]{\pdf}">pdf</a>
diff --git a/src/resource/layout/html.end.layout b/src/resource/layout/html.end.layout
index 42828b5..0947425 100644
--- a/src/resource/layout/html.end.layout
+++ b/src/resource/layout/html.end.layout
@@ -1,6 +1,6 @@
-
-<hr>
-<p style="font-size: smaller;">Generated on \format[CurrentDate]{}</p>
-
-</body>
-</html>
+
+<hr>
+<p style="font-size: smaller;">Generated on \format[CurrentDate]{}</p>
+
+</body>
+</html>
diff --git a/src/resource/layout/html.inbook.layout b/src/resource/layout/html.inbook.layout
index 89a6f12..6eee6c4 100644
--- a/src/resource/layout/html.inbook.layout
+++ b/src/resource/layout/html.inbook.layout
@@ -17,6 +17,12 @@
 		</div>
 		\end{pmid}
 
+        \begin{file}
+		<div class="bibtex_pdf">
+			\format[FileLink(pdf),WrapContent(<a href=",">pdf</a>)]{\file}
+		</div>
+		\end{file}
+
 		\begin{pdf}
 		<div class="bibtex_pdf">
 			<a href="\format[ResolvePDF]{\pdf}">pdf</a>
diff --git a/src/resource/layout/html.inproceedings.layout b/src/resource/layout/html.inproceedings.layout
index 282982b..87c74af 100644
--- a/src/resource/layout/html.inproceedings.layout
+++ b/src/resource/layout/html.inproceedings.layout
@@ -17,6 +17,12 @@
 		</div>
 		\end{pmid}
 
+		\begin{file}
+		<div class="bibtex_pdf">
+			\format[FileLink(pdf),WrapContent(<a href=",">pdf</a>)]{\file}
+		</div>
+		\end{file}
+
 		\begin{pdf}
 		<div class="bibtex_pdf">
 			<a href="\format[ResolvePDF]{\pdf}">pdf</a>
diff --git a/src/resource/layout/html.layout b/src/resource/layout/html.layout
index 9eec8d1..69fff25 100755
--- a/src/resource/layout/html.layout
+++ b/src/resource/layout/html.layout
@@ -1,75 +1,81 @@
-<div class="bibtex_entry" title="Generated on \format[CurrentDate]{mm|dd|yyyy}">
-
-	<div class="bibtex_header">
-		<div class="bibtex_key">
-			<a name="\bibtexkey">\bibtexkey</a>
-		</div>
-
-		\begin{doi}
-		<div class="bibtex_doi">
-			<a href="http://dx.doi.org/\doi">doi</a>
-		</div>
-		\end{doi}
+<div class="bibtex_entry" title="Generated on \format[CurrentDate]{mm|dd|yyyy}">
+
+	<div class="bibtex_header">
+		<div class="bibtex_key">
+			<a name="\bibtexkey">\bibtexkey</a>
+		</div>
+
+		\begin{doi}
+		<div class="bibtex_doi">
+			<a href="http://dx.doi.org/\doi">doi</a>
+		</div>
+		\end{doi}
 
 		\begin{pmid}
 		<div class="bibtex_pmid">
 			<a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&query_hl=1&itool=pubmed_docsum&list_uids=\pmid">pmid</a>
 		</div>
 		\end{pmid}
-
-		\begin{citeseerurl}
-		<div class="bibtex_citeseer">
-			<a href="http://citeseer.ist.psu.edu/\citeseerurl">cs</a>
-		</div>
-		\end{citeseerurl}
-
-		\begin{pdf}
-		<div class="bibtex_pdf">
-			<a href="\format[ResolvePDF]{\pdf}">pdf</a>
-		</div>
-		\end{pdf}
-
-		\begin{url}
-		<div class="bibtex_url">
-			<a href="\url">url</a>
-		</div>
-		\end{url}
-	</div>
-
-	<div class="bibtex_content">
-
-		\begin{title}
-		<div class="bibtex_title">
-			\format[HTMLChars,RemoveLatexCommands]{\title}
-		</div>
-		\end{title}
-
-		\begin{author}
-		<div class="bibtex_author">
-			\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer,HTMLChars]{\author}
-		</div>
-		\end{author}
-
-		\begin{journal}
-		<div class="bibtex_journal">
-			\format[HTMLChars]{\journal}
-		</div>,
-		\end{journal}
-
-		\begin{volume}
-		<div class="bibtex_volume">
-			Vol. \volume
-		</div>,
-		\end{volume}
-
-		\begin{pages}
-		<div class="bibtex_pages">
-			pp. \format[FormatPagesForHTML]{\pages}
-		</div>,
-		\end{pages}
-
-		<div class="bibtex_year">
-			\year
-		</div>
-	</div>
-</div>
+
+		\begin{citeseerurl}
+		<div class="bibtex_citeseer">
+			<a href="http://citeseer.ist.psu.edu/\citeseerurl">cs</a>
+		</div>
+		\end{citeseerurl}
+
+		\begin{file}
+		<div class="bibtex_pdf">
+			\format[FileLink(pdf),WrapContent(<a href=",">pdf</a>)]{\file}
+		</div>
+		\end{file}
+
+		\begin{pdf}
+		<div class="bibtex_pdf">
+			<a href="\format[ResolvePDF]{\pdf}">pdf</a>
+		</div>
+		\end{pdf}
+
+		\begin{url}
+		<div class="bibtex_url">
+			<a href="\url">url</a>
+		</div>
+		\end{url}
+	</div>
+
+	<div class="bibtex_content">
+
+		\begin{title}
+		<div class="bibtex_title">
+			\format[HTMLChars,RemoveLatexCommands]{\title}
+		</div>
+		\end{title}
+
+		\begin{author}
+		<div class="bibtex_author">
+			\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer,HTMLChars]{\author}
+		</div>
+		\end{author}
+
+		\begin{journal}
+		<div class="bibtex_journal">
+			\format[HTMLChars]{\journal}
+		</div>,
+		\end{journal}
+
+		\begin{volume}
+		<div class="bibtex_volume">
+			Vol. \volume
+		</div>,
+		\end{volume}
+
+		\begin{pages}
+		<div class="bibtex_pages">
+			pp. \format[FormatPagesForHTML]{\pages}
+		</div>,
+		\end{pages}
+
+		<div class="bibtex_year">
+			\year
+		</div>
+	</div>
+</div>
diff --git a/src/resource/layout/html.mastersthesis.layout b/src/resource/layout/html.mastersthesis.layout
index c6b7b0d..813c31d 100644
--- a/src/resource/layout/html.mastersthesis.layout
+++ b/src/resource/layout/html.mastersthesis.layout
@@ -5,6 +5,12 @@
 			<a name="\bibtexkey">\bibtexkey</a>
 		</div>
 
+		\begin{file}
+		<div class="bibtex_pdf">
+			\format[FileLink(pdf),WrapContent(<a href=",">pdf</a>)]{\file}
+		</div>
+		\end{file}
+
 		\begin{pdf}
 		<div class="bibtex_pdf">
 			<a href="\format[ResolvePDF]{\pdf}">pdf</a>
diff --git a/src/resource/layout/html.phdthesis.layout b/src/resource/layout/html.phdthesis.layout
index c6b7b0d..813c31d 100644
--- a/src/resource/layout/html.phdthesis.layout
+++ b/src/resource/layout/html.phdthesis.layout
@@ -5,6 +5,12 @@
 			<a name="\bibtexkey">\bibtexkey</a>
 		</div>
 
+		\begin{file}
+		<div class="bibtex_pdf">
+			\format[FileLink(pdf),WrapContent(<a href=",">pdf</a>)]{\file}
+		</div>
+		\end{file}
+
 		\begin{pdf}
 		<div class="bibtex_pdf">
 			<a href="\format[ResolvePDF]{\pdf}">pdf</a>
diff --git a/src/resource/layout/simplehtml.begin.layout b/src/resource/layout/simplehtml.begin.layout
new file mode 100644
index 0000000..0f19399
--- /dev/null
+++ b/src/resource/layout/simplehtml.begin.layout
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<title>JabRef References output</title>
+<meta http-equiv="Content-Type" content="text/html; charset=\encoding">
+<style type="text/css">
+body { font-size: 12px; font-family: Arial, sans-serif; }
+dt { margin-top: 1em; font-weight: bold; }
+</style>
+</head>
+<body>
+<dl>
diff --git a/src/resource/layout/simplehtml.end.layout b/src/resource/layout/simplehtml.end.layout
new file mode 100644
index 0000000..4b14660
--- /dev/null
+++ b/src/resource/layout/simplehtml.end.layout
@@ -0,0 +1,3 @@
+</dl>
+</body>
+</html>
diff --git a/src/resource/layout/simplehtml.layout b/src/resource/layout/simplehtml.layout
index 8535f63..e94f587 100755
--- a/src/resource/layout/simplehtml.layout
+++ b/src/resource/layout/simplehtml.layout
@@ -1,15 +1,8 @@
-<font face="arial">
-<b><i>\bibtextype</i><a name="\bibtexkey">\begin{bibtexkey} (\bibtexkey)</a>\end{bibtexkey}</b>
-<br>
-\begin{author} \format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer,HTMLChars]{\author}<BR>\end{author}
-\begin{editor} \format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer,HTMLChars]{\editor} <i>(ed.)</i><BR>\end{editor}
-\begin{title} \format[HTMLChars]{\title} \end{title}<BR>
-\begin{chapter} \format[HTMLChars]{\chapter}<BR>\end{chapter}
-\begin{journal} <em>\format[HTMLChars]{\journal}, </em>\end{journal}
-\begin{school} <em>\format[HTMLChars]{\school}, </em>\end{school}
-\begin{institution} <em>\format[HTMLChars]{\institution}, </em>\end{institution}
-\begin{publisher} <em>\format[HTMLChars]{\publisher}, </em>\end{publisher}
-\begin{year}<b>\year</b>\end{year}\begin{volume}<i>, \volume</i>\end{volume}\begin{pages}, \format[FormatPagesForHTML]{\pages} \end{pages}
-</dd>
-<p></p>
-</font>
+<dt><em>\format[ToLowerCase]{\bibtextype}</em><a name="\bibtexkey">\begin{bibtexkey} (\bibtexkey)</a>\end{bibtexkey}</dt>
+\begin{author}<dd>\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer,HTMLChars]{\author}</dd>\end{author}\begin{editor}
+<dd>\format[AuthorLastFirst,AuthorAbbreviator,AuthorAndsReplacer,HTMLChars]{\editor} <i>(ed.)</i></dd>\end{editor}\begin{title}
+<dd>\format[HTMLChars]{\title}</dd>\end{title}\begin{chapter}
+<dd>\format[HTMLChars]{\chapter}</dd>\end{chapter}\begin{journal}
+<dd><em>\format[HTMLChars]{\journal},</em></dd>\end{journal}
+<dd>\begin{school}<em>\format[HTMLChars]{\school}, </em>\end{school}\begin{institution}<em>\format[HTMLChars]{\institution}, </em>\end{institution}\begin{publisher}<em>\format[HTMLChars]{\publisher}, </em>\end{publisher}\begin{year}<b>\year</b>\end{year}\begin{volume}<i>, \volume</i>\end{volume}\begin{pages}, \format[FormatPagesForHTML]{\pages}\end{pages}</dd>
+
diff --git a/src/resource/layout/tablerefs/tablerefs.begin.layout b/src/resource/layout/tablerefs/tablerefs.begin.layout
index 647ded6..c500277 100644
--- a/src/resource/layout/tablerefs/tablerefs.begin.layout
+++ b/src/resource/layout/tablerefs/tablerefs.begin.layout
@@ -1,152 +1,217 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html lang="en">
-<head>
-<title>JabRef References output</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-<script type="text/javascript">
-<!--
-// QuickSearch script for tables
-//
-// Copyright (c) 2006, Mark Schenk
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-
-// Some features:
-// + combination of CSS/JavaScript degrades nicely
-// + easy to set number of columns to search
-// + allows RegExp searches
-//   e.g. to search for entries between 1980 and 1989, type:  198[0-9]
-//   e.g. for any entry ending with 'symmetry', type:  symmetry$
-//   e.g. for all reftypes that are books: ^book$, or ^article$
-
-if (window.opera) { 
-	document.addEventListener("load",initSearch,false) } 
-else if (window.addEventListener) {
-	window.addEventListener("load",initSearch,false) }
-else if (window.attachEvent) {
-	window.attachEvent("onload", initSearch); }
-
-function initSearch() {
-	// basic object detection
-	if(!document.getElementById || !document.getElementsByTagName) { return; }
-
-	// check if QuickSearch table AND search area is present 
-	if (!document.getElementById('qstable')||!document.getElementById('qs')) { return; }
-
-	// give id of the table that has QuickSearch
-	// is global variable on purpose
-	searchTable = document.getElementById('qstable');
-
-	setStatistics(-1)
-
-	document.getElementById('qs').style.display = 'block';
-	document.getElementById('qsfield').onkeyup = testEvent;
-}
-
-function quickSearch(tInput){
-	searchText = new RegExp(tInput.value,"i");
-	var inRows = searchTable.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
-
-	// find/set number of searchable columns
-	// by default script searches all columns
-	var cols = searchTable.getElementsByTagName('thead')[0].getElementsByTagName('th').length;
-	// to set a fixed number of columns, uncomment next line
-	// var cols = 4  // search the left 'cols' columns
-
-	// count number of hits
-	var hits = 0;
-
-	// start looping through all rows
-	for (var i = 0; cRow = inRows[i]; i++){
-	inCells = cRow.getElementsByTagName('td');
-	var gevonden = false; 
-  
-	for (var j=0; j<cols; j++) { // only first 'cols' columns
-		cCell = inCells[j];
-		var t = cCell.innerText?cCell.innerText:getTextContent(cCell);
-		if ((tInput.value.length == 0) || (t.search(searchText) != -1)){ gevonden=true; } 
-	}
-
-	gevonden == true?cRow.className = 'entry show':cRow.className = 'entry noshow';
-	gevonden == true?hits++:hits=hits;
-	}
-
-	// update statistics
-	setStatistics(hits)
-}
-
-function setStatistics (hits) {
-	var allRows = searchTable.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
-	var entries = 0
-	for (var i=0; i<allRows.length;i++) {
-		if (allRows[i].className.indexOf('entry') != -1) {
-	       	entries++;
-		}
-	}
-	
-	if(hits < 0) { hits=entries; }
-
-	var stats = document.getElementById('stat');
-	if(stats) { stats.firstChild.data = hits + '/' + entries}
-}
-
-function getTextContent(node) {
-	// Function written by Arve Bersvendsen
-	// http://www.virtuelvis.com
-	
-	if (node.nodeType == 3) {
-	return node.nodeValue;
-	} // text node
-	if (node.nodeType == 1) { // element node
-	var text = [];
-	for (var chld = node.firstChild;chld;chld=chld.nextSibling) {
-		text.push(getTextContent(chld));
-	}
-	return text.join("");
-	} return ""; // some other node, won't contain text nodes.
-}
-
-function testEvent(e){
-	if (!e) var e = window.event;
-	quickSearch(this);
-}
-
-function clearQS() {
-	qsfield = document.getElementById('qsfield'); 
-	qsfield.value = '';
-	quickSearch(qsfield);
-}
-
-function redoQS(){
-	qsfield = document.getElementById('qsfield'); 
-	quickSearch(qsfield);
-}
--->
-</script>
-<style type="text/css">
-body { background-color: white; font-family: "Trebuchet MS", Arial, sans-serif; font-size: 12px; line-height: 1.2; padding: 1em; }
-
-#qs { width: auto; border-style: solid; border-color: gray; border-width: 1px 1px 0px 1px; padding: 0.5em 0.5em; display:none;  }
-#qs form { padding: 0px; margin: 0px; }
-#qs form p { padding: 0px; margin: 0px; }
-
-table { border: 1px gray solid; width: 100%; empty-cells: show; }
-th, td { border: 1px gray solid; padding: 0.5em; vertical-align: top;  }
-td { text-align: left; vertical-align: top; }
-th { background-color: #EFEFEF; }
-
-td a, td a:hover { color: navy; font-weight: bold; }
-
-tr.noshow { display: none;}
-</style>
-</head>
-<body>
-
-<div id="qs"><form action=""><p>QuickSearch: <input type="text" name="qsfield" id="qsfield" autocomplete="off" title="Allows plain text as wel as RegExp searches" /><input type="button" onclick="clearQS()" value="clear" />  Number of matching entries: <span id="stat">0</span>.</p></form></div>
-<table id="qstable" border="1">
-<thead><tr><th width="20%">Author</th><th width="30%">Title</th><th width="5%">Year</th><th width="30%">Journal/Proceedings</th><th width="10%">Reftype</th><th width="5%">DOI/URL</th></tr></thead>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<title>JabRef References output</title>
+<meta http-equiv="Content-Type" content="text/html; charset=\encoding">
+<script type="text/javascript">
+<!--
+// QuickSearch script for JabRef HTML export 
+// Version: 2.0
+//
+// Copyright (c) 2006-2007, Mark Schenk
+//
+// Permission to use, copy, modify, and distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+
+// Some features:
+// + allows RegExp searches
+//   e.g. to search for entries between 1980 and 1989, type:  198[0-9]
+//   e.g. for any entry ending with 'symmetry', type:  symmetry$
+//   e.g. for all reftypes that are books: ^book$, or ^article$
+//   e.g. for entries by either John or Doe, type john|doe
+
+// Acknowledgements:
+// + incorporates speed improvements suggested by Jean-Luc Falcone
+
+// Speed optimisation introduced some esoteric problems with certain RegExp searches
+// e.g. if the previous search is 200[-7] and the next search is 200[4-7] then the search doesn't work properly until the next 'keyup'
+// hence the searchOpt can be turned off for RegExp adepts
+var searchOpt = true;
+
+if (window.addEventListener) {
+	window.addEventListener("load",initSearch,false); }
+else if (window.attachEvent) {
+	window.attachEvent("onload", initSearch); }
+
+function initSearch() {
+	// basic object detection
+	if(!document.getElementById || !document.getElementsByTagName) { return; }
+	if (!document.getElementById('qstable')||!document.getElementById('qs')) { return; }
+
+	// find QS table and appropriate rows
+	searchTable = document.getElementById('qstable');
+	var allRows = searchTable.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
+
+	// split all rows into entryRows and infoRows (e.g. abstract, review, bibtex)
+	entryRows = new Array();
+	infoRows = new Array();
+
+	for (var i=0, k=0, j=0; i<allRows.length;i++) {
+		if (allRows[i].className.indexOf('entry') != -1) {
+			entryRows[j++] = allRows[i];
+		} else {
+			infoRows[k++] = allRows[i];		
+		}
+	}
+
+	//number of entries and rows
+	numRows = allRows.length;
+	numEntries = entryRows.length;
+	numInfo = infoRows.length;
+
+	//find the query field
+	qsfield = document.getElementById('qsfield');
+
+	// previous search term; used for speed optimisation
+	prevSearch = '';
+
+	//find statistics location
+	stats = document.getElementById('stat');
+	setStatistics(-1);
+
+	// shows the searchfield
+	document.getElementById('qs').style.display = 'block';
+	document.getElementById('qsfield').onkeyup = testEvent;
+}
+
+function quickSearch(tInput){
+
+	 if (tInput.value.length == 0) {
+		showAll();
+		setStatistics(-1);
+		qsfield.className = '';
+		return;
+	} else {
+		// only search for valid RegExp
+		try {
+			var searchText = new RegExp(tInput.value,"i")
+			closeAllInfo();
+			qsfield.className = '';
+		}
+		catch(err) {
+			prevSearch = tInput.value;
+			qsfield.className = 'invalidsearch';
+			return;
+		}
+	}
+	
+	// count number of hits
+	var hits = 0;
+
+	// start looping through all entry rows
+	for (var i = 0; cRow = entryRows[i]; i++){
+
+		// only show search the cells if it isn't already hidden OR if the search term is getting shorter, then search all
+		// some further optimisation is possible: if the search string is getting shorter, and the row is already visible, skip it. Future work.
+		if(!searchOpt || cRow.className.indexOf('noshow')==-1 || tInput.value.length <= prevSearch.length){
+			var found = false; 
+
+			var inCells = cRow.getElementsByTagName('td');
+			var numCols = inCells.length;
+				
+			for (var j=0; j<numCols; j++) {
+				cCell = inCells[j];
+				var t = cCell.innerText?cCell.innerText:getTextContent(cCell);
+				if (t.search(searchText) != -1){ 
+					found=true; 
+					break;
+				} 
+			}
+			
+			if(found) {
+				cRow.className = 'entry show';
+				hits++;
+			} else {
+				cRow.className = 'entry noshow';
+			}
+		}
+	}
+
+	// update statistics
+	setStatistics(hits)
+	
+	// set previous search value
+	prevSearch = tInput.value;
+}
+
+function setStatistics (hits) {
+	if(hits < 0) { hits=numEntries; }
+	if(stats) { stats.firstChild.data = hits + '/' + numEntries}
+}
+
+function getTextContent(node) {
+	// Function written by Arve Bersvendsen
+	// http://www.virtuelvis.com
+	
+	if (node.nodeType == 3) {
+	return node.nodeValue;
+	} // text node
+	if (node.nodeType == 1) { // element node
+	var text = [];
+	for (var chld = node.firstChild;chld;chld=chld.nextSibling) {
+		text.push(getTextContent(chld));
+	}
+	return text.join("");
+	} return ""; // some other node, won't contain text nodes.
+}
+
+function showAll(){
+	// first close all abstracts, reviews, etc.
+	closeAllInfo();
+
+	for (var i = 0; i < numEntries; i++){
+		entryRows[i].className = 'entry show'; 
+	}
+}
+
+function closeAllInfo(){
+	for (var i=0; i < numInfo; i++){
+		if (infoRows[i].className.indexOf('noshow') ==-1) {
+			infoRows[i].className = infoRows[i].className + ' noshow';
+		}
+	}
+}
+
+function testEvent(e){
+	if (!e) var e = window.event;
+	quickSearch(this);
+}
+
+function clearQS() {
+	qsfield.value = '';
+	quickSearch(qsfield);
+}
+
+function redoQS(){
+	showAll();
+	quickSearch(qsfield);
+}
+-->
+</script>
+<style type="text/css">
+body { background-color: white; font-family: "Trebuchet MS", Arial, sans-serif; font-size: 12px; line-height: 1.2; padding: 1em; }
+
+#qs { width: auto; border-style: solid; border-color: gray; border-width: 1px 1px 0px 1px; padding: 0.5em 0.5em; display:none;  }
+#qs form { padding: 0px; margin: 0px; }
+#qs form p { padding: 0px; margin: 0px; }
+
+.invalidsearch { background-color: red; }
+
+table { border: 1px gray solid; width: 100%; empty-cells: show; }
+th, td { border: 1px gray solid; padding: 0.5em; vertical-align: top;  }
+td { text-align: left; vertical-align: top; }
+th { background-color: #EFEFEF; }
+
+td a, td a:hover { color: navy; font-weight: bold; }
+
+tr.noshow { display: none;}
+</style>
+</head>
+<body>
+
+<div id="qs"><form action=""><p>QuickSearch: <input type="text" name="qsfield" id="qsfield" autocomplete="off" title="Allows plain text as well as RegExp searches" /><input type="button" onclick="clearQS()" value="clear" />  Number of matching entries: <span id="stat">0</span>.</p></form></div>
+<table id="qstable" border="1">
+<thead><tr><th width="20%">Author</th><th width="30%">Title</th><th width="5%">Year</th><th width="30%">Journal/Proceedings</th><th width="10%">Reftype</th><th width="5%">DOI/URL</th></tr></thead>
 <tbody>
\ No newline at end of file
diff --git a/src/resource/layout/tablerefs/tablerefs.end.layout b/src/resource/layout/tablerefs/tablerefs.end.layout
index dde4022..c233451 100644
--- a/src/resource/layout/tablerefs/tablerefs.end.layout
+++ b/src/resource/layout/tablerefs/tablerefs.end.layout
@@ -1,12 +1,12 @@
-</tbody>
-</table>
-
-<p>
- <small>Created by <a href="http://jabref.sourceforge.net">JabRef</a> on \format[CurrentDate]{dd/MM/yyyy}.</small>
-</p>
-
-</body>
-</html>
-
-<!-- File generated by JabRef; Export Filter written by Mark Schenk -->
-
+</tbody>
+</table>
+
+<p>
+ <small>Created by <a href="http://jabref.sourceforge.net">JabRef</a> on \format[CurrentDate]{dd/MM/yyyy}.</small>
+</p>
+
+</body>
+</html>
+
+<!-- File generated by JabRef; Export Filter written by Mark Schenk -->
+
diff --git a/src/resource/layout/tablerefsabsbib/tablerefsabsbib.begin.layout b/src/resource/layout/tablerefsabsbib/tablerefsabsbib.begin.layout
index fb955c8..a666afd 100644
--- a/src/resource/layout/tablerefsabsbib/tablerefsabsbib.begin.layout
+++ b/src/resource/layout/tablerefsabsbib/tablerefsabsbib.begin.layout
@@ -1,221 +1,335 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html lang="en">
-<head>
-<title>JabRef References output</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-<script type="text/javascript">
-<!--
-// QuickSearch script for tables
-//
-// Copyright (c) 2006, Mark Schenk
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-
-// Some features:
-// + combination of CSS/JavaScript degrades nicely
-// + easy to set number of columns to search
-// + allows RegExp searches
-//   e.g. to search for entries between 1980 and 1989, type:  198[0-9]
-//   e.g. for any entry ending with 'symmetry', type:  symmetry$
-//   e.g. for all reftypes that are books: ^book$, or ^article$
-// + easy toggling of Abstract/Review/BibTeX
-
-if (window.opera) { 
-	document.addEventListener("load",initSearch,false) } 
-else if (window.addEventListener) {
-	window.addEventListener("load",initSearch,false) }
-else if (window.attachEvent) {
-	window.attachEvent("onload", initSearch); }
-
-function initSearch() {
-	// basic object detection
-	if(!document.getElementById || !document.getElementsByTagName) { return; }
-
-	// check if QuickSearch table AND search area is present 
-	if (!document.getElementById('qstable')||!document.getElementById('qs')) { return; }
-
-	// give id of the table that has QuickSearch
-	// is global variable on purpose
-	searchTable = document.getElementById('qstable');
-	
-	setStatistics(-1)
-
-	document.getElementById('qs').style.display = 'block';
-	document.getElementById('qsfield').onkeyup = testEvent;
-}
-
-function quickSearch(tInput){
-	searchText = new RegExp(tInput.value,"i");
-	var allRows = searchTable.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
-	var inRows = new Array();
-
-	for (var i=0, k=0; i<allRows.length;i++) {
-		if (allRows[i].className.indexOf('entry') != -1) {
-	       	inRows[k++] = allRows[i];
-		} else if (allRows[i].className.indexOf('noshow') == -1) {
-		allRows[i].className = allRows[i].className + ' noshow';
-		}
-	}
-
-	// find/set number of searchable columns
-	// by default script searches all columns
-	var cols = searchTable.getElementsByTagName('thead')[0].getElementsByTagName('th').length;
-	// to set a fixed number of columns, uncomment next line
-	// var cols = 4  // search the left 'cols' columns
-
-	// count number of hits
-	var hits = 0;
-
-	// start looping through all rows
-	for (var i = 0; cRow = inRows[i]; i++){
-	
-	inCells = cRow.getElementsByTagName('td');
-	var gevonden = false; 
-  
-	for (var j=0; j<cols; j++) { // only first 'cols' columns
-		cCell = inCells[j];
-		var t = cCell.innerText?cCell.innerText:getTextContent(cCell);
-		if ((tInput.value.length == 0) || (t.search(searchText) != -1)){ gevonden=true; } 
-	}
-
-	gevonden == true?cRow.className = 'entry show':cRow.className = 'entry noshow';
-	gevonden == true?hits++:hits=hits;
-	}
-
-	// update statistics
-	setStatistics(hits)
-}
-
-function toggleInfo(articleid,info) {
-
-	var entry = document.getElementById(articleid);
-	var abs = document.getElementById('abs_'+articleid);
-	var rev = document.getElementById('rev_'+articleid);
-	var bib = document.getElementById('bib_'+articleid);
-	
-	if (abs && info == 'abstract') {
-		if(abs.className.indexOf('abstract') != -1) {
-		abs.className.indexOf('noshow') == -1?abs.className = 'abstract noshow':abs.className = 'abstract';
-		}
-	} else if (rev && info == 'review') {
-		if(rev.className.indexOf('review') != -1) {
-		rev.className.indexOf('noshow') == -1?rev.className = 'review noshow':rev.className = 'review';
-		}
-	} else if (bib && info == 'bibtex') {
-		if(bib.className.indexOf('bibtex') != -1) {
-		bib.className.indexOf('noshow') == -1?bib.className = 'bibtex noshow':bib.className = 'bibtex';
-		}		
-	} else { 
-		return;
-	}
-
-	// check if one or the other is available
-	var revshow = false;
-	var absshow = false;
-	var bibshow = false;
-	(abs && abs.className.indexOf('noshow') == -1)? absshow = true: absshow = false;
-	(rev && rev.className.indexOf('noshow') == -1)? revshow = true: revshow = false;	
-	(bib && bib.className == 'bibtex')? bibshow = true: bibshow = false;
-	
-	// highlight original entry
-	if(entry) {
-		if (revshow || absshow || bibshow) {
-		entry.className = 'entry highlight show';
-		} else {
-		entry.className = 'entry show';
-		}		
-	}
-	
-	// When there's a combination of abstract/review/bibtex showing, need to add class for correct styling
-	if(absshow) {
-		(revshow||bibshow)?abs.className = 'abstract nextshow':abs.className = 'abstract';
-	} 
-	if (revshow) {
-		bibshow?rev.className = 'review nextshow': rev.className = 'review';
-	}
-	
-}
-
-function setStatistics (hits) {
-	var allRows = searchTable.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
-	var entries = 0
-	for (var i=0; i<allRows.length;i++) {
-		if (allRows[i].className.indexOf('entry') != -1) {
-	       	entries++;
-		}
-	}
-	
-	if(hits < 0) { hits=entries; }
-
-	var stats = document.getElementById('stat');
-	if(stats) { stats.firstChild.data = hits + '/' + entries}
-}
-
-function getTextContent(node) {
-	// Function written by Arve Bersvendsen
-	// http://www.virtuelvis.com
-	
-	if (node.nodeType == 3) {
-	return node.nodeValue;
-	} // text node
-	if (node.nodeType == 1) { // element node
-	var text = [];
-	for (var chld = node.firstChild;chld;chld=chld.nextSibling) {
-		text.push(getTextContent(chld));
-	}
-	return text.join("");
-	} return ""; // some other node, won't contain text nodes.
-}
-
-function testEvent(e){
-	if (!e) var e = window.event;
-	quickSearch(this);
-}
-
-function clearQS() {
-	qsfield = document.getElementById('qsfield'); 
-	qsfield.value = '';
-	quickSearch(qsfield);
-}
-
-function redoQS(){
-	qsfield = document.getElementById('qsfield'); 
-	quickSearch(qsfield);
-}
--->
-</script>
-<style type="text/css">
-body { background-color: white; font-family: "Trebuchet MS", Arial, sans-serif; font-size: 12px; line-height: 1.2; padding: 1em; }
-
-#qs { width: auto; border-style: solid; border-color: gray; border-width: 1px 1px 0px 1px; padding: 0.5em 0.5em; display:none;  }
-#qs form { padding: 0px; margin: 0px; }
-#qs form p { padding: 0px; margin: 0px; }
-
-table { border: 1px gray solid; width: 100%; empty-cells: show; }
-th, td { border: 1px gray solid; padding: 0.5em; vertical-align: top;  }
-td { text-align: left; vertical-align: top; }
-th { background-color: #EFEFEF; }
-
-td a, td a:hover { color: navy; font-weight: bold; }
-
-tr.noshow { display: none;}
-
-tr.highlight td { background-color: #F1F1F1; border-top: 2px black solid; font-weight: bold; }
-tr.abstract td, tr.review td, tr.bibtex td { background-color: #F1F1F1; border-bottom: 2px black solid; }
-tr.nextshow td { border-bottom: 1px gray solid; }
-
-tr.bibtex pre { width: 100%; overflow: auto;}
-
-p.infolinks { margin: 0.5em 0em 0em 0em; padding: 0px; }
-</style>
-</head>
-<body>
-
-<div id="qs"><form action=""><p>QuickSearch: <input type="text" name="qsfield" id="qsfield" autocomplete="off" title="Allows plain text as wel as RegExp searches" /><input type="button" onclick="clearQS()" value="clear" />  Number of matching entries: <span id="stat">0</span>.</p></form></div>
-<table id="qstable" border="1">
-<thead><tr><th width="20%">Author</th><th width="30%">Title</th><th width="5%">Year</th><th width="30%">Journal/Proceedings</th><th width="10%">Reftype</th><th width="5%">DOI/URL</th></tr></thead>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<title>JabRef References output</title>
+<meta http-equiv="Content-Type" content="text/html; charset=\encoding">
+<script type="text/javascript">
+<!--
+// QuickSearch script for JabRef HTML export 
+// Version: 2.0
+//
+// Copyright (c) 2006-2007, Mark Schenk
+//
+// Permission to use, copy, modify, and distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+
+// Some features:
+// + optionally searches Abstracts and Reviews
+// + allows RegExp searches
+//   e.g. to search for entries between 1980 and 1989, type:  198[0-9]
+//   e.g. for any entry ending with 'symmetry', type:  symmetry$
+//   e.g. for all reftypes that are books: ^book$, or ^article$
+//   e.g. for entries by either John or Doe, type john|doe
+// + easy toggling of Abstract/Review
+
+// Acknowledgements:
+// + incorporates speed improvements suggested by Jean-Luc Falcone
+
+// Search settings
+var searchAbstract = true;
+var searchReview = true;
+
+// Speed optimisation introduced some esoteric problems with certain RegExp searches
+// e.g. if the previous search is 200[-7] and the next search is 200[4-7] then the search doesn't work properly until the next 'keyup'
+// hence the searchOpt can be turned off for RegExp adepts
+var searchOpt = true;
+
+if (window.addEventListener) {
+	window.addEventListener("load",initSearch,false); }
+else if (window.attachEvent) {
+	window.attachEvent("onload", initSearch); }
+
+function initSearch() {
+	// basic object detection
+	if(!document.getElementById || !document.getElementsByTagName) { return; }
+	if (!document.getElementById('qstable')||!document.getElementById('qs')) { return; }
+
+	// find QS table and appropriate rows
+	searchTable = document.getElementById('qstable');
+	var allRows = searchTable.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
+
+	// split all rows into entryRows and infoRows (e.g. abstract, review, bibtex)
+	entryRows = new Array();
+	infoRows = new Array();
+
+	for (var i=0, k=0, j=0; i<allRows.length;i++) {
+		if (allRows[i].className.indexOf('entry') != -1) {
+			entryRows[j++] = allRows[i];
+		} else {
+			infoRows[k++] = allRows[i];		
+		}
+	}
+
+	//number of entries and rows
+	numRows = allRows.length;
+	numEntries = entryRows.length;
+	numInfo = infoRows.length;
+
+	//find the query field
+	qsfield = document.getElementById('qsfield');
+
+	// previous search term; used for speed optimisation
+	prevSearch = '';
+
+	//find statistics location
+	stats = document.getElementById('stat');
+	setStatistics(-1);
+
+	// shows the searchfield
+	document.getElementById('qs').style.display = 'block';
+	document.getElementById('qsfield').onkeyup = testEvent;
+}
+
+function quickSearch(tInput){
+
+	 if (tInput.value.length == 0) {
+		showAll();
+		setStatistics(-1);
+		qsfield.className = '';
+		return;
+	} else {
+		// only search for valid RegExp
+		try {
+			var searchText = new RegExp(tInput.value,"i")
+			closeAllInfo();
+			qsfield.className = '';
+		}
+		catch(err) {
+			prevSearch = tInput.value;
+			qsfield.className = 'invalidsearch';
+			return;
+		}
+	}
+	
+	// count number of hits
+	var hits = 0;
+
+	// start looping through all entry rows
+	for (var i = 0; cRow = entryRows[i]; i++){
+
+		// only show search the cells if it isn't already hidden OR if the search term is getting shorter, then search all
+		// some further optimisation is possible: if the search string is getting shorter, and the row is already visible, skip it. Then be careful with hits!
+		if(!searchOpt || cRow.className.indexOf('noshow')==-1 || tInput.value.length <= prevSearch.length){
+			var found = false; 
+
+			var inCells = cRow.getElementsByTagName('td');
+			var numCols = inCells.length;
+				
+			for (var j=0; j<numCols; j++) {
+				cCell = inCells[j];
+				var t = cCell.innerText?cCell.innerText:getTextContent(cCell);
+				if (t.search(searchText) != -1){ 
+					found=true; 
+					break;
+				} 
+			}
+
+			// look for further hits in Abstract and Review
+			if(!found) {
+				var articleid = cRow.id;
+				if(searchAbstract && (abs = document.getElementById('abs_'+articleid))) {
+					if (getTextContent(abs).search(searchText) != -1){ found=true; } 
+				}
+				if(searchReview && (rev = document.getElementById('rev_'+articleid))) {
+					if (getTextContent(rev).search(searchText) != -1){ found=true; } 
+				}
+			}
+			
+			if(found) {
+				cRow.className = 'entry show';
+				hits++;
+			} else {
+				cRow.className = 'entry noshow';
+			}
+		}
+	}
+
+	// update statistics
+	setStatistics(hits)
+	
+	// set previous search value
+	prevSearch = tInput.value;
+}
+
+function toggleInfo(articleid,info) {
+
+	var entry = document.getElementById(articleid);
+	var abs = document.getElementById('abs_'+articleid);
+	var rev = document.getElementById('rev_'+articleid);
+	var bib = document.getElementById('bib_'+articleid);
+	
+	if (abs && info == 'abstract') {
+		if(abs.className.indexOf('abstract') != -1) {
+		abs.className.indexOf('noshow') == -1?abs.className = 'abstract noshow':abs.className = 'abstract';
+		}
+	} else if (rev && info == 'review') {
+		if(rev.className.indexOf('review') != -1) {
+		rev.className.indexOf('noshow') == -1?rev.className = 'review noshow':rev.className = 'review';
+		}
+	} else if (bib && info == 'bibtex') {
+		if(bib.className.indexOf('bibtex') != -1) {
+		bib.className.indexOf('noshow') == -1?bib.className = 'bibtex noshow':bib.className = 'bibtex';
+		}		
+	} else { 
+		return;
+	}
+
+	// check if one or the other is available
+	var revshow = false;
+	var absshow = false;
+	var bibshow = false;
+	(abs && abs.className.indexOf('noshow') == -1)? absshow = true: absshow = false;
+	(rev && rev.className.indexOf('noshow') == -1)? revshow = true: revshow = false;	
+	(bib && bib.className == 'bibtex')? bibshow = true: bibshow = false;
+	
+	// highlight original entry
+	if(entry) {
+		if (revshow || absshow || bibshow) {
+		entry.className = 'entry highlight show';
+		} else {
+		entry.className = 'entry show';
+		}		
+	}
+	
+	// When there's a combination of abstract/review/bibtex showing, need to add class for correct styling
+	if(absshow) {
+		(revshow||bibshow)?abs.className = 'abstract nextshow':abs.className = 'abstract';
+	} 
+	if (revshow) {
+		bibshow?rev.className = 'review nextshow': rev.className = 'review';
+	}
+	
+}
+
+function setStatistics (hits) {
+	if(hits < 0) { hits=numEntries; }
+	if(stats) { stats.firstChild.data = hits + '/' + numEntries}
+}
+
+function getTextContent(node) {
+	// Function written by Arve Bersvendsen
+	// http://www.virtuelvis.com
+	
+	if (node.nodeType == 3) {
+	return node.nodeValue;
+	} // text node
+	if (node.nodeType == 1) { // element node
+	var text = [];
+	for (var chld = node.firstChild;chld;chld=chld.nextSibling) {
+		text.push(getTextContent(chld));
+	}
+	return text.join("");
+	} return ""; // some other node, won't contain text nodes.
+}
+
+function showAll(){
+	// first close all abstracts, reviews, etc.
+	closeAllInfo();
+
+	for (var i = 0; i < numEntries; i++){
+		entryRows[i].className = 'entry show'; 
+	}
+}
+
+function closeAllInfo(){
+	for (var i=0; i < numInfo; i++){
+		if (infoRows[i].className.indexOf('noshow') ==-1) {
+			infoRows[i].className = infoRows[i].className + ' noshow';
+		}
+	}
+}
+
+function testEvent(e){
+	if (!e) var e = window.event;
+	quickSearch(this);
+}
+
+function clearQS() {
+	qsfield.value = '';
+	quickSearch(qsfield);
+}
+
+function redoQS(){
+	showAll();
+	quickSearch(qsfield);
+}
+
+// Search Settings
+
+function toggleQSettingsDialog() {
+
+	var qssettings = document.getElementById('qssettings');
+
+	if(qssettings.className.indexOf('active')==-1) {
+		qssettings.className = 'active';
+
+		var absCheckBox = document.getElementById('searchabs');
+		var revCheckBox = document.getElementById('searchrev');
+		if(searchAbstract == true) { absCheckBox.checked = 'checked'; }
+		if(searchReview == true) { revCheckBox.checked = 'checked'; }
+
+	} else {
+		qssettings.className= '';
+	}
+}
+
+function toggleQSetting(setting) {
+
+	if(setting=='abs') { searchAbstract = !searchAbstract; }
+	if(setting=='rev') { searchReview = !searchReview; }
+
+	redoQS()
+}
+-->
+</script>
+<style type="text/css">
+body { background-color: white; font-family: "Trebuchet MS", Arial, sans-serif; font-size: 12px; line-height: 1.2; padding: 1em; }
+
+#qs { width: auto; border-style: solid; border-color: gray; border-width: 1px 1px 0px 1px; padding: 0.5em 0.5em; display:none; position:relative; }
+#qs form { padding: 0px; margin: 0px; }
+#qs form p { padding: 0px; margin: 0px; }
+
+.invalidsearch { background-color: red; }
+
+table { border: 1px gray solid; width: 100%; empty-cells: show; }
+th, td { border: 1px gray solid; padding: 0.5em; vertical-align: top;  }
+td { text-align: left; vertical-align: top; }
+th { background-color: #EFEFEF; }
+
+td a, td a:hover { color: navy; font-weight: bold; }
+
+tr.noshow { display: none;}
+
+tr.highlight td { background-color: #F1F1F1; border-top: 2px black solid; font-weight: bold; }
+tr.abstract td, tr.review td, tr.bibtex td { background-color: #F1F1F1; border-bottom: 2px black solid; }
+tr.nextshow td { border-bottom: 1px gray solid; }
+
+tr.bibtex pre { width: 100%; overflow: auto;}
+
+p.infolinks { margin: 0.5em 0em 0em 0em; padding: 0px; }
+
+#qssettings { padding: 0.5em; position: absolute; top: 0.2em; right: 0.2em; border: 1px gray solid; background-color: white; display: block; }
+#qssettings p { font-weight: bold; cursor: pointer; }
+#qssettings ul { display: none; list-style-type: none; padding-left: 0; margin: 0; }
+#qssettings.active ul { display: block; }
+</style>
+</head>
+<body>
+
+<div id="qs">
+	<form action="">
+	<p>QuickSearch: <input type="text" name="qsfield" id="qsfield" autocomplete="off" title="Allows plain text as well as RegExp searches" /><input type="button" onclick="clearQS()" value="clear" />  Number of matching entries: <span id="stat">0</span>.</p>
+	<div id="qssettings">
+		<p onclick="toggleQSettingsDialog()">Search Settings</p>
+		<ul>
+		<li><label><input type="checkbox" id="searchabs" onclick="toggleQSetting('abs')"> search abstract</label></li>
+		<li><label><input type="checkbox" id="searchrev" onclick="toggleQSetting('rev')"> search review</label></li>
+		</ul>
+	</div>
+	</form>
+</div>
+<table id="qstable" border="1">
+<thead><tr><th width="20%">Author</th><th width="30%">Title</th><th width="5%">Year</th><th width="30%">Journal/Proceedings</th><th width="10%">Reftype</th><th width="5%">DOI/URL</th></tr></thead>
 <tbody>
\ No newline at end of file
diff --git a/src/resource/layout/tablerefsabsbib/tablerefsabsbib.end.layout b/src/resource/layout/tablerefsabsbib/tablerefsabsbib.end.layout
index 760fba8..a55ea28 100644
--- a/src/resource/layout/tablerefsabsbib/tablerefsabsbib.end.layout
+++ b/src/resource/layout/tablerefsabsbib/tablerefsabsbib.end.layout
@@ -1,12 +1,12 @@
-</tbody>
-</table>
-
-<p>
- <small>Created by <a href="http://jabref.sourceforge.net">JabRef</a> on \format[CurrentDate]{dd/MM/yyyy}.</small>
-</p>
-
-</body>
-</html>
-
-<!-- File generated by JabRef ; Export Filter written by Mark Schenk -->
-
+</tbody>
+</table>
+
+<p>
+ <small>Created by <a href="http://jabref.sourceforge.net">JabRef</a> on \format[CurrentDate]{dd/MM/yyyy}.</small>
+</p>
+
+</body>
+</html>
+
+<!-- File generated by JabRef ; Export Filter written by Mark Schenk -->
+
diff --git a/src/resource/layout/tablerefsabsbib/tablerefsabsbib.layout b/src/resource/layout/tablerefsabsbib/tablerefsabsbib.layout
index 428bc52..1a10ee5 100644
--- a/src/resource/layout/tablerefsabsbib/tablerefsabsbib.layout
+++ b/src/resource/layout/tablerefsabsbib/tablerefsabsbib.layout
@@ -4,7 +4,7 @@
 	<td>\year</td>
 	<td>\format[HTMLChars]{\journal}\format[HTMLChars]{\booktitle}\begin{school}<i>School</i>: \format[HTMLChars]{\school}\end{school}  </td>
 	<td>\format[ToLowerCase]{\bibtextype}</td>
-	<td>\begin{doi}<a href="\format[DOICheck]{\doi}">DOI</a>\end{doi}\begin{url}<a href="\format{\url}">URL</a>\end{url}  </td>
+	<td>\begin{doi}<a href="\format[DOICheck]{\doi}">DOI</a>\end{doi}\begin{url}<a href="\format[HTMLChars]{\url}">URL</a>\end{url}  </td>
 </tr>\begin{abstract}
 <tr id="abs_\format{\bibtexkey}" class="abstract noshow">
 	<td colspan="6"><b>Abstract</b>: \format[HTMLChars]{\abstract}</td>
@@ -13,23 +13,22 @@
 	<td colspan="6"><b>Review</b>: \format[HTMLChars]{\review}</td>
 </tr>\end{review}
 <tr id="bib_\format{\bibtexkey}" class="bibtex noshow">
-<td colspan="6">
-<b>BibTeX</b>:
+<td colspan="6"><b>BibTeX</b>:
 <pre>
 @\format[ToLowerCase]{\bibtextype}{\bibtexkey,\begin{author}
-  author = {\author}\end{author}\begin{title},
-  title = {\title}\end{title}\begin{booktitle},
-  booktitle = {\booktitle}\end{booktitle}\begin{journal},
-  journal = {\journal}\end{journal}\begin{publisher},
-  publisher = {\publisher}\end{publisher}\begin{school},
-  school = {\school}\end{school}\begin{year},
-  year = {\year}\end{year}\begin{volume},
-  volume = {\volume}\end{volume}\begin{number},
-  number = {\number}\end{number}\begin{pages},
-  pages = {\pages}\end{pages}\begin{edition},
-  edition = {\edition}\end{edition}\begin{note},
-  note = {\note}\end{note}\begin{url},
-  url = {\url}\end{url}\begin{doi},
+  author = {\format[HTMLChars]{\author}}\end{author}\begin{title},
+  title = {\format[HTMLChars]{\title}}\end{title}\begin{booktitle},
+  booktitle = {\format[HTMLChars]{\booktitle}}\end{booktitle}\begin{journal},
+  journal = {\format[HTMLChars]{\journal}}\end{journal}\begin{publisher},
+  publisher = {\format[HTMLChars]{\publisher}}\end{publisher}\begin{school},
+  school = {\format[HTMLChars]{\school}}\end{school}\begin{year},
+  year = {\format[HTMLChars]{\year}}\end{year}\begin{volume},
+  volume = {\format[HTMLChars]{\volume}}\end{volume}\begin{number},
+  number = {\format[HTMLChars]{\number}}\end{number}\begin{pages},
+  pages = {\format[HTMLChars]{\pages}}\end{pages}\begin{edition},
+  edition = {\format[HTMLChars]{\edition}}\end{edition}\begin{note},
+  note = {\format[HTMLChars]{\note}}\end{note}\begin{url},
+  url = {\format[HTMLChars]{\url}}\end{url}\begin{doi},
   doi = {\format[DOICheck]{\doi}}\end{doi}
 }
 </pre></td>
diff --git a/src/resource/layout/text.layout b/src/resource/layout/text.layout
index f3637cd..525cab8 100755
--- a/src/resource/layout/text.layout
+++ b/src/resource/layout/text.layout
@@ -1,10 +1,10 @@
-@\bibtextype{\bibtexkey,
-\begin{author}  author = {\author},\end{author}
-\begin{title}  title  = {\format[RemoveBrackets]{\title}},\end{title}
-\begin{journal}  journal = {\journal},\end{journal}
-  year   = {\year},
-  number = {\number},
-  url    = {\url},
-\begin{doi}  doi = {\doi},\end{doi}
-  const  = {\\ text}
-}
+@\bibtextype{\bibtexkey,
+\begin{author}  author = {\author},\end{author}
+\begin{title}  title  = {\format[RemoveBrackets]{\title}},\end{title}
+\begin{journal}  journal = {\journal},\end{journal}
+  year   = {\year},
+  number = {\number},
+  url    = {\url},
+\begin{doi}  doi = {\doi},\end{doi}
+  const  = {\\ text}
+}
diff --git a/src/txt/README b/src/txt/README
index f90b64c..a5c961a 100644
--- a/src/txt/README
+++ b/src/txt/README
@@ -1,11 +1,6 @@
 
-JabRef 2.3b
------------
-
-Beta notice:
-
-This is an early beta version of JabRef 2.3, and as such should be used
-primarily for testing purposes.
+JabRef 2.3b2
+------------
 
 
 Introduction:
@@ -85,7 +80,40 @@ appear in your chosen languages.
 
 Change log:
 
-2.3b1   
+2.3b2
+    - When user chooses to save to an existing file, and answers that the file should not be
+      overwritten, a new file dialog now appears instead of the operation cancelling.
+    - Removed antialias setting for main table, because it interferes with proper rendering
+      on LCDs when running under JRE 6. Removed non-optional antialias settings for entry
+      editor for the same reason.
+    - Changed external link handling so remote (http) links can be sent to the external
+      application. Applications like Evince and Gimp can open remote links.
+    - Replaced Simle HTML export filter with improved version by Mark Schenk.
+    - Introduced ParamLayoutFormatter interface for layout formatters that can take an
+      argument by the following syntax: \format[MyFormatter(argument)]{\field}
+      Implementing classes contain a setArgument(String) method that receives the argument
+      (if any) before the format() method is called.
+    - Timestamp and owner fields are now set also when appending a bib file, and new options
+      have been introduced to control whether imported/appended/pasted entries should have
+      these fields overwritten if already set.
+    - Added operations for adding file links in import inspection window, and made file
+      and URL icons in the table clickable.
+    - Removed PDF and PS columns and operations in import inspection window (replaced by
+      operations on the "file" field).
+    - File field column in main table now shows file type icon instead of generic icon. 
+    - Modified Endnote export to take "file" field into account, and to resolve full
+      paths to PDF files.
+    - Added "Auto" button to automatically set "owner" field to the default username. 
+    - Added \encoding tag for begin/end layouts in export filters to print the name of the
+      character encoding used for the export. The tag is not available in entry layouts.
+    - Added \% as a supported LaTeX command, producing '%'.
+    - Fixed bug in HTMLChars: commands like {\aa} and {\o} were not processed properly, even
+      though defined in Globals.HTMLCHARS.
+    - Fixed bug that made it possible to accidentally close database without saving, when error
+      occurs during the save operation.
+2.3b
+	- Added % at start of signature text in BibTeX output. Parser now reads both
+	  old and new style.
 	- Added MIS Quarterly export format.
     - Added support for COPAC file format.
 	- Added RemoveTilde LayoutFormatter to deal with Bibtex non-breakable spaces.
@@ -103,6 +131,8 @@ Change log:
 	- Improved handling of external links. The 'file' field can now specify a list
 	  of external links, and arbitrary file types are supported. Old-style PDF and
 	  PS links can be moved automatically into the 'file' field.
+	- Fixed minor bug in importing preferences. General fields for entry editors are
+	  now updated without restarting JabRef.
 	- Fixed bug in RIS and Refer/Endnote imports. Entries with editors but no authors
 	  are now imported properly.
 	- Fixed missing export formatter AuthorFirstFirstCommas.
diff --git a/src/txt/TODO b/src/txt/TODO
index afd00e3..abb43dd 100644
--- a/src/txt/TODO
+++ b/src/txt/TODO
@@ -8,31 +8,30 @@ Chris:
   * Allow search relativ to bibtex-file
   
 Morten:
-* Help information for external file links
-* Add "Copy all externally linked files for this set of entries"-feature. Basic functionality
-  in AccessLinksForEntries. 
-* //Enable icon customization of external file types.
-* //Problem with ArrayIndexOutOfRange exception in DuplicateSearch - solved?
-	// - strange performance bug in creation of duplicate resolver dialog?
-* // Fix Save/Export file dialog stuff
-
-* Look up Vista problem with opening file chooser:
-Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException:
-3184
+* Look into "DOS short path" bug report.
+* MODS export does not support exporting only a set of entries.
+* [OK? Extension fields only] MODS exports "file" in raw form.
+* BibteXML exports both "url", "pdf" and url/pdf from "file". May give doubles.
+  
+* [POSTPONE] Problem setting today with Microba calendar.
+* [POSTPONE] Icon selection for external file types: - select arbitrary images from disk?
+* Improve Help information for external file links
+* [POSTPONE] Add "Copy all externally linked files for this set of entries"-feature.
+  Basic functionality in AccessLinksForEntries.
+* [POSTPONE] Fix Save/Export file dialog stuff
+* [POSTPONE] Look up Vista problem with opening file chooser:
+    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException:
+    3184
        at sun.awt.shell.Win32ShellFolder2.getFileChooserIcon(Unknown Source)
        at sun.awt.shell.Win32ShellFolderManager2.get(Unknown Source)
        at sun.awt.shell.ShellFolder.get(Unknown Source)
        at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$LazyWindowsIcon.createVal
-ue(Unknown Source)
+    ue(Unknown Source)
        at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
        at javax.swing.UIDefaults.get(Unknown Source)
        at javax.swing.MultiUIDefaults.get(Unknown Source)
        at javax.swing.UIDefaults.getIcon(Unknown Source)
        at javax.swing.UIManager.getIcon(Unknown Source)
        at javax.swing.plaf.basic.BasicFileChooserUI.installIcons(Unknown Source)
-       at javax.swing.plaf.basic.BasicFileChooserUI.installDefaults(Unknown Source)
-       at javax.swing.plaf.basic.BasicFileChooserUI.installUI(Unknown Source)
-       at javax.swing.plaf.metal.MetalFileChooserUI.installUI(Unknown Source)
-       at javax.swing.JComponent.setUI(Unknown Source)
-       at net.sf.jabref.JabRefFileChooser.setUI(Unknown Source)
+
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jabref.git



More information about the pkg-java-commits mailing list