calc: More About Embedded Mode

 
 17.2 More About Embedded Mode
 =============================
 
 When Embedded mode “activates” a formula, i.e., when it examines the
 formula for the first time since the buffer was created or loaded, Calc
 tries to sense the language in which the formula was written.  If the
 formula contains any LaTeX-like ‘\’ sequences, it is parsed (i.e., read)
 in LaTeX mode.  If the formula appears to be written in multi-line Big
 mode, it is parsed in Big mode.  Otherwise, it is parsed according to
 the current language mode.
 
    Note that Calc does not change the current language mode according
 the formula it reads in.  Even though it can read a LaTeX formula when
 not in LaTeX mode, it will immediately rewrite this formula using
 whatever language mode is in effect.
 
    Calc’s parser is unable to read certain kinds of formulas.  For
 example, with ‘v ]’ (‘calc-matrix-brackets’) you can specify matrix
 display styles which the parser is unable to recognize as matrices.  The
 ‘d p’ (‘calc-show-plain’) command turns on a mode in which a “plain”
 version of a formula is placed in front of the fully-formatted version.
 When Calc reads a formula that has such a plain version in front, it
 reads the plain version and ignores the formatted version.
 
    Plain formulas are preceded and followed by ‘%%%’ signs by default.
 This notation has the advantage that the ‘%’ character begins a comment
 in TeX and LaTeX, so if your formula is embedded in a TeX or LaTeX
 document its plain version will be invisible in the final printed copy.
 Certain major modes have different delimiters to ensure that the “plain”
 Customizing Embedded Mode:: to see how to change the “plain” formula
 delimiters.
 
    There are several notations which Calc’s parser for “big” formatted
 formulas can’t yet recognize.  In particular, it can’t read the large
 symbols for ‘sum’, ‘prod’, and ‘integ’, and it can’t handle ‘=>’ with
 the righthand argument omitted.  Also, Calc won’t recognize special
 formats you have defined with the ‘Z C’ command (SeeUser-Defined
 Compositions).  In these cases it is important to use “plain” mode to
 make sure Calc will be able to read your formula later.
 
    Another example where “plain” mode is important is if you have
 specified a float mode with few digits of precision.  Normally any
 digits that are computed but not displayed will simply be lost when you
 save and re-load your embedded buffer, but “plain” mode allows you to
 make sure that the complete number is present in the file as well as the
 rounded-down number.
 
    Embedded buffers remember active formulas for as long as they exist
 in Emacs memory.  Suppose you have an embedded formula which is ‘pi’ to
 the normal 12 decimal places, and then type ‘C-u 5 d n’ to display only
 five decimal places.  If you then type ‘d n’, all 12 places reappear
 because the full number is still there on the Calc stack.  More
 surprisingly, even if you exit Embedded mode and later re-enter it for
 that formula, typing ‘d n’ will restore all 12 places because each
 buffer remembers all its active formulas.  However, if you save the
 buffer in a file and reload it in a new Emacs session, all non-displayed
 digits will have been lost unless you used “plain” mode.
 
    In some applications of Embedded mode, you will want to have a
 sequence of copies of a formula that show its evolution as you work on
 it.  For example, you might want to have a sequence like this in your
 file (elaborating here on the example from the “Getting Started”
 chapter):
 
      The derivative of
 
                                    ln(ln(x))
 
      is
 
                        (the derivative of ln(ln(x)))
 
      whose value at x = 2 is
 
                                  (the value)
 
      and at x = 3 is
 
                                  (the value)
 
    The ‘C-x * d’ (‘calc-embedded-duplicate’) command is a handy way to
 make sequences like this.  If you type ‘C-x * d’, the formula under the
 cursor (which may or may not have Embedded mode enabled for it at the
 time) is copied immediately below and Embedded mode is then enabled for
 that copy.
 
    For this example, you would start with just
 
      The derivative of
 
                                    ln(ln(x))
 
 and press ‘C-x * d’ with the cursor on this formula.  The result is
 
      The derivative of
 
                                    ln(ln(x))
 
 
                                    ln(ln(x))
 
 with the second copy of the formula enabled in Embedded mode.  You can
 now press ‘a d x <RET>’ to take the derivative, and ‘C-x * d C-x * d’ to
 make two more copies of the derivative.  To complete the computations,
 type ‘3 s l x <RET>’ to evaluate the last formula, then move up to the
 second-to-last formula and type ‘2 s l x <RET>’.
 
    Finally, you would want to press ‘C-x * e’ to exit Embedded mode,
 then go up and insert the necessary text in between the various formulas
 and numbers.
 
    The ‘C-x * f’ (‘calc-embedded-new-formula’) command creates a new
 embedded formula at the current point.  It inserts some default
 delimiters, which are usually just blank lines, and then does an
 algebraic entry to get the formula (which is then enabled for Embedded
 mode).  This is just shorthand for typing the delimiters yourself,
 positioning the cursor between the new delimiters, and pressing ‘C-x *
 e’.  The key sequence ‘C-x * '’ is equivalent to ‘C-x * f’.
 
    The ‘C-x * n’ (‘calc-embedded-next’) and ‘C-x * p’
 (‘calc-embedded-previous’) commands move the cursor to the next or
 previous active embedded formula in the buffer.  They can take positive
 or negative prefix arguments to move by several formulas.  Note that
 these commands do not actually examine the text of the buffer looking
 for formulas; they only see formulas which have previously been
 activated in Embedded mode.  In fact, ‘C-x * n’ and ‘C-x * p’ are a
 useful way to tell which embedded formulas are currently active.  Also,
 note that these commands do not enable Embedded mode on the next or
 previous formula, they just move the cursor.
 
    The ‘C-x * `’ (‘calc-embedded-edit’) command edits the embedded
 formula at the current point as if by ‘`’ (‘calc-edit’).  Embedded mode
 does not have to be enabled for this to work.  Press ‘C-c C-c’ to finish
 the edit, or ‘C-x k’ to cancel.