2015-08-16 51 views
3

我想在R中使用Ryacas和RMarkdown做計算機代數。RMarkdown Yacas Latex

下面是一個簡單的例子。

```{r} 
library(Ryacas) 
x = Sym("x") 
y = Sym("y") 
x0 = Sym("x0") 
y0 = Sym("y0") 
x1 = Sym("x1") 
y1 = Sym("y1") 
yacas("TeXForm(Solve((y - y0)/(x - x0) == (y1 - y0)/(x1 - x0), y))") 
``` 

如何從R輸出中解析爲LaTeX的文本?

編輯:

結果= asis沒有工作,但輸出將被包裹在單寧可雙美​​元符號。只有雙美元符號表達式才能正確解析(試着編織下面的內容)。

$$ \ left(y = - \ left(\ frac { - y_ {0}} {x - x_ {0}} - \ frac {y_ {1} - y_ {0}} {x_ {1 } \ x_ {0}} \ right)\ left(x - x_ {0} \ right)\ right)$$

$ \ left(\ frac { - y_ {0}} {x - x_ {0}} - \ frac {y_ {1} - y_ {0}} {x_ {1} - x_ {0}} \ right)\ left(x - x_ {0} \ right)\ right )$

+0

結果=「ASIS」也許 – baptiste

+0

這似乎工作,但看到上面 – bramtayl

+1

編輯如果你只需要改變單進雙'$'外殼,爲什麼不用'paste0('$',yacas(...),'$')'替換你的表達式?當然,這不是很漂亮,但是這當然可以(應該!)封裝在功能 –

回答

1

謝謝baptiste和康拉德魯道夫。

```{r, results = "asis"} 
library(Ryacas) 
library(magrittr) 
library(stringi) 


print.Expr = function (x, ...) { 
    answer = yacas(x, ...) 
    answer$YacasForm %<>% stri_replace_all_fixed("$", "$$") %>% stri_sub(2, -3) 
    print(answer) 
} 

print.Sym = function (x, ...) { 
    answer = yacas(unclass(x), ...) 
    answer$YacasForm %<>% stri_replace_all_fixed("$", "$$") %>% stri_sub(2, -3) 
    print(answer) 
} 

x = Sym("x") 
y = Sym("y") 

TeXForm(x + y) 
``` 
0

另一種選擇(我認爲這是遠遠優於):

```{python3, results = "asis"} 
from sympy import * 
def LaTeX(math): 
    return("$$" + str(math) + "$$") 
x, y = symbols("x_0, y_0") 
print(LaTeX(x + y)) 
```