我在我的文档中使用全局默认变量来\figwidth
表示图形的宽度和\figheight
高度。
这些由我的文档标题中的以下代码定义:
乳胶
\newcommand{\figwidth}{0.8\textwidth} % sets \figwidth, which can be used as default width for figures
\newcommand{\figheight}{\figwidth/1.618} % sets \figheight, which can be used as default heigth for figures
在 Matlab 中,我将上述变量传递给 matlab2tikz.m,如下所示:
矩阵
x = linspace(0,5,500);
y = sin(x);
figure
plot(x,y)
title('Sine Plot')
cleanfigure;
matlab2tikz('width','\figwidth','height','\figheight');
然而,matlab2tikz 内部似乎发生了一些神奇的事情,因为它应用了因子 0.95092到我的预定义\figwidth
乳胶
\begin{tikzpicture}
\begin{axis}[%
width=0.95092\figwidth,
height=\figheight,
at={(0\figwidth,0\figheight)},
scale only axis,
separate axis lines,
every outer x axis line/.append style={black},
every x tick label/.append style={font=\color{black}},
xmin=0,
xmax=5,
every outer y axis line/.append style={black},
every y tick label/.append style={font=\color{black}},
ymin=-1,
ymax=1,
title={Sine Plot}
]
\addplot [color=blue,solid,forget plot]
table[row sep=crcr]{%
0 0\\
0.0100200400801603 0.010019872410322\\
0.0200400801603206 0.020038738821815\\
0.030060120240481 0.0300555933366527\\
//..... many more entries in table .....
4.98997995991984 -0.961718395396395\\
5 -0.958924274663138\\
};
\end{axis}
\end{tikzpicture}%
我目前的解决方法是在 Matlab 代码中添加 0:
矩阵
matlab2tikz('width','0\figwidth','height','\figheight');
得出的结果是:
乳胶
width=0\figwidth,
\figwidth
即考虑到我对读取的初始定义时的最终结果
width=00.8\textwidth, % = 0\figwidth
目前这还好,但在某些情况下可能会破坏代码,而这些情况与我最初定义的宽度变量无关。例如
\newcommand{\figwidth}{\textwidth}
将产生零图形宽度:
width=0\textwidth, % = 0\figwidth = 0
我已经在 matlab2tikz 包的 src 文件夹中包含的所有 *.m 文件中搜索了此因素,但在代码中未找到任何结果。
tl:dr;有人知道是什么导致了魔法因子 0.95092 以及如何避免它吗?非常感谢您的帮助!
答案1
相同的帖子在 Github 上已得到答复。请参阅 Github 链接以获取回复。