X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/681ebc3315da58909ab2037e57f20bffdd81ce63..494ec1e71d7f725534be9a5518f0a2bdfe35d2c3:/doc/misc/ses.texi diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi index 2c84d04c66..6e3126841c 100644 --- a/doc/misc/ses.texi +++ b/doc/misc/ses.texi @@ -6,12 +6,13 @@ @syncodeindex fn cp @syncodeindex vr cp @syncodeindex ky cp +@documentencoding UTF-8 @c %**end of header @copying This file documents @acronym{SES}: the Simple Emacs Spreadsheet. -Copyright @copyright{} 2002--2013 Free Software Foundation, Inc. +Copyright @copyright{} 2002--2014 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -60,12 +61,13 @@ by formulas that can refer to the values of other cells. @end display @end ifnottex -To report bugs, send email to @email{jyavner@@member.fsf.org}. +To report bugs, use @kbd{M-x report-emacs-bug}. @insertcopying @menu * Sales Pitch:: Why use @acronym{SES}? +* Quick Tutorial:: A quick introduction * The Basics:: Basic spreadsheet commands * Advanced Features:: Want to know more? * For Gurus:: Want to know @emph{even more}? @@ -98,6 +100,95 @@ To report bugs, send email to @email{jyavner@@member.fsf.org}. @c =================================================================== +@node Quick Tutorial +@chapter Quick Tutorial +@cindex introduction +@cindex tutorial + +If you want to get started quickly and think that you know what to +expect from a simple spreadsheet, this chapter may be all that you +need. + +First, visit a new file with the @file{.ses} extension. +Emacs presents you with an empty spreadsheet containing a single cell. + +Begin by inserting a headline: @kbd{"Income"@key{RET}}. The double +quotes indicate that this is a text cell. (Notice that Emacs +automatically inserts the closing quotation mark.) + +To insert your first income value, you must first resize the +spreadsheet. Press @key{TAB} to add a new cell and navigate back up +to it. Enter a number, such as @samp{2.23}. Then proceed to add a +few more income entries, e.g.: + +@example +@group +A + Income + 2.23 + 0.02 + 15.76 + -4.00 +@end group +@end example + +To add up the values, enter a Lisp expression: + +@example +(+ A2 A3 A4 A5) +@end example + +Perhaps you want to add a cell to the right of cell A4 to explain +why you have a negative entry. Pressing @kbd{TAB} in that cell +adds an entire new column @samp{B}, where you can add such a note. + +The column is fairly narrow by default, but pressing @kbd{w} allows +you to resize it as needed. Make it 20 characters wide. You can +now add descriptive legends for all the entries, e.g.: + +@example +@group +A B + Income + 2.23 Consulting fee + 0.02 Informed opinion + 15.76 Lemonade stand + -4 Loan to Joe + 14.01 Total +@end group +@end example + +By default, the labels in column B are right-justified. To change +that, you can enter a printer function for the whole column, using +e.g., @kbd{M-p ("%s")}. You can override a column's printer function +in any individual cell using @kbd{p}. + +If Joe pays back his loan, you might blank that entry; e.g., by +positioning the cursor in cell A5 and pressing @kbd{C-d} twice. +If you do that, the total cell will display @samp{######}. That is +because the regular @code{+} operator does not handle a range that +contains some empty cells. Instead of emptying the cell, you could +enter a literal @samp{0}, or delete the entire row using @kbd{C-k}. +An alternative is to use the special function @code{ses+} instead of +the regular @code{+}: + +@example +(ses+ A2 A3 A4 A5) +@end example + +To make a formula robust against changes in the spreadsheet geometry, +you can use the @code{ses-range} macro to refer to a range of cells by +the end-points, e.g.: + +@example +(apply 'ses+ (ses-range A2 A5)) +@end example + +(The @code{apply} is necessary because @code{ses-range} produces a +@emph{list} of values. This allows for more complex possibilities.) + +@c =================================================================== + @node The Basics @comment node-name, next, previous, up @chapter The Basics @@ -117,6 +208,7 @@ A @dfn{cell identifier} is a symbol with a column letter and a row number. Cell B7 is the 2nd column of the 7th row. For very wide spreadsheets, there are two column letters: cell AB7 is the 28th column of the 7th row. Super wide spreadsheets get AAA1, etc. +You move around with the regular Emacs movement commands. @table @kbd @item j @@ -161,13 +253,17 @@ Highlight all cells (@code{mark-whole-buffer}). @section Cell formulas @cindex formulas @cindex formulas, entering +@cindex values +@cindex cell values +@cindex editing cells @findex ses-read-cell @findex ses-read-symbol @findex ses-edit-cell @findex ses-recalculate-cell @findex ses-recalculate-all -To enter a number into the current cell, just start typing: +To insert a value into a cell, simply type a numeric expression, +@samp{"double-quoted text"}, or a Lisp expression. @table @kbd @item 0..9 @@ -213,6 +309,13 @@ Recalculate the entire spreadsheet (@code{ses-recalculate-all}). @node Resizing @section Resizing the spreadsheet @cindex resizing spreadsheets +@cindex dimensions +@cindex row, adding or removing +@cindex column, adding or removing +@cindex adding rows or columns +@cindex inserting rows or columns +@cindex removing rows or columns +@cindex deleting rows or columns @findex ses-insert-row @findex ses-insert-column @findex ses-delete-row @@ -269,6 +372,8 @@ Undo previous action (@code{(undo)}). @node Printer functions @section Printer functions @cindex printer functions +@cindex cell formatting +@cindex formatting cells @findex ses-read-cell-printer @findex ses-read-column-printer @findex ses-read-default-printer @@ -997,39 +1102,62 @@ cell. Coding by: @quotation -Jonathan Yavner @email{jyavner@@member.fsf.org}@* -Stefan Monnier @email{monnier@@gnu.org}@* -Shigeru Fukaya @email{shigeru.fukaya@@gmail.com} +@c jyavner@@member.fsf.org +Jonathan Yavner, +@c monnier@@gnu.org +Stefan Monnier, +@c shigeru.fukaya@@gmail.com +Shigeru Fukaya @end quotation @noindent Texinfo manual by: @quotation -Jonathan Yavner @email{jyavner@@member.fsf.org}@* -Brad Collins +@c jyavner@@member.fsf.org +Jonathan Yavner, +@c brad@@chenla.org +Brad Collins @end quotation @noindent Ideas from: @quotation -Christoph Conrad @email{christoph.conrad@@gmx.de}@* -CyberBob @email{cyberbob@@redneck.gacracker.org}@* -Syver Enstad @email{syver-en@@online.no}@* -Ami Fischman @email{fischman@@zion.bpnetworks.com}@* -Thomas Gehrlein @email{Thomas.Gehrlein@@t-online.de}@* -Chris F.A. Johnson @email{c.f.a.johnson@@rogers.com}@* -Yusong Li @email{lyusong@@hotmail.com}@* -Juri Linkov @email{juri@@jurta.org}@* -Harald Maier @email{maierh@@myself.com}@* -Alan Nash @email{anash@@san.rr.com}@* -François Pinard @email{pinard@@iro.umontreal.ca}@* -Pedro Pinto @email{ppinto@@cs.cmu.edu}@* -Stefan Reichör @email{xsteve@@riic.at}@* -Oliver Scholz @email{epameinondas@@gmx.de}@* -Richard M. Stallman @email{rms@@gnu.org}@* -Luc Teirlinck @email{teirllm@@dms.auburn.edu}@* -J. Otto Tennant @email{jotto@@pobox.com}@* -Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr} +@c christoph.conrad@@gmx.de +Christoph Conrad, +@c cyberbob@@redneck.gacracker.org +CyberBob, +@c syver-en@@online.no +Syver Enstad, +@c fischman@@zion.bpnetworks.com +Ami Fischman, +@c Thomas.Gehrlein@@t-online.de +Thomas Gehrlein, +@c c.f.a.johnson@@rogers.com +Chris F.A. Johnson, +@c lyusong@@hotmail.com +Yusong Li, +@c juri@@jurta.org +Juri Linkov, +@c maierh@@myself.com +Harald Maier, +@c anash@@san.rr.com +Alan Nash, +@c pinard@@iro.umontreal.ca +François Pinard, +@c ppinto@@cs.cmu.edu +Pedro Pinto, +@c xsteve@@riic.at +Stefan Reichör, +@c epameinondas@@gmx.de +Oliver Scholz, +@c rms@@gnu.org +Richard M. Stallman, +@c teirllm@@dms.auburn.edu +Luc Teirlinck, +@c jotto@@pobox.com +J. Otto Tennant, +@c jphil@@acs.pagesjaunes.fr +Jean-Philippe Theberge @end quotation @c ===================================================================