Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2001
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2001

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: Controlling evaluation in Symbolize

  • To: mathgroup at smc.vnet.net
  • Subject: [mg30371] RE: [mg30352] Controlling evaluation in Symbolize
  • From: "David Park" <djmp at earthlink.net>
  • Date: Sun, 12 Aug 2001 02:30:00 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Richard,

Someday, I swear, I am really really going to learn how to use the Notation
package. It is probably quite useful once one learns the tricks.
Unfortunately, for me it takes a day and a half to learn each of its tricks.

For your problem, what is really needed is a way to Map the Symbolize
statement onto a list of variables. But that does not seem to be possible.
However, I was able to devise the following method using the NotationBoxTag
form of the Symbolize statement. I use r,s,t for the variable names to
simplify the email text. Still it is not possible to show all the input and
output forms because notations depends upon the specific 2-dimensional
structures.

Needs["Utilities`Notation`"]
Needs["Calculus`VectorAnalysis`"]

SetCoordinates[Spherical[r, s, t]];

The following will symbolize your B variables for a given set of
coordinates.

Hold[Symbolize[ NotationBoxTag [ SubscriptBox["B", subvar ] ]]]
% /. Partition[Thread[subvar -> ToString /@ Coordinates[]], 1]
% // ReleaseHold;

We can see that they have been successfully symbolized by looking at the
list of subscripted symbols in FullForm. (They have to be typed in with
their 2-dimensional structure.)

List[B\[UnderBracket]Subscript\[UnderBracket]r, B\[UnderBracket]Subscript\
\[UnderBracket]s, B\[UnderBracket]Subscript\[UnderBracket]t]

The symbols can be removed this way.

Hold[RemoveSymbolize[ NotationBoxTag [ SubscriptBox["B", subvar ] ]]]
% /. Partition[Thread[subvar -> ToString /@ Coordinates[]], 1]
% // ReleaseHold;
Remove @@
  List[B\[UnderBracket]Subscript\[UnderBracket]r,
    B\[UnderBracket]Subscript\[UnderBracket]s,
    B\[UnderBracket]Subscript\[UnderBracket]t]

If we look at the FullForm of the 2-dimensional expressions we now obtain

List[Subscript[B, r], Subscript[B, s], Subscript[B, t]]

That only took me three hours, a record for me with the Notation package.
The documentation says that use of NotationBoxTag is for advanced users. But
your application of Notation seems to be a common type of thing that one
would wish to do.

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/

> From: Richard Gass [mailto:gass at physics.uc.edu]
To: mathgroup at smc.vnet.net
>
> I need to create a number of symbols (things like SubscriptBox["B",
> "r"]). I want this to behave as a single object so I need to
> Symbolize it. My symbols will all be subscripts but my question is
> more general. Here is a simple example: First I load some packages
> and set the coordinate system
>
> << Calculus`VectorAnalysis`
> << Utilities`Notation`
> SetCoordinates[Spherical[r, \[Theta], \[Phi]]]
>   (* now from the palette I Symbolize B sub anything *)
>
> \!\(\*
>    RowBox[{"Symbolize", "[",
>      TagBox[\(B\_x_\),
>        NotationBoxTag,
>        TagStyle->"NotationTemplateStyle"], "]"}]\)
>
> (* Next I want to generate the needed symbols. *)
>
>
> In[9]:=
> \!\(Table[B\_\(\(Coordinates[]\)[\([i]\)]\), {i, 1, 3}]\)
>
> Out[9]=
> \!\({B\_\(\(Coordinates[]\)[\([\)\(i\)\(]\)]\),
>      B\_\(\(Coordinates[]\)[\([\)\(i\)\(]\)]\),
>      B\_\(\(Coordinates[]\)[\([\)\(i\)\(]\)]\)}\)
>
> (* But Symbolize freezes the evaluation so that Coordinate[][[i]]
> does not evaluate. What I want is
>
> In[4]:=
> \!\(Table[B\_\(\(Coordinates[]\)[\([i]\)]\), {i, 1, 3}]\)
>
> Out[4]=
> \!\({B\_r, B\_\[Theta], B\_\[Phi]}\)
>
> This code was of course, run before I symbolized B sub anything. What
> I want to do is to force the evaluation of Coordinates[][[i]] so that
> I generate B sub r, B sub theta and B sub phi as proper symbols.
> Since I do not know in advance what  coordinate system will be used,
> just typing them in is not an option *) Any ideas?
> --
> Richard Gass
> Department of Physics
> University of Cincinnati
> Cincinnati, OH 45221
> phone- 513-556-0519
> E-Mail gass at physics.uc.edu
>



  • Prev by Date: Re: TeX and virtual fonts
  • Next by Date: problems with lists
  • Previous by thread: Controlling evaluation in Symbolize
  • Next by thread: RE:Controlling evaluation in Symbolize