R 马克顿雅卡斯乳胶

R 马克顿雅卡斯乳胶,r,latex,knitr,r-markdown,yacas,R,Latex,Knitr,R Markdown,Yacas,我试着用Ryacas和RMarkdown做R中的计算机代数 这里有一个简单的例子 ```{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) )") ``` 如何从解析为LaTeX的R输出中获取文本

我试着用Ryacas和RMarkdown做R中的计算机代数

这里有一个简单的例子

```{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) )")
```
如何从解析为LaTeX的R输出中获取文本

编辑:

结果=
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(y=-\left(\frac{-y{0}}{x-x{0}}}-\frac{y{1}-y{0}}{x{1}-x{0}\right)\left(x-x{0}\right)$

谢谢巴蒂斯特和康拉德·鲁道夫

```{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)
```
`{r,results=“asis”}
图书馆(Ryacas)
图书馆(magrittr)
图书馆(stringi)
print.Expr=函数(x,…){
答案=雅卡斯(x,…)
回答$YacasForm%%stri\u replace\u all\u fixed(“$”,“$$”)>%stri\u sub(2,-3)
打印(答案)
}
print.Sym=函数(x,…){
答案=雅卡斯(未分类(x),…)
回答$YacasForm%%stri\u replace\u all\u fixed(“$”,“$$”)>%stri\u sub(2,-3)
打印(答案)
}
x=Sym(“x”)
y=Sym(“y”)
TeXForm(x+y)
```
另一种选择(我认为更可取):


结果='asis'似乎有效,但请参见上面的编辑如果您只需要将single更改为double
$
附件,为什么不将表达式替换为
paste0('$',yacas(…),'$')
?诚然,它并不漂亮,但这当然可以(应该!)包装在functionYup中。参见上面的解决方案。
```{python3, results = "asis"}
from sympy import *
def LaTeX(math):
  return("$$" + str(math) + "$$")
x, y = symbols("x_0, y_0")
print(LaTeX(x + y))
```