Add possibility to export the R code from a sweave-enabled document

(patch from yihui, part of #7555)
http://www.lyx.org/trac/ticket/7555#comment:18

This adds the new format "R/S code" with extension .R and a converter from .Rnw.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39509 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2011-08-23 10:33:42 +00:00
parent 1a0b35288d
commit 7fc83acb5e
4 changed files with 27 additions and 13 deletions

View File

@ -3015,6 +3015,7 @@ lib_scripts_files = Split('''
lyxpreview-lytex2bitmap.py lyxpreview-lytex2bitmap.py
lyxpreview-platex2bitmap.py lyxpreview-platex2bitmap.py
lyxpreview_tools.py lyxpreview_tools.py
lyxstangle.R
lyxsweave.R lyxsweave.R
prefs2prefs.py prefs2prefs.py
prefs2prefs_lfuns.py prefs2prefs_lfuns.py

View File

@ -1484,6 +1484,7 @@ dist_layouts_DATA =\
scriptsdir = $(pkgdatadir)/scripts scriptsdir = $(pkgdatadir)/scripts
dist_scripts_DATA = \ dist_scripts_DATA = \
scripts/bash_completion \ scripts/bash_completion \
scripts/lyxstangle.R \
scripts/lyxsweave.R scripts/lyxsweave.R
# Note that we "chmod 755" manually these files in install-data-hook. # Note that we "chmod 755" manually these files in install-data-hook.
dist_scripts_PYTHON = \ dist_scripts_PYTHON = \

View File

@ -513,6 +513,7 @@ def checkFormatEntries(dtl_tools):
\Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document,menu=export" \Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document,menu=export"
\Format literate nw NoWeb N "" "%%" "document,menu=export" \Format literate nw NoWeb N "" "%%" "document,menu=export"
\Format sweave Rnw "Sweave" S "" "%%" "document,menu=export" \Format sweave Rnw "Sweave" S "" "%%" "document,menu=export"
\Format r R "R/S code" "" "" "%%" "document,menu=export"
\Format lilypond ly "LilyPond music" "" "" "%%" "vector" \Format lilypond ly "LilyPond music" "" "" "%%" "vector"
\Format lilypond-book lytex "LilyPond book (LaTeX)" "" "" "%%" "document,menu=export" \Format lilypond-book lytex "LilyPond book (LaTeX)" "" "" "%%" "document,menu=export"
\Format latex tex "LaTeX (plain)" L "" "%%" "document,menu=export" \Format latex tex "LaTeX (plain)" L "" "%%" "document,menu=export"
@ -612,21 +613,13 @@ def checkConverterEntries():
checkLuatex() checkLuatex()
''' If we're running LyX in-place then tex2lyx will be found in # First search for tex2lyx with version suffix (bug 6986). If nothing
../src/tex2lyx. Add this directory to the PATH temporarily and # has been found, use 'tex2lyx' which is present in the build tree
search for tex2lyx. # when running in place.
Use PATH to avoid any problems with paths-with-spaces.
'''
path_orig = os.environ["PATH"]
os.environ["PATH"] = os.path.join('..', 'src', 'tex2lyx') + \
os.pathsep + path_orig
# First search for tex2lyx with version suffix (bug 6986)
checkProg('a LaTeX/Noweb -> LyX converter', ['tex2lyx' + version_suffix, 'tex2lyx'], checkProg('a LaTeX/Noweb -> LyX converter', ['tex2lyx' + version_suffix, 'tex2lyx'],
rc_entry = [r'''\converter latex lyx "%% -f $$i $$o" "" rc_entry = [r'''\converter latex lyx "%% -f $$i $$o" ""
\converter literate lyx "%% -n -f $$i $$o" ""''']) \converter literate lyx "%% -n -f $$i $$o" ""'''],
not_found = 'tex2lyx')
os.environ["PATH"] = path_orig
# #
checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'], checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'],
@ -639,6 +632,9 @@ def checkConverterEntries():
\converter sweave xetex "%%" "" \converter sweave xetex "%%" ""
\converter sweave luatex "%%" ""''']) \converter sweave luatex "%%" ""'''])
# #
checkProg('a Sweave -> R/S code converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxstangle.R $$i $$e $$r'],
rc_entry = [ r'\converter sweave r "%%" ""' ])
#
checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i', \ checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i', \
'htmltolatex -input $$i -output $$o', 'java -jar htmltolatex.jar -input $$i -output $$o'], 'htmltolatex -input $$i -output $$o', 'java -jar htmltolatex.jar -input $$i -output $$o'],
rc_entry = [ r'\converter html latex "%%" ""' ]) rc_entry = [ r'\converter html latex "%%" ""' ])

16
lib/scripts/lyxstangle.R Normal file
View File

@ -0,0 +1,16 @@
## file lyxstangle.R
## This file is part of LyX, the document processor.
## Licence details can be found in the file COPYING.
## author Yihui Xie
## Full author contact details are available in file CREDITS
## Rscript $$s/scripts/lyxstangle.R $$i $$e $$r
.cmdargs = commandArgs(TRUE)
options(encoding = .cmdargs[2])
## run Stangle to extract R code
Stangle(.cmdargs[1])