matlab2tikz转换图片在LaTeX中跳转至下一页问题咨询
问题成因
图片自动跳到下一页和figure浮动参数无关,核心是matlab2tikz生成的tikz文件存在三处错误:
- 主绘图axis配置里写死了绝对定位参数
at={(0in,9in)},直接将绘图锚点设置在页面9英寸高度位置,常规A4纸张版心高度仅8英寸左右,图本身已经被顶出当前页范围 - 自动生成了一个完全无用的空白axis模块,尺寸为16.286英寸宽、10.113英寸高,这个超尺寸空白块占用了远超当前页剩余空间的位置,LaTeX计算浮动体占位时判定当前页无法容纳,自动将图挪到下一页
- 主axis配置存在语法疏漏:
axis y line*=left末尾缺少逗号,编译时会触发语法警告,也可能干扰排版位置判定
解决方案
按优先级依次操作即可:
- 清理tikz文件冗余错误配置
打开imagesMatlab/phiCardNew.tex文件做三处修改:- 删除主axis块里的
at={(0in,9in)},绝对定位行,让pgfplots按正常文档流排版 - 整块删除以
width=16.286in,height=10.113in开头的空白axis(从对应的\begin{axis}[%到\end{axis}全部删除),这是matlab2tikz导出bug生成的无效内容 - 在主axis的
axis y line*=left行末尾补逗号,修正语法错误
修改后的核心tikzpicture代码结构参考:
\begin{tikzpicture} \begin{axis}[% width=.8\textwidth, height=.4\textheight, scale only axis, xmin=0, xmax=1035.59707636169, ymin=-3.5, ymax=3.5, axis background/.style={fill=white}, axis x line*=bottom, axis y line*=left, xlabel style={font=\color{white!15!black}}, xlabel={Samples}, ylabel style={font=\color{white!15!black}}, ylabel={Voltage [mV]}, ] % 保留原有所有\addplot绘图代码即可 \end{axis} \end{tikzpicture}% - 删除主axis块里的
- 优化浮动体配置
将原figure环境的位置参数从[hb!]改为[htb!],提升当前位置插入的优先级;如果需要完全固定图片位置,可在导言区引入float宏包:
再将figure参数改为\usepackage{float}[H],即可强制图片在代码书写位置渲染,不再自动浮动。 - 源头规避导出问题
后续使用matlab2tikz导出图片时,不要勾选生成外部图、独立坐标轴这类会输出绝对坐标、额外空白画布的选项,优先设置相对文本宽度/高度的尺寸参数,避免生成无效冗余代码。
内容的提问来源于stack exchange,提问作者sex92toso
相关产品推荐
相关产品推荐

