On 28/10/2011 5:40 p.m., Liviu Andronic wrote:
Hello

On Fri, Oct 28, 2011 at 4:59 AM, Andrew Parsloe<apars...@clear.net.nz>  wrote:
Rainer,

In my view spreadtab is exactly what you are after, but not 'out of the box'
because you will be immersed in ERT and it will hardly seem worth it. I
created a LyX module earlier in the year to aid using spreadtab. Since then
spreadtab has been updated (and gained a command for LyX users through my
nagging the developer Christian Tellechea). Unfortunately, the changes in
the newer spreadtab (v.0.4a) mean the earlier module won't work with the new
version. I've had updating this on my mind for the last 3 months but other
work has got in the way. Your request has spurred me to action and I include
at the bottom of this email the revised module which will work with
spreadtab 0.4 (but not 0.3).

Would you consider uploading both versions on the wiki [1]?

Regards
Liviu

[1] http://wiki.lyx.org/Layouts/Modules#toc6

I'm happy to, but when I looked earlier in the year, one needed a password into the upload repository.

I should also have added to the email to Rainer that spreadtab needs the fp package (fp for floating point) and the xstring package in order to work.

Andrew



If you copy this to a text editor and save as spreadtab.module in your user
directory for LyX layouts (in Windows on my machine,
C:\Users\Andrew\AppData\Roaming\LyX2.0\layouts) and reconfigure LyX so it
recognises the new module, then all you need to do for your quote is
something like the following. Create a table in LyX like so,

`Main task1    `Secondary task1.1    30.00
               `Secondary task1.2    20.00
               `Secondary task1.3    50.00
`Main task2    `Secondary task2.1    30.75
               `Secondary task2.2    20.50
               `Secondary task2.3    50.00
               `Total                sum(c1:c6)

or something similar, position the cursor hard before the table and from the
drop-down list of environments select sLTable, nestling at the bottom with
sLTablePlus. Now when you produce the pdf you will find the sum of the
figures totalled in the bottom-right cell. (Note the grave accents ` in the
first two columns -- they show spreadtab that these are text cells, not
numeric ones. As in spreadsheets the columns are a, b, c, ... and the rows
1, 2, 3, ...) In this case no ERT is needed at all.

ERT is needed if you want to multiply figures because the multiply symbol *
is 'protected' by LyX -- if you look at View Source you'll see it is
enclosed in braces {*} which confuses spreadtab. In that case the formula
does need to be in ERT. The same goes for some other operations, but
addition, subtraction and division can be managed without any ERT.

I've attached a file SpreadtabWithLyX in 7-zipped format (9 pages when
compiled to pdf) which has other instructions (e.g. number formatting).

Andrew

************************************
#\DeclareLyXModule[spreadtab.sty,fp.sty,xstring.sty]{Spreadtab}
#DescriptionBegin
#Adds commands which convert LyX tables to spreadtab tables. These
#allow columns of numbers to be summed and other spreadsheet-like
#calculations. The tables are built in LyX using its table toolbar.
#The calculated values appear only in the pdf (ps, dvi etc) document
#not in LyX. A one-celled table provides a calculator of sorts.
#DescriptionEnd
#
#v.1.1 2011-10-28
#Assumes version 0.4a of spreadtab.sty and
#will fail with 0.3 and earlier versions.
#Author: Andrew Parsloe<apars...@clear.net.nz>
#The author&  maintainer of spreadtab.sty is
#Christian Tellechea<unbonpe...@gmail.com>

Format 35

AddToPreamble
        \usepackage{spreadtab}
%for LyX
        \STeol{\tabularnewline}
%default text cell marker is @ but ` is neater
        \renewcommand{\STtextcell}{`}
EndPreamble

Style sLTable
  Category                      Tables
  LatexType             Command
  LatexName             sLTable
  OptionalArgs          1
  NextNoIndent          0
  TopSep                        0.5
  BottomSep                     0.5
  Align                         Center
  Preamble
    \makeatletter

  \def\sLt@b[#1]#2\begin#3#4#5\end#6{\spreadtab[#1]{{#3}{#4}}#5\endspreadtab}
    \newcommand{\sLTable}[2][]{\begin{center}\sLt@b[#1]#2\end{center}}
        \makeatother
  EndPreamble
End

Style sLTablePlus
  CopyStyle                     sLTable
  LatexName             sLTablePlus
  Preamble
    \makeatletter

  
\def\sLt@bplus[#1]#2\begin#3#4#5\end#6{\spreadtab[#1]{{#3}{#2}}#5\endspreadtab}

\newcommand{\sLTablePlus}[3][]{\begin{center}\sLt@bplus#1#2#3\end{center}}
        \makeatother
  EndPreamble
End

InsetLayout Flex:sLCalculate
  LyXType                       custom
  LatexType             Command
  LatexName             sLdocalc
  ContentAsLabel        1
  Decoration            Classic
  Display                       0
  LabelString           Calc
  Multipar                      0
  PassThru                      1
  ResetsFont            0
  Preamble
    \def\sLdocalc#1{\mbox{\kern -.6em%

  
\spreadtab[\STsavecell\sLlastcalc{a1}]{{tabular}{c}}#1\tabularnewline\endspreadtab%
        \kern -.6em}%
        }
  EndPreamble
End

InsetLayout Flex:sLNumberFormat
  LyXType                       custom
  LatexType             Command
  LatexName             sLdoNF
  ContentAsLabel        1
  Decoration            Classic
  Font
        Color                   phantomtext
  End
  Display                       0
  LabelString           Fmt
  Multipar                      0
  PassThru                      1
  ResetsFont            0
  Preamble
    \def\sLdoNF#1{\sLdofmt#1}
        \def\sLdofmt#1,#2{\def\sLsigfig{#1}%
                \if*#2\def\sLfillzeros{*}\else\def\sLfillzeros{}\fi%
                \expandafter\STautoround\sLfillzeros{\sLsigfig}}
  EndPreamble
End






Reply via email to