将Maple输出的LaTex导出到txt文件
1. 生成LATEX
Maple可以把它的表达式转换成LATEX, 使用latex命令即可:
> latex(x^2+y^2=z^2);
{x}^{2}+{y}^{2}={z}^{2}
还可以将转换结果存为一个文件(LatexFile):
> latex(x^2 + y^2 = z^2, LatexFile);
测试通过:
interface(prettyprint=0);
> latex(x^2 + y^2 = z^2, res.txt);
> with(linalg):
matrix(2,2,[5,4,6,3]);
latex(
subs(LambertW=lambertW,erf=Erf,arctanh=Artanh,[%]),"C:/Users/Bravo/Desktop/test1.txt");
> latex(BesselK(nu, z)+BesselJ(nu, z), output = string)
"{{\sl K}_{\nu}\left(z\right)}+{{\sl J}_{\nu}\left(z\right)}"
注意: LambertW erf arctanh这几个命令会导致Latex命令报错,需要在使用的时候替换掉
MyLaTeX := module()
export ModuleApply, ExprsToLaTeX, CleanLaTeX;
option package;
ModuleApply := CleanLaTeX;
ExprsToLaTeX := proc()
return cat("", `latex/print`(_passed));
end proc;
CleanLaTeX := proc(expr, regsubs :: seq(string=string), $)
return foldr(StringTools:-RegSubs
, ExprsToLaTeX(expr)
, ListTools:-Reverse([regsubs])[]
, "\\\\!" = "" # remove \!
, "{([0-9])}" = "\\1 " # strip braces from single digits
, "\\\\_" = "_" # change \_ to _
, " \\\\right\\)" = ")" # remove \right)
, " \\\\left\\( " = "(" # remove \left)
, "{\\\\it ([^}]*)}" = "\\1" # remove italics from variables
, "\\\\," = " " # remove \
, "(([a-zA-Z1-9]+))/(([a-zA-Z1-9]+))" = "\\\\frac {\\1} {\\3}"
# , "\:\:" = "->"
);
end proc;
end module:
相关链接:
Better LaTeX output from Maple? - MaplePrimes http://www.mapleprimes.com/posts/43828-Better-LaTeX-Output-From-Maple