I was peeking at the
LaTeX3 Github repository and specifically
l3auxdata.dtx. There was a surprise for me, as I have been practicing and studying the
expl3 syntax and modules for the last couple of weeks. The surprise was code like:
I am not too sure if there was a reason for the code to use
\def, but this reminded me of my own difficulties with the syntax.
There is a great temptation when starting with
expl to bypass the verbosity of the
expl language and use
TeX primitives. When I started with
expl3 I was literally translating
LaTeX2e code in my head and then writing it down. Pretty much like when you learn a foreign language.
I have by now mostly overcome this as I forced myself to do the following:
- As the too many underscores bothered me, at the beginning I wrote functions as
\module_dosomething:nn. This way I was a bit quicker with debugging and typing. Only started adding
g_much later or on refactoring the code.
- I mentally kept reading the commands together with the argument specifier until it started sinking in. Like
module dosomething en en. The reason I kept forgetting to write the specifier.
- When I used a
tex_<cs>:Dlike a command, I went back and refactored the code later to remove it.
- Write notes with examples as I practice the commands. This can be also useful to others.
Do you have any additional tips and tricks to share?