如何在R帮助文件/roxygen2中交叉引用方程

13

我正在为我创建的一个R软件包记录一些函数。

我正在使用roxygen标记,但这与我的问题大部分无关。

我已经在文档中使用\deqn{...}放置了方程。我的问题是: 是否有办法后来引用这个方程?

例如,在我的Rd文件中:

\deqn{\label{test}
 y = mx + b
}

我之后可以做类似这样的事情吗:

参考公式 \ref{test},...

我尝试了\eqref{test}\ref{test}(都得到了“未知宏”并且没有链接),还有\link{test}(因为它实际上只是用于链接到其他函数,所以会抱怨找不到函数test)。

否则我担心我必须使用一些hack方法,在Rd文件中手动添加--(1)参考公式(1)等等...

更新

总体答案似乎是“不行”。(哎呀...)

无论如何,我可以编写一个vignette并在其中使用“正常”的latex/packages。无论如何,我刚刚注意到我花了很多时间将矩阵方程放入我的roxygen/Rd文件中,在帮助文件的?myFunction版本中看起来很糟糕(它们显示为几乎是字面latex源代码)。这很遗憾,因为它们在pdf版本的帮助中看起来很漂亮。

@Iterator指出了条件文本的存在,因此我将在.Rd文件中使用ASCII数学表达式,但在pdf手册/vignette中使用Latex数学表达式。


1
也许一篇小品文是更好的选择?我还不是特别熟悉.Rd格式,但我并不喜欢一种看起来像LaTeX子集的文档格式。你的问题很好,但在我看来,这是因为它指出了.Rd方法的缺陷或.Rd方法的文档存在缺陷。 (我还将开始记录大量代码和方程式,因此我的问题队列中也有类似的问题需要调查。) - Iterator
我想为数学部分写一个小品文,但我仍在决定是否要让?myFunction也显示出数学内容 -- 我会说:“有关数学的更多信息,请参阅小品文”,或者我也会在那里加上数学公式,用笨拙的“在上述方程中。。。”。 - mathematical.coffee
哇,这才刚刚浮现在我脑海中(我的文档中有矩阵方程) - 它们在?myFunction中以纯粹的LaTeX形式显示(我使用终端)。所以我将在.Rd文件中使用ASCII数学符号,在vignette中使用正式的数学公式。不过真是可惜 - 我使用roxygen,通过在.Rd中使用LaTeX数学公式(实际上是在.r文件中),可以自动编译出漂亮的PDF手册。可惜我不能说"如果是.Rd版本,使用这段代码;如果是PDF版本,使用那段代码"。 - mathematical.coffee
好的,有条件文本 - 我认为这可能是一种方法来实现它。 - Iterator
嗯,为了澄清一下(好吧,为了严谨一些):我不认为我们知道一般的答案是否是否定的。至少我不知道。我只知道,在将LaTeX便利性塞入.Rd文件中可能会遇到挫折。 :) - Iterator
显示剩余5条评论
1个回答

6
我正在将我的评论整理成一个答案,为了让其他人受益。
首先,我不确定.Rd是否支持对方程式进行标记。但是,.Rd格式是LaTeX的一个非常严格的子集,并且产生非常基本的文本输出,如果在其格式中强行插入复杂的方程式,则可能会很痛苦,而对用户没有太多好处。
另一种选择是使用软件包vignettes,甚至是外部托管的文档(如Hadley Wickham为他的某些软件包所做的)。这将允许您尽情使用PDF或其他文档。通过这种方式,您可以包括截图、绘图,以及所有最时髦的LaTeX扩展,最重要的是,我们都知道和喜爱的AMS扩展。
尽管如此,可以根据接口指定文档中给定部分的不同呈现(在.Rd中),例如控制台的文本,HTML的漂亮字符等,条件文本支持这种格式变化。
这是一个好问题。我不知道可行性的答案,但我对记录函数和方程式的方式有类似的问题,对.Rd文件的可行性调查使我决定使用PDF vignettes而不是.Rd文件。

啊,你比我快 - 我看到更新有相同的结论。 :) - Iterator
1
虽然我喜欢Hadley的文档本身,但他所有帮助文件都说“请参考网站”,这让我非常烦恼,因为当我去查看?somefunction时,我不得不打开网络浏览器并复制/粘贴URL。在ggplot2的情况下,考虑到文档如何依赖图形,我认为这是合理的,但这不是我想走的路线。 - mathematical.coffee
1
我同意即使是初级文档也应该如此。但是,我目前正在使用支持论坛、缺陷跟踪等功能的LaTeX启用的维基百科来进行软件文档编写,因此即使是静态PDF也是一步退步。 :) 有一些东西需要与代码分开演化的文档,例如能够提供新的使用示例或根据反馈修订文档。在提供快速参考和支持全面文档之间需要找到平衡点。 - Iterator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接