[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