[l2h] Cannot get htmlonly to work in a macro

Ross Moore Ross Moore <ross@ics.mq.edu.au>
Thu, 27 Jan 2000 23:07:30 +1100 (EST)


> 
> The following macro used to work.... but now breaks latex on the htmlonly
> part.

Did it really used to work, in that form ?

Environments like {htmlonly} are  verbatim-like for LaTeX.
Thus they are fragile and do not work well, if at all,
when used within macro definitions.

 
> ! LaTeX Error: Not in outer par mode.
> 

Typical symptom of this type of problem.


> See the LaTeX manual or LaTeX Companion for explanation.
> Type  H <return>  for immediate help.
>  ...                                              
>                                                   
> l.133 \figuregif[scale=0.5]{mo
>                               ve-valve-op-exp}{Example of a OP}{fig-proc1-fig}
> You've lost some text.  Try typing  <return>  to proceed.
> If that doesn't work, type  X <return>  to quit.
> 
> Any way to fix it?

Yes. Don't put the conditional code *inside* the macro expansion.
Instead have conditional macro definitions:

e.g.

%begin{latexonly}
 \newcommand{figuregif}{....
  .... what you want it to do in LaTeX ...
%end{latexonly}
\begin{htmlonly}
  .... what you want it to do in LaTeX2HTML ...
\end{htmlonly}


Note that this is more efficient anyway, since you are not testing
the condition at each usage, but just working with the desired coding.

 
> \newcommand{\figuregif}[4][]%
> {
> \begin{figure}
> \begin{makeimage}
> \end{makeimage}
> \begin{latexonly}
> \begin{center}
> \includegraphics[#1]{#2.ps}
> \end{center}
> \end{latexonly}
> \begin{htmlonly}
> \htmladdimg[center]{gif/#2.gif}
> \end{htmlonly}
> \caption{#3}
> \label{#4}
> \end{figure}
> }
> 


Hope this helps,

	Ross Moore