[Bioc-devel] To use knitr, how to write the right Makefile for bioconductor devel and released branch?

Hervé Pagès hpages at fhcrc.org
Thu Sep 27 23:48:06 CEST 2012


Tengfei,

On 09/27/2012 01:05 PM, Tengfei Yin wrote:
>
>
> On Thu, Sep 27, 2012 at 2:42 PM, Hervé Pagès <hpages at fhcrc.org
> <mailto:hpages at fhcrc.org>> wrote:
>
>     Hi Tengfei,
>
>     Yes, as Dan said, that should work. Make sure you indent the Makefile
>     properly though (normally with a tab), or it won't work:
>
>     ------------------------------__------------------------------__-----------
>
>     PDFS= ggbio.pdf
>
>     all: $(PDFS)
>
>     clean:
>              rm -f *.tex *.bbl *.blg *.aux *.out *.log *.spl *tikzDictionary
>
>     %.pdf: %.Rnw
>              $(R_HOME)/bin/Rscript -e "library(knitr); knit2pdf('$*.Rnw')"
>     ------------------------------__------------------------------__-----------
>
>     Also note the use of a regexpr in the call to knit2pdf() so that all
>     Sweave files in the folder will be processed.
>
>     I would suggest 3 more things:
>
>        1. Add *.toc to the rm command above.
>
>        2. Don't forget to add knitr to the Suggests field of your package.
>
>        3. If you've not done it already, add library(knitr) right before the
>           knit_hooks$... line in the set-options code chunk in each of your
>           Rnw files, so that people can still run Sweave() on them if they
>           want.
>
>     Cheers,
>     H.
>
> Hi  Hervé,
>
> Thanks a lot for your suggestion, I haven't done that yet, so I could
> make all those changes.
> Potential issues is that(actually as Martin just mentioned), if my Rnw
> won't be running through sweave(sweave first run on my Rnw) which
> because knitr-specified tag is included in my Rnw file, and Sweave won't
> recognize, for example, may be tag, fig.cap = " with quotes", there is
> no such tag and I guess I cannot use quotes, I guess  I am hitting a
> potential problem like that,  one solution could be that I have to put a
> fake Rnw first, then remove fake vignette and run knitr on real Rnw file
> somewhere and copy it to the right location to replace the fake vignette...
>
> I am experimenting on my machine now... hope that would work, I heard
> from knitr designer that Rcpp did similar things like that.

Note that the above Makefile is exactly (except for the package name
itself) the file used in the knitr package (which vignettes are of
course generated with knitr).

All the details here:

   http://yihui.name/knitr/demo/vignette/

The above document also covers the issue of "vignettes having to
go through Sweave first anyway", and, as you figured it out, it
seems that the workaround is required only if the syntax of your
vignette is not compatible with Sweave. And yes the workaround
involves putting a fake vignette first and do other kind of dark
voodoo.

BTW I'm assuming you have a good reason to not use a Sweave-compatible
syntax, otherwise maybe you could reconsider, as that would make
things much easier (and you already get some nice improvements to
the rendering of your vignette, when using knitr in Sweave-compatible
mode).

Cheers,
H.



>
> Tengfei
>
>
>
>
>     On 09/27/2012 08:08 AM, Dan Tenenbaum wrote:
>
>         On Wed, Sep 26, 2012 at 11:41 PM, Tengfei Yin
>         <yintengfei at gmail.com <mailto:yintengfei at gmail.com>> wrote:
>
>             Dear maintainers and developers,
>
>             I am wondering, is there a way to use knitr to built my
>             vignette, I am
>             trying to write a Makefile under my inst/doc, something like
>
>             # Makefile to use knitr for package vignettes
>             # put all PDF targets here, separated by spaces
>             PDFS= ggbio.pdf
>             all: $(PDFS)
>             clean:
>             rm -f *.tex *.bbl *.blg *.aux *.out *.log *.spl *tikzDictionary
>             %.pdf: %.Rnw
>             $(R_HOME)/bin/Rscript -e "library(knitr); knit2pdf('ggbio.Rnw')"
>
>             Then I realize the bioc maintained two branch, released and
>             development, so
>             the R version it used to check each branch must be
>             different, I don't
>             really know how to specify those in my Makefile, especially
>             after next
>             Monday, the devel-branch become released version
>             automatically, there must
>             be a problem if I set up a fixed point to some */bin/Rscript?
>
>             I don't really know how it works with bioconductor, the
>             example above
>             should work for cran, but I guess things are very different
>             between cran
>             and bioc.
>
>
>
>         If you use "$(R_HOME)/bin/R" in your Makefile, as you do, the
>         correct
>         R will be used.
>         Dan
>
>
>
>             thanks a lot!
>
>             Tengfei
>
>
>
>             --
>             Tengfei Yin
>             MCDB PhD student
>             1620 Howe Hall, 2274,
>             Iowa State University
>             Ames, IA,50011-2274
>
>                       [[alternative HTML version deleted]]
>
>             _________________________________________________
>             Bioc-devel at r-project.org <mailto:Bioc-devel at r-project.org>
>             mailing list
>             https://stat.ethz.ch/mailman/__listinfo/bioc-devel
>             <https://stat.ethz.ch/mailman/listinfo/bioc-devel>
>
>
>         _________________________________________________
>         Bioc-devel at r-project.org <mailto:Bioc-devel at r-project.org>
>         mailing list
>         https://stat.ethz.ch/mailman/__listinfo/bioc-devel
>         <https://stat.ethz.ch/mailman/listinfo/bioc-devel>
>
>
>     --
>     Hervé Pagès
>
>     Program in Computational Biology
>     Division of Public Health Sciences
>     Fred Hutchinson Cancer Research Center
>     1100 Fairview Ave. N, M1-B514
>     P.O. Box 19024
>     Seattle, WA 98109-1024
>
>     E-mail: hpages at fhcrc.org <mailto:hpages at fhcrc.org>
>     Phone: (206) 667-5791 <tel:%28206%29%20667-5791>
>     Fax: (206) 667-1319 <tel:%28206%29%20667-1319>
>
>
>
>
> --
> Tengfei Yin
> MCDB PhD student
> 1620 Howe Hall, 2274,
> Iowa State University
> Ames, IA,50011-2274
>
>
>

-- 
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319



More information about the Bioc-devel mailing list