我对 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 - 添加比例参数
您还可以选择为生成的tikzpicture
和axis
环境指定其他选项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}
将参数添加scale
到axis
不会改变刻度标签和轴标签的大小。如果您'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}
这里有两点是错误的。
- 环境
figure
只是一个浮动容器,您可以在其中放置内容,例如图像。它没有缩放或类似选项,因此[scale=0.5]
这里什么也不做。 - 正确的居中命令是
\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 文件。