只是为了证明一旦集成就可以实现mathjaxr https://CRAN.R-project.org/package=mathjaxr正确:
tmp <- tempfile()
dir.create(tmp)
cwd <- setwd(tmp)
pkgname <- "foo"
usethis::create_package(pkgname, rstudio = FALSE, open = FALSE,
fields = list(Imports = "mathjaxr", RdMacros = "mathjaxr"))
setwd(pkgname)
text <- "#' A title
#'
#' \\loadmathjax{}
#' A description.
#'
#' @param a,b Arguments.
#'
#' @details
#' An irrelevant equation:
#' \\mjtdeqn{F(t) = \\left\\lbrace\\begin{array}{ll} \\alpha(t) f_{L}(t) + \\lbrack 1 - \\alpha(t) \\rbrack f_{C}(t)\\,, & t_{L} < t < t_{C}\\,, \\cr \\beta(t) f_{C}(t) + \\lbrack 1 - \\beta(t) \\rbrack f_{R}(t)\\,, & t_{C} < t < t_{R}\\,. \\end{array}\\right.}{%
#' F(t) = \\begin{cases} \\alpha(t) f_{L}(t) + \\lbrack 1 - \\alpha(t) \\rbrack f_{C}(t)\\,, & t_{L} < t < t_{C}\\,, \\cr \\beta(t) f_{C}(t) + \\lbrack 1 - \\beta(t) \\rbrack f_{R}(t)\\,, & t_{C} < t < t_{R}\\,. \\end{cases}}{%
#' ... a plain text translation ...}
#'
#' @noMd
#' @export
#' @importFrom mathjaxr preview_rd
add <- function(a, b) a + b
"
cat(text, file = file.path("R", "add.R"))
roxygen2::roxygenize(".")
PDF输出
mathjaxr::preview_rd("add.Rd", type = "pdf")
HTML输出
mathjaxr::preview_rd("add.Rd", type = "html")
纯文本输出
mathjaxr::preview_rd("add.Rd", type = "txt")
几点说明
- 我们只是转义反斜杠,因为我们正在输入以下内容
add.R
成字符串。创建的文本文件cat
不包含转义符。
-
\loadmathjax{}
将 MathJax 脚本注入 HTML 文件。它通常放置在描述的顶部,以便您可以在之后的任何地方排版数学。
- 我们正在使用宏
\mjtdeqn
按顺序为 PDF 手册提供 LaTeX,为 HTML 帮助页面提供 LaTeX,为纯文本帮助页面提供纯文本。在更简单的情况下,您还可以使用其他宏。它们都记录在README https://github.com/wviechtb/mathjaxr,您应该仔细阅读。
- 在PDF领域,您无权访问AMS扩展,因此您必须实施
cases
你自己与array
.
- 在 PDF 和 HTML 字段中,您都需要使用
\cr
代替通常的\\
在多行环境中。我不知道为什么。
- 我还没有弄清楚如何在纯文本字段中对换行符进行编码(还)。很难将多行方程转换为没有换行符的纯文本......
- 我禁用了对此标头的 Markdown 支持
@noMd
因为,根据我的经验,Markdown 解析器并不总是能很好地与mathjaxr
宏。在我自己的软件包中,我通过全局禁用 Markdown 支持DESCRIPTION
.
- 你需要
@importFrom mathjaxr preview_rd
包裹中某个地方可以规避R CMD check
关于有的警告mathjaxr
在你的Imports
不使用任何导出的函数mathjaxr
.
- 要在不安装软件包的情况下预览使用 MathJax 的帮助页面,您需要使用
mathjaxr::preview_rd
. The devtools
预览将向您显示未渲染的 LaTeX 代码。
- 您必须决定 MathJax 支持是否值得
mathjaxr
在你的Imports
。任何尝试安装您的软件包的人都必须安装mathjaxr
, too.
打扫干净
setwd(cwd)
unlink(tmp, recursive = TRUE)