2015-07-02 21 views

cevap

13
belirtildiği gibi sadece ?plotmath iş ile expression kullanmakBu zaten bir yerde var olmak mümkündür, ancak bir formülü mathjax ile işlemek ve onu görüntüleyicide (rstudio kullanıyorsanız) veya web tarayıcınızda görüntülemek için bir işlev yazabilirsiniz. Bu Düzenlemek istiyorsa

show_math(form2, use_viewer = FALSE) ## opens in default browser 

enter image description here

rstudio kullanmak istemiyorsanız/anında onay formülleri Ben tarayıcınızda

form1 <- '$$A=\\frac{B}{C}$$' 
form2 <- '$$ 
    \\frac{1}{\\displaystyle 1+ 
     \\frac{1}{\\displaystyle 2+ 
      \\frac{1}{\\displaystyle 3+x}}} + 
    \\frac{1}{1+\\frac{1}{2+\\frac{1}{3+x}}} 
$$' 
form3 <- '\\frac{d}{dx}\\left(\\int_{0}^{x} f(u)\\,du\\right)=f(x)' 

show_math(form1) 

enter image description here

Veya açık tahmin yardımcı olacağını

enter image description here

Eminim Mathjax'ın lateks denklemlerine tam desteği yoktur. Ayrıca,

formülündeki \'dan da kaçtığınızdan emin olun. Ayrıca, tek bir satırdan daha fazlasını da görüntüleyebilirsiniz.

form4 <- " 
\\forall a,b,c \\in \\mathbb{R} \\\\ 
\\begin{align} 
         a + b &= c \\\\ 
      (a + b)(a - b) &= c(a - b) \\\\ 
        a^2 - b^2 &= ca - cb \\\\ 
        a^2 - ca &= b^2 - cb \\\\ 
    a^2 - ca + \\frac{c^2}{4} &= b^2 - cb + \\frac{c^2}{4} \\\\ 
     (a - \\frac{c}{2})^2 &= (b - \\frac{c}{2})^2 \\\\ 
      a - \\frac{c}{2} &= b - \\frac{c}{2} \\\\ 
          a &= b \\qquad \\qquad \\blacksquare \\\\ 
\\end{align} 
" 

show_math(form4) 

enter image description here

show_math <- function(..., css, use_viewer = !is.null(getOption('viewer'))) { 
    mj <- "<script> 
    (function() { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = 'https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'; 
    document.getElementsByTagName('head')[0].appendChild(script); 
    })(); 
</script>" 

    ## view text strings as html in viewer/browser 
    view_html <- function(..., viewer) { 
    x <- c(...) 
    if (is.null(x)) return(invisible()) 
    htmlFile <- tempfile(fileext = '.html') 
    writeLines(x, con = htmlFile) 
    if (viewer) 
      tryCatch(rstudio::viewer(htmlFile), 
        error = function(e) { 
        message('Viewer not available - opening in browser.\n', 
          'If using Rstudio, try installing the \'rstudio\' package.', 
          domain = NA) 
        browseURL(htmlFile) 
        }) 
    else browseURL(htmlFile) 
    invisible(x) 
    } 

    ## use \[ expr \] instead of $$ expr $$ 
    check_expr <- function(x) 
    sprintf('\\[%s\\]', gsub('^\\$+|\\$+$', '', x)) 

    x <- paste(sapply(c(...), check_expr), collapse = '<br />') 
    if (!nzchar(x)) return(invisible()) 
    if (missing(css)) css <- '' 

    ## setting the default to larger font since @Molx has bad eyes :} 
    ## this can still be over-ridden by passing font-size: whatever; to css 

    view_html(sprintf('<span class="math" style="font-size: 24px; %s;">\n', css), 
      x, '\n</span>\n', mj, viewer = use_viewer) 
} 
+0

Bu işlev zaten var mı, yoksa sadece yazdınız mı? Bu harika! Ama her zaman benim için tarayıcıda, asla RStudio görüntüleyicide açılır. Ben iki rüşvet yerine 'rstudio' paketine 'rstudioapi' için düzeltildi. – Molx

+0

@Molx evet Sadece onunla oynuyordum. getOption ('görüntüleyici') sizin için ne döndürüyor? – rawr

+0

Bunu denedim, bir işlev döndürdü. 'function (url, height = NULL) {' ​​... 'görünmez (.Call (" rs_viewer ", url, yükseklik))'. – Molx

1

yapabilirsiniz grafiği etiket için: o lateks çıkışta gösterilmesine olur gibi

A=B/C 

bunu göstermek için bir yol olup olmadığını bilmek istiyorum @MrFlick

plot(1, main=expression(A==frac(B, C))) 
İlgili konular