我用的是 \deqn{}{}
用 roxygen2 来记录包中函数的方程。 LaTeX (是 deqn
)可以很好地显示,因为在LaTeX公式中,白色空间被忽略,但我在ASCII码方面有一个问题(第二个参数是 deqn
)表示。
问题是我的格式化被破坏了(似乎roxygen把整个的 deqn
命令在 "单行 "上,然后在大约60列左右的地方包装这一行)。) 有没有办法强制roxygen2保留.R文件中roxygen commandscomments中的白色空间格式?
我在一个文件里有以下代码。example.R
:
#'Example
#'
#'deqn ASCII example
#'
#'\deqn{ \sigma = \sqrt{ \frac{Z}{n} \sum
#' \left[ \textstyle\frac{1}{2}\displaystyle
#' \left( \log \frac{H_i}{L_i} \right)^2 - (2\log 2-1)
#' \left( \log \frac{C_i}{O_i} \right)^2 \right] }
#'}{sqrt(N/n * runSum(0.5 * log(OHLC[,2]/OHLC[,3])^2 -
#' (2*log(2)-1) * log(OHLC[,4]/OHLC[,1])^2, n))}
#'
#'@param x An example parameter
#'@return A example result
#'@author Joshua Ulrich
#'@keywords ts
#'@export
"example" <-
function(x) {
}
我使用下面的R代码来生成。example.Rd
文件。
library(roxygen2)
setwd("dir/containing/example.R/")
dir.create("man",FALSE)
roclet <- rd_roclet()
roc_proc(roclet, "example.R", ".")
roc_out(roclet, "example.R", ".")
你可以在命令行用这个命令生成example.Rd文件的文本表示。
R CMD Rd2txt dir/containing/example.R/man/example.Rd
这个 详细内容 上述命令输出的部分看起来像。
sqrt(N/n *
runSum(0.5 * log(OHLC[,2]/OHLC[,3])^2 - (2*log(2)-1) *
log(OHLC[,4]/OHLC[,1])^2, n))
而我希望它看起来像:
sqrt(N/n * runSum(0.5 * log(OHLC[,2]/OHLC[,3])^2 -
(2*log(2)-1) * log(OHLC[,4]/OHLC[,1])^2, n))
根据Hadley Wickham的说法,在以后的roxygen版本中,行包会被删除。 所以roxygen2的解决方法是对文件(或包)进行roxygen化,然后在受影响的 .Rd
文件。
这个答案并没有解决你的ASCII码问题,但是目前在HTML中渲染乳胶方程时,它是我常用的方法,所以我希望这能帮助你。
请看一下mathjaxr包 (CRAN, GitHub). 您可以通过以下两种方式安装 install.packages("mathjaxr")
或 remotes::install_github("wviechtb/mathjaxr")
.
它引入了一个宏观 \loadmathjax
中加载必要的JavaScript。MathJax 来渲染乳胶方程。然后使用宏 \mjeqn{latex}{ascii}
或 \mjdeqn{latex}{ascii}
而不是 \eqn
或 \deqn
你就可以走了。
在你的具体例子中,我们会有以下内容。
#' Example
#'
#' Example mathjax function
#'
#' \loadmathjax
#' \mjdeqn{ \sigma = \sqrt{ \frac{Z}{n} \sum
#' \textstyle\frac{1}{2}\displaystyle
#' \left\[ \left( \log \frac{H_i}{L_i} \right)^2 - (2\log 2-1) \left( \log \frac{C_i}{O_i} \right)^2 \right] }
#' }{ASCII representation}
example <- function(a, b, c) {}
(注意,方括号是转义的)
如果您使用RStudio,您可能会遇到一些麻烦。\loadmathjax
宏。要快速预览内容,请执行以下操作。
devtools::document(roclets = c('rd', 'collate', 'namespace'))
)preview_rd("example.Rd")
来预览文件当你完成后,你可以通过以下步骤检查最终结果。
devtools::document(roclets = c('rd', 'collate', 'namespace'))
devtools::install()
).rs.restartR()
?example
无论哪种方式都应该产生以下结果。