Я использую глобальные переменные по умолчанию \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}%
Мой текущий обходной путь — добавление 0 в код Matlab:
Матлаб
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
Я просмотрел все файлы *.m, содержащиеся в папке src пакета matlab2tikz, на предмет этого фактора, но не нашел результатов в коде.
кратко:Кто-нибудь знает, что вызывает магический фактор 0,95092 и как его избежать? Заранее большое спасибо за помощь!
решение1
идентичный постна Githubбыл дан ответ. Смотрите ссылку на Github для ответа.