[Rd] user macros with multi-line arguments in Rd (was Re: Rd parser throws error for user macros invoked with empty argument)

Tomas Kalibera tom@@@k@liber@ @ending from gm@il@com
Mon Jun 4 22:28:53 CEST 2018


Now in R-devel,

Best,
Tomas

On 06/01/2018 11:33 AM, Tomas Kalibera wrote:
> Thanks for the report, I am testing a patch that will allow multi-line 
> arguments to user macros.
>
> Best
> Tomas
>
> On 05/25/2018 04:45 PM, Georgi Boshnakov wrote:
>> While on the topic of Rd macro arguments, it seems that  if a 
>> multiline argument is supplied, the lines after the first are 
>> silently ignored:
>>
>> f <- tempfile()
>> mac6 <- "\\newcommand{\\mac6}{mac6: #1}"
>>
>> cat(mac6, "\\mac6{2*3
>> 2+2
>> sin(pi)
>> }\n", file = f)
>> rd <- tools::parse_Rd(f)
>>
>>> rd
>>   mac6: 2*3
>>
>> ---
>>
>> Georgi Boshnakov
>>
>>
>> -----Original Message-----
>> From: Tomas Kalibera [mailto:tomas.kalibera using gmail.com]
>> Sent: 25 May 2018 10:05
>> To: Georgi Boshnakov; r-devel using r-project.org
>> Subject: Re: [Rd] Rd parser throws error for user macros invoked with 
>> empty argument
>>
>> Thanks for the report and the examples - and they do not have to be that
>> verbose, it is enough to just define and use a command, e.g.
>>
>> cat("\\newcommand{\\mac1}{MAC1:#1}\\mac1{}", file=f)
>> rd <- tools::parse_Rd(f)
>>
>> Whenever you get an error message like "Value of SET_STRING_ELT() must
>> be a 'CHARSXP' not a 'NULL'", there is a bug (at least the error message
>> should be relevant/informative).
>>
>> I am testing a patch that will allow empty arguments to macros (they
>> will expand to an empty string, like in LaTeX).
>>
>> Best
>> Tomas
>>
>> On 05/14/2018 11:23 PM, Georgi Boshnakov wrote:
>>> Bug or feature?
>>>
>>> I get the following error from parse_Rd() when a user Rd macro 
>>> (including system ones) is invoked with empty argument {},
>>> eg \mymacro{}:
>>>
>>> Error in tools::parse_Rd(fn) :
>>>     Value of SET_STRING_ELT() must be a 'CHARSXP' not a 'NULL'
>>>
>>> A full example is further below with the system macro \CRANpkg{}. In 
>>> this example it doesn't make sense to use empty argument but the 
>>> error is not specific to this particular macro.
>>>
>>> ------
>>> Georgi Boshnakov
>>>
>>>
>>> Create an Rd file containing system macro \CRANpkg{bibtex}, 
>>> parse_Rd() is ok:
>>>
>>> =================
>>> fn <- tempfile()
>>> writeLines("\\name{dummyfun}
>>> \\alias{dummyfun}
>>> \\title{Dummy title}
>>> \\description{Dummy description}
>>> \\usage{
>>> dummyfun(x, ...)
>>> }
>>> \\arguments{
>>>     \\item{x}{a value.}
>>>     \\item{\\dots}{further arguments.}
>>> }
>>> \\details{
>>>       \\CRANpkg{bibtex}
>>> }
>>> ", fn)
>>>
>>>> tools::parse_Rd(fn)
>>> ...
>>> \details{
>>> \href{{https://CRAN.R-project.org/package=bibtex}{\pkg{bibtex}}}
>>> }
>>>
>>> ================
>>>
>>> With empty argument - \CRANpkg{} - Rd parser throws error. Of course 
>>> it is silly in this example but I have used it with other user 
>>> defined  macros where it may make sense to have empty argument.
>>>
>>> ================
>>>> writeLines("\\name{dummyfun}
>>> \\alias{dummyfun}
>>> \\title{Dummy title}
>>> \\description{Dummy description}
>>> \\usage{
>>> dummyfun(x, ...)
>>> }
>>> \\arguments{
>>>     \\item{x}{a value.}
>>>     \\item{\\dots}{further arguments.}
>>> }
>>> \\details{
>>>       \\CRANpkg{}
>>> }
>>> ", fn)
>>>> tools::parse_Rd(fn)
>>> Error in tools::parse_Rd(fn) :
>>>     Value of SET_STRING_ELT() must be a 'CHARSXP' not a 'NULL'
>>>
>>>     [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-devel using r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>



More information about the R-devel mailing list