When I compile this minimum LaTeX file:
\documentclass{report}
\def\defMacro#1#2{\expandafter\def\csname#1\endcsname{#2}}
\def\useMacro#1{\csname#1\endcsname}
\usepackage{pgffor}
\begin{document}
\foreach \n in {0,1,...,10}{
\defMacro{number:\n}{\n}
}
\useMacro{number:8}
\end{document}
I obtain no PDF output. What do I mistake?
etoolbox
package provides\csdef
and\csuse
which do the same as\defMacro
and\useMacro
. LaTeX itself defines\@namedef
and\@nameuse
. The\csuse
macro takes care not to define the given macro (equal to\relax
) if it doesn't exists. It expands to nothing in this case.