[翻译] [LaTeX] !h float specifier changed to !ht

142 篇文章 4 订阅
53 篇文章 2 订阅

原  文:`!h’ float specifier changed to `!ht’
译  者:Xovee
翻译时间:2020年6月4日

`!h’ float specifier changed to `!ht’

当 LaTeX 在处理浮动元素(例如图片、表格等)的浮动指示符(例如 \begin{figure}[ht] 中的 ht)时出现了问题,就会抛出这个错误。在处理浮动元素时,LaTeX 会将其放置到合适的位置,从而避免正文中出现过大的间隙,或者过于密集的排版。浮动指示符参数可以让我们指定如何在正文中放置浮动元素,下面是可用的放置选项:

SpecifierPermission
hh 是 here 的首字母,也就是将浮动元素大致放置在它在正文中出现的地方,
tt 是 top 的首字母,也就是将浮动元素放置在页面的顶部
bb 是 bottom 的首字母,也就是将浮动元素放置在页面的底部
pp 是 special 的首字母,也就是将浮动元素放置在一个专门放置浮动元素的特殊页面
!强制改变 LaTeX 内部制定的 的浮动元素的位置标准
H将浮动元素精确地放置在其在正文中出现的地方。这个参数需要引入 float 包(\usepackage{float})。这个参数也等价于 h!

LaTeX 会尽量按着用户所指定的方式去放置浮动元素,不过有时候也有例外。当 LaTeX 将浮动元素放置在期望的位置时遇到了问题,它可能会选择另外一种方式去放置浮动元素。当这种情况发生时,会出现类似于下面的报错信息:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}

\begin{document}

\section{Introduction}
\vspace{10cm}

\begin{figure}[h]
    \centering
    \includegraphics{image.PNG}
\end{figure}

\end{document}

在这里插入图片描述
对于 LaTeX 来说,h 是一个非常严格的参数。为了解决这个错误,你可以放松这个限制,例如,将 h 更改为 ht,也就是说,将浮动元素放置在 here,或者,放置在 top。如果有必要的花,你甚至可以将限制放的更开:htbp 或者 !htbp

如果你有特殊的需求,将浮动元素精确地放置在页面的某个地方,你可以选择如下几个方案:

使用 float 包
当我们在序言中使用了 float 包时,我们可以使用一个更强大的指示符 H 来代替 hH 可以保证浮动元素精确地出现在某个地方。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{float}

\begin{document}

\section{Introduction}

\begin{figure}[H]
    \centering
    \includegraphics{image.PNG}
\end{figure}

\end{document}

使用 placeins 包
我们可以使用 placeins 包中的 \FloatBarrier 命令。这个命令会设置一个屏障,浮动元素的位置不能超过这个屏障。如果我们在浮动元素的上下放置这个命令,那么浮动元素将会困在这两个屏障之中:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{placeins}

\begin{document}

\section{Introduction}

\FloatBarrier
\begin{figure}
    \centering
    \includegraphics{image.PNG}
\end{figure}

\FloatBarrier
\end{document}

改变参数
为了让图片出现在文字之间,而不是章节的末尾(默认),我们可以在序言中更改 float palcement 参数。下面是几个比较有用的选项:

\renewcommand\topfraction{.9}
\renewcommand\textfraction{0.35}
\renewcommand\floatpagefraction{0.8}
  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值