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.