Dear list, I got an automatic email complaining than some of my packages didn't pass 'R CMD check' for R-2.10.0 alpha anymore. Both of them make use of the "cases" LaTeX environment. Inspecting the log outputs I got: LaTeX errors when creating PDF version. This typically indicates Rd problems. LaTeX errors found: ! Misplaced alignment tab character &. I noticed that the Rd parser changed quite recently and that '#', '_' and '&' must not be escaped according to "Writing R extensions". However, the problematic .Rd portion seems (to me) OK \deqn{\theta(h) \begin{cases} u_\beta \left(\mu + \frac{\nu(h)}{\Gamma(1 - \xi)} \right),&\xi \neq 0\\ \exp\left(\frac{\nu(h)}{\sigma}\right),&\xi = 0 \end{cases} }{u_beta (mu + nu(h) / Gamma(1 - \xi)), if \xi < 1, exp(nu(h)/sigma), otherwise} Removing the alignment tab character '&' solves the issue but doesn't produce the expected LaTeX output. Do I miss something with the new Rd parser requirements? I'm not 100% sure but it also seems like that "\\' symbol isn't interpreted as a break line - in the "cases" environment at least. This might be one reason why the alignment tab '&' is misplaced. Best, Mathieu -- Institute of Mathematics Ecole Polytechnique F?d?rale de Lausanne STAT-IMA-FSB-EPFL, Station 8 CH-1015 Lausanne Switzerland http://stat.epfl.ch/ Tel: + 41 (0)21 693 7907
On 10/10/2009 8:07 AM, Mathieu Ribatet wrote:> Dear list, > > I got an automatic email complaining than some of my packages didn't > pass 'R CMD check' for R-2.10.0 alpha anymore. Both of them make use of > the "cases" LaTeX environment. > > Inspecting the log outputs I got: > > LaTeX errors when creating PDF version. > This typically indicates Rd problems. > LaTeX errors found: > ! Misplaced alignment tab character &. > > I noticed that the Rd parser changed quite recently and that '#', '_' > and '&' must not be escaped according to "Writing R extensions". > However, the problematic .Rd portion seems (to me) OK > > \deqn{\theta(h) > \begin{cases} > u_\beta \left(\mu + \frac{\nu(h)}{\Gamma(1 - \xi)} > \right),&\xi \neq 0\\ > \exp\left(\frac{\nu(h)}{\sigma}\right),&\xi = 0 > \end{cases} > }{u_beta (mu + nu(h) / Gamma(1 - \xi)), if \xi < 1, > exp(nu(h)/sigma), otherwise} > > Removing the alignment tab character '&' solves the issue but doesn't > produce the expected LaTeX output. Do I miss something with the new Rd > parser requirements?I think the new parser is working properly, but there is something wrong with your LaTeX. When I paste that block into a test file and run it through the 2.9 parser, the \\ gets converted to \bsl{}, and garbage results. The new parser faithfully reproduces what you wrote, but for some reason it's not legal LaTeX. I suspect the problem is that the text is generated within a \deqn{} macro, which is defined in Rd.sty. Something you're doing is not allowed in that context. It's helpful to run Rcmd Rd2dvi --no-clean test.Rd to be able to examine the LaTeX produced by R (which will be saved in a temporary directory; the --no-clean tells R not to delete it at the end). I don't know LaTeX well enough to tell you the best workaround for this, but one option is to used the recently added \if or \ifelse and \out macros instead of \deqn. Of course, that will make your Rd file unusable in earlier versions, so it's not necessarily the best idea. Duncan Murdoch
On 10/10/2009 8:07 AM, Mathieu Ribatet wrote:> Dear list, > > I got an automatic email complaining than some of my packages didn't > pass 'R CMD check' for R-2.10.0 alpha anymore. Both of them make use of > the "cases" LaTeX environment. > > Inspecting the log outputs I got: > > LaTeX errors when creating PDF version. > This typically indicates Rd problems. > LaTeX errors found: > ! Misplaced alignment tab character &. > > I noticed that the Rd parser changed quite recently and that '#', '_' > and '&' must not be escaped according to "Writing R extensions". > However, the problematic .Rd portion seems (to me) OK > > \deqn{\theta(h) > \begin{cases} > u_\beta \left(\mu + \frac{\nu(h)}{\Gamma(1 - \xi)} > \right),&\xi \neq 0\\ > \exp\left(\frac{\nu(h)}{\sigma}\right),&\xi = 0 > \end{cases} > }{u_beta (mu + nu(h) / Gamma(1 - \xi)), if \xi < 1, > exp(nu(h)/sigma), otherwise} >One more followup: the problem appears to be in the "cases" environment. If I rewrite that block using "array" instead, things are fine: \deqn{\theta(h) \left\{\begin{array}{ll} u_\beta \left(\mu + \frac{\nu(h)}{\Gamma(1 - \xi)} \right),&\xi \neq 0\\ \exp\left(\frac{\nu(h)}{\sigma}\right),&\xi = 0 \end{array}\right. }{u_beta (mu + nu(h) / Gamma(1 - \xi)), if \xi < 1, exp(nu(h)/sigma), otherwise} This makes me think it's a bug in the LaTeX package that provides "cases", or a conflict with our Rd.sty file, but I don't know which. Duncan Murdoch