24

\deqn{}{}パッケージ内の関数の方程式を文書化するために roxygen2 を使用しています。deqnLaTeX 式では空白が無視されるため、LaTeX ( の第 1 引数) は正常にレンダリングされますが、ASCII ( の第 2 引数deqn) 表現​​に問題があります。

問題は、私のフォーマットが壊れていることです(roxygenはdeqnコマンド全体を「1行」に入れ、その行を約60列で折り返すようです)。.R ファイルの roxygen コマンド/コメントの空白の書式設定を roxygen2 に保持させる方法はありますか?

ファイルに次のコードがあります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))
4

2 に答える 2

19

Hadley Wickham によると、roxygen の将来のバージョンでは行の折り返しが削除される予定です。したがって、roxygen2 の解決策は、ファイル (またはパッケージ) を roxygen 化してから、影響を受けるファイル内のテキスト方程式を手動で更新することです.Rd

于 2013-01-09T17:17:30.117 に答える
7

この回答はASCIIの問題には対処していませんが、現在、HTMLでラテックス方程式をレンダリングするときの私の頼りになる方法なので、これがお役に立てば幸いです.

mathjaxr パッケージ ( CRANGitHub ) を見てください。install.packages("mathjaxr")またはでインストールできますremotes::install_github("wviechtb/mathjaxr")

ラテックス方程式をレンダリングするため\loadmathjaxに必要な JavaScript をMathJaxからロードするマクロが導入されています。次に、 orの代わりにマクロ\mjeqn{latex}{ascii}orを使用すると、準備完了です。\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マクロで問題が発生する可能性があります。コンテンツをすばやくプレビューするには、次の操作を行います。

  1. ドキュメントの生成 (Ctrl + Shift + D またはdevtools::document(roclets = c('rd', 'collate', 'namespace')))
  2. 呼び出しpreview_rd("example.Rd")てドキュメントをプレビューする

完了したら、次の手順で最終結果を検査できます。

  1. ドキュメントの生成 (Ctrl + Shift + D またはdevtools::document(roclets = c('rd', 'collate', 'namespace'))
  2. パッケージをインストールします (Ctrl + Shift + L またはdevtools::install())
  3. でRセッションを再開します.rs.restartR()
  4. ドキュメントのプレビュー?example

どちらの方法でも、次の結果が生成されます。

レンダリングされた mathjax 方程式

于 2020-05-28T10:58:29.747 に答える