LaTeX子图排版:子图后添加的文字错误显示在图片前方
LaTeX子图后正文前置问题修复
问题场景
LaTeX撰写硕士学位论文时插入3幅子图,预期子图后紧跟说明文字,但实际排版中文字出现在图片前方,对应实现代码如下:
\begin{figure}[hbt!] \centering \subfloat[Absolute correlations of initial states in case A]{\includegraphics[width=0.7\textwidth]{Images/Results/correlation_best.png}} \subfloat[Absolute correlations of initial states of Callisto and Jupiter in case B]{\includegraphics[width=0.7\textwidth]{Images/Results/correlations_vlbi.png}} \subfloat[Absolute correlations of initial states of Callisto and Jupiter in case C]{\includegraphics[width=0.7\textwidth]{Images/Results/correlations_worst.png}} \caption{Absolute correlations for Callisto and Jupiter} \end{figure} We highlight case B and case C
实际排版效果:
问题原因
figure是LaTeX的浮动环境,排版时会按照设定的位置参数自动寻找合适的放置位置。示例中3张子图总高度较高,当代码所在位置的当前页面剩余垂直空间不足以容纳整个图块时,LaTeX会自动将图块后移到有足够空间的页面;但图块后的正文属于普通文档流,会按代码顺序正常排版,最终就出现文字显示在图片前方的错位问题。
可行解决方案
- 强制固定图片位置(学位论文排版优先选这个方案):先在文档导言区引入
float宏包,再把figure环境的位置参数改成H,就能强制图片在代码插入的位置输出,完全不会浮动移位。操作步骤:- 导言区加一行代码:
\usepackage{float} - 把原来的
\begin{figure}[hbt!]修改为:\begin{figure}[H]
- 导言区加一行代码:
- 缩小图块整体高度:适当调小单张子图的宽度(比如从
0.7\textwidth改成0.6\textwidth),三张图叠起来的总高度会同步降低,只要当前页剩余垂直空间放得下整个图块,LaTeX就会按代码顺序先排图片、再排后面的文字。 - 调整浮动体排版规则:如果不想强制固定位置,可以在导言区加参数调整代码,降低页面最低正文占比要求,允许图片占据更多页面空间,减少图块被挤到后面的概率:
% 允许页面正文占比最低为10%,顶部浮动体占比最高90% \renewcommand{\textfraction}{0.1} \renewcommand{\topfraction}{0.9}
内容的提问来源于stack exchange,提问作者Gianmarco Broilo
相关产品推荐
相关产品推荐

