Комментарии 47
Очень круто, реально впечатлило! И вообще, дело всерьёз полезное. Большое спасибо!

Так и хочется воскликнуть про автор поста: суровъ!


Какой матерый человечище! (с) КВН

В оригинале есть буквицы и виньетки.

Я несколько запутался. Что зовется оригиналом? Что переводил автор?

Он не переводил, а просто оформил при помощи TeX'а "Начала" Евклида.

Чтобы выловить ошибки, да и вообще, я стал делать перевод на русский.

Ну и странно было бы думать что Эвклид писал по русски или даже английски.
Я так понял человек повторил работу некоего Бирна, с помощью современного инструмента?

Именно. Он оформил издание Бирна при помощи TeX'а (ссылка на скан этого издания есть в статье)

А насколько хорошо различимы цвета для читателей с нарушениями цветового восприятия?
(В 1847 вряд ли об этом очень заботились. Конечно, вариант с буквами должен помочь.)
Честно говоря, всерьез я пока этот вопрос не вентилировал, вероятно, с какими-то нарушениями цветового зрения такие цвета будут совсем плохо различаться. Но сейчас цвета — это переменные, значения которых можно поменять тут. Например, \def\mpPre{textLabels := true; byred := (0, 0.8, 0.1); byblue := (0, 0.5, 0.6); byyellow := (0.9, 0.1, 0.7);} даст такую картинку, вместо той, что в шапке:
image
Уменьшить количество цветов так, конечно, не выйдет, только если разводить по яркости.
Узор для буквиц и виньеток выглядит очень здорово! Было бы интересно увидеть дальнейшее развитие алгоритма.
Когда я вижу сколько труда и интеллекта ушло в несомненно занимательное, но все же искусство, мне хочется воскликнуть про то что где-то кто-то голодает.

Может быть хотя бы интерактивный курс геометрии?
С одной стороны, такое уж хобби. С другой — план максимум, отработав инструментарий на «Началах», попробовать собрать что-нибудь более актуальное и хоть на своих детях проверить, поможет ли со школой. Кто-то, в тексте я ссылку кидал, утверждает, что пользуется, чтобы кого-то учить. Хочется верить.
У меня знаний и умений на составление курса, конечно, никак не хватит, была мысль оформить какой-нибудь уже существующий курс в таком духе, но пока не очень в этом продвинулся. Есть более или менее интерактивная симпатичная веб-версия той же книги (тоже в тексте ссылка была, вроде), но не уверен насколько она подходит для обучения. Ну и GeoGebra, конечно, интерактивна, совершенно прекрасна, и наверняка с ней есть курсы.
Мне кажется самое главное и интересное в этом исполнении книжки — то, что иллюстрации описаны через динамические абстракции. Мне кажется, это их свойство наиболее ценно для чего-то совсем интерактивного вроде https://www.euclidea.xyz/. Пока курс статический самая интересная часть работы для читателя, по сути, скрыта.
Да, в принципе для читателя результат принципиально не отличается от того, который бы получился, будь все сделано вручную. Но я больше целился в скорость написания и внесения правок, то есть в удобство для автора, и автору все эти динамические штуки как раз очень заметны (по идее). Чтобы сделать что-то интерактивное, нужны навыки, которых у меня, к сожалению нет. Наверное, тут стоило бы подключиться к какому-нибудь существующему проекту, но там другие языки, другие технологии, сложно очень.
Не знаю, имхо Эвклид заслужил.
Опять-таки, по Началам, уверен, училось достаточно людей, в том числе и знаменитых, чтобы считать их хорошим учебником по геометрии.
Очень круто, спасибо! Даже захотелось почитать «Начала», хотя, казалось бы, зачем это мне :)

У меня давно витает мысль создать парочку шрифтов, которые бы повторяли личные почерки каких-то известных людей. Скажите, это возможно в MetaPost / METAFONT / GeoGebra? Я совсем профан в этом деле, есть простое желание поковыряться в этом.

Я поискал в Вашем коде место, где генерируются буквицы — правильно понимаю, что это происходит при вызове "\regularLettrine{T}" (для буквы «Т»)? Где определяется тогда, собственно, шрифт буквы? Ведь я правильно понимаю, что Вы не создавали новый шрифт?
Спасибо!

Насчет шрифтов не могу, к сожалению, подсказать, имел дело в этом плане только с FontForge.

Не совсем, буквицы делаются отдельным скриптом, который лежит в /lettrines/. Он берет создаваемый при сборке книги список буквиц и виньеток из файла lettrineslist.txt и по нему работает. Буквы там набираются, кажется, Computer Modern-ом, это можно поменять в латеховской преамбуле в скрипте. \regularLettrine{*} только вызывает штуку, которая открывает нужный файл.
Круто, реально очень круто! По поводу стереометрии идея — реализовать анаглифные (красно-голубые) стерео-иллюстрации (будут заморочки с одинаковой шириной для обоих каналов и с их наложением, плюс сложности из-за уменьшения количества доступных цветов).
Спасибо! Метапост, мне кажется, не самый подходящий для такого инструмент, практичнее было бы тут уж использовать что-нибудь с готовыми инструментами для 3D. Но все равно любопытно, конечно.
Автоматические буквицы — это катастрофически ужасно. Не делайте так, пожалуйста.
Такую точку зрения я встречал и ее не разделяю: некоторые буквицы в оригинале, во-первых, кажутся мне, как минимум, не менее уродливыми, особенно I, M и S и держатся они (опять же, по моему мнению) в основном на пиетете перед стариной, во-вторых, повторюсь, рисовать к ним кириллицу у меня нет ни малейшего желания, а в-третьих, мне просто интересно допиливать свой генератор буквиц, а в последнем релизе они выглядят лучше, чем в прошлом, а там — лучше чем в позапрошлом и т. д. Тем не менее, если чьи-то эстетические чувства мой выбор задевает, буквицы всегда можно: а) не генерить и тогда будут просто белые буквы на черных квадратах; б) положить в /lettrines/ любые другие буквицы на свой вкус в pdf или svg с названиями A.pdf, B.pdf (или .svg) и так далее.
Да какой, к чёрту, пиетет? Буквица — это рисунок, человеческое творчество. Автоматическое рисование ещё не скоро сможет сделать буквицы, которые нормальный шрифтовик посчитает за средне-допустимые, а вы тут автоматом уже замахиваетесь.
Хотя, если вам нравится, то пожалуйста. Только «буквицами» это не называйте, ради бога.
В моей картине мира буквица — такой-то элемент в типографике, имеющий такое-то место и выполняющий такую-то функцию, а не выполненное в определенной технике произведение искусства. Кажется, именно таким образом понимается это слово, когда употребляется в ПО, навроде индизайна, и именно так его употребляют (по моим наблюдениям) чаще всего. В этом смысле то, что я делаю — именно буквицы, хорошие они или плохие с эстетической точки зрения. С системой терминов в которой буквица — это непременно рисунок сделанный человеком я не знаком и не вижу причин на нее переходить.
Насчет возможностей автоматического рисования, я в статье специально отметил, что отдаю себе отчет в безнадежности этого предприятия. Но не вижу ничего плохого в том, чтобы «замахиваться» даже на кажущиеся безнадежными задачи в свое свободное время.
В остальном — вам, как я понял, категорически не нравится то, что у меня получилось. Спасибо, это ценный отзыв, у меня глаз замылен уже и взгляд со стороны очень нужен; если бы всем все нравилось, было бы меньше мотивации что-то улучшать.
Ну, в системе верований алкоголиков «литр» — это напиток. Несмотря на то, что это слово имеет несколько более широкое значение.
В остальном — вам, как я понял, категорически не нравится то, что у меня получилось. Спасибо, это ценный отзыв, у меня глаз замылен уже и взгляд со стороны очень нужен; если бы всем все нравилось, было бы меньше мотивации что-то улучшать.

Нет, как раз очень понравилось. Алгоритмизация там, где она справляется — горячо приветствую обеими руками.

Рука сам потянулась к кнопке "Отправить деньги". Невероятно круто.

Мне кажется, прямые углы нужно рисовать не дугой, а прямым углом, как это принято

Согласен, во многих случаях это было бы хорошо, но не очень понятно как красиво изобразить угол в таком стиле среди дуг или составленный из нескольких. Например тут в III.1 желтый и черный углы вместе составляют прямой и вместе должны изображаться «углом», но по отдельности их формы будут странными. Можно сделать «углом» только синий, который тоже прямой, но в тексте, где синий с желтым «угол» с куском дуги будут смотреться странно. Но такую возможность я добавить давно хочу, просто пока не придумал как это сделать лучше.
Прямой угол на чертеже обычно обозначают маленьким квадратиком, один угол которого совпадает с обозначаемым углом, или маленькой дугой с точкой под ней. bit.ly/2VrTXFi
Спасибо, с таким обозначением не сталкивался, кажется. В одиночные углы точку легко внедрить, но с группами углов посложнее, надо подумать.

Можно внутри дуги нарисовать прямой угол, только цвет должен быть различимый. Тогда и с группами все просто получается — как только группа образует прямой угол, декорируем его уголком

А если в группе, кажем, три угла по 45 градусов, то как выбрать, какой обозначать уголком? Автоматически, мне думается, сложновато будет сделать удобно. Но в любом случае, если не сложно, лучше создайте issue на гитхабе, там, кажется, более подходящее место для обсуждения подробностей, а фича нужная.

Можно декорировать все найденные прямые углы, либо только явно отмеченные. Сделаю задачу попозже

Поменялся шрифт, формат страницы, улучшены буквицы и виньетки, улучшены цвета, другие мелкие улучшения там и сям, выловлено много ошибок (точно можно по коммитам проследить, там почти везде написано что менялось).
Уважаемый jemmybutton!
Большое спасибо за статью! Увлекает и вдохновляет совмещение наглядного доказательства геометрических теорем и то, как это реализовано — технически и эстетически.
Действительно интересен подход, когда фигуры не «обводятся» по исходным рисункам, а строятся, исходя из координат точек и математических соотношений.
До чтения статьи про «Начала» Эвклида слышал краем уха, а о их красочном и наглядном варианте Бирна — узнал именно из неё.
Точно также, впервые увидел «программное» черчение в рамках графического пакета.
Одно дело знать, что большинство программ Adobe построено на языке описания страниц PostScript (сейчас уже на PDF), другое дело — видеть, как интерактивно и понятно можно программировать создание взаимозависимых объектов.

Можете посоветовать какое-то чтение о использованных Вами программах, рассчитанное на минимальные познания в языках программирования? Имею довольно большой опыт работы в Иллюстраторе и т.п. — и вдруг увидел абсолютно альтернативный подход.
Спасибо за статью и сами книги! То что Вы сделали очень круто, наглядно и эстетично!
Спасибо!
Насчет чтения мне трудно что-то осмысленно посоветовать, потому что сам систематически и по какому-то одному учебнику не изучал этот вопрос. Чаще всего мне был нужен mpman.pdf, но это точно не учебник. На русском есть такое пособие.
Но стоит иметь в виду, что метапост — довольно архаичный язык с массой ограничений и если нет каких-то особых показаний в его пользу, стоит попробовать, например Asymptote. Скриптинг для адобовских продуктов, например, для иллюстратора, на мой вкус сильно менее удобен для подобных случаев, но в реальной жизни может очень сильно повысить продуктивность дизайнера, так что и в эту сторону посмотреть есть смысл.
Спасибо за ссылки.
Идея вроде бы понятная: описание объектов, расположенных на плоскости.
В программах типа Illustrator, CorelDraw и т.п. во главу угла поставлен принцип Wysiwig ( «что видите, то и будет создано»). Для полиграфии и веба-дизайна это был огромный прорыв, позволивший создавать компьютерную графику без использования программирования.
В случае Metapost, Asymptote и, видимо, LaTeX — упор был сделан на описание программными средствами различных объектов, а затем создания их, практически без участия пользователя.
И визуальный, и программный способы рисования имеют свои преимущества и их обратную сторону — недостатки. По тексту в Metapost только подготовленный человек поймет внешний вид будущего рисунка, а в Иллюстраторе простейшая операция задания касательной к кривой превращается в квест.

В любом случае, использование скриптов и функций программирования внутри издательских систем Wysiwig — штука полезная. Например, InDesign становиться существенно мощней и удобнее, если знать, как использовать GREP и скрипты.
В Иллюстраторе используется самый примитивный вариант скриптов — Actions, пользы особой от них я не вижу.

Получился ответ несколько далекий от программирования, надеюсь, он будет интересен в рамках данной темы.
P.S. видел Ваш пост о черно-белых штриховых иллюстраций для учебника физики. Очень здорово сделано, чувствуется художественный вкус. Творческих успехов!
Тема wysiwig, кода, всякой разметки, и как их совмещать и правда очень интересная.
Для иллюстратора точно можно (по крайней мере было) писать скрипты на js с довольно богатыми возможностями. Вот, например, первое что гуглится. Сам я, правда, только скрипт, который собирал визитки из xml-к очень давно там писал и не могу особо подсказать. В индизайне можно так же, постоянно этим пользуюсь и сейчас.
Спасибо!
Получил нехилое эстетическое удовольствие от чтения и статьи, и самой работы.
Насчет развития — мне кажется, стоило бы попробовать изготовить public ТеХ-инструментарий для написания иллюстрированных решений геометрических задач (то бишь так, чтоб на вход можно было подавать уже написанные в ТеХе решения, а они уже отображались так же, как у Бирна.

Спасибо.
Сейчас уже в основном вещи специфичные для книги вынесены в preamble_be.tex, а preamble.tex и byrne.mp кажется достаточно, чтобы оформлять доказательства в таком стиле в ConTeXt-е. Синтаксис я стараюсь постепенно улучшать и делать удобнее. Только документацию надо сделать нормальную.
Шикарно! Выл от восторга посреди ночи. Теперь буду кумекать, как это добро перенести в движок для текстографических адвенчур. Спасибо огромное!
Спасибо! Если понадобятся какие-нибудь объяснения по тому, как что-нибудь работает внутри — пишите, и постараюсь внести в документацию.
You're welcome. I'm not sure if I got what you mean correctly, but some readable documentation is among the things I want to do as soon as possible.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.