如何将 Matlab 或 Mathematica 代码编织到 LaTeX。

如何将 Matlab 或 Mathematica 代码编织到 LaTeX。

有一个名为pgfsweaveR 的包。它可以将 R 代码编入 LaTeX 文档。我发现我们可以从这种方法中获得一些好处。

  1. 该报告文档可复制。
  2. 图中的字体与文档的主字体保持一致。

我认为“sweave”代码是面向数据的报告(尤其是对于LaTeX)的最佳方法。通过sweave,我们可以将数据(或图形)从文档中分离出来,通过LaTeX,我们可以将内容与文档样式分离。

不幸的是,我没有找到针对 matlab 和 mathematica 的相应包或一些等效方法。

我知道一些软件包,比如psfragmatlab2tikz,效果很好。但我们需要一个更强大的工具来做到这一点,它可以改变我们的工作流程,让我们的生活更轻松。

这可能吗?你如何解决这个问题?它符合 matlab 或 mathematica 的理念吗?

答案1

有三种方法可以实现此目的:

  1. 编织在应用程序(Matlab、Mathematica、R)端。也就是说,应用程序应该知道 TeX 格式并忽略除\begin{code}...\end{code}片段之外的所有内容。这就是 Sweave 和 literate haskell 的工作方式。

  2. 编织在 TeX 端,即让 TeX 调用外部应用程序(使用适当的开关),然后显示结果。这是ConTeXt 中的R和模块遵循的方法。gnuplot

  3. 使用通用的文学编程工具,例如诺韦布(或针对特定语言的奥卡姆网)。

对于第二种方法,我编写了一个 ConTeXt 模块,筛选,它允许您将程序的内容传递给外部程序并读回结果。例如,您可以使用以下方法复制 sweave 的功能:

\usemodule[filter]

\defineexternalfilter
  [R]
  [filtercommand={R CMD BATCH -q --save --restore \externalfilterinputfile\space \externalfilteroutputfile},
   output=\externalfilterbasefile.out,
   readcommand=\typefile,
   continue=yes]

然后,使用

\startR
  ...
\stopR

将使用 执行结果代码R并显示 生成的输出R。使用

\startR[read=no]
  ....
\stopR

将使用执行代码R但不显示输出。同样的方法也适用于 Matlab 或 Mathematica,只需filtercommand用对 Matlab/Mathematica 的适当调用替换即可。这种方法可用于其他目的以及

相关内容