New literate programming modules.

These modules allow to use Sweave or Noweb with any LyX textclass.
They will eventually allow to get rid of literate-* classes.

The sweave modules will benefit in trunk from a forthcoming patch which allows 
to select the output format for a literate OutputType. This will allow to
support Sweave out-of-the-box.

For branch, this pair of modules is IMO a candidate for LyX 1.6.4 (no need to
hurry).

Thanks to Gregor Gorjanc for his work on this subject. There is
undoubtlessly some additional work that has to be done here.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29657 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2009-05-13 21:23:05 +00:00
parent 70696182dd
commit 6d08a75d62
4 changed files with 147 additions and 0 deletions

View File

@ -1070,6 +1070,7 @@ dist_layouts_DATA =\
layouts/mwart.layout \ layouts/mwart.layout \
layouts/mwbk.layout \ layouts/mwbk.layout \
layouts/mwrep.layout \ layouts/mwrep.layout \
layouts/noweb.module \
layouts/numarticle.inc \ layouts/numarticle.inc \
layouts/numreport.inc \ layouts/numreport.inc \
layouts/numrevtex.inc \ layouts/numrevtex.inc \
@ -1111,6 +1112,7 @@ dist_layouts_DATA =\
layouts/svjog.layout \ layouts/svjog.layout \
layouts/svjour.inc \ layouts/svjour.inc \
layouts/svprobth.layout \ layouts/svprobth.layout \
layouts/sweave.module \
layouts/tarticle.layout \ layouts/tarticle.layout \
layouts/tbook.layout \ layouts/tbook.layout \
layouts/theorems-ams-extended.module \ layouts/theorems-ams-extended.module \

View File

@ -349,6 +349,7 @@ def checkFormatEntries(dtl_tools):
\Format dot dot "Graphviz Dot" "" "" "%%" "vector" \Format dot dot "Graphviz Dot" "" "" "%%" "vector"
\Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document" \Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document"
\Format literate nw NoWeb N "" "%%" "document" \Format literate nw NoWeb N "" "%%" "document"
\Format sweave Rnw "Sweave" S "" "%%" "document"
\Format lilypond ly "LilyPond music" "" "" "%%" "vector" \Format lilypond ly "LilyPond music" "" "" "%%" "vector"
\Format latex tex "LaTeX (plain)" L "" "%%" "document" \Format latex tex "LaTeX (plain)" L "" "%%" "document"
\Format pdflatex tex "LaTeX (pdflatex)" "" "" "%%" "document" \Format pdflatex tex "LaTeX (pdflatex)" "" "" "%%" "document"
@ -447,6 +448,10 @@ def checkConverterEntries():
checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'], checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'],
rc_entry = [r'''\converter literate latex "%%" "" rc_entry = [r'''\converter literate latex "%%" ""
\converter literate pdflatex "%%" ""''']) \converter literate pdflatex "%%" ""'''])
#
checkProg('a Sweave -> LaTeX converter', ['R CMD Sweave $$i'],
rc_entry = [r'''\converter sweave latex "%%" ""
\converter sweave pdflatex "%%" ""'''])
# #
path, elyx = checkProg('eLyXer converter', ['elyxer.py $$i $$o'], path, elyx = checkProg('eLyXer converter', ['elyxer.py $$i $$o'],
rc_entry = [ r'\converter lyx html2 "%%" ""' ] ) rc_entry = [ r'\converter lyx html2 "%%" ""' ] )

40
lib/layouts/noweb.module Normal file
View File

@ -0,0 +1,40 @@
#\DeclareLyXModule[noweb.sty]{Noweb literate programming}
#DescriptionBegin
#Allows to use Noweb as a literate programming tool.
#DescriptionEnd
# Suggested style to write your code:
# Within same scrap, lines are separated by newlines (Ctrl-Return), use:
# ItemSep 0.4
# . disavantage: must type ctrl-return every single line
# . advantage: looks better (IMHO)
# resembles more closely the produced paper doc (more WYSIWYG)
#
Format 11
OutputType literate
# FIXME: Use the Chunk layout from the sweave module?
Style Scrap
Margin First_Dynamic
LatexType Paragraph
LatexName dummy
NewLine 0
LeftMargin MMM
ParSep 0.4
TopSep 0.4
BottomSep 0.4
ItemSep 0.4
Align Left
AlignPossible Block,Left
FreeSpacing 1
PassThru 1
LabelType Static
LabelFont
Color magenta
EndFont
TextFont
Color latex
Family Typewriter
EndFont
End

100
lib/layouts/sweave.module Normal file
View File

@ -0,0 +1,100 @@
#\DeclareLyXModule[Sweave.sty]{Sweave - S/R literate programming}
#DescriptionBegin
#Allows to use the statistical language S/R as a literate programming tool - Sweave.
#DescriptionEnd
# Within the chunk, lines are separated by newlines (Ctrl-Return)!
# To add :
# - \setkeys{Gin}{width=0.8\textwidth} How to add such a "beast"? This is used to define
# the size of produced plots.
Format 11
OutputType literate
#OutputFormat sweave
Style Chunk
Category Sweave
LatexType Paragraph
LatexName dummy
Margin static
ParSep 0.4
TopSep 0.4
BottomSep 0.4
ItemSep 0.4
Align Left
AlignPossible Block, Left, Right, Center
NewLine 0
FreeSpacing 1
PassThru 1
## What is LabelType used for?
LabelType Static
TextFont
Color latex
Family Typewriter
EndFont
End
Style Scrap
ObsoletedBy Chunk
End
InsetLayout "Sweave Options"
LabelString "Sweave opts"
LatexType Command
LaTexName SweaveOpts
LyXType Custom
Decoration Classic
Font
Color latex
Family typewriter
EndFont
LabelFont
Color latex
Size Small
EndFont
MultiPar false
PassThru true
FreeSpacing true
ForceLTR true
End
InsetLayout "S/R expression"
LabelString "S/R expr"
LatexType Command
LaTexName Sexpr
LyXType Custom
Decoration Conglomerate
Font
Color latex
Family typewriter
EndFont
LabelFont
Color latex
Size Small
EndFont
MultiPar false
PassThru true
FreeSpacing true
ForceLTR true
End
InsetLayout "Sweave Input File"
LabelString "Sweave Input File"
LatexType Command
LaTexName SweaveInput
LyXType Custom
Decoration Classic
Font
Color latex
Family typewriter
EndFont
LabelFont
Color latex
Size Small
EndFont
MultiPar false
PassThru true
FreeSpacing true
ForceLTR true
End