No estoy seguro de si esto califica como programación per se, pero recientemente comencé a hacer algo un poco como cosas orientadas a objetos en LaTeX. (No es necesario saber nada de matemáticas para seguir lo siguiente). En artículos recientes, he estado escribiendo sobre categorías que tienen objetos y morfismos . Como ha habido bastantes de esos, quería un estilo coherente para que, digamos, 𝒞 fuera una categoría con el objeto C típico y el morfismo c típico . Entonces también tendría 𝒟 con D y d. Entonces defino una "clase", digo "categoría" (necesitas ser un matemático para entender la broma), y declaro que C es una instancia de esta clase, y luego tengo acceso a \ ccat, \ cobj, \ cmor Etcétera. La razón para no hacer \ cat {c}, \ obj {c} y \ mor {c}, y así sucesivamente, es que a veces estas categorías tienen nombres especiales y, por tanto, después de declarar la instancia, puedo modificar su nombre muy fácilmente (simplemente redefine \ ccat - bueno, en realidad \ mathccat ya que \ ccat es un contenedor que selecciona \ mathccat en modo matemático y \ textccat en modo texto). (Por supuesto, es un poco más complicado de lo que sugiere lo anterior y las cosas de OO realmente son útiles cuando quiero definir una nueva categoría como una variante de una anterior (incluso puede lidiar con el caso en el que la anterior no lo hace) t existe todavía.).)
Aunque puede que no califique como programación real, lo estoy usando en artículos y lo encuentro útil: las otras respuestas (hasta ahora) tienen más la sensación de mostrar las capacidades de LaTeX que de una solución sensata a un problema práctico.