Version 3.5.2

Die Version 3.5.2 (gestern frisch hochgeladen) hat neben diversen Bugfixes (hauptsächlich im Zuge des Upgrades auf LuaTeX 1.0.7) wieder Neuerungen erhalten.

break-below in Tabellen

Bisher gab es keine einfache Möglichkeit, das Verhalten break-below="no" in Tabellenzeilen mit Tabellenlinien zu verknüpfen. Seit der Version 3.5.2 wird das nun auch in Tabellenlinien beachtet, außerdem kann man nun in Tabellenlinien dieselbe Eigenschaft setzen.

<Layout
  xmlns="urn:speedata.de:2009/publisher/en"
  xmlns:sd="urn:speedata:2009/publisher/functions/en">
  <Pageformat height="5cm" width="7cm"/>
  <Trace grid="no" />

  <SetGrid height="12pt" nx="5" />

  <Pagetype name="foo" test="true()">
    <Margin left="1cm" right="1cm" top="1cm" bottom="1cm"/>
    <PositioningArea name="tbl">
      <PositioningFrame height="8" width="2" row="1" column="1"/>
      <PositioningFrame height="8" width="2" row="1" column="4"/>
    </PositioningArea>
  </Pagetype>

  <Record element="data">
    <PlaceObject area="tbl">
      <Table>
        <Loop select="10">
          <Tr break-below="no">
            <Td><Paragraph><Value>tablerow</Value></Paragraph></Td>
          </Tr>
          <Tablerule rulewidth="2pt" color="green"/>
        </Loop>
      </Table>
    </PlaceObject>
  </Record>

</Layout>

Ab sofort kann man steuern, ob Tabellenlinien unterhalb einer Zelle bleiben sollen, oder nicht. Tablerow beachtet nun das darüberliegende break-below='no'. Im rechten Fall ist die Tabellenlinie immer unterhalb der Zeile, ggf. wird ein Umbruch vorher eingefügt.

CID Keyed Fonts

Eine »Errungenschaft« der neuen LuaTeX-Version ist, dass sie nicht mehr bei CID-keyed Schriftdateien abstürzt.

Das hat in der Vergangenheit die Benutzung der Noto Sans verhindert, zumindest in der Ausführung, die man auf der Webseite herunterladen kann.

Ich wollte heute nur mal kurz die Schriftart testen, um festzustellen, dass die ganz anders aufgebaut ist, als normale CFF-basierte OpenType Fonts. Hier werden die Zeichen in einzelnen Kind-Schriftarten gekapselt, ähnlich wie bei .ttc, den TrueType Collections.

Insofern musste ich den Fontloader etwas anpassen, aber das Ergebnis ist wieder ein wichtiger (wenn auch kleiner) Schritt in Richtung Weltherrschaft.

<Layout
  xmlns="urn:speedata.de:2009/publisher/en"
  xmlns:sd="urn:speedata:2009/publisher/functions/en">

  <LoadFontfile name="NSR" filename="NotoSansCJKsc-Regular.otf" />
  <DefineFontfamily name="text" fontsize="10" leading="12">
    <Regular fontface="NSR"/>
  </DefineFontfamily>

  <Record element="data">
    <PlaceObject>
      <Textblock>
        <Paragraph>
          <Value>NotoSansCJKsc-Regular 燉牛肉很好吃</Value>
        </Paragraph>
      </Textblock>
    </PlaceObject>
  </Record>


</Layout>

CID-Keyed Font Noto beinhaltet haufenweise Glyphen

Das wird in der Version 3.5.2 (und dann auch in der Version 3.6) enthalten sein.

Neue Version 3.4.0

Es gibt mal wieder eine neue »stabile« Version. Es stehen ein paar größere Änderungen im Publisher an1, daher friere ich den aktuellen Stand ein. Wer die Entwicklungsversionen verfolgt hat, wird keine Überraschungen feststellen. Hier ein paar Punkte, die sich seit der letzten stabilen Version im März getan haben. Nachzulesen natürlich auch im Changelog. Seit dem letzten Stabilen Release wurden 14 Entwicklerversionen erzeugt. Update auf LuaTeX Version 1.0.7. Hier gibt es minimale visuelle Änderungen.

Happy Birthday XML

XML ist 20 Jahre alt geworden. Foto: Steven Pemberton

Im Jahr 1998 wurde XML vom W3C veröffentlicht. Auf der letzten Balisage (Markup-Konferenz) ist dieses Foto entstanden. Zeit für ein kleines persönliches Resümee, da ich beruflich ja sehr intensiv mit XML zu tun habe.

Neue Preisstruktur

Nach gefühlten Ewigkeiten habe ich die Preise für den Support des Publishers geändert. Eines vorweg: eine Preiserhöhung hat es nicht gegeben, sondern nur eine Änderung der Pakte bzw. ein neues Paket ist hinzugekommen. Doch besser der Reihe nach: Die Preise sind transparent und auf der Webseite zu sehen. Ich mag dieses »für Preise bitte anrufen« nicht, und ich denke, das trifft auf viele zu. Die OpenSource-Version wird immer kostenlos zu haben sein.

Neue Lua-Runtime

Version 3.3.10 wird eine neue Lua-Runtime für die Daten-Vorverarbeitung (siehe Lua-Filter im Handbuch). Der Anwender sollte hiervon eigentlich nichts merken, bis auf ein paar Änderungen, die ich im gleichen Atemzug durchgeführt habe:

  • Die Bibliotheken müssen mit require() geladen werden.
xml = require("xml")
tbl = {
    ["_type"] = "element",
    ["_name"] = "data",
    {
       ["_type"] = "element",
       ["_name"] = "child",
       "Hallo Welt",
    }
}


ok, msg = xml.encode_table(tbl)
if not ok then
    print(msg)
    os.exit(-1)
end
  • Es wird nur Lua Version 5.1 unterstützt, nicht wie bisher 5.2
  • Dafür werden auch die Lua-Patterns unterstützt (z.B. string.gsub())
  • Die CSV-Bibliothek hat andere Rückgabewerte

Neue stabile Version 3.2.0

Nach gut einem halben Jahr Entwicklung ist es wieder an der Zeit eine neue Stabile Version (3.2) hochzuladen. Verfügbar ist sie wie immer als fertige Pakete für Mac, Linux und Windows unter https://download.speedata.de/ und als Quellcode auf GitHub. Neuerungen sind Viele Fehlerkorrekturen, wie immer (ich bin erstaunt, wie viele Fehler die Anwender so finden, aber meist sind das doch sehr obskure Kombinationen von Eingabedaten…) Lua basiertes Preprocessing. Eine ausführliche Beschreibung dazu gibt es im Handbuch.

So wird das Handbuch erzeugt

Lange habe ich nach einem halbwegs vernünftigen Workflow gesucht, um mein Handbuch zu erstellen. Inzwischen ist es ja online verfügbar, daher ist es jetzt eine gute Gelegenheit, die benutzten Tools aufzuzeigen. Doch zuvor gibt es ein paar Hintergründe, warum ich diesen Weg gewählt habe. Notwendige Eigenschaften des Workflows OpenSource-Tools: alle Komponenten und Konverter müssen frei verfügbar sein. Das ist mir sehr wichtig, nicht nur, weil ich selber ein großer Verfechter des OpenSource-Gedankens bin.

Aufzählungsliste nachahmen

Der Publisher hat (derzeit) noch keine besonderen Fähigkeiten, Aufzählungslisten zu erstellen. Das liegt auch daran, dass sie sich recht leicht über Textformate nachahmen lassen.

Dafür definiert man ein Textformat mit hängendem Einzug und benutzt das mit dem Text mit den Aufzählungszeichen:

<Layout xmlns="urn:speedata.de:2009/publisher/en"
  xmlns:sd="urn:speedata:2009/publisher/functions/en">

  <DefineTextformat name="li" indentation="6pt" rows="-1"/>
  <Record element="data">
    <PlaceObject>
      <Textblock textformat="li">
        <Paragraph><Value></Value><Value select="sd:dummytext()"></Value></Paragraph>
        <Paragraph><Value>• Two</Value></Paragraph>
        <Paragraph><Value>• Three</Value></Paragraph>
      </Textblock>
    </PlaceObject>
  </Record>

</Layout>

Aufzählungen können über Tabellen simuliert werden.