Suppose we have
\newcommand{\foo}[2][optional]{#1 #2}
defined somewhere (e.g. some package) and want to redefine it and re-use the original definition. This usually works with \let like described in https://en.wikibooks.org/wiki/TeX/let:
\let\originalfoo\foo
\renewcommand{\foo}[2][optional]{\originalfoo[#1]{modified #2}}
However, this leads to an infinite loop, as \let does not handle the optional argument.
How to handle the optional argument defined by \newcommand with \let?
\letwould workout somehow. – Daniel Krenn Mar 25 '18 at 11:35