Redefining latex macro using same name

2020-02-25 08:37发布

问题:

Currently I use a \mytodo macro, which just calls \todo[inline]:

\newcommand{\pbtodo}[1]{\todo[inline]{#1}}

But I'd like to call this macro \todo. The simplest solution:

\renewcommand{\todo}[1][]{\todo{#1}} 

unsurprisingly resulted in what I presume to be a stack overflow:

! TeX capacity exceeded, sorry [input stack size=5000].

Does anyone know a way to use the old \todo macro in a redefinition?

回答1:

I often see advice on the web along the lines of:

\let\Oldtodo\todo
\renewcommand{\todo}[1]{\Oldtodo[inline]{#1}}

for this situation. I believe that \let is a plain TeX feature.