Re: \pretocmd e argomenti opzionali

#64099
Up
0
Down
::


Mi sono appena reso conto che non funziona nemmeno con \let\old<...>=<...> e \renewcommand. ❗

`
\documentclass{article}
\usepackage{etoolbox}

\newenvironment{ambiente}[2][]{%
\hrule\textit{#1, #2}%
}{}

\let\oldambiente\ambiente
\renewcommand{\ambiente}[2][]{%
\textbf{#1, #2}%
\oldambiente[#1]{#2}
}

\begin{document}
\begin{ambiente}[primo]{secondo}
\end{ambiente}
\end{document}
`
Dà errore di TeX capacity exceeded. Questo mi spiazza non poco, ma posso ammetterlo per via del funzionamento interno di \renewcommand (che non ho capito).

L’unica soluzione è la seguente?
`
\documentclass{article}
\usepackage{etoolbox}

\newenvironment{ambiente}[2][]{%
\hrule\textit{#1, #2}%
}{}

\makeatletter
\let\oldambiente\ambiente
\def\ambiente{%
\@ifnextchar[{\ambiente@o}{\ambiente@o[]}%
}
\def\ambiente@o[#1]#2{%
\textbf{#1, #2}%
\oldambiente[#1]{#2}%
}
\makeatother

\begin{document}
\begin{ambiente}[primo]{secondo}
\end{ambiente}
\end{document}
`

Go to top