[R-SIG-Mac] checking for pdflatex
John Fox
jfox at mcmaster.ca
Tue Mar 17 14:15:48 CET 2015
Dear JJ,
I apologize for not providing more context: I think that we all understand the source of the problem, and I've already read the webpage that you reference and have looked at the RStudio fix.
I've put code in the development version of the Rcmdr that resets the PATH so that it's the same as for R run from a terminal or RStudio, but that may violate CRAN policies and would override a PATH that a user deliberately sets. I thought that there might be a simple way to modify the rmarkdown package so that it doesn't rely on pdflatex being present on the PATH to produce pdf output, but that might not prove feasible.
It's not clear to me why Simon hasn't adopted a fix for R.app similar to the one implemented by RStudio. That would deal with the problem more generally, but perhaps there's some consideration of which I'm unaware.
Best,
John
On Tue, 17 Mar 2015 06:21:14 -0400
JJ Allaire <jj at rstudio.com> wrote:
> Sounds like this may be targeted at fixing the OS X Yosemite bug
> wherein some environment variables for GUI applications are
> duplicated:
>
> http://tex.stackexchange.com/questions/208181/why-did-my-tex-related-gui-program-stop-working-in-mac-os-x-yosemite
>
> Until Apple fixes this issue I think that GUI applications need to
> clean the duplicated environment variables received at launch time.
> Here's what we do in RStudio:
>
> https://github.com/rstudio/rstudio/commit/09c9be12
>
>
>
>
> On Mon, Mar 16, 2015 at 9:12 PM, John Fox <jfox at mcmaster.ca> wrote:
> > Dear Simon,
> >
> >> -----Original Message-----
> >> From: Simon Urbanek [mailto:simon.urbanek at r-project.org]
> >> Sent: March-16-15 3:57 PM
> >> To: jfox at mcmaster.ca
> >> Cc: Berend Hasselman; r-sig-mac at r-project.org
> >> Subject: Re: [R-SIG-Mac] checking for pdflatex
> >>
> >>
> >> > On Mar 16, 2015, at 3:43 PM, John Fox <jfox at mcmaster.ca> wrote:
> >> >
> >> > Dear all,
> >> >
> >> > I've now implemented Simon's solution, setting the path in the .onLoad()
> >> function of the Rcmdr package and resetting it to its pre-existing value in
> >> .onUnload(). This seems to work fine for me and, I hope, will be a more
> >> robust solution.
> >> >
> >>
> >> I don't think messing with PATH of the R process is a good idea - as a user I'd
> >> be somewhat unpleasantly surprised if you changed the PATH of my running
> >> session. I'm not quite sure what's your intention, but I would suggest using
> >> the setting to locate the binary to run it explicitly - that is what R does
> >> normally. If you rely on some scripts that you don't control, then I would
> >> suggest setting it in the shell that you start the script with, but not in the R
> >> process itself.
> >
> > That occurred to me, but the problem arises when a function in the rmarkdown package calls pandoc and pandoc fails to run pdflatex. I don't think that I have control over this.
> >
> > I'm cc'ing J. J. Alaire, the maintainer of the rmarkdown package in case he sees a solution in that package. The problem doesn't of course occur when rmarkdown is run from RStudio (or a terminal) but only from R.app, as I explained initially. (J.J.: Please let me know if this is unclear, and I can send you the rest of this thread.)
> >
> > OTOH, I doubt whether Rcmdr users will care that the package alters the PATH of the R process (though it would be better to avoid that).
> >
> > Best,
> > John
> >
> >>
> >> Cheers,
> >> Simon
> >>
> >>
> >>
> >> > Thanks again to everyone for their help.
> >> >
> >> > John
> >> >
> >> >> -----Original Message-----
> >> >> From: R-SIG-Mac [mailto:r-sig-mac-bounces at r-project.org] On Behalf Of
> >> >> John Fox
> >> >> Sent: March-16-15 2:45 PM
> >> >> To: 'Berend Hasselman'
> >> >> Cc: r-sig-mac at r-project.org
> >> >> Subject: Re: [R-SIG-Mac] checking for pdflatex
> >> >>
> >> >> Dear Berend and Simon,
> >> >>
> >> >> I've now tried Berend's solution and it appears to work fine: If
> >> >> necessary, I add /usr/texbin to the path when the Rcmdr GUI starts up
> >> >> and restore the path to its previous state when it closes.
> >> >>
> >> >> I agree that Simon's solution will be more flexible since it should
> >> >> work if pdflatex is located elsewhere (as long as it's on the path
> >> >> reported by path_helper), and I'll give that a try as well.
> >> >>
> >> >> Thanks again for all the help,
> >> >> John
> >> >>
> >> >>> -----Original Message-----
> >> >>> From: Berend Hasselman [mailto:bhh at xs4all.nl]
> >> >>> Sent: March-16-15 2:34 PM
> >> >>> To: jfox at mcmaster.ca
> >> >>> Cc: Simon Urbanek; r-sig-mac at r-project.org
> >> >>> Subject: Re: [R-SIG-Mac] checking for pdflatex
> >> >>>
> >> >>> John,
> >> >>>
> >> >>>> On 16-03-2015, at 18:53, John Fox <jfox at mcmaster.ca> wrote:
> >> >>>>
> >> >>>> Dear Berend,
> >> >>>>
.
> >> >>>>>
> >> >>>>> For what its worth: I have the following code in the .First
> >> >>>>> function in
> >> >>>>> ~/.Rprofile:
> >> >>>>> (R 3.1.3 on OS X Yosemite)
> >> >>>>>
> >> >>>>> if( .Platform$GUI == "AQUA" ) {
> >> >>>>> # this appends /usr/local/bin to what is already in PATH
> >> >>>>> # by default this is already in PATH (at least in 10.6.8)
> >> >>>>> # so remove any duplicated items
> >> >>>>> z <- Sys.getenv("PATH")
> >> >>>>> z <- unlist(strsplit(z,.Platform$path.sep,fixed=TRUE))
> >> >>>>> # add path to MacTeX executables for OS X Yosemite (which
> >> >>>>> has a
> >> >>> bug)
> >> >>>>> # in Terminal it is added automatically
> >> >>>>> z[length(z)+1] <- "/usr/texbin"
> >> >>>>>
> >> >>> Sys.setenv(PATH=paste(z[!duplicated(z)],collapse=.Platform$path.sep)
> >> >>> )
> >> >>>>> }
> >> >>>>
> >> >>>> This should work fine if pdflatex is in /usr/texbin, which I now
> >> >>>> understand is
> >> >>> by far the most common case (and is the case on my Mac).
> >> >>>>
> >> >>>> Do you mind if I adapt your code for the Rcmdr? I can fix the path
> >> >>>> in this
> >> >>> manner at startup of the Rcmdr GUI and restore it to its initial
> >> >>> value on exit from the GUI.
> >> >>>>
> >> >>>
> >> >>> Go right ahead. Dont forget it assumes MacTeX.
> >> >>>
> >> >>> But do also have a look Simons suggestion of using path_helper,
> >> >>> which seems more flexible than my solution:
> >> >>>
> >> >>> I tried this in R-GUI
> >> >>>
> >> >>> system2("/usr/libexec/path_helper","-s", stdout=TRUE)
> >> >>>
> >> >>> and got this answer
> >> >>>
> >> >>> [1]
> >> >>> "PATH=\"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/u
> >> >>> sr
> >> >>> /texbi
> >> >>> n\"; export PATH;
> >> >>>
> >> >>> which will have to be fiddled with to get something that is usable.
> >> >>>
> >> >>> Berend
> >> >>>
> >> >>>
> >> >>>> Thanks for this,
> >> >>>> John
> >> >>>>
> >> >>>>>
> >> >>>>> Berend
> >> >>>>
> >> >>>>
> >> >>>> ---
> >> >>>> This email has been checked for viruses by Avast antivirus software.
> >> >>>> http://www.avast.com
> >> >>>>
> >> >>
> >> >>
> >> >> ---
> >> >> This email has been checked for viruses by Avast antivirus software.
> >> >>
> >> >> _______________________________________________
> >> >> R-SIG-Mac mailing list
> >> >> R-SIG-Mac at r-project.org
> >> >> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
> >> >
> >> >
> >> > ---
> >> > This email has been checked for viruses by Avast antivirus software.
> >> > http://www.avast.com
> >> >
> >
> >
> > ---
> > This email has been checked for viruses by Avast antivirus software.
> > http://www.avast.com
> >
More information about the R-SIG-Mac
mailing list