"Un extraño h██nya antiguo escrito por kulibin irlandés en 1847, bueno, es bueno que esto suceda, por supuesto" Misha VerbitskyEn el año 16, los "Principios" de Euclides en la
interpretación de Oliver Byrne me llamaron la atención. La característica de este libro es que, en lugar de letras como "triángulo ABC", se colocan miniaturas de piezas de construcción directamente en el texto, es decir, una imagen con el triángulo correspondiente. En cuanto a hacer un libro así, como uno podría imaginar, fue un trabajo infernal a mediados del siglo XIX, con la misma facilidad, con las herramientas adecuadas, debería ser ahora. Y, en general, decidí estar seguro de esto.

La opción de simplemente dibujar ilustraciones en el ilustrador y maquillar el diseño en el diseño se marcó rápidamente como decadente. Hacer y editar construcciones geométricas en Illustrator no significa que sea terriblemente conveniente, pero nunca pensé en una forma hermosa de vincular automáticamente las miniaturas a la construcción principal. El diseño, aunque muy adecuado para este tipo de diseño, prometió deprimir la vista de la barra de enlaces con tantas imágenes. Entonces, sin resumir nada, recurrí al MetaPost ya familiar en el que las construcciones geométricas son bastante fáciles de hacer (pero no como en un geogebra, por supuesto) y un látex en el que está relativamente claro cómo inventar las cosas. Sin embargo, Latech, debido a la incomprensibilidad con las bibliotecas para la meta-publicación, fue reemplazado por ConTeXt, que se lleva bien con la meta-publicación de inmediato.
¿Cómo funciona en general?
"Comenzó" en general 13 partes - libros, pero Byrne procesó solo los primeros 6. Los libros consisten principalmente en "oraciones" - teoremas y problemas. Cada uno está hecho de una construcción (más de una vez) y el texto que se refiere a esta construcción.
Para describir las construcciones, introduje una macro en ConTeXt, que crea una nueva instancia de la meta-publicación. En la meta-publicación, hay todo tipo de funciones para describir las construcciones. Se ve así:
\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

Para textos de oraciones, escribí macros que dibujan y muestran imágenes en la misma instancia que la construcción principal. Ejecutan, en el caso general, un código de metapost arbitrario, pero a menudo toman como argumentos los nombres de los elementos necesarios: ángulos, segmentos, etc. Por ejemplo, así:

Así es como funciona en conjunto:

Algunas características
Las imágenes en el libro no son pretenciosas, pero algunas cosas requieren atención especial.
Si los segmentos se tocan entre sí con sus extremos, de alguna manera debe estar bien organizado. Ahora, los compuestos de solo dos segmentos se procesan especialmente, el resto se puede poner bajo esa conexión. Al menos se encuentran dos formas de conectar líneas en el original, pero me pareció innecesario reproducirlas.

Los ángulos se dibujan utilizando sectores. Si el ángulo es lo suficientemente pequeño, con el mismo radio, el sector se verá demasiado corto y tiene sentido aumentarlo. Ahora el radio permanece constante en ángulos de 60 grados, y para ángulos más pequeños la fórmula es la siguiente:
r/ sqrta/60 .

Las líneas punteadas, para que sean hermosas, deben comenzar y terminar con partes rellenas, de modo que la eclosión se ajuste ligeramente un número entero de veces en un segmento (hay algo similar en el ilustrador, pero hay trazos de media longitud al principio y al final de la línea).

Puede mostrar segmentos en el texto de diferentes maneras: puede hacer que todos tengan la misma longitud, cambiando solo el color, pero puede reproducir la longitud de una forma u otra. En Byrne, hay tal y tal. Tengo esta fórmula para esto:
L′=Lal1−a donde
L′ - la longitud del segmento en el texto,
L Es la longitud del segmento inicial,
l - la longitud deseada del segmento y
a - un cierto número de 0 a 1. Si
a=0 entonces
L′=l , es decir, cualquier segmento se representará con una longitud
l . Si
a=1 ,
L′=L . Si
0<a<1 luego en
L<l ,
L′>L y con
L>l ,
L′<L , es decir, los segmentos cortos se alargan y los largos se acortan. Esto es necesario si desea mantener los tamaños relativos de los segmentos, pero no desea obtener segmentos de medio milímetro al lado de segmentos de dos centímetros. (De hecho, todo es un poco más complicado, pero el significado es este).

Aunque Byrne rechazó las letras, el famoso aburrido Edward Tufte en uno de sus
libros habló sobre el tema de que Byrne estaba bien, pero sería bueno devolver las cartas. Y como de todos modos, casi todo es automático, entonces había un lugar para las letras. Por defecto, los puntos se nombran de la misma manera que las variables donde se almacenan sus coordenadas. Las etiquetas se pueden colocar en los vértices de los polígonos, o en los extremos de los segmentos, o de alguna otra manera. Ellos, por supuesto, se pueden encender y apagar a voluntad (el diseño al mismo tiempo, por supuesto, se arrastra).

Pero la mayor parte del código todavía está dedicado a cosas que son más notables para el autor / editor que para el lector. Esto, por ejemplo, el reconocimiento correcto de nombres sinónimos de ángulos y segmentos, la disposición automática de letras alrededor de varios polígonos, el dibujo automático de piezas de segmentos en ciertos ángulos en el texto, etc.
En el original hay letras iniciales y viñetas. Por un lado, podrían dibujarse sin mucho trabajo (mental, al menos), pero decidí asumir la tarea más interesante (aunque desesperada): producir letras iniciales y viñetas con un patrón aleatorio automáticamente. En primer lugar, es divertido, y en segundo lugar, la traducción al ruso (que se describe a continuación) requeriría la adaptación del estilo inicial de las letras al alfabeto cirílico, actividad que no estaba incluida en mis planes. Entonces, cuando construye el libro, se crea una lista de todas las letras y viñetas, y de esta lista un guión de metapost separado dibuja (muy lentamente) un conjunto completo de todas estas cosas. Las letras iniciales son todas diferentes y los patrones no se repiten.

El principio es simple: los rizos, lo más grandes posible, se colocan en las partes de la letra y en el marco. Esto sucede varias veces, y las curvas ya dibujadas se incluyen en las siguientes iteraciones. Entonces las "hojas" aparecen de la misma manera. La forma y las propiedades de los diferentes tipos de procesos pueden modificarse.

No puedo decir que estoy muy contento con el resultado, pero gradualmente mejoraré el algoritmo y esperaré lo mejor (sin embargo, puedes escupir y deslizar imágenes con cualquier letra en lugar de las generadas). Como beneficio adicional, el script puede generar mosaicos aleatorios a partir de rizos.

Traducción
Para detectar errores, y de hecho, comencé a traducir al ruso. Mi punto de referencia fue la traducción de los "Principios" de Morducai-Boltovsky, pero rápidamente se hizo evidente que Byrne había cambiado demasiado en la evidencia para ayudar mucho. Para ser honesto, al principio traduje todo completamente después de las mangas, especialmente la introducción, solo para hacerlo, y solo recientemente mis manos alcanzaron para suavizar un poco la aspereza.
Aparte del desagradable quinto libro (que resultó ser enmarcado por
separado del resto y algo antes), no fue particularmente difícil. La traducción (el proceso en sí mismo) realmente ayudó a atrapar muchas jambas diferentes, tanto las mías como las del autor. Por ejemplo, la
construcción de la Proposición 9 del sexto libro de Byrne no corresponde al texto, por lo que la prueba no funciona, así que tuve que rehacer todo allí.
De las curiosidades: en la introducción, donde el autor elogia su método, primero se refirió a Horace,
citando sus poemas sobre la superioridad de la visión sobre otros sentimientos como argumento. Y unas páginas más tarde decidió agregar, en aras de la convicción, también el "poeta moderno", cuyos versos también citó. De hecho, los "poemas del poeta moderno" resultaron ser
otra traducción de las mismas líneas de Horacio. Aquí, por supuesto, era necesario dejar todo como está y en una nota al pie de página del error del autor, pero afortunadamente la esposa encontró
poemas adecuados del inglés y el autor de Byrne mucho más moderno, que entró en acción (aunque dicen que es imposible hacer esto). En la versión en inglés se dejó como estaba.

La versión rusa también es diferente en el sentido de que las letras minúsculas están incluidas de manera predeterminada y, en general, son más pequeños cambios en comparación con el original que en el inglés. Es cierto, aquí alguien me
pidió que hiciera la versión en inglés también con letras, y estoy pensando en incluirlas allí también: sin ellas, este libro ya existe.
Otro amigo
comenzó a traducir el libro al polaco y escribió muchas cosas valiosas en el camino en temas (por ejemplo, sobre los ángulos de escala, esta es
su sugerencia ). Genial si traduces.
Subtotales
Después de jugar con este libro, tengo lo siguiente que decir. Las imágenes en el texto son realmente fáciles de leer, ahora uso esta técnica en otros lugares. Teniendo en cuenta que participé en el proyecto por las tardes después del trabajo principal durante un día completo, resultó bastante rápido: aproximadamente seis meses para la primera versión en inglés, con toda la planificación y programación, tres meses para la primera edición de la traducción al ruso. Es cierto, todavía corrijo los cardúmenes aquí y allá (y más recientemente, mi esposa comenzó a leer ruso para errores tipográficos, y me sonrojo, casi como de la
primera solicitud de extracción ).
Desde el momento en que se publicó la primera versión en el github, comenzó la
campaña de kickstarter para recaudar fondos para "completar el trabajo de Byrne", es decir, según entienden los autores, el diseño de los 13 libros de "Principios" en la misma línea. Aparentemente, el diseño en el diseño, lo que dibujan, no está claro. Si bien los libros no parecían ser enviados, pero pronto deberían hacerlo. Espero que funcione bien. Y más recientemente, un diseñador estadounidense lanzó una buena
versión web de los primeros seis libros. A juzgar por el artículo con la historia sobre el trabajo, pintó todo a mano en ilustrador.
Planes
Byrne no tenía ninguna estereometría en absoluto, por lo que no le proporcioné ningún instrumento desde el principio, pero ahora decidí reservar lentamente los libros "Principios" del 11 al 13 para poder trabajar con las herramientas. Hasta ahora, un poco más de la mitad del undécimo libro está listo y, en consecuencia, ya hay algunas funciones para describir construcciones tridimensionales y su proyección en un plano. Sin embargo, las construcciones voluminosas en promedio son mucho más complicadas que las planas, y hasta ahora no tengo una idea clara de cuánto funcionará el enfoque de Byrne para ellos, o si será lo suficientemente conveniente para crearlos en una meta-publicación.

Las imágenes en el texto a menudo requieren interletraje. Es similar, pero más complicado: las imágenes de gran tamaño en líneas adyacentes extienden las líneas muy anchas, lo que se justifica solo si se superponen entre sí. Todavía no he descubierto cómo automatizar estas cosas, y atrapar manualmente todo esto es muy aburrido.

El metapost se puede iniciar tanto desde el látex como por separado. Entonces, en el futuro planeo hacer macros para latex, lo mismo que para ConTeXt, para que pueda hacer lo mismo en un entorno más común. En teoría, nadie se molesta en usar un metapost, por ejemplo, con diseño. Esto se puede hacer ahora, simplemente recogiendo las imágenes por separado y vinculándolas manualmente, pero se ruega escribir un par de scripts para la ID para que esto suceda por sí mismo. Este último se parece bastante a algún tipo de perversión, pero con demasiada frecuencia viene a la mente no considerar tal posibilidad.
Bueno y lo más importante: quiero tratar de aplicar toda esta maquinaria a algo más moderno y práctico que los "Principios".
Todas las buenas mentiras
aquí , los PDF listos están en versiones.