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

原  文:`!h’ float specifier changed to `!ht’
譯  者:Xovee
翻譯時間:2020年6月4日

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

當 LaTeX 在處理浮動元素(例如圖片、表格等)的浮動指示符(例如 \begin{figure}[ht] 中的 ht)時出現了問題,就會拋出這個錯誤。在處理浮動元素時,LaTeX 會將其放置到合適的位置,從而避免正文中出現過大的間隙,或者過於密集的排版。浮動指示符參數可以讓我們指定如何在正文中放置浮動元素,下面是可用的放置選項:

Specifier Permission
h h 是 here 的首字母,也就是將浮動元素大致放置在它在正文中出現的地方,
t t 是 top 的首字母,也就是將浮動元素放置在頁面的頂部
b b 是 bottom 的首字母,也就是將浮動元素放置在頁面的底部
p p 是 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}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章