Skip to content

Instantly share code, notes, and snippets.

@dginev
Created November 14, 2025 18:33
Show Gist options
  • Select an option

  • Save dginev/4a47634fef4ef2b6a108bd18af6fb443 to your computer and use it in GitHub Desktop.

Select an option

Save dginev/4a47634fef4ef2b6a108bd18af6fb443 to your computer and use it in GitHub Desktop.
Timing DefPrimitive and DefConstructor
LoadClass('article');
DefPrimitive('\primitive', sub { Note("primitive1:replacement"); return;},
beforeDigest => sub { Note("primitive1:beforeDigest"); return;},
afterDigest => sub { Note("primitive1:afterDigest"); return;});
DefPrimitive('\anotherprimitive', sub { Note("primitive2:replacement"); return;},
beforeDigest => sub { Note("primitive2:beforeDigest"); return;},
afterDigest => sub { Note("primitive2:afterDigest"); return;});
DefConstructor('\constructor', sub {Note("constructor:replacement"); return;},
beforeDigest => sub { Note("constructor:beforeDigest"); return;},
afterDigest => sub { Note("constructor:afterDigest"); return;},
beforeConstruct => sub { Note("constructor:beforeConstruct"); return;},
afterConstruct => sub { Note("constructor:afterConstruct"); return;});
1;
...
(Loading /tmp/when.cls.ltxml...
(Loading /home/deyan/perl5/lib/perl5/LaTeXML/Package/article.cls.ltxml... 0.01 sec) 0.01 sec)
primitive1:beforeDigest
primitive1:replacement
primitive1:afterDigest
constructor:beforeDigest
constructor:afterDigest
primitive2:beforeDigest
primitive2:replacement
primitive2:afterDigest
0.70 sec) 0.77 sec)
(Building...
(Loading compiled schema /home/deyan/perl5/lib/perl5/LaTeXML/resources/RelaxNG/LaTeXML.model... 0.01 sec)
constructor:beforeConstruct
constructor:replacement
constructor:afterConstruct
0.01 sec)
(Rewriting... 0.00 sec)
(Finalizing... 0.00 sec)
...
\documentclass{when}
\begin{document}
\primitive\constructor\anotherprimitive
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment