[R-pkg-devel] Literal LaTeX Text in Function Arguments

Georgi Boshnakov georg|@bo@hn@kov @end|ng |rom m@nche@ter@@c@uk
Sat Aug 24 12:30:29 CEST 2019


HI Bill, 

I checked this as well, using the package you put on github for this purpose (note that the link you gave didn't work for me).
I tried a few variants but the bottom line is that "\ldots" and "\dots" are expanded even if the backslash is escaped. 

It is a feature rather than a bug, see towards the bottom of p. 8 in parseRd (https://developer.r-project.org/parseRd.pdf). 
In R strings, macros starting with "\l" are expanded (this is how \code{\link{sss}} works). 

But '\dots' is also expanded and this seems undocumented. I now recall that I have seen similar behaviour for "\dots" in R strings in the Examples section. 

I tried some hacks, such as redefining the '\ldots' but they don't work, since the Rd parser works recursively.
 


Georgi Boshnakov       


________________________________________
From: bill using denney.ws [bill using denney.ws]
Sent: 23 August 2019 18:33
To: Georgi Boshnakov; r-package-devel using r-project.org
Subject: RE: [R-pkg-devel] Literal LaTeX Text in Function Arguments

Hi Georgi,

Thanks for this pointer.  My guess at this point is that I've found a bug
(or maybe a couple of bugs with 'utils::prompt()' and with the Rd to help
conversion), but let me know if you think otherwise.

I just did that way, and the usage lines that were generated by
'utils::prompt()' and copied into the docs are:

topic_long_table_header(x, col_names = NULL,
  above_col_names = "\\hline", below_col_names = "\\hline",
  subsequent_page_notification = "\\ldots continued",
  latex_header = NULL, verbatim = NULL)

topic_long_table_footer(x, bottom_border = "\\hline",
  bottom_all_pages = NULL, bottom_last_page = NULL,
  subsequent_page_notification = "continued \\ldots",
  verbatim = NULL)

It is giving a very similar error with 'R CMD check' (outside devtools).
The escape of the backslashes appears to be needed, but "\\ldots" continues
to be translated into "...":

Codoc mismatches from documentation object 'topic_long_table_header':
topic_long_table_header
  Code: function(x, col_names = NULL, above_col_names = "\\hline",
                 below_col_names = "\\hline",
                 subsequent_page_notification = "\\ldots continued",
                 latex_header = NULL, verbatim = NULL)
  Docs: function(x, col_names = NULL, above_col_names = "\hline",
                 below_col_names = "\hline",
                 subsequent_page_notification = "... continued",
                 latex_header = NULL, verbatim = NULL)
  Mismatches in argument default values:
    Name: 'above_col_names' Code: "\\hline" Docs: "\hline"
    Name: 'below_col_names' Code: "\\hline" Docs: "\hline"
    Name: 'subsequent_page_notification' Code: "\\ldots continued" Docs:
"... continued"
topic_long_table_footer
  Code: function(x, bottom_border = "\\hline", bottom_all_pages = NULL,
                 bottom_last_page = NULL, subsequent_page_notification
                 = "continued \\ldots", verbatim = NULL)
  Docs: function(x, bottom_border = "\hline", bottom_all_pages = NULL,
                 bottom_last_page = NULL, subsequent_page_notification
                 = "continued ...", verbatim = NULL)
  Mismatches in argument default values:
    Name: 'bottom_border' Code: "\\hline" Docs: "\hline"
    Name: 'subsequent_page_notification' Code: "continued \\ldots" Docs:
"continued ..."

Thanks,

Bill

-----Original Message-----
From: Georgi Boshnakov <georgi.boshnakov using manchester.ac.uk>
Sent: Friday, August 23, 2019 11:27 AM
To: bill using denney.ws; r-package-devel using r-project.org
Subject: RE: [R-pkg-devel] Literal LaTeX Text in Function Arguments

Hi Bill,

Sorry, I misunderstood the question.

To check if the problem is with R's tools, run
'utils::prompt(topic_long_table_header)" and see the usage section of the
generated file. Presumably, this should be the 'canonical way' to write the
usage entry for the function.
You can copy and paste it in the Rd file generated by roxygen2, then run 'R
CMD build' and 'R CMD check' (outside devtools).

Georgi


-----Original Message-----
From: bill using denney.ws [mailto:bill using denney.ws]
Sent: 23 August 2019 15:27
To: Georgi Boshnakov; r-package-devel using r-project.org
Subject: RE: [R-pkg-devel] Literal LaTeX Text in Function Arguments

Hi Georgi,

I'm not trying to use it as part of my documentation, it is one of my
function arguments.  I want the function argument to be displayed correctly
in the help, but it is not.  I'm curious how I should document the
"subsequent_page_notification" function argument in Rd.

Specifically, the actual function definition (R code) looks like:

R code:
--------------
topic_long_table_header <- function(x,
                                    col_names=NULL,
                                    above_col_names="\\hline",
below_col_names="\\hline",
                                    subsequent_page_notification="\\ldots
continued",
                                    latex_header=NULL) {
  # The function body
}
--------------

So, I'm not trying to use LaTeX in the .Rd file; I'm trying to use it in R,
and I'm then copying it into the .Rd with extra escaping for the backslashes
(well, roxygen2 is doing the extra escaping).

Rd text
--------------
topic_long_table_header(x, col_names = NULL,
  above_col_names = "\\\\hline", below_col_names = "\\\\hline",
  subsequent_page_notification = "\\\\ldots continued",
  latex_header = NULL)
--------------

Thanks,

Bill

-----Original Message-----
From: Georgi Boshnakov <georgi.boshnakov using manchester.ac.uk>
Sent: Friday, August 23, 2019 9:52 AM
To: bill using denney.ws; r-package-devel using r-project.org
Subject: RE: [R-pkg-devel] Literal LaTeX Text in Function Arguments

Rd is not LaTeX, although it resembles it.  You should use only markup
described in WRE.
For example, \dots is for the use case you mention.

Georgi Boshnakov





-----Original Message-----
From: R-package-devel [mailto:r-package-devel-bounces using r-project.org] On
Behalf Of bill using denney.ws
Sent: 23 August 2019 04:15
To: r-package-devel using r-project.org
Subject: [R-pkg-devel] Literal LaTeX Text in Function Arguments

Hello,



Does anyone know how to include verbatim \ldots (and maybe other LaTeX) in
an .Rd file correctly?



When LaTeX is in the default arguments for a function, the code is
interpreted which makes the documentation not match the default formal
arguments.



An example is:

https://github.com/billdenney/TopicLongTableR/blob/1338116767d90e8211533cb6e
7db5ef30368dc33/R/topic_long_table_header_footer.R#L20



Which yields:

https://github.com/billdenney/TopicLongTableR/blob/1338116767d90e8211533cb6e
7db5ef30368dc33/man/topic_long_table_header.Rd#L10



Which gives the following warning with `devtools::check()`:

```

checking for code/documentation mismatches ... WARNING

Codoc mismatches from documentation object 'topic_long_table_header':

topic_long_table_header

  Code: function(x, col_names = NULL, above_col_names = "\\hline
<file://hline> ",

                 below_col_names = "\\hline <file://hline> ",

                 subsequent_page_notification = "\\ldots continued
<file://ldots%20continued> ",

                 latex_header = NULL)

  Docs: function(x, col_names = NULL, above_col_names = "\\hline
<file://hline> ",

                 below_col_names = "\\hline <file://hline> ",

                 subsequent_page_notification = "\... continued",

                 latex_header = NULL)

```



I'm not sure, but I think that the solution is to add more protection to the
\s when generating the roxygen or perhaps wrapping the arguments in some
form of verbatim block (if it's available).



Thanks,



Bill



P.S. This is also discussed in https://github.com/r-lib/roxygen2/issues/837
where it appears to be related to the conversion of .Rd to help files not
the roxygen step.




        [[alternative HTML version deleted]]

______________________________________________
R-package-devel using r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel



More information about the R-package-devel mailing list