首页 > 其他分享 >Latex 图片浮动问题

Latex 图片浮动问题

时间:2024-01-29 10:23:42浏览次数:30  
标签:浮动 Latex figure LaTeX 命令 编号 文本 图片

本文转载自Liam Huang
此篇介绍一下 LaTeX 中的浮动体基本概念,以及最常见的几个问题。

浮动体是什么

   在实际撰写文稿的过程中,我们可能会碰到一些占据篇幅较大,但同时又不方便分页的内容。(比如图片和表格,通常属于这样的类型)此时,我们通常会希望将它们放在别的地方,避免页面空间不够而强行置入这些内容导致 overfull vbox 或者大片的空白。此外,因为被放在别的地方,所以,我们通常需要对这些内容做一个简单的描述,确保读者在看到这些大块的内容时,不至于无从下手去理解。同时,因为此类内容被放在别的地方,所以在文中引述它们时,我们无法用「下图」、「上表」之类的相对位置来引述他们。于是,我们需要对它们进行编号,方便在文中引用。

   注意到,使用浮动体的根本目的是避免不合理的分页或者大块的空白,为此,我们需要将大块的内容移至别的地方。与之相辅相成的是浮动体的一些特性:

  • 是一个容器,包含某些不可分页的大块内容;
  • 有一个简短的描述,比如图题或者表题;
  • 有一个编号,用于引述。

   在 LaTeX 中,默认有 figuretable 两种浮动体。(当然,你还可以自定义其他类型的浮动体)在这些环境中,可以用 \caption{} 命令生成上述简短的描述。至于编号,也是用 \caption{} 生成的。这类编号遵循了 TeX 对于编号处理的传统:它们会自动编号,不需要用户操心具体的编号数值。

至于「别的地方」是哪里,LaTeX 为浮动体启用了所谓「位置描述符」的标记。基本来说,包含以下几种

  • h - 表示 here。此类浮动体称为文中的浮动体(in-text floats)。
  • t - 表示 top。此类浮动体会尝试放在一页的顶部。
  • b - 表示 bottom。此类浮动体会尝试放在一页的底部。
  • p - 表示 float page,浮动页。此类浮动体会尝试单独成页。

LaTeX 会将浮动体与文本流分离,而后按照位置描述符,根据相应的算法插入 LaTeX 认为合适的位置。

\documentclass{article}
\begin{document}
Figure \ref{fig:dummy} is a dummy figure to show the use of basic floats in \LaTeX{}.

\begin{figure}[htb]
\rule{4cm}{3cm} 
\caption{Dummy figure}\label{fig:dummy}
\end{figure}
\end{document}

限制浮动效果

   有些强(chu)迫(nv)症(zuo)宝宝希望保留浮动体的标题以及编号的功能,但是希望浮动体「乖乖待在插入的位置」。对于这些小朋友,老夫必须说:「这是病,得治」。说它是「病」,是因为浮动效果本身是好的;相反,禁止浮动效果,可能导致页面出现大片的空白。另一方面,这些小朋友希望浮动体待在原地,很可能是习惯了「下图」、「上表」这样的引述方式;而没有使用科技论文标准的「图 1」、「表 2」的引述方式。
   因此,老夫墙裂建议各位小朋友,不要管它,随它浮动去吧。
   当然,在一些极端的情况,也会出现 LaTeX 无法很好地处理浮动体放置位置的情况。这时候需要我们做一些辅助工作,帮助和限制 LaTeX 的浮动算法。
   如果希望避免浮动体跨过 \section 等章节标题,可以使用 placeins 宏包。它能在章节标题前,强制输出上一章节中尚未输出的浮动体。

\usepackage[section]{placeins}

如果希望彻底禁止某个浮动体的浮动效果,可以使用 float 宏包提供的 H 位置选项。

\usepackage{float}

\begin{figure}[H]

\begin{table}[H]

浮动体过多报错

LaTeX 是有底线的上限的。LaTeX 会把所有尚未确定位置的浮动体,放入 \@freelist 中暂存。而 \@freelist 默认情况下,最多能处理 18 个浮动体。因此,在某些极端情况下,如果 LaTeX 暂时无法处理的浮动体数目超过 18 个时,就会报错。

! LaTeX Error: Too many unprocessed floats.

此时有两种解决问题的思路:

  • 强制输出所有尚未确定位置的浮动体,清空 \@freelist
  • 增强 LaTeX 的处理能力。

对于第一种思路,我们可以用 \clearpage,或者 placeins 宏包提供的 \FloatBarrier 命令。两个命令都会输出所有尚未输出的浮动体。不同的是,\clearpage 会做一些额外的工作,比如另起一页,继续排版。个人建议使用 \FloatBarrier 命令,遵循「一个命令只做好一件事」的原则。

如果使用了 \FloatBarrier 命令,还是经常会报错提示未处理的浮动体过多,那么就要考虑第二种思路了。对于第二种思路,我们可以使用 morefloats 宏包。\usepackage[morefloats = 18]{morefloats},来增加 18 个槽位,以便能够向 \@freelist 放入更多的浮动体。

在 2015 年,David Carlisle新版的 LaTeX2e (2015) 中实现了 \extrafloats 命令,可以方便地新增更多的槽位。具体用法只需在导言区执行该命令即可:

\extrafloats{500}

浮动体上下的垂直距离

最近总有人不爽 LaTeX 浮动体与周围文本的默认间距。LaTeX 浮动体相关的定义都可以在 source2e 当中找到,这里罗列重要的间距如下。

  • \floatsep - 相邻两个浮动体之间的垂直距离。
  • \textfloatsep - 页面中最后一个 t 模式的浮动体与文本的间距;页面中第一个 b 模式的浮动体与文本的间距。
  • \intextsep - 页面中共 h 模式的浮动体上下与文本的间距。

因此,你可以通过 \setlength 命令修改上述三个垂直距离,以便调整浮动体与前后文本的距离了。

标签:浮动,Latex,figure,LaTeX,命令,编号,文本,图片
From: https://www.cnblogs.com/HsDodo/p/17993929

相关文章

  • Typora中上传图片:使用PigGo+Gitee
    设置FFS程序下载安装程序出现两个程序。FreeFileSync是主程序,RealTimeSync用来设置自动同步打开FreeFileSync主程序,点击蓝色设置按钮比较设置界面同步设置界面一般设置双向,即只要有一边变化即同步。为了保险起见,设置保留历史版本最后确定设置需要同步的文件夹......
  • ESP32 LVGL:使用图标解决图片过大存不下的问题
    原文:ESP32LVGL:使用图标解决图片过大存不下的问题_lvgl生成的图片太大-CSDN博客文章目录背景方法将PNG图片转为字库文件LVGL加载自定义字体图标参考背景在LVGL中,用将图片转为C语言数组的方式储存的时候,图片转换的数组过大,当图片过多时会出现存不下的问题。因此,可以使用字库图标解......
  • 卷积神经网络详解+Python实现卷积神经网络Cifar10彩色图片分类
    原文链接:https://blog.csdn.net/master_hunter/article/details/133156758卷积神经网络相对于普通神经网络在于以下四个特点:局部感知域:CNN的神经元只与输入数据的一小部分区域相连接,这使得CNN对数据的局部结构具有强大的敏感性,可以自动学习到图像的特征。参数共享:在CNN中,同一个......
  • 图片识别
    图片识别是指利用计算机算法和模型来识别图像中的对象、场景或模式。这一领域的发展得益于计算机视觉、机器学习和深度学习等技术的进步。基本步骤:数据采集:收集具有代表性的图像数据集,用于训练和测试模型。数据预处理:对图像进行处理,包括缩放、裁剪、亮度调整等,以提高模型的鲁棒......
  • 浮动布局小练习
    分析如下实现代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</ti......
  • vue3使用自定义指令实现图片懒加载
    //自定义指令app.directive('lazy',{mounted(el,binding){//绑定的元素,绑定的值//IntersectionObserver可以用来自动监听元素是否进入了设备的可视区域之内,而不需要频繁的计算来做这个判断constobserve=newIntersectionObserver(([{isIntersec......
  • css背景图片实现object-fit的效果
     object-fit是一个用于控制替换元素(如<img>或<video>)内容在其容器内布局和缩放的CSS属性。它的作用是调整替换元素的尺寸和位置,使其适应容器,并保持其纵横比例。然而,object-fit属性本身并不直接适用于背景图片。如果你想在背景图片上应用object-fit效果,可以使用background-size......
  • [word] word中插入图片显示不完全、不能任意移动的解决方法
     word中插入图片显示不全:是因为输入了文字,在插入图片的位置,段落设置为固定,例如行间距设置为固定值,导致图片不能显示完整解决方法:选中图片或者图片所在行,点击段落,选择单倍行距,图片显示完整。图片无法任意拖动图片解决方法:选中图片右键->自动换行->选择四周型。......
  • 应对图片丢失(Excel技巧集团)
    问题:在M365Excel工作表的单元格里插入图片,将其以单元格对象放置在单元格中,一旦双击该单元格或单击编辑栏,图片就会丢失,如何保证图片不丢失?解决:建一个工作表,在其中以单元格对对象的姿势放置需要使用到的图片,并保护该工作表,数据表中需要用到该图片时直接引用。......
  • Latex配置语法检查
    1.配置LanguageTool1).下载地址:https://languagetool.org/download/,下载zip文件,记得下载zip文件2).下载完成后解压,命令行进入解压后的目录,运行命令java-jarlanguagetool.jar(或者直接双击打开 languagetool.jar)我这里双击没有运行成功;3).在LanguageTool界面点击TextCh......