# [texhax] fmt to cls conversion

Philip TAYLOR P.Taylor at rhul.ac.uk
Thu Jun 21 23:53:16 CEST 2012


Reinhard Kotucha wrote:

> I fear that it's impossible.  TeX evaluates (expands) macros before
> dumping a format file.  With other words, if the source file contains
> the expression
>
>    3 + 4
>
> , the format file contains only the number 7 and there is no way to
> find out whether it was 3 + 4 or 5 + 2 in the source code.
>
> The purpose of a format file is to avoid that all calculations have to
> be done at runtime.  Hence it only contains the results of such
> calculations and macro expansions.

Isn't that something of an over-simplification, Reinhard ?
Leaving aside the highly dubious assertion that "if the source
file contains the expression 3 + 4, the format file contains
only the number 7" (3 + 4 is /highly/ unlikely to involve macro
expansion), consider something as simple as the following :

\def \foo {\bar \baz}
\dump

In the format file, the macro \foo will be defined but /not/
expanded.  If the user at run-time then interrogates \foo :

\message {\meaning \foo}

he will be provided with the original definition, which may well
help him enormously with his task of re-creating the format source.

To demonstrate this, please try the following with VirTeX :

\message {\meaning \centerline}
\end

This will yield :

macro:#1->\line {\hss #1\hss }