我在 Matlab 中生成了很多图,并使用 将其导出到 TikZ matlab2tikz
。例如,在 中matlab2tikz
我可以指定图width
和。这效果很好,但在我编写文档时,我发现我应该将和更改为几个图的不同值。现在,这当然是我可以在调用中或直接在的文件输出中执行的操作。我有相当多的图,其中大多数是在“自动化”程序中创建的,所以如果我可以将一个参数传递给(或类似)来操纵图的和/或,那就太好了。类似的东西:height
width
height
matlab2tikz
.tex
matlab2tikz
\input
width
height
\input[w=0.4,h=0.2]{plotfile}
并有这样的内容plotfile
:
\begin{axis}[%
width=w\textwidth,
height=h\textwidth,
]
有针对这个的解决方法吗?
答案1
这样定义怎么样?
\newlength{\figurewidth}
\newlength{\figureheight}
\newcommand{\myinputaux}[2][1]{%
\def\myheight{#1}
\setlength\figureheight{\myheight\textwidth}
\setlength\figurewidth{\mywidth\textwidth}
\input{#2}}
\newcommand{\myinput}[1][1]{%
\def\mywidth{#1}
\myinputaux}
然后你可以像这样调用该函数:
\myinput[0.4][0.2]{plotfile} % the first optional is the width, the second is the height
并matlab2tikz
执行
matlab2tikz( 'plotfile', 'height', '\figureheight', 'width', '\figurewidth' );
请注意,这个答案纯粹是理论上的,基于的自述文件matlab2tikz
。我无法“真正”测试它。
答案2
我还没有用\include
语句测试过它,但您可以本地化您的轴选项并让它们在轴选项之后执行。
编辑:哦,当然你\input
要替换tikzpicture
下面的 s。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
{
\pgfplotsset{execute at begin axis={\pgfplotsset{width=3cm}}} %<-- Only inside this group
\begin{tikzpicture}
\begin{axis}[width=10cm,domain=-360:360]
\addplot {sin(x)};
\end{axis}
\end{tikzpicture}
}
\begin{tikzpicture}
\begin{axis}[width=10cm,domain=-360:360]
\addplot {sin(x)};
\end{axis}
\end{tikzpicture}
\end{document}