There is at least one operator in Maxima which "protects" everything inside
it from both evaluation and simplification, namely lambda.
To enter an unsimplified expression, just write, e.g. lambda([], diff(1,x) )
-- diff( <constant> ...) normally simplifies to 0 (even without evaluation),
but this stays as lambda([],diff(1,x)).
To manipulate this expression in any way, you'll need to have simp:false.
For example:
(%i1) expr: lambda([], x-x );
(%o1) lambda( [], x-x ) << no simplification or
evaluation
(%i2) block([simp:false],print(part(expr,2)));
x-x << printed without simplification or
evaluation
(%o2) 0 << but the *return value* from the block is
simplified since simp is true outside the block
Keep in mind that standard Maxima mathematical operations are not guaranteed
to work correctly on unsimplified expressions.
Robert's mail addresses the Tex issues.
-s