Index: trunk/scripts/BuildProjectionDefinitions.java
===================================================================
--- trunk/scripts/BuildProjectionDefinitions.java	(revision 18760)
+++ trunk/scripts/BuildProjectionDefinitions.java	(revision 18801)
@@ -93,5 +93,5 @@
         if (list.isEmpty())
             throw new AssertionError("EPSG file seems corrupted");
-        Pattern badDmsPattern = Pattern.compile("(\\d+(?:\\.\\d+)?d\\d+(?:\\.\\d+)?')(N|S|E|W)");
+        Pattern badDmsPattern = Pattern.compile("(\\d+(?:\\.\\d+)?d\\d+(?:\\.\\d+)?')([NSEW])");
         for (ProjectionDefinition pd : list) {
             // DMS notation without second causes problems with cs2cs, add 0"
@@ -145,42 +145,42 @@
 
         if (printStats) {
-            System.out.println(String.format("loaded %d entries from %s", epsgJosm.size(), JOSM_EPSG_FILE));
-            System.out.println(String.format("loaded %d entries from %s", epsgProj4.size(), PROJ4_EPSG_FILE));
-            System.out.println(String.format("loaded %d entries from %s", esriProj4.size(), PROJ4_ESRI_FILE));
+            System.out.printf("loaded %d entries from %s%n", epsgJosm.size(), JOSM_EPSG_FILE);
+            System.out.printf("loaded %d entries from %s%n", epsgProj4.size(), PROJ4_EPSG_FILE);
+            System.out.printf("loaded %d entries from %s%n", esriProj4.size(), PROJ4_ESRI_FILE);
             System.out.println();
             System.out.println("some entries from proj.4 have not been included:");
-            System.out.println(String.format(" * already in the maintained JOSM list: %d entries", noInJosm));
+            System.out.printf(" * already in the maintained JOSM list: %d entries%n", noInJosm);
             if (noInProj4 > 0) {
-                System.out.println(String.format(" * ESRI already in the standard EPSG list: %d entries", noInProj4));
-            }
-            System.out.println(String.format(" * deprecated: %d entries", noDeprecated));
-            System.out.println(String.format(" * using +proj=geocent, which is 3D (X,Y,Z) and not useful in JOSM: %d entries", noGeocent));
+                System.out.printf(" * ESRI already in the standard EPSG list: %d entries%n", noInProj4);
+            }
+            System.out.printf(" * deprecated: %d entries%n", noDeprecated);
+            System.out.printf(" * using +proj=geocent, which is 3D (X,Y,Z) and not useful in JOSM: %d entries%n", noGeocent);
             if (noEllipsoid > 0) {
-                System.out.println(String.format(" * unsupported ellipsoids: %d entries", noEllipsoid));
+                System.out.printf(" * unsupported ellipsoids: %d entries%n", noEllipsoid);
                 System.out.println("   in particular: " + ellipsoidMap);
             }
             if (noBaseProjection > 0) {
-                System.out.println(String.format(" * unsupported base projection: %d entries", noBaseProjection));
+                System.out.printf(" * unsupported base projection: %d entries%n", noBaseProjection);
                 System.out.println("   in particular: " + baseProjectionMap);
             }
             if (noDatumgrid > 0) {
-                System.out.println(String.format(" * requires data file for vertical datum conversion: %d entries", noDatumgrid));
+                System.out.printf(" * requires data file for vertical datum conversion: %d entries%n", noDatumgrid);
                 System.out.println("   in particular: " + datumgridMap);
             }
             if (noNadgrid > 0) {
-                System.out.println(String.format(" * requires data file for datum conversion: %d entries", noNadgrid));
+                System.out.printf(" * requires data file for datum conversion: %d entries%n", noNadgrid);
                 System.out.println("   in particular: " + nadgridMap);
             }
             if (noOmercNoBounds > 0) {
-                System.out.println(String.format(
-                        " * projection is Oblique Mercator (requires bounds), but no bounds specified: %d entries", noOmercNoBounds));
+                System.out.printf(
+                        " * projection is Oblique Mercator (requires bounds), but no bounds specified: %d entries%n", noOmercNoBounds);
             }
             if (noEquatorStereo > 0) {
-                System.out.println(String.format(" * projection is Equatorial Stereographic (see #15970): %d entries", noEquatorStereo));
+                System.out.printf(" * projection is Equatorial Stereographic (see #15970): %d entries%n", noEquatorStereo);
             }
             System.out.println();
-            System.out.println(String.format("written %d entries from %s", noJosm, JOSM_EPSG_FILE));
-            System.out.println(String.format("written %d entries from %s", noProj4, PROJ4_EPSG_FILE));
-            System.out.println(String.format("written %d entries from %s", noEsri, PROJ4_ESRI_FILE));
+            System.out.printf("written %d entries from %s%n", noJosm, JOSM_EPSG_FILE);
+            System.out.printf("written %d entries from %s%n", noProj4, PROJ4_EPSG_FILE);
+            System.out.printf("written %d entries from %s%n", noEsri, PROJ4_ESRI_FILE);
         }
     }
Index: trunk/scripts/SyncEditorLayerIndex.java
===================================================================
--- trunk/scripts/SyncEditorLayerIndex.java	(revision 18760)
+++ trunk/scripts/SyncEditorLayerIndex.java	(revision 18801)
@@ -70,17 +70,13 @@
  * Compare and analyse the differences of the editor layer index and the JOSM imagery list.
  * The goal is to keep both lists in sync.
- *
- * The editor layer index project (https://github.com/osmlab/editor-layer-index)
- * provides also a version in the JOSM format, but the GEOJSON is the original source
- * format, so we read that.
- *
- * How to run:
- * -----------
- *
- * Main JOSM binary needs to be in classpath, e.g.
- *
- * $ java -cp ../dist/josm-custom.jar SyncEditorLayerIndex
- *
- * Add option "-h" to show the available command line flags.
+ * <p>
+ * The <a href="https://github.com/osmlab/editor-layer-index">editor layer index</a> project
+ * provides also a version in the JOSM format, but the GEOJSON is the original source format, so we read that.
+ * <p>
+ * For running, the main JOSM binary needs to be in classpath, e.g.
+ * <p>
+ * {@code $ java -cp ../dist/josm-custom.jar SyncEditorLayerIndex}
+ * <p>
+ * Add option {@code -h} to show the available command line flags.
  */
 @SuppressWarnings("unchecked")
@@ -294,9 +290,10 @@
     void myprintln(String s) {
         String color;
+        final String escaped = s.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
         if ((color = isSkipString(s)) != null) {
             skip.remove(s);
             if (optionXhtmlBody || optionXhtml) {
                 s = "<pre style=\"margin:3px;color:"+color+"\">"
-                        + s.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;")+"</pre>";
+                        + escaped +"</pre>";
             }
             if (!optionNoSkip) {
@@ -310,5 +307,5 @@
                                 (s.startsWith("!") ? "orange" :
                                     (s.startsWith("~") ? "red" : "brown"))));
-            s = "<pre style=\"margin:3px;color:"+color+"\">"+s.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;")+"</pre>";
+            s = "<pre style=\"margin:3px;color:"+color+"\">"+ escaped +"</pre>";
         }
         if ((s.startsWith("+ ") || s.startsWith("+++ ELI") || s.startsWith("#")) && optionNoEli) {
Index: trunk/scripts/TagInfoExtract.java
===================================================================
--- trunk/scripts/TagInfoExtract.java	(revision 18760)
+++ trunk/scripts/TagInfoExtract.java	(revision 18801)
@@ -90,7 +90,9 @@
  * Run from the base directory of a JOSM checkout:
  * <p>
+ * <pre>
  * java -cp dist/josm-custom.jar TagInfoExtract --type mappaint
  * java -cp dist/josm-custom.jar TagInfoExtract --type presets
  * java -cp dist/josm-custom.jar TagInfoExtract --type external_presets
+ * </pre>
  */
 public class TagInfoExtract {
@@ -245,5 +247,5 @@
                         .build());
                 if (options.outputFile == null) {
-                    System.out.println(writer.toString());
+                    System.out.println(writer);
                 }
             }
Index: trunk/scripts/TaggingPresetSchemeWikiGenerator.java
===================================================================
--- trunk/scripts/TaggingPresetSchemeWikiGenerator.java	(revision 18760)
+++ trunk/scripts/TaggingPresetSchemeWikiGenerator.java	(revision 18801)
@@ -23,5 +23,6 @@
 
 /**
- * This script generates the wiki content for https://josm.openstreetmap.de/wiki/TaggingPresets#Attributes
+ * This script generates the wiki content for <a href="https://josm.openstreetmap.de/wiki/TaggingPresets#Attributes">
+ * TaggingPresets#Attributes</a>
  */
 public final class TaggingPresetSchemeWikiGenerator {
