将R-yacas方程转换为LaTeX而不求解

将R-yacas方程转换为LaTeX而不求解,r,latex,rstudio,symbolic-math,yacas,R,Latex,Rstudio,Symbolic Math,Yacas,我想展示在Ryacas中使用“TeXForm”进行的逐步计算。 要做到这一点,我必须能够从给定的方程式中得到乳胶。问题是yacas在转换为LaTeX形式之前会自动解决这些问题。 若我尝试在方程上应用“TeXForm”,我会得到它的简化版本。 例如: exp1<-'D(x)Sin(x^2+y^2)+D(y)Sin(x^2+y^2)' TeXForm(exp1) 我试图获得非简化版本: yacas('TeXForm(exp1)') 我得到: "$2 x \cos \left( x ^{2

我想展示在Ryacas中使用“TeXForm”进行的逐步计算。
要做到这一点,我必须能够从给定的方程式中得到乳胶。问题是yacas在转换为LaTeX形式之前会自动解决这些问题。 若我尝试在方程上应用“TeXForm”,我会得到它的简化版本。 例如:

exp1<-'D(x)Sin(x^2+y^2)+D(y)Sin(x^2+y^2)'
TeXForm(exp1)
我试图获得非简化版本:

 yacas('TeXForm(exp1)')
我得到:

"$2 x \cos \left( x ^{2} + y ^{2}\right)  + 2 y \cos \left( x ^{2} + y ^{2}\right) $";
"$\mathrm{ exp1 }$";
我还尝试:

yacas('D(x)Sin(x^2+y^2)+D(y)Sin(x^2+y^2)')
它也不起作用。

如何获得含有所有衍生物的非简化乳胶配方?

我发现
TeXForm(deparse(x^2+x^2))
给出了正确的结果,但这不适用于衍生物。

对于衍生工具:
TeXForm(替换(“D(x)sin(x+y)”)

为了防止yacas对表达式求值,可以使用
Hold()
包装表达式

例如: 您有一个表达式
“Limit(x,0)Sqrt(x)*Sin(1/x)”
, 您希望yacas解析它并将其转换为LaTeX格式,而不计算表达式

按如下方式展开表达式:

s <- "Limit(x,0) Sqrt(x) * Sin(1/x)" 
expanded_yacas_charstr <- paste("Hold(", s, ") == ", s, sep = "")

s某些功能正常:

例如:

TeXForm(保持(积分(a)(a^2+5)))
给出:

$\int\left(a^{2}+5\right)da$
但不是所有的功能。。。这个不匹配:

TeXForm(替代(“D(x)sin(x+y)”)
但即便如此:

TeXForm(Hold(x)Sin(x^2+y^2)+D(y)Sin(x^2+y^2)))
给出:

$2x\cos\left(x^{2}+y^{2}\right)+\frac{\partial}{\partial x}\left(2y\cos\left(x^{2}+y^{2}\right)\right)$

它在文档中:“

我刚刚加载了
Ryacas
,不再有函数
yacas
yac
是同一件事吗?@CarlWitthoft已经对
Ryacas
进行了大量重写-阅读有关新方法的文档。这个答案似乎没有给出完整的解释。试着在你描述的内容中更加详细。链接到文档是没有帮助的,除非它是引用来源。您应该提取链接文档的重要方面,并将其转换为适用于OP情况的内容。
```{r, results="asis", echo=FALSE}

  kalk <- function(s) {
  library("Ryacas")

  # Expand yacas expression
  # e.g. 
  #       Limit(x,0) Sqrt(x) 
  # is expanded to 
  #       Hold("Limit(x,0) Sqrt(x) == )" Limit(x,0) Sqrt(x)
  #
  # This prevents yacas to evaluate the text inside Hold()

  expanded_yacas_charstr <- paste("Hold(", s, ") == ", s, sep = "")

  s <- as.character(yacas(verbose=false,
                          TeXForm(expanded_yacas_charstr),
                          retclass = "unquote"))

  return(paste("$$ ", substr(s, 2, nchar(s)), "$", sep = ""))
}

# use cat() to make sure "[1]"" output is removed
cat(kalk("Limit(x,0) Sqrt(x) * Sin(1/x)"))
```