TeX e LaTeX.
Comandi e Ambienti personalizzati

A livello TeX

Per definire o ridefinire i comandi si possono usare i seguenti comandi

Uguagliare due comandi indipendentemente dai parametri
\let\comando1=\comando2

Senza parametri
\def\comando{definizione}

Con parametri obbligatori (nell'esempio 3)
\def\comando#1#2#3{definizione}

Con il primo parametro opzionale e gli altri n-1 obbligatori
\def\comando[#1]#2#3{definizione}
Non c'entra molto ma non sapevo dove scriverla.
Il comando \@ifstar funziona solo se il comando che si va a "testare"
non contiene parametri.

A livello LaTeX

Per definire o ridefinire i comandi si possono usare i seguenti comandi

Senza parametri
\newcommand{\comando}{definizione}
\renewcommand{\comando}{definizione}
\providecommand{\comando}{definizione}

Con parametri obbligatori
\newcommand{\comando}[# param]{definizione}
\renewcommand{\comando}[# param]{definizione}
\providecommand{\comando}[# param]{definizione}

Con il primo parametro opzionale e gli altri n-1 obbligatori
\newcommand{\comando}[# param][default #1]{definizione}
\renewcommand{\comando}[# param][default #1]{definizione}
\providecommand{\comando}[# param][default #1]{definizione}

Newcommand funziona solo se il comando non era precedentemente definito altrimenti restituisce un errore. Renewcommand funziona solo se un comando è già definito altrimenti restituisce un errore. Providecommand redifinisce il comando nel caso questo non sia stato già definito. Se invece il comando già esisteva providecommand lascia tutto così com'è senza restituire né errori né warning.

Di questi tre comandi esiste anche la versione asteriscata \newcommand*, \renewcommand* e \providecommand*. Questi comandi si compartano come gli altri con l'unica differenza che gli eventuali parametri del comando non possono contenere interruzioni di capoverso, cioè comandi \par o righe bianche. Nel caso i comandi non contengano argomenti usare la versione normale perché tanto è inutile usare quella asteriscata. Se invece avete degli argomenti usate, se potete, sempre la versione asteriscata perché permette di individuare meglio gli errori. I comandi con asteriscono vengono chiamati comandi corti (short commands) mentre quelli normali vengono chiamati comandi lunghi (long commands).

Per definire o ridefinire gli ambienti si possono usare i seguenti comandi

Senza parametri
\newenvironment{nome}{prima}{dopo}
\renewenvironment{nome}{prima}{dopo}
\provideenvironment{nome}{prima}{dopo}

Con parametri obbligatori
\newenvironment{nome}[# param]{prima}{dopo}
\renewenvironment{nome}[# param]{prima}{dopo}
\provideenvironment{nome}[# param]{prima}{dopo}

Con il primo parametro opzionale e gli altri n-1 obbligatori
\newenvironment{nome}[# param][default #1]{prima}{dopo}
\renewenvironment{nome}[# param][default #1]{prima}{dopo}
\provideenvironment{nome}[# param][default #1]{prima}{dopo}

Le versioni asteriscate si compartano come le altre con l'unica differenza che gli eventuali parametri dell'ambiente non possono contenere interruzioni di capoverso, cioè comandi \par o righe bianche.