Я не уверен, что это квалифицируется как программирование как таковое, но я недавно начал делать что-то вроде объектно-ориентированных вещей в LaTeX. (Вам не нужно знать математику, чтобы следовать следующему.) В последних статьях я писал о категориях , которые имеют объектов и морфизмов . Так как их было довольно много, я хотел иметь последовательный стиль, чтобы, скажем, & # x1d49e; была категория с типичным объектом C и типичным морфизмом c . Тогда у меня также будет & # x1d49f; с D и d . Поэтому я определяю «класс», говорю «категория» (вам нужно быть математиком, чтобы понять шутку) и объявлять, что C является экземпляром этого класса, а затем иметь доступ к \ ccat, \ cobj, \ cmor и так далее. Причина, по которой не выполняются \ cat {c}, \ obj {c} и \ mor {c} и т. Д., Заключается в том, что иногда эти категории имеют специальные имена, поэтому после объявления экземпляра я могу очень легко изменить его имя (просто переопределите \ ccat - ну, на самом деле \ mathccat, так как \ ccat - это оболочка, которая выбирает \ mathccat в математическом режиме и \ textccat в текстовом режиме). (Конечно, это немного сложнее, чем предполагает вышеизложенное, и материал ОО действительно полезен, когда я хочу определить новую категорию как вариант старой (она может даже иметь дело со случаем, когда старая не ' пока не существует.).)
Хотя это не может считаться реальным программированием, я использую его в статьях и считаю его полезным - в других ответах (пока что) больше похоже на демонстрацию возможностей LaTeX, чем на разумное решение проблемы. практическая задача.