Robitex's Blog

Ideas in the web

Comandi mutanti


Mutazioni in LaTeX

Ammettiamo di voler creare un comando LaTeX mutante nel tempo, ovvero un comando che ha un effetto la prima volta che lo si esegue, e che ne ha un altro le volte successive.

Se pensate che un comando del genere non serva, ebbene sappiate che mi son trovato in una situazione in cui un comando del genere avrebbe migliorato la leggibilità del codice ed anche la velocità di esecuzione rispetto a soluzioni più tradizionali.

Codice geneticamente modificato

Definiamo semplicemente un comando che per esempio produce il testo “Pippo” e si auto-ridefinisce per produrre la parola “Topolino”:

\def\timecmd{Pippo%
   \def\timecmd{Topolino}}

Un interessante tentativo di comando mutante. La cosa sorprendente è che funziona perfettamente. Compilate con pdflatex il codice completo seguente e lo costaterete personalmente:

\documentclass{minimal}
\def\timecmd{Pippo%
   \def\timecmd{Topolino}}

\begin{document}
Invitiamo prima \timecmd, e poi \timecmd!

Sicuramente \timecmd{} arriver\`a in ritardo.
\end{document}

Incuriositi? Sappiate che gli annidamenti possono essere anche più di due:

\documentclass{minimal}
\def\timecmd{Pippo%
   \def\timecmd{Topolino%
      \def\timecmd{Pluto%
         \def\timecmd{Evviva}}}}

\begin{document}
Invitiamo prima \timecmd, e poi \timecmd!

Sicuramente \timecmd{} arriver\`a in ritardo, e \timecmd{} si presenter\`a con un bel regalo.

Grideremo pi\`u volte \timecmd, \timecmd, \timecmd.
\end{document}

Ciao!

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: