"Eine seltsame antike H██nya, die 1847 vom irischen Kulibin geschrieben wurde. Nun, es ist natürlich gut, dass dies passiert", sagte Misha VerbitskyIm 16. Jahr fielen mir die "Anfänge" von Euklid bei der
Interpretation von Oliver Byrne auf. Das Merkmal dieses Buches ist, dass anstelle von Beschriftungen wie „ABC-Dreieck“ direkt in den Text Miniaturansichten von Bauteilen platziert werden, dh beispielsweise ein Bild mit dem entsprechenden Dreieck. Soweit man sich ein solches Buch vorstellen kann, war es Mitte des 19. Jahrhunderts eine höllische Arbeit, genauso einfach, mit den richtigen Werkzeugen, wie es jetzt sein sollte. Und im Allgemeinen habe ich mich entschlossen, mir dessen sicher zu sein.

Die Option, einfach Illustrationen im Illustrator zu zeichnen und das Layout im Design zu erstellen, wurde schnell als dekadent markiert. Das Erstellen und Bearbeiten von geometrischen Konstruktionen in Illustrator bedeutet nicht, dass dies fürchterlich praktisch ist, aber ich habe nie an eine schöne Möglichkeit gedacht, die Miniaturansichten automatisch mit der Hauptkonstruktion zu verknüpfen. Das Design war zwar für diese Art von Layout gut geeignet, versprach jedoch, die Ansicht der Linkleiste mit so vielen Bildern zu beeinträchtigen. Nachdem ich nichts zusammengefasst hatte, wandte ich mich dem bereits bekannten MetaPost zu, in dem geometrische Konstruktionen recht einfach zu erstellen sind (aber natürlich nicht wie in einer Geogebra), und einem Latex, in dem es relativ klar ist, wie man Dinge zusammensetzt. Aufgrund der Unverständlichkeit mit den Bibliotheken für den Meta-Post wurde Latech jedoch durch ConTeXt ersetzt, das mit dem Meta-Post sofort gut zurechtkommt.
Wie funktioniert es im Allgemeinen?
"Begonnen" im Allgemeinen 13 Teile - Bücher, aber Byrne verarbeitete nur die ersten 6. Bücher bestehen hauptsächlich aus "Sätzen" - Theoremen und Problemen. Jedes besteht aus einer Konstruktion (öfter als einer) und dem Text, der sich auf diese Konstruktion bezieht.
Um die Konstruktionen zu beschreiben, habe ich in ConTeXt ein Makro eingeführt, das eine neue Instanz des Meta-Posts erstellt. Im Metapost gibt es alle möglichen Funktionen, um die Konstruktionen zu beschreiben. Es sieht so aus:
\defineNewPicture{ % pair A, B, C, D; % numeric d; d := 2u; A := (0, 0); % B := A shifted (d, 0); % C := A shifted (0, -d); % D := A shifted (d, -d); % byAngleDefine(B, A, C, byblack, 0); % byAngleDefine(D, B, A, byblue, 0); % , byAngleDefine(C, D, B, byred, 0); % , byAngleDefine(A, C, D, byyellow, 0); % draw byNamedAngleResized(); % byLineDefine(A, B, byred, 0, 0); % byLineDefine(B, D, byyellow, 0, 0); % , byLineDefine(D, C, byblack, 0, 0); % , byLineDefine(C, A, byblue, 0, 0); % draw byNamedLineSeq(0)(AB,BD,DC,CA); % } \drawCurrentPicture

Für Satztexte habe ich Makros geschrieben, die Bilder in derselben Instanz wie die Hauptkonstruktion zeichnen und anzeigen. Sie führen im allgemeinen Fall einen beliebigen Metapost-Code aus, verwenden jedoch meistens die Namen der erforderlichen Elemente - Winkel, Segmente usw. - als Argumente. Beispiel:

So funktioniert es zusammen:

Einige Funktionen
Die Bilder im Buch sind unprätentiös, aber einige Dinge erforderten besondere Aufmerksamkeit.
Wenn sich die Segmente mit ihren Enden berühren, muss es irgendwie schön angeordnet sein. Jetzt werden Verbindungen von nur zwei Segmenten speziell verarbeitet, der Rest kann unter eine solche Verbindung gestellt werden. Im Original gibt es mindestens zwei Möglichkeiten, Linien zu verbinden, aber es schien mir unnötig, sie zu reproduzieren.

Winkel werden mithilfe von Sektoren gezeichnet. Wenn der Winkel klein genug ist, sieht der Sektor bei gleichem Radius zu kurz aus, und es ist sinnvoll, ihn zu vergrößern. Jetzt bleibt der Radius bei Winkeln von 60 Grad konstant, und für kleinere Winkel lautet die Formel wie folgt:
r/ sqrta/60 .

Die gestrichelten Linien sollten, um schön zu sein, mit gefüllten Teilen beginnen und enden, so dass die Schraffur leicht skaliert wird, um eine ganzzahlige Anzahl von Malen in ein Segment zu passen (im Illustrator gibt es etwas Ähnliches, aber am Anfang und am Ende der Linie gibt es Striche halber Länge).

Sie können Segmente im Text auf verschiedene Arten anzeigen: Sie können sie alle gleich lang machen und nur die Farbe ändern, aber Sie können die Länge auf die eine oder andere Weise spielen. In Byrne gibt es solche und solche. Ich habe diese Formel dafür:
L′=Lal1−a wo
L′ - die Länge des Segments im Text,
L Ist die Länge des Anfangssegments,
l - die gewünschte Länge des Segments und
a - eine bestimmte Zahl von 0 bis 1. Wenn
a=0 dann
L′=l Das heißt, jedes Segment wird mit einer Länge dargestellt
l . Wenn
a=1 ,
L′=L . Wenn
0<a<1 dann bei
L<l ,
L′>L und mit
L>l ,
L′<L Das heißt, kurze Segmente werden verlängert und lange verkürzt. Dies ist erforderlich, wenn Sie die relativen Größen der Segmente beibehalten möchten, aber keine Segmente von einem halben Millimeter neben Segmenten von zwei Zentimetern erhalten möchten. (In der Tat ist alles etwas komplizierter, aber die Bedeutung ist dies).

Obwohl Byrne den Schriftzug ablehnte, sprach der berühmte Edward Tufte in einem seiner
Bücher über das Thema, dass es Byrne gut gehe, aber es wäre schön, die Briefe zurückzugeben. Und da fast alles automatisch ist, gab es einen Platz für die Buchstaben. Standardmäßig werden Punkte genauso benannt wie Variablen, in denen ihre Koordinaten gespeichert sind. Beschriftungen können an den Eckpunkten von Polygonen oder an den Enden von Segmenten oder auf andere Weise platziert werden. Sie können natürlich nach Belieben ein- und ausgeschaltet werden (das Layout schleicht sich natürlich gleichzeitig ein).

Der größte Teil des Codes ist jedoch immer noch Dingen gewidmet, die für den Autor / Herausgeber auffälliger sind als für den Leser. Dies ist zum Beispiel die korrekte Erkennung von Namen von Winkeln und Segmenten, die automatische Anordnung von Buchstaben um mehrere Polygone, das automatische Zeichnen von Segmentstücken in bestimmten Winkeln im Text und so weiter.
Im Original befinden sich Anfangsbuchstaben und Vignetten. Einerseits konnten sie ohne viel Arbeit (zumindest mental) gezeichnet werden, aber ich entschied mich, die interessantere (wenn auch hoffnungslose) Aufgabe zu übernehmen - Anfangsbuchstaben und Vignetten mit einem zufälligen Muster automatisch zu erstellen. Erstens macht es nur Spaß, und zweitens würde die Übersetzung ins Russische (die unten beschrieben wird) eine Anpassung des ursprünglichen Buchstabenstils an das kyrillische Alphabet erfordern, was in meinen Plänen nicht enthalten war. Wenn Sie also das Buch erstellen, wird eine Liste aller Buchstaben und Vignetten erstellt, und aus dieser Liste zeichnet ein separates Metapost-Skript (sehr langsam) einen vollständigen Satz all dieser Dinge. Die Anfangsbuchstaben sind alle unterschiedlich und die Muster wiederholen sich nicht.

Das Prinzip ist einfach: Locken, so groß wie möglich, werden auf die Teile des Briefes und auf den Rahmen gelegt. Dies geschieht mehrmals, und bereits gezeichnete Schnörkel sind in den folgenden Iterationen enthalten. Dann erscheinen "Blätter" auf die gleiche Weise. Die Form und Eigenschaften verschiedener Arten von Prozessen können geändert werden.

Ich kann nicht sagen, dass ich mit dem Ergebnis ziemlich zufrieden bin, aber ich werde den Algorithmus schrittweise verbessern und auf das Beste hoffen (Sie können jedoch Bilder mit beliebigen Buchstaben anstatt mit generierten Buchstaben spucken und verschieben). Als Bonus kann das Skript zufällige Kacheln aus Locken generieren.

Übersetzung
Um Fehler zu fangen, begann ich ins Russische zu übersetzen. Mein Bezugspunkt war die Übersetzung der "Anfänge" von Morducai-Boltovsky, aber ziemlich schnell wurde klar, dass Byrne die Beweise zu sehr verändert hatte, um viel zu helfen. Um ehrlich zu sein, habe ich zunächst alles komplett nach den Ärmeln übersetzt, insbesondere die Einführung, nur um es zu schaffen, und erst kürzlich haben meine Hände erreicht, um ein wenig Rauheit auszugleichen.
Abgesehen von dem unangenehmen fünften Buch (das, wie sich herausstellte,
getrennt vom Rest und etwas früher gerahmt wurde) war es nicht besonders schwierig. Die Übersetzung (der Prozess selbst) hat wirklich dazu beigetragen, viele verschiedene Pfosten zu fangen, sowohl meine als auch den Autor. Zum Beispiel entspricht die
Konstruktion von Satz 9 aus dem sechsten Buch von Byrne nicht dem Text, weshalb der Beweis nicht funktioniert, also musste ich dort alles wiederholen.
Aus den Kuriositäten: In der Einleitung, in der der Autor seine Methode lobt, bezog er sich zuerst auf Horace und
zitierte seine Gedichte über die Überlegenheit des Sehens gegenüber anderen Gefühlen als Argument. Und ein paar Seiten später beschloss er, aus Gründen der Überzeugungskraft auch den "modernen Dichter" hinzuzufügen, dessen Verse er auch zitierte. Tatsächlich erwiesen sich die "Gedichte des modernen Dichters" als eine
weitere Übersetzung derselben Zeilen von Horaz. Hier war es natürlich notwendig, alles so zu lassen, wie es ist, und in einer Fußnote auf den Fehler des Autors hinzuweisen, aber zum Glück fand die Frau
geeignete Gedichte des englischen und wirklich viel moderneren Byrne-Autors, die in Aktion traten (obwohl sie sagen, dass dies unmöglich ist). In der englischen Version so wie es war.

Die russische Version unterscheidet sich auch darin, dass die darin enthaltenen Kleinbuchstaben standardmäßig enthalten sind und im Vergleich zum Original im Allgemeinen geringfügigere Änderungen vorgenommen werden als in der englischen. Es stimmt, hier hat mich jemand
gebeten , die englische Version auch mit Buchstaben zu machen, und ich denke darüber nach, sie auch dort aufzunehmen: Ohne sie existiert dieses Buch bereits.
Ein anderer Freund
begann, das Buch ins Polnische
zu übersetzen und schrieb viele wertvolle Dinge auf dem Weg in Ausgaben (zum Beispiel über Skalierungswinkel - dies ist
sein Vorschlag ). Großartig, wenn Sie übersetzen.
Zwischensummen
Nachdem ich an diesem Buch herumgebastelt habe, habe ich Folgendes zu sagen. Die Bilder im Text sind sehr einfach zu lesen, jetzt verwende ich diese Technik an anderen Stellen. Wenn man bedenkt, dass ich abends nach der Hauptarbeit einen ganzen Tag lang an dem Projekt beteiligt war, stellte sich heraus, dass es ziemlich schnell war: ungefähr sechs Monate für die erste englische Version mit der gesamten Planung und Programmierung, drei Monate für die erste Ausgabe der russischen Übersetzung. Es stimmt, ich korrigiere immer noch Schwärme hier und da (und in jüngerer Zeit begann meine Frau, Russisch für Tippfehler zu lesen, und ich erröte, fast wie bei der
ersten Pull-Anfrage ).
Von dem Moment an, als die erste Version auf dem Github veröffentlicht wurde, begann die Kickstarter-
Kampagne , um Spenden für die „Fertigstellung von Byrnes Werk“ zu sammeln, dh, wie die Autoren verstehen, das Design aller 13 „Beginnings“ -Bücher in der gleichen Richtung. Anscheinend ist das Layout im Design, was sie zeichnen, unklar. Bisher wurden die Bücher noch nicht verschickt, sollten es aber bald sein. Ich hoffe es klappt gut. Und in jüngerer Zeit veröffentlichte ein amerikanischer Designer eine schöne
Webversion der ersten sechs Bücher. Nach dem Artikel mit der Geschichte über die Arbeit zu urteilen, malte er alles von Hand in Illustrator.
Pläne
Byrne hatte überhaupt keine Stereometrie, daher habe ich von Anfang an keine Werkzeuge dafür bereitgestellt, aber jetzt habe ich beschlossen, die "Beginnings" -Bücher von 11 bis 13 langsam zu buchen, um die Werkzeuge darauf zu erarbeiten. Bisher ist etwas mehr als die Hälfte des 11. Buches fertig und dementsprechend gibt es bereits einige Funktionen zur Beschreibung dreidimensionaler Konstruktionen und ihrer Projektion auf eine Ebene. Voluminöse Konstruktionen sind jedoch im Durchschnitt viel komplizierter als flache, und bis jetzt habe ich keine klare Vorstellung davon, wie gut Byrnes Ansatz für sie funktionieren wird oder ob es bequem genug ist, sie in einem Meta-Post zu erstellen.

Bilder im Text erfordern oft Kerning. Es ist ähnlich, aber komplizierter: Großformatige Bilder auf benachbarten Linien verteilen die Linien sehr weit, was nur gerechtfertigt ist, wenn sie sich überlappen. Ich habe noch nicht herausgefunden, wie ich diese Dinge automatisieren kann, und es ist sehr langweilig, all dies manuell zu erfassen.

Der Metapost kann sowohl aus Latex als auch separat gestartet werden. Daher plane ich, in Zukunft Makros für Latex zu erstellen, genau wie für ConTeXt, damit Sie dies auch in einer allgemeineren Umgebung tun können. Theoretisch stört es niemanden, einen Metapost zu verwenden, zum Beispiel für Design. Dies kann jetzt geschehen, indem die Bilder separat gesammelt und manuell verknüpft werden. Es werden jedoch einige Skripte für die ID geschrieben, damit dies von selbst geschieht. Letzteres sieht aus wie eine Art Perversion, fällt mir aber zu oft ein, eine solche Möglichkeit nicht in Betracht zu ziehen.
Gut und vor allem - ich möchte versuchen, all diese Maschinen auf etwas Moderneres und Praktischeres als die "Anfänge" anzuwenden.
Alle guten Lügen
hier , fertige PDFs sind in Releases.