[R-pkg-devel] help fixing CRAN package sos-now fails on GitHub
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Tue May 23 13:24:23 CEST 2023
On 23/05/2023 6:53 a.m., Martin Maechler wrote:
>>>>>> Duncan Murdoch
>>>>>> on Mon, 22 May 2023 15:38:10 -0400 writes:
>
> > On 22/05/2023 3:07 p.m., Ivan Krylov wrote:
> >> I fed your vignette to R CMD Sweave, and here's the
> >> relevant fragment from the resulting *.tex file:
> >>
> >>> This returned a {\tt "findFn"} object identifying 405
> >>> help pages. When this was run while preparing this
> >>> manuscript, the sixth row was {\tt pspline_checker} in
> >>> the \pkg{JOPS} package, which has a {\tt Score} of
> >>> 47. (On another day, the results could be different,
> >>> because CRAN changes over time.) This was the sixth row
> >>> in this table, because it is in the \pkg{JOPS} package,
> >>> which had a total of 54 help pages matching the search
> >>> term, but this was the only one whose name matched the
> >>> {\tt pattern} passed to {\tt grepFn}.
> >>
> >> This corresponds to the following part of the vignette:
> >>
> >>> This returned a {\tt "findFn"} object identifying
> >>> \Sexpr{nrow(g)} help pages. When this was run while
> >>> preparing this manuscript, the sixth row was {\tt
> >>> \Sexpr{gFunc6}} in the \pkg{\Sexpr{gPac6}} package,
> >>> which has a {\tt Score} of \Sexpr{gScore6}.
> >>
> >> So, you need to escape the underscores in
> >> gFunc6. Probably not gPac6 because underscores are not
> >> allowed in package names.
> >>
>
> > Nice find. Just in case Spencer has trouble with escaping
> > the escapes, I think he should change
>
> > "{\tt \Sexpr{gFunc6}}"
>
> > to
>
> > "{\tt \Sexpr{sub("_", "\\\\_", gFunc6)}}
>
> > Even better would be to write a little function
> > "sanitizeForLatex" that did this and any other necessary
> > changes, and call that.
>
> Yes, indeed (2 x).
>
> If I grep the base R package sources, I find three occurrences
> of something like the above:
>
> grep --color -nH --null -e 'sub *(.*\\\\_' */R/*.R
>
> tools/R/Rd2latex.R:295: x <- fsub("\\_", "_", x)
> tools/R/Rd2latex.R:303: x <- fsub("\\_", ".Rul.", x)
> tools/R/Rd.R:681: txt <- gsub("\\_", "_", txt, fixed=TRUE)
>
> all of which do the transformation in the other direction
> (because *.Rd in those cases already *is* LaTeX-alike, and needs
> to convert for non-LaTeX use).
>
> Note that the last one gives a hint to be more general --- gsub()
> also working a.g. for 'parse_me_not' ---
> *and* possibly faster (fixed=TRUE) leading to
>
> "{\tt \Sexpr{gsub("_", "\\\\_", gFunc6, fixed=TRUE)}}
>
> Martin
Yes, a good idea to use gsub and fixed = TRUE.
There are some changes in the other direction as well in that file (Rd
format is very complicated). I think the characters it handles are \,
&, $, %, _, #, {, }, ^, ~, occurring near line 145. Only _ is allowed
in a "syntactic" name, but others might turn up when trying to display
other code.
Duncan
More information about the R-package-devel
mailing list