MaryJo, per \makeatletter e \makeatother c’è poco da scrivere; ricorda:
1) In LaTeX “normale” (accessibile ad un normale utente) una macro ha il nome composto da \ seguito da una stringa di sole lettere,oppure da \ seguito da un unico segno non leterale (una cifra, un segno di inpterpunzione, eccetera).
2) @ non è una lettera;
3) giusto o sbagliato che sia, fin dai primordi di plain TeX (antecedente a LaTeX) tutti i comandi del “kernel” (il nucleo del linguaggio) da non rendere accessibili agli utenti sono stati scritti attribuendo al segno @ il codice di lettera; è una forma di protezione per evitare che inavvertitamente e inconsapevolmente un utente possa ridefinre un comando del kernel.
4) Leslie lamport, il creatore di LaTeX, nel suo stesso manuale scrive che per ridefinire certi comandi interni protetti mediante la presenza di @ nel loro nome bisogna racchiudere la ridefinizione fra \makeatletter e \makeatother; il primo dichiara che @ (in inglese si chiama “at sign”) diventi una lettera e il secondo riassegna a questa lettere il codice di “altro segno”.
Infine per quanto riguarda \if e \fi: \if inizia una frase condizionale come in qualunque linguaggio di programmazione (a parte lo slash che è specifico dei comandi e delle macro del linguaggio di programmazione interpretabile dal motore di composizione del sistema TeX) e \fi, che è scritto all’opposto di \fi ha il significato opposto, cioè chiude la frase condizionale.
In alcuni altri linguaggi di programmazione case inizia una frase di scelta fra diversi casi e esac finisce la frase; questa è veramente per i patiti di programmazione 😯