Handbuch durchsuchen:

- Startseite
- Einleitung
- Hallo Welt!
- Grundlagen
  - Erstellen eines Layoutregelwerks
  - Aufbau der Datendatei und des Layoutregelwerks
  - Objekte ausgeben
  - Raster
  - Bereiche auf der Seite (PositioningArea)
  - Dateiorganisation
  - Silbentrennung / Spracheinstellungen
  - Einbinden von Schriftarten
  - Textformate
  - Textformatierung
  - Farben
- Programmierung
- Bilder einbinden
- Tabellen
- Fortgeschrittene Themen
  - Lesezeichen (Bookmarks)
  - Erzeugen von XML-Strukturen
  - Druckausgabe / Schnittmarken
  - CSS
  - Gruppen (virtuelle Objekte)
  - Virtuelle Seiten
  - Rotieren von Inhalten
  - Sortieren von Daten
  - Umfließen von Bildern
  - Seitentypen
  - Starten des Publishers über den Hotfolder
  - Lua-Filter / Datenvorverarbeitung
  - Schemavalidierung
  - Qualitätssicherung (PDF-Vergleich)
  - Fehlersuche / Debugging
  - Servermodus
  - Steuerung des Layouts beim Aufruf des Publishers
  - Bilder mit MetaPost erstellen und einbinden
- Kochbuch
  - Daumenregister
  - Mehrseitige PDF-Dateien einbinden
  - Layoutoptimierung mithilfe von Gruppen
  - Aufzählungslisten nachahmen
  - Verzeichnisse erstellen
  - Inhaltsverzeichnis in einem Durchlauf erstellen
  - Seitenzahlen: Seite x von y
- Installationsanleitung
- Dateinamen im Publisher
- Voreinstellungen im speedata Publisher
- Starten des Publishers über die Kommandozeile
- Konfiguration des Publishers
- Längenangaben und Maßeinheiten
- XPath- und Layoutfunktionen
- Interne Variablen
- XML Editor mit Schema verbinden
  - Visual Studio Code
  - OxygenXML
- Liste der Änderungen
- Glossar
- Kompatibilität mit anderer Software
- Befehlsreferenz
  - A
  - Action
  - AddSearchpath
  - AtPageCreation
  - AtPageShipout
  - AttachFile
  - Attribute
  - B
  - Barcode
  - Bold
  - BoldItalic
  - Bookmark
  - Box
  - Br
  - Case
  - Circle
  - ClearPage
  - Color
  - Column
  - Columns
  - Compatibility
  - Contents
  - Copy-of
  - DefineColor
  - DefineColorprofile
  - DefineFontalias
  - DefineFontfamily
  - DefineGraphic
  - DefineMatter
  - DefineTextformat
  - Element
  - Fallback
  - Fontface
  - ForAll
  - Frame
  - Grid
  - Group
  - Groupcontents
  - HSpace
  - Hyphenation
  - I
  - Image
  - Include
  - Initial
  - InsertPages
  - Italic
  - Layout
  - Li
  - LoadDataset
  - LoadFontfile
  - Loop
  - Makeindex
  - Margin
  - Mark
  - Message
  - NewPage
  - NextFrame
  - NextRow
  - NoBreak
  - Ol
  - Options
  - Otherwise
  - Output
  - Overlay
  - Pageformat
  - Pagetype
  - Paragraph
  - PDFOptions
  - PlaceObject
  - Position
  - PositioningArea
  - PositioningFrame
  - ProcessNode
  - Record
  - Regular
  - Rule
  - SaveDataset
  - SavePages
  - SetGrid
  - SetVariable
  - SortSequence
  - Stylesheet
  - Span
  - Sub
  - Sup
  - Switch
  - Table
  - TableNewPage
  - Tablefoot
  - Tablehead
  - Tablerule
  - Td
  - Text
  - Textblock
  - Tr
  - Trace
  - Transformation
  - U
  - Ul
  - Until
  - URL
  - Value
  - VSpace
  - While

Version 4.10.0
Handbuch durchsuchen

- Startseite
- Einleitung
- Hallo Welt!
- Grundlagen
  - Erstellen eines Layoutregelwerks
  - Aufbau der Datendatei und des Layoutregelwerks
  - Objekte ausgeben
  - Raster
  - Bereiche auf der Seite (PositioningArea)
  - Dateiorganisation
  - Silbentrennung / Spracheinstellungen
  - Einbinden von Schriftarten
  - Textformate
  - Textformatierung
  - Farben
- Programmierung
- Bilder einbinden
- Tabellen
- Fortgeschrittene Themen
  - Lesezeichen (Bookmarks)
  - Erzeugen von XML-Strukturen
  - Druckausgabe / Schnittmarken
  - CSS
  - Gruppen (virtuelle Objekte)
  - Virtuelle Seiten
  - Rotieren von Inhalten
  - Sortieren von Daten
  - Umfließen von Bildern
  - Seitentypen
  - Starten des Publishers über den Hotfolder
  - Lua-Filter / Datenvorverarbeitung
  - Schemavalidierung
  - Qualitätssicherung (PDF-Vergleich)
  - Fehlersuche / Debugging
  - Servermodus
  - Steuerung des Layouts beim Aufruf des Publishers
  - Bilder mit MetaPost erstellen und einbinden
- Kochbuch
  - Daumenregister
  - Mehrseitige PDF-Dateien einbinden
  - Layoutoptimierung mithilfe von Gruppen
  - Aufzählungslisten nachahmen
  - Verzeichnisse erstellen
  - Inhaltsverzeichnis in einem Durchlauf erstellen
  - Seitenzahlen: Seite x von y
- Installationsanleitung
- Dateinamen im Publisher
- Voreinstellungen im speedata Publisher
- Starten des Publishers über die Kommandozeile
- Konfiguration des Publishers
- Längenangaben und Maßeinheiten
- XPath- und Layoutfunktionen
- Interne Variablen
- XML Editor mit Schema verbinden
  - Visual Studio Code
  - OxygenXML
- Liste der Änderungen
- Glossar
- Kompatibilität mit anderer Software
- Befehlsreferenz
  - A
  - Action
  - AddSearchpath
  - AtPageCreation
  - AtPageShipout
  - AttachFile
  - Attribute
  - B
  - Barcode
  - Bold
  - BoldItalic
  - Bookmark
  - Box
  - Br
  - Case
  - Circle
  - ClearPage
  - Color
  - Column
  - Columns
  - Compatibility
  - Contents
  - Copy-of
  - DefineColor
  - DefineColorprofile
  - DefineFontalias
  - DefineFontfamily
  - DefineGraphic
  - DefineMatter
  - DefineTextformat
  - Element
  - Fallback
  - Fontface
  - ForAll
  - Frame
  - Grid
  - Group
  - Groupcontents
  - HSpace
  - Hyphenation
  - I
  - Image
  - Include
  - Initial
  - InsertPages
  - Italic
  - Layout
  - Li
  - LoadDataset
  - LoadFontfile
  - Loop
  - Makeindex
  - Margin
  - Mark
  - Message
  - NewPage
  - NextFrame
  - NextRow
  - NoBreak
  - Ol
  - Options
  - Otherwise
  - Output
  - Overlay
  - Pageformat
  - Pagetype
  - Paragraph
  - PDFOptions
  - PlaceObject
  - Position
  - PositioningArea
  - PositioningFrame
  - ProcessNode
  - Record
  - Regular
  - Rule
  - SaveDataset
  - SavePages
  - SetGrid
  - SetVariable
  - SortSequence
  - Stylesheet
  - Span
  - Sub
  - Sup
  - Switch
  - Table
  - TableNewPage
  - Tablefoot
  - Tablehead
  - Tablerule
  - Td
  - Text
  - Textblock
  - Tr
  - Trace
  - Transformation
  - U
  - Ul
  - Until
  - URL
  - Value
  - VSpace
  - While

- This manual in English

# Bilder mit MetaPost erstellen und einbinden

| Die Funktionalität, MetaPost-Grafiken zu erstellen und einzubinden ist noch sehr neu und experimentell. Die Schnittstelle kann sich noch ändern bzw. ganz wegfallen. Insofern sollte man sie mit Vorsicht benutzen.

MetaPost ist eine Programmiersprache, mit der man Grafiken erstellen kann.

So erzeugt man beispielsweise aus folgendem Programmcode:

    beginfig(1)
        for a=0 upto 9:
          draw (0,0){dir 45}..{dir -10a}(6cm,0);
        endfor
    endfig;

eine Grafik:

## MetaPost im speedata Publisher

Die Idee ist nun, diese Bilder auch im speedata Publisher nutzen zu können. Dazu definiert man erst eine Grafik und benutzt sie später bei dem Box-Befehl:

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

        <!-- beginfig() ... endfig nicht notwendig -->
        <DefineGraphic name="dottedbox">
          pickup pencircle scaled 1mm;
          draw (0,0) -- (box.width,0) -- (box.width, box.height) --
            (box.width, box.height) -- (0, box.height ) -- cycle
            dashed withdots withcolor 0.7red ;
        </DefineGraphic>

        <!-- dasselbe, nutzt aber den vordefinierten Pfad box: -->
        <DefineGraphic name="dottedboxsimple">
            pickup pencircle scaled 1mm;
            draw box dashed withdots withcolor 0.7red ;
        </DefineGraphic>

        <Record element="data">
            <PlaceObject row="1" column="1">
                <Box height="2" width="5" graphic="dottedbox" />
            </PlaceObject>
        </Record>
    </Layout>

Die Breite der Box und die Höhe der Box sind mit den Variablen `box.width` und `box.height` in MetaPost definiert. Damit kann man die Grafik an die Vorgaben im Publisher anpassen.

Die gepunkteten Linien entsprechen den Vorgaben der Box. Die Rasterdarstellung wurde eingeschaltet, damit das sichtbar wird.

## Koordinaten

Der Ursprung des Koordinatensystems liegt in der linken unteren Ecke der Box, positive Werte gehen also in die Richtung rechts und oben.

## Variablen

Es können mit `<SetVariable>` Variablen für MetaPost gesetzt werden.

    <SetVariable
        variable="curcol"
        type="mp:rgbcolor"
        select="'colors.mycolor'"/>

Die Zuweisung wird zu Beginn des MetaPost-Kontexts ausgewertet. Damit steht `curcol` am Anfang der Grafiken zur Verfügung.

## Vordefinierte Werte

- Alle Farben, die im Layout definiert werden, können mit dem Präfix `colors.` in MetaPost benutzt werden:

      <DefineColor name="mycolor" value="#FF4E00"/>

      <DefineGraphic name="dots">
          pickup pencircle scaled 3mm;
          for i=0 upto 3:
              draw (i * 1cm, i * 1cm) withcolor colors.mycolor ;
          endfor;
      </DefineGraphic>

      <Record element="data">
          <PlaceObject row="1" column="1">
              <Box height="5" width="1" graphic="dots" />
          </PlaceObject>
      </Record>

- CSS Level 3 Farben sind im RGB-Farbraum vordefiniert.
- Die Breite und Höhe der umgebenden Fläche können mit `box.width` und `box.height` abgefragt werden.
- Der Pfad `box` ist für die Außmaße der Fläche definiert (siehe das Beispiel oben).
- Hans Hagens Metafun-Makros sind teilweise eingebunden.
- Bei Seitentypen stehen zusätzlich folgende Variablen zur Verfügung:

  Variable | Beschreibung
  --- | ---
  `page.width` | Seitenbreite
  `page.height` | Seitenhöhe
  `page.margin.left` | Rand links
  `page.margin.right` | Rand rechts
  `page.margin.top` | Rand oben
  `page.margin.bottom` | Rand unten
  `page.trim` | Beschnittzugabe

## MetaPost Ressourcen

Es gibt eine Reihe englischer Handbücher und Tutorials für MetaPost:

- Das MetaPost Handbuch (mpman) ist auf CTAN zu finden: http://mirrors.ctan.org/systems/doc/metapost/mpman.pdf
- Learning MetaPost by doing von André Heck: https://staff.fnwi.uva.nl/a.j.p.heck/Courses/mptut.pdf
- MetaPost Beispiele: http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html
- A Beginner’s Guide to MetaPost for Creating High-Quality Graphics http://www.tug.org/pracjourn/2006-4/henderson/henderson.pdf
- Puzzling graphics in MetaPost https://www.pragma-ade.com/articles/art-puzz.pdf
- MetaFun (ein Makropaket, das auf MetaPost aufsetzt - nicht alle Befehle sind im speedata Publisher verfügbar) https://www.pragma-ade.com/general/manuals/metafun-p.pdf

- Steuerung des Layouts beim Aufruf des Publishers
- Kochbuch