Definire ambienti personalizzati
Un ambiente (\begin{...}...\end{...}) è utile quando serve applicare la stessa formattazione a un blocco di contenuto, non a un singolo valore come fa un comando.
Con \newenvironment (LaTeX2e)
latex
\newenvironment{osservazione}
{\par\noindent\textbf{Osservazione.}\space}
{\par}latex
\begin{osservazione}
Questo è il testo dell'osservazione.
\end{osservazione}- Il primo argomento è il codice eseguito all'apertura (
\begin). - Il secondo è il codice eseguito alla chiusura (
\end).
Con un argomento
latex
\newenvironment{osservazione}[1]
{\par\noindent\textbf{Osservazione (#1).}\space}
{\par}latex
\begin{osservazione}{importante}
Questo è il testo dell'osservazione.
\end{osservazione}Attenzione
A differenza di \newcommand, in \newenvironment l'argomento #1 è disponibile solo nella parte di apertura, non in quella di chiusura.
Con xparse (LaTeX3)
latex
\usepackage{xparse}
\NewDocumentEnvironment{osservazione}{O{}}{%
\par\noindent\textbf{Osservazione\IfNoValueTF{#1}{.}{ (#1).}}\space
}{%
\par
}Come per i comandi, xparse permette argomenti opzionali e una gestione più esplicita dei casi limite (qui, \IfNoValueTF distingue se l'argomento opzionale è stato passato o meno).
Suggerimento
Per ambienti semplici che si limitano ad applicare uno stile (senza logica condizionale), \newenvironment è sufficiente e più leggibile — passare a xparse solo quando serve davvero la flessibilità in più.