我希望 Matlab 代码输出打印在我的 LaTeX 文件中。
最好的、最有效的方法是什么?将结果导出为 .txt,然后在 LaTeX 中调用它,还是有其他 (更好的) 方法来实现这一点?
答案1
您几乎已经概述了工作流程。我假设您指的是命令窗口中显示的输出。
- 让 MATLAB 写入文本文件,参见例如此功能
- 然后,将此文本文件包含到您的文档中。这可以通过一个简单的
\input
命令来完成,尽管我建议将 MATLAB 生成的文本处理得与处理源代码一样。有很多选择可以将源文件包含在 latex 中,例如列表包。
这是一个最小的例子。将两个文件放在同一个目录中,运行 MATLAB 脚本 - 也适用于 octave - 然后运行 latex。
diary on
您可能会注意到,只有在和之间生成的输出diary off
才会出现在日志文件中,该文件稍后会包含在 latex 文档中。这样您就可以控制将生成的输出的哪些部分放入文档中。
使 MATLAB 更新 latex 文件:
如果您将 eg 添加system('latexmk --pdf matlabLog')
到 MATLAB 脚本的末尾,则 MATLAB 将执行传递给命令的字符串中指定的命令system
。在此示例中,我使用latexmk
命令,可以找到这里。或者,您也可以执行 shell 脚本或任何其他构建魔法。
以下是一些最简单的 MATLAB 代码:
disp("This is a simple test")
% uncomment to erase log
% by default diary appends new data
%delete("matlabDiary.txt")
diary("matlabDiary.txt")
diary on
x = 5;
y = 3;
disp(["x + y = ",num2str(x+y)])
diary off
disp(["x - y = ",num2str(x-y)])
diary on
disp(["x * y = ",num2str(x*y)])
diary off
还有一些最少的乳胶代码:
\documentclass[11pt,a4paper]{article}
\usepackage{listings}
\begin{document}
\section{test}
bla bla
\lstinputlisting{matlabDiary.txt}
\end{document}