help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Calc embedded assignment without producing output


From: Jay Belanger
Subject: Re: Calc embedded assignment without producing output
Date: Sun, 03 Apr 2011 22:47:53 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

> Here's an example.  I'd like to be able to use calc in the following manner:
>
> \documentclass{article}
> \begin{document}
> %%% f := 10 %%%
>
> The first value is
> $
> %%% f * 15 => %%%
> 150
> $
>
> The second value is
> $
> %%% f * 13 => %%%
> 130
> $
> \end{document}
>
> So, I'd like assignment f:=10 to be invisible in the document, but
> calc always inserts "f \gets 10" after evaluating it.

Calc could be adjusted to keep the ":=", although I don't suppose that
it matters whether there is "f:=10" or "f \gets 10" in the comment.

> Also, I'd like the evaluation of f*13 to only insert "150", and not
> "\evalto f * 15 \to 150".
>
> Is there a way to get this kind of behavior from calc?

Do you mean put the result on a separate line, but keep the formula
inside a comment?  Having something like that in Calc would probably be
a good idea.  For the time being, perhaps the following kludge would work.  
Keep the assignments and evaluation in comments, as above, but put them
in dollar signs (to make them easier to activate):

****
%%% $f := 10$ %%%

The first value is
$
%%% $f * 15 =>$ %%%

$
****

When the => formulas get updated, the result will still be in
comments, like

****
%%% $f \gets 10$ %%%

The first value is
$
%%% $\evalto f 15 \to 150$ %%%

$
****

Every once in a while run the function

(defun update-assignments ()
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward "^%+ *\\$.*\\\\to *\\(.*\\)\\$" nil t)
      (forward-line 1)
      (kill-line 1)
      (insert (match-string 1) "\n"))))

which will put the result of the => formulas on the following lines.
(Notice that the following line gets killed each time the above function
is run, so don't start off with something you want kept there.)

****
%%% $f \gets 10$ %%%

The first value is
$
%%% $\evalto f 15 \to 150$ %%%
150
$
****

This isn't quite what you asked for, but perhaps it will do for the time
being.

Jay


reply via email to

[Prev in Thread] Current Thread [Next in Thread]