# [l2h] problems with renewenvironment

**Gregor Goldbach
**
7goldbac@informatik.uni-hamburg.de

*Tue, 22 Jan 2002 12:12:26 +0100*

On Sat, Jan 19, 2002 at 10:13:19AM +1100, Ross Moore wrote:
>* > I have interesting problems when redefining environments. latex2html
*>* > won't convert the following small document:
*>* >
*>* > --- 8< ---
*>* >
*>* > \documentclass{article}
*>* > \usepackage{graphicx}
*>* >
*>* > \newcommand{\cmda}[1]{bla #1}
*>* > \newcommand{\cmdb}[1]{\emph{#1}}
*>* > \newenvironment{enva}{\renewcommand{\cmda}{\cmdb}}{}
*>* >
*>* > \begin{document}
*>* >
*>* > \begin{enva}
*>* > asdf \cmdb{asdf}
*>* > \end{enva}
*>* >
*>* > asfdf
*>* > \includegraphics[]{test.eps}
*>* > asdf
*>* >
*>* > \end{document}
*>*
*>* Yes. LaTeX2HTML's expansion model is different to that of TeX,
*>* so the environment definition:
*>*
*>* \newenvironment{enva}{\renewcommand{\cmda}{\cmdb}}{}
*>*
*>* does not work.
*>*
*>* There are actually 2 problems.
*>*
*>* The first is semantics only;
*>* you should use a syntax of:
*>*
*>* \newenvironment{enva}{\renewcommand{\cmda}[1]{\cmdb{##1}}}{}
*
Thanks. The real world part where I need this follows:
--- 8< ---
\newlength{\Mylen}
\newlength{\Mylabelwidth}
\newcommand{\entrylabel}[1]{%
\setlength{\Mylabelwidth}{20mm}%
\settowidth{\Mylen}{\textbf{#1}}%
\ifthenelse{\lengthtest{\Mylen > \Mylabelwidth}}%
{\parbox[b]{\Mylabelwidth}%
{\makebox[0pt][l]{\textbf{#1}}\\}}%
{\textbf{#1}}%
\hfil\relax}
\newenvironment{entry}
{\begin{list}{}%
{\renewcommand{\makelabel}[1]{\entrylabel{##1}}%
\setlength{\labelwidth}{20mm}%
\setlength{\leftmargin}{\labelwidth}%
\addtolength{\leftmargin}{\labelsep}%
}%
}%
{\end{list}}
--- 8< ---
This works fine now ;)
>* The change in syntax suggested above cures this problem.
*>* However, the redefinition of \cmda never happens.
*
I understand that in my example code above \makelabel is redefined in
LaTeX but not in HTML. Is this correct?
>* > Thanks for your help,
*>*
*>* Hope this helps,
*
Yupp.
Gregor