[Tiptoi] Patterns mit LaTeX

Frank Fuhlbrück frank at fuhlbrueck.net
Sa Jan 13 12:12:35 CET 2018


Hallo,

danke für das Feedback zur ersten LaTeX-Mail.

Zum Yaml-Import von Tingeltangel: ja da ist yaml i.S.v. tttool gemeint, 
siehe https://github.com/Martin-Dames/Tingeltangel/search?q=yaml
Allerdings funktioniert das wohl noch nicht so recht, der Import über 
die GUI scheitert bei mir.

Nun zum LaTeX-Paket und den Plänen damit:

Der Weg über einen Systemaufruf von tttool scheint mir mittlerweile auch 
der einfachere, um die .gme zu generieren. Das bedeutet zwar einen 
zweiten Durchlauf im TeX, um die Zuordnungen Variable -> OID, die tttool 
macht zu nutzen. Wegen der Verwendung des Pakets "transparent" sind aber 
momentan eh zwei Durchläufe nötig und in der TeX-Welt ist das ja nichts 
ungewöhnliches (Bibtex, \ref etc.).

Ich gehe nun auf ein paar Details ein. Aktuell gibt es drei wesentliche 
Macros im Paket klangtrabant, dabei heißt unten "name oder oid", dass 
man entweder einen Bucheintrag per Namen oder eben per OID spezifizieren 
kann, dessen Pattern dann (im Patternmodus s.u.) gedruckt wird (wie auch 
bei tttool). Existiert ein Eintrag mit gegebenem Namen noch nicht, so 
wird er angelegt (die konkrete OID die klangtrabant selbst dabei 
zuordnet wird für tiptoi egal sein, s.u.).

Klangtrabant kennt zwei Modi: normal (d.h. Hintergrund) und Patterns. 
Den Patternmodus kann man aktuell durch ein 
\def\klangtrabantdotpatterns{} VOR dem \usepackage{klangtrabant} 
einschalten (das lässt sich von außen per Makefile machen), eine 
Paketoption plane ich aber auch noch (also z.B. 
\usepackage[patterns]{klangtrabant}).

Nun die *aktuellen* Macros:
- \ktPattern{name oder oid} gibt (modusunabhängig!) an TeX:
   "\pattern[langer von oid und Paramatern wie dpi abh. Name]" zur 
Verwendung in TikZ.
   Dieses Macros ist eigentlich nicht zur direkten Verwendung 
vorgesehen, nur wenn die High-Level-Macros s.u. nicht nutzbar sind.

- \pathOrPattern{Pfadparam}{name oder oid}{TikzPfadbeschr.}
Gibt im Normalmodus "\path[Pfadparam] TikzPfadbeschr." und im
Patternmodus "\ktPattern{name oder oid} TikzPfadbeschr." an TeX.

Beispiel: Ich habe eine Datei mit einer bunten Klaviertastatur, die enthält:
  \pathOrPattern{fill=red}{C}{(1,1) rectangle (2.5,9)};
  \pathOrPattern{fill=orange}{D}{ (2.5,1) rectangle (4,9)};
  \pathOrPattern{fill=white}{Cis}{ (2,1) rectangle (3,6)};
Das zeichnet im Normalmodus die Tasten C in rot, D in Orange und
verkürzt mittig darüber Cis in weiß. Im Patternmodus würde es an 
dieselben Stellen für den ting aktuell die Patterns für die ersten drei 
OIDs 15001-15003 schreiben, wenn C,D,Cis nicht vorher definiert sind.
Die Patterns werden im Patternmodus weiß unterlegt, d.h. im Bereich von 
Cis ist wirklich nur das Cis-Pattern.

- \pboxOrPattern{name oder oid}{fast beliebiger Inhalt}
Dieses Macro speichert "fast beliebiger Inhalt" in einer Box minimaler 
Breite (siehe Paket "pbox"). Im Normalmodus wird die Box einfach wieder 
ausgegeben, im Patternmodus stattdessen ein Rechteck mit dem Pattern in 
Boxgröße gezeichnet. Das ist hauptsächlich für Texte oder rechteckige 
Bilder gedacht.

*Zukünftig* plane ich noch weitere solche elementaren Macros für andere 
Anwedungsfälle, aber *vor allem* wird es zu jedem Macro eines der Form
\MacronameY...{Yaml-Code für Skript} geben. "Skript" heißt: die Zeilen 
mit "-", die unter einem Bezicher mit ":" im "scripts:"-Teil der Yaml 
stehen würden. Zudem braucht es noch Macros für die globalen 
Buchparameter, die kann man momentan auch für den Ting nur per Lua setzen.

Die Abläufe sollen dann am Ende etwa wie folgt sein (jeweils Pattern-Modus):
Ting:
* Weise Namen echte OIDs zu und speichere die Zuordnung
* Wandle Yaml in Ting-Assembler um
* Kompiliere die .ouf-Datei direkt und gib sie aus
erneuter Durchlauf:
* lade gespeicherte OIDs, damit man zusätzliche Seiten drucken kann, 
sonst wie erster Durchlauf

Tiptoi:
1. Durchlauf:
* Weise Namen temporär Pseudo-OIDs <PID> zu und speichere die Zuordnung
* Drucke Pseudo-OIDs zu denen es noch kein Pattern gibt (s. 2.DL) als
rot (im Pattern-Modus!), um Druckuntauglichkeit zu zeigen.
* Baue aus dem Yaml-Stücken eine komplette Yaml, dabei:
   * gib den Skripteinträgen die Namen pseudo<PID>
* rufe tttool auf und lass die .gme sowie .codes.yaml generieren
2. Durchlauf:
* lade gespeicherte Pseudo-OIDs
* lade .codes.yaml und bestimme so mit beiden die zu druckenden Patterns
* nun wie im ersten Durchlauf, wobei nun echte Patterns gedruckt werden.

Meine wichtigsten Fragen dazu sind nun:
* Kann der Tiptoi-Ablauf prinzipiell so funktionieren, oder übersehe ich 
etwas?

* Dürfen die Skriptnamen in den YAML-Dateien Zahlen enthalten, solange 
sie mit eiem Buchstaben beginnen (falls nicht codiere ich es als 
Buchstaben, nötig ist es also nicht)?

* Welche grundlegenden Macros zur Positionierung von Patterns werden 
noch benötigt?
Beispiel: Was mit den existenten z.B. schlecht geht, ist die 
Positionierung von kompliziert geformten Patterns auf einem 
eingebundenem .png Bild (z.B. für Wimmelbücher). Da müsste man manuell 
Position und umrandenden Pfad finden, was per GUI deutlich leichter 
geht. Eine mögliche Lösung wäre mit Inkscape zur PNG eine Maske zu 
erstellen mit Farben für die Codes,
diese nach PGF zu exportieren (kann Inkscape mit Addon) und per Lua die 
Farben durch echte Patterns zu ersetzen.

* Kann man für den Tiptoi auch komplexere Skripte mit mehr als acht 
Aktionen bauen? Dazu schreibe ich noch mal separat, da es nur bedingt 
mit TeX zu tun hat und die Mail schon lang genug ist.

Viele Grüße
Frank


-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 801 bytes
Beschreibung: OpenPGP digital signature
URL         : <https://lists.nomeata.de/pipermail/tiptoi/attachments/20180113/3dfbf9da/attachment.asc>


Mehr Informationen über die Mailingliste tiptoi