%%
%% The LaTeX Companion, 3ed
%%
%% Example A-1-17 on page II-645 in "Changing arguments to command names".
%%
%% Copyright (C) 2022 Frank Mittelbach
%%
%% It may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%%
%% See https://www.latex-project.org/lppl.txt for details.
%%

\documentclass{tlc3exa}
\pagestyle{empty}
\setcounter{page}{6}
\setlength\textwidth{423.0pt}

  \setlength\marginparwidth{72pt}
  \addtolength\textwidth{-\marginparwidth}
  \addtolength\textwidth{-\marginparsep}

%StartShownPreambleCommands
\usepackage{kantlipsum,todonotes}
\NewDocumentCommand\newcopyedit{O{blue} m}                         % l.1
  {\newcounter{todo#2}%                                            % l.2
   \ExpandArgs{c}\NewDocumentCommand{#2}{s m}%                     % l.3
     {\stepcounter{todo#2}%                                        % l.4
      \IfBooleanTF {##1}%                                          % l.5
         {\todo[inline,color=#1!20]{#2 \UseName{thetodo#2}: ##2}}% % l.6
         {\todo[color=#1!20]{#2 \UseName{thetodo#2}: ##2}}}}%      % l.7
\newcopyedit{fmi} \newcopyedit[red]{ufi}                           % l.8
%StopShownPreambleCommands

\begin{document}
Kant:\fmi{correct} \kant*[1][1]\fmi{use a different phrase}
\kant[1][2]\ufi*{Add another paragraph!}
\end{document}
