是否有任何东西(命令/脚本/函数)可以将 Octave 表达式转换为 LaTeX。我想要的是这样的:
我输入
a = eye(3,3); %Identity Matrix
然后做一些类似的textify_me(a)
事情
\begin{array}{ccc}
1 & 0 & 0 \\ blah blah blah
\end{array}
和/或
syms x
int(sym('x^2'))
生产
\frac{x^3}{3}
我并不是要求“转换”代码、导出图形或类似的东西。我只是要求将变量和符号表达式直接转换为 LaTeX 格式。
MATLAB 有一个函数latex
可以实现这个功能。但它是闭源的。有没有开源的东西,或者我应该尝试聚集人手来写它?
答案1
如果您需要的只是一个矩阵,您可以这样做:
strrep(strrep(mat2str(A),",","&"),";","\\\\\n")(2:end-1)
其中 A 是矩阵。这将给出矩阵的主体,不带\begin{matrix}
and\end{matrix}
strcat("\\begin{bmatrix}\n",strrep(strrep(mat2str(A),",","&"),";","\\\\\n")(2:end-1),"\n\\end{bmatrix}\n")
将生成整个事物。
我认为 Octave 中没有更全面的解决方案。
另一个选择似乎是使用科学实验室。它或多或少与 MATLAB 兼容(有人说甚至比 Octave 还要兼容),并且它有一个漂亮的打印函数似乎可以完成您想要的操作。不过,我没有使用过 scilab。
答案2
现在该latex
功能可在八度锻造在里面象征性的包裹。
>> pkg install -forge symbolic
>> pkg load symbolic
>> a = eye(3);
>> latex(sym(a))
\left[\begin{matrix}1 & 0 & 0\\0 & 1 & 0\\0 & 0 & 1\end{matrix}\right]
>> syms x
>> latex(int(sym('x^2')))
\frac{x^{3}}{3}
答案3
但它是闭源的。有开源的东西吗?还是我应该尝试聚集人手来编写它?
如果你不是完全依赖 Octave,你可以使用智者去做这个。
sage: M = matrix([[2,3],[3,2]])
sage: latex(M)
\left(\begin{array}{rr}
2 & 3 \\
3 & 2
\end{array}\right)
sage: a = integral(x^2,x)
sage: latex(a)
\frac{1}{3} \, x^{3}
如果你确实需要用 Octave 来做这件事,你可以使用Sage 到 Octave 及后台接口以及。我没有本地安装 Octave,因此无法发布一些代码,但我认为 Octave -> Sage -> Latex 的流程应该不会有什么大问题。
答案4
您还可以使用这个强大的函数将 MATLAB 数组转换为 LaTeX 表。 https://www.mathworks.com/matlabcentral/fileexchange/4894-matrix2latex