\input 或 \include 语句的参数?

\input 或 \include 语句的参数?

我在 Matlab 中生成了很多图,并使用 将其导出到 TikZ matlab2tikz。例如,在 中matlab2tikz我可以指定图width和。这效果很好,但在我编写文档时,我发现我应该将和更改为几个图的不同值。现在,这当然是我可以在调用中或直接在的文件输出中执行的操作。我有相当多的图,其中大多数是在“自动化”程序中创建的,所以如果我可以将一个参数传递给(或类似)来操纵图的和/或,那就太好了。类似的东西:heightwidthheightmatlab2tikz.texmatlab2tikz\inputwidthheight

\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}

在此处输入图片描述

相关内容