Skye Bender-deMoll
2014-Mar-14 16:28 UTC
[Rd] Problems building package vignette: Sweave requires multiple passes to build document.
Dear R-devel,
Question:
How can I get Sweave to recognize that the \thebibliography section
is already created and generate the vignette pdf with a single pass? Or
is there a way to let R CMD build know that Sweave needs to be run twice?
If (1) is not possible, any suggestions how to auto-generate a
crude generic bibtex .bib file from my existing document?
Background:
I maintain serveral R packages that include package vignettes. The
vignettes include the reference citations inline as\bibitem lines inside
a thebiblilography section. For some reason, this requires running
Sweave twice on the document (the first pass is presumably preformatting
the citation information?) to produce a pdf. This seems to be the source
of problems when included in R's preferred vignette location
(/vignettes/myPackage.Rnw) because the R package builder just runs
Sweave once during the check process, so no pdf is produced and warnings
are generated like
checking package vignettes in ???inst/doc??? ... WARNING
Package vignette without corresponding PDF/HTML
In the past, it has been possible for me to pre-build the pdf, and
include it in the /inst/doc/ directory. But it seems the upcoming
versions of R may prohibit this.
It appears that it is possible to avoid all this by including a bibtex
.bib file along with the vignette instead of doing the citations inline.
If the .bib files exists, it seems to generate with a single pass. But
reformatting all of the citations for each document into bibtex will be
a huge pain. Including a blank \bibliography{} command above my
\thebibliography environment also allows the document to be build in a
single pass, but generates a warning about duplicate biliography and
writes the section header twice (not surprisingly).
Note: I've cross-posted this question at:
http://stackoverflow.com/questions/22237675/how-to-get-sweave-to-recognize-thebibliography-environment-and-build-r-package
thanks for your help,
best,
-skye
Duncan Murdoch
2014-Mar-14 16:41 UTC
[Rd] Problems building package vignette: Sweave requires multiple passes to build document.
On 14/03/2014 12:28 PM, Skye Bender-deMoll wrote:> Dear R-devel, > > > Question: > > How can I get Sweave to recognize that the \thebibliography section > is already created and generate the vignette pdf with a single pass? Or > is there a way to let R CMD build know that Sweave needs to be run twice?I think the problem isn't Sweave: it ignores LaTeX code. The problem is the following step that converts the .tex output into a .pdf, which is handled by tools::texi2pdf (which runs tools::texi2dvi). That function makes an effort to determine how many LaTeX passes are required, but it appears you are fooling it somehow. Take a look at the source to tools::texi2dvi, and see if you can spot what's going wrong in your case. There are a number of different paths through that code that depend on your particular setup, so we can't do that. If you don't succeed in this, then post a simplified sample package and someone else will be able to see if they have the same problem as you, and perhaps fix it. Duncan Murdoch> > If (1) is not possible, any suggestions how to auto-generate a > crude generic bibtex .bib file from my existing document? > > Background: > > I maintain serveral R packages that include package vignettes. The > vignettes include the reference citations inline as\bibitem lines inside > a thebiblilography section. For some reason, this requires running > Sweave twice on the document (the first pass is presumably preformatting > the citation information?) to produce a pdf. This seems to be the source > of problems when included in R's preferred vignette location > (/vignettes/myPackage.Rnw) because the R package builder just runs > Sweave once during the check process, so no pdf is produced and warnings > are generated like > > checking package vignettes in ???inst/doc??? ... WARNING > Package vignette without corresponding PDF/HTML > > In the past, it has been possible for me to pre-build the pdf, and > include it in the /inst/doc/ directory. But it seems the upcoming > versions of R may prohibit this. > > It appears that it is possible to avoid all this by including a bibtex > .bib file along with the vignette instead of doing the citations inline. > If the .bib files exists, it seems to generate with a single pass. But > reformatting all of the citations for each document into bibtex will be > a huge pain. Including a blank \bibliography{} command above my > \thebibliography environment also allows the document to be build in a > single pass, but generates a warning about duplicate biliography and > writes the section header twice (not surprisingly). > > > Note: I've cross-posted this question at: > http://stackoverflow.com/questions/22237675/how-to-get-sweave-to-recognize-thebibliography-environment-and-build-r-package > > thanks for your help, > best, > -skye > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel