我尝试使用 在我的 TeX 文档中创建和使用文件laprint.m
。laprint
函数调用按预期生成.tex
和.eps
文件。当我尝试使用时,\input{filename}
我收到错误:
File ended while scanning use of \@@@psfrag \input{SparsAvgPerf}
followed by:
\begin{psfrags} on input line 14 ended by \end{document}. \end{document}
两个错误都指向\end{document}
最上面的文件。无论调用是在我的图形环境内部还是外部,错误都不会改变\input
。这是我第一次使用和laprint
,psfrag
所以我甚至不知道从哪里开始调试。
编辑:
\documentclass{thesis}
\usepackage{psfrag}
\usepackage{graphicx}
\usepackage{color}
\begin{document}
\input{SparsAvgPerf}
\end{document}
仅有的 TeX 文件会产生相同的错误,其中 SparsAvgPerf.TeX 位于同一目录中,并且是 laprint.m 创建的未修改文件
答案1
将漂亮的绘图从 MATLAB 导出到 LaTeX 文档的另一种方法是使用matlab2tikz
,它将创建一个可以输入到您的文档中的 TikZ/PGFplots 图形。
pdflatex
这还有合作的额外好处。
一个简单的例子
尽管使用起来相当简单,但我想我可以添加一个例子。
下面是一个非常简单的 MATLAB 脚本,它生成的 TikZ/PGFplots 文件,以及使用它的最小 LaTeX 文档。matlab2tikz
当然必须在 MATLABs 路径中。通过选择 MATLAB 中的文件 --> 设置路径将文件夹添加到路径中。
在 MATLAB 脚本中无需指定绘图的宽度和高度。使用自定义宏也无需指定,例如,\plotw
并\ploth
定义宽度和高度。的手册matlab2tikz
提到了这一点,因此从 LaTeX 文档中更改参数会更容易一些。如果您有多个应为相同大小的图形,这绝对很方便。
.m 文件
x = -10:1:10;
y = x.^2;
plot(x,y)
xlabel('x')
ylabel('x^2')
title('Lovely plot')
matlab2tikz('demo.tex','width','\plotw','height','\ploth')
演示文本
% This file was created by matlab2tikz v0.1.4.
% Copyright (c) 2008--2011, Nico Schlömer <[email protected]>
% All rights reserved.
%
% The latest updates can be retrieved from
% http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz
% where you can also make suggestions and rate matlab2tikz.
%
\begin{tikzpicture}
\begin{axis}[%
scale only axis,
width=\plotw,
height=\ploth,
xmin=-10, xmax=10,
ymin=0, ymax=100,
xlabel={$x$},
ylabel={$x^2$},
title={Lovely plot},
axis on top]
\addplot [
color=blue,
solid
]
coordinates{
(-10,100)(-9,81)(-8,64)(-7,49)(-6,36)(-5,25)(-4,16)(-3,9)(-2,4)(-1,1)(0,0)(1,1)(2,4)(3,9)(4,16)(5,25)(6,36)(7,49)(8,64)(9,81)(10,100)
};
\end{axis}
\end{tikzpicture}
LaTeX 文档
\documentclass{article}
\usepackage{pgfplots}
\usepackage{kantlipsum} % for a little dummy text
\newcommand\plotw{8cm}
\newcommand\ploth{4cm}
\begin{document}
\kant[1]
\begin{figure}[h]
\centering
\input{demo}
\caption{Plotting}
\end{figure}
\kant[2]
\end{document}