Date: Dec 29, 2012 3:09 PM
Author: David Park
Subject: Re: Usage Messages in Mathematica

No, on my system (M9, Windows 7) the first time


is evaluated I obtain a usage message with quotes around it. If the same
statement is evaluated again the quotes go away. Of course, it is the first
evaluation that the user will see.

David Park

From: Bob Hanlon []

Using both Format and usage messages seems to work.

Format[f[n_, x_]]:=
Subscript[f, n][x];
f::usage="f[n, x] gives " <>
ToString[f[n, x], StandardForm]<>".";


f[n, x]

f[n, x]//TraditionalForm

Format[g[n_, a_, x_]]:=
Power[Subscript[g, n], a][x];
g::usage="g[n, a, x] gives " <>
ToString[g[n, a, x], StandardForm]<>".";


g[n, a, x]

g[n, a, x]//TraditionalForm

Bob Hanlon

On Fri, Dec 28, 2012 at 5:36 AM, Murray Eisenberg <>
> And yet usage messages for built-in objects seem to handle in-line
> expressions and subscripts with aplomb. See, for example:
> Subscript::usage
> On Dec 27, 2012, at 5:04 AM, djmpark <> wrote:

>> An extremely weak features of Mathematica is the design of Usage
>> messages, which seems to be stuck at Version 1, although the
>> technology has moved far beyond that.
>> The present design is not up to the task and full of gotchas. For
>> example, how does one include a box structure, for example a
>> subscripted symbol, within a usage message? If one just enters a
>> subscript then the first time the message is displayed there are
>> quotes around it and the second time the quotes go away. If one
>> starts an InlineCell within the string and enters the expression then
>> that problem goes away. If one then moves the usage definition to a
>> package and Runs the package it works OK. But if one saves and closes
>> the package, quits the kernel and then reinitializes, loading the
>> package, the usage message is defective giving the InputForm of the
>> box expression. Mathematica parses and changes the usage messages when

the file is read.
>> The String form is just not adequate for usage messages. Nor is it
>> adequate to contain information on overloading functions. Usage
>> definitions should be expressions. Something like the following:
>> Usage[FunctionName] = {{template, usageExpression}..}
>> (The usageExpression might be a Row containing Strings and
>> mathematical expressions.)...

> ---
> Murray Eisenberg
> Mathematics & Statistics Dept.
> Lederle Graduate Research Tower phone 413 549-1020 (H)
> University of Massachusetts 413 545-2838 (W)
> 710 North Pleasant Street fax 413 545-1801
> Amherst, MA 01003-9305