Why does \lccode`~=`, with an active , work only in an environment definition but not in a LaTeXcommand? We are using an active , to produce bullets:
Here is an MWE:
\documentclass{book}
\usepackage{color}
\usepackage{xparse}
\makeatletter
\def\keybullet{\textbullet}
\newenvironment{keywords}{\bgroup\sloppy \begingroup\lccode~=, \lowercase{\endgroup\def~}{${}\hbox{\ \keybullet\ }{}$} \catcode`,=\active \noindent\textbf{Keywords}\hskip1em}{\egroup\par\addvspace{\baselineskip}}
\newcommand{\Keywords}[1]{\sloppy \begingroup\lccode~=, \lowercase{\endgroup\def~}{${}\hbox{\ \keybullet\ }{}$} \catcode`,=\active \noindent\textbf{Keywords}\hskip1em#1\par\addvspace{\baselineskip}}
\makeatother
\begin{document}
\begin{keywords} Harmonic balance, Multi-degrees-of-freedom systems, Fundamental harmonic, Higher harmonics, Energy method \end{keywords}
\Keywords{Harmonic balance, Multi-degrees-of-freedom systems, Fundamental harmonic, Higher harmonics, Energy method}
\end{document}

