tikz + matlab2tikz

tikz + matlab2tikz

我对 Latex 还不太熟悉,但觉得它很棒。不过,当涉及到数字时,事情就变得有点令人厌烦了。

我目前正在将大量的 matlab 图与 latex 文章链接起来matlab2tikz。在对图形进行大量下采样后,它终于正确链接了。

但问题是,现在我需要控制文档中图形的显示属性,而不需要更改图片本身的文档中的内容。

我在乳胶中包含情节的方式是:

\input{/path/fig.tex}
\FloatBarrier

但我不能很好地控制比例,居中等等。尝试过这样的构造:

\begin{figure}[scale=0.5]
\center
\input{/path/fig.tex}
\end{figure}

或者与 ... 相同 。也许在 Matlab 脚本中的命令本身{tikzpicture}中设置此类参数。好吧,任何帮助都值得感激。matlab2tikz

答案1

关于缩放图,有几个选项。您还想做什么吗?

选项 1 - 设置宽度和高度

使用时matlab2tikz可以指定图形的宽度和高度:

matlab2tikz('nameoffile.tex','width','8cm','height','4cm');

请注意,如果我没记错的话,这将设置只是轴。因此,总宽度将是 8cm + yticks、ylabel 和轴本身旁边的其他东西的宽度。

当然,这不会帮助您在 LaTeX 端缩放图表,但您可以做的是将宽度设置为您在 LaTeX 文档中定义的宏。例如,您可以说

matlab2tikz('nameoffile.tex','width','\figW','height','\figH');

在 Matlab 中,有一个 LaTeX 文件,例如

\documentclass{article}
\usepackage{pgfplots,amsmath}

\newlength\figH
\newlength\figW
\setlength{\figH}{4cm}
\setlength{\figW}{8cm}

\begin{document}

Some text, then a centred plot:

\begin{center}
\input{firstplot}
\end{center}

More text, then a wider plot:

\begin{center}
\setlength{\figW}{10cm} % when added inside the  center environment it has no effect outside it
\input{secondplot}
\end{center}

\end{document}

选项 2 - 添加比例参数

您还可以选择为生成的tikzpictureaxis环境指定其他选项matlab2tikz。这样,您可以scale为其中一个设置一个参数,并让宏保存该值。在 Matlab 中,执行

matlab2tikz('nameoffile.tex','extraAxisOptions','scale=\figurescale');

并有一个 LaTeX 文件

\documentclass{article}
\usepackage{pgfplots,amsmath}

\newcommand\figurescale{1} % set default scaling to 1

\begin{document}

Some text, then a centred plot:

\begin{center}
\input{firstplot}
\end{center}

More text, then a twice as wide plot:

\begin{center}
\renewcommand{\figurescale}{2} % when added inside the  center environment it has no effect outside it
\input{secondplot}
\end{center}

\end{document}

将参数添加scaleaxis不会改变刻度标签和轴标签的大小。如果您'extraTikzpictureOptions','scale=\figurescale在调用 时使用matlab2tikz而不是 ,则'extraAxisOptions'缩放将要更改轴标签的大小等。

选项 3 -tikzscale套餐

(我完全忘记添加这个选项了,它实际上非常方便。很抱歉。)

tikzscale软件包修改了\includegraphics命令,以便它可以代替文件使用\input.tikz并且可以使用相同的缩放选项。

请注意,必须使用.tikz作为文件结尾,.tex否则无法识别。

一个简单的代码示例:

\documentclass{article}%

\usepackage{pgfplots,filecontents}
\usepackage{tikzscale}

% the filecontents environment writes its content to the specified file
\begin{filecontents*}{fig.tikz}
\begin{tikzpicture}
\begin{axis}
\addplot{x};
\end{axis}
\end{tikzpicture}
\end{filecontents*}
\begin{document}

\includegraphics{fig.tikz}

\includegraphics[width=.7\linewidth]{fig.tikz}

\includegraphics[height=6cm]{fig.tikz}

\end{document}

最后关于第二个代码片段的说明:

\begin{figure}[scale=0.5]
\center
\input{/path/fig.tex}
\end{figure}

这里有两点是错误的。

  1. 环境figure只是一个浮动容器,您可以在其中放置内容,例如图像。它没有缩放或类似选项,因此 [scale=0.5]这里什么也不做。
  2. 正确的居中命令是\centering,而不是\center。还有一个center环境,用作\begin{center} ... \end{center},但在图形中建议使用\centering(参见我应该对图形和表格使用 center 还是 centering ?)。

答案2

问题:

  • 您想控制哪些显示属性?宽度、高度……?
  • 您能提供居中存在问题的示例吗?因为我尝试过的方法\center可以解决这个问题。

答案:

  • 一种可能性是将您的 tikz 文件更改为可以轻松缩放的图像,如下所示:\includegraphics[width=0.425\linewidth]
  • 另一个是在 tikz 文件中工作,但您似乎不愿意这样做。

这两个选项都可以使用 bash 脚本实现。如果您感兴趣,请发表评论,我将进一步详细介绍。

答案3

在主 latex 文档中拥有良好缩放的 tikz 图形的另一种简单方法是使用standalone选项生成 tikz 图形

matlab2tikz('plot.tex','独立',true)

稍后在您的 main.tex(包含您的 plot.tex 文件的文件)中,在序言中使用\usepackage{standalone}并包含您的 tikz 图形,如下所示:

\includestandalone[width=\textwidth]{plot.tex}

您可以在其中更改宽度和高度大小,所有这些都无需修改生成的 matlab2tikz 文件。

相关内容