Re: [Rd] user macros with multi-line arguments in Rd (was Re: Rd parser throws error for user macros invoked with empty argument)
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.kalib...@gmail.com] Sent: 25 May 2018 10:05 To: Georgi Boshnakov; r-devel@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@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] user macros with multi-line arguments in Rd (was Re: Rd parser throws error for user macros invoked with empty argument)
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.kalib...@gmail.com] Sent: 25 May 2018 10:05 To: Georgi Boshnakov; r-devel@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@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel