calc: Operating on Selections
11.1.4 Operating on Selections
------------------------------
Once a selection is made, all Calc commands that manipulate items on the
stack will operate on the selected portions of the items instead. (Note
that several stack elements may have selections at once, though there
can be only one selection at a time in any given stack element.)
The ‘j e’ (‘calc-enable-selections’) command disables the effect that
selections have on Calc commands. The current selections still exist,
but Calc commands operate on whole stack elements anyway. This mode can
be identified by the fact that the ‘*’ markers on the line numbers are
gone, even though selections are visible. To reactivate the selections,
press ‘j e’ again.
To extract a sub-formula as a new formula, simply select the
sub-formula and press <RET>. This normally duplicates the top stack
element; here it duplicates only the selected portion of that element.
To replace a sub-formula with something different, you can enter the
new value onto the stack and press <TAB>. This normally exchanges the
top two stack elements; here it swaps the value you entered into the
selected portion of the formula, returning the old selected portion to
the top of the stack.
3 ... ... ___
(a + b) . . . 17 x y . . . 17 x y + V c
2* ............... 2* ............. 2: -------------
. . . . . . . . 2 x + 1
3 3
1: 17 x y 1: (a + b) 1: (a + b)
In this example we select a sub-formula of our original example,
enter a new formula, <TAB> it into place, then deselect to see the
complete, edited formula.
If you want to swap whole formulas around even though they contain
selections, just use ‘j e’ before and after.
The ‘j '’ (‘calc-enter-selection’) command is another way to replace
a selected sub-formula. This command does an algebraic entry just like
the regular ‘'’ key. When you press <RET>, the formula you type
replaces the original selection. You can use the ‘$’ symbol in the
formula to refer to the original selection. If there is no selection in
the formula under the cursor, the cursor is used to make a temporary
selection for the purposes of the command. Thus, to change a term of a
formula, all you have to do is move the Emacs cursor to that term and
press ‘j '’.
The ‘j `’ (‘calc-edit-selection’) command is a similar analogue of
the ‘`’ (‘calc-edit’) command. It edits the selected sub-formula in a
separate buffer. If there is no selection, it edits the sub-formula
indicated by the cursor.
To delete a sub-formula, press <DEL>. This generally replaces the
sub-formula with the constant zero, but in a few suitable contexts it
uses the constant one instead. The <DEL> key automatically deselects
and re-simplifies the entire formula afterwards. Thus:
###
17 x y + # # 17 x y 17 # y 17 y
1* ------------- 1: ------- 1* ------- 1: -------
2 x + 1 2 x + 1 2 x + 1 2 x + 1
In this example, we first delete the ‘sqrt(c)’ term; Calc
accomplishes this by replacing ‘sqrt(c)’ with zero and resimplifying.
We then delete the ‘x’ in the numerator; since this is part of a
product, Calc replaces it with ‘1’ and resimplifies.
If you select an element of a vector and press <DEL>, that element is
deleted from the vector. If you delete one side of an equation or
inequality, only the opposite side remains.
The ‘j <DEL>’ (‘calc-del-selection’) command is like <DEL> but with
the auto-selecting behavior of ‘j '’ and ‘j `’. It deletes the selected
portion of the formula indicated by the cursor, or, in the absence of a
selection, it deletes the sub-formula indicated by the cursor position.
(There is also an auto-selecting ‘j <RET>’ (‘calc-copy-selection’)
command.)
Normal arithmetic operations also apply to sub-formulas. Here we
select the denominator, press ‘5 -’ to subtract five from the
denominator, press ‘n’ to negate the denominator, then press ‘Q’ to take
the square root.
.. . .. . .. . .. .
1* ....... 1* ....... 1* ....... 1* ..........
2 x + 1 2 x - 4 4 - 2 x _________
V 4 - 2 x
Certain types of operations on selections are not allowed. For
example, for an arithmetic function like ‘-’ no more than one of the
arguments may be a selected sub-formula. (As the above example shows,
the result of the subtraction is spliced back into the argument which
had the selection; if there were more than one selection involved, this
would not be well-defined.) If you try to subtract two selections, the
command will abort with an error message.
Operations on sub-formulas sometimes leave the formula as a whole in
an “un-natural” state. Consider negating the ‘2 x’ term of our sample
formula by selecting it and pressing ‘n’ (‘calc-change-sign’).
.. . .. .
1* .......... 1* ...........
......... ..........
. . . 2 x . . . -2 x
Unselecting the sub-formula reveals that the minus sign, which would
normally have canceled out with the subtraction automatically, has not
been able to do so because the subtraction was not part of the selected
portion. Pressing ‘=’ (‘calc-evaluate’) or doing any other mathematical
operation on the whole formula will cause it to be simplified.
17 y 17 y
1: ----------- 1: ----------
__________ _________
V 4 - -2 x V 4 + 2 x