von Patrick Gundlach |

Inkompatible Änderungen in Version 3

Der Publisher wird in Version 3 (auf die ich gerade hin arbeite) zu den älteren Version inkompatible Eigenschaften haben:

  • Das Regelwerk gibt es nur noch auf Englisch, die deutschsprachige Variante fällt weg
  • Das Verhalten bei PlaceObject, wenn der rechte Rand des Objekts auf den rechten Rand der Seite fällt, ist nun wie folgt: der virtuelle Cursor wird dann auf die nächste Zeile in Spalte 1 gesetzt. Folgender Code zeigt die Änderung (siehe Fehler #105):
<Layout
    xmlns="urn:speedata.de:2009/publisher/en"
    xmlns:sd="urn:speedata:2009/publisher/functions/en">

    <Record element="data">
        <PlaceObject>
            <Textblock>
                <Paragraph>
                    <Value select="sd:dummytext()"></Value>
                </Paragraph>
            </Textblock>
        </PlaceObject>
        <Message select="sd:number-of-columns()"/>
        <Message select="sd:current-column()"/>
    </Record>
</Layout>

In älteren Versionen (bis 2.7.1) ist die aktuelle Spalte 20, während es nur 19 Spalten auf der Seite gibt. Das Verhalten ist offensichtlich Unfug. Zwar technisch einigermaßen erklärbar (der Cursor ist immer rechts neben dem Objekt), aber dennoch sinnlos, da niemand rechts neben den Bereich weiter schreiben will. Ein Workaround bisher war anschließend (nach dem PlaceOjbect) ein

<NextRow rows="1" area="..." />

zu schreiben, um den Cursor an den Anfang der nächsten freien Zeile zu setzen. Dieses Verhalten ist nun eingebaut, wenn der rechte Rand von PlaceObject an den rechten Seitenrand geht.

Hier ergeben sich natürlich Konflikte, wenn man den Workaround wie oben benutzt hat. Daher bleibt einem wohl nichts anders übrig, als die Layouts nach diesen Stellen abzusuchen.

Ich habe lange überlegt, ob ich den Fix einbauen soll, oder nicht. Mein Ziel war eigentlich, niemals das Verhalten des Publishers zu ändern, und wenn doch, durch Einführen neuer Befehle im Layout.

Ich werde wohl einen neuen Befehl einführen mit Kompatibilitätsschaltern:

<Compatibility
   movecursoronplaceobject="yes/no"
  />

Nachtrag 24.9. ab Version 2.7.4 gibt es im Publisher nun den Befehl Compatibility mit dem Schalter movecursoronplaceobject um das alte Verhalten einzuschalten. Eines (fernen) Tages werde ich diesen Schalter herausnehmen, daher sollten die alten Regelwerke doch angepasst werden.