作者:
hoch (Sanctuary)
2015-11-06 17:39:03LaTeX 控制 float 物件的參數有好幾個,通常是在 document class 裡設定。
不爽的話可以自己更改。
例如 article.cls 的設定如下:
% 每頁上半部最多放兩個 float
\setcounter{topnumber}{2}
% 每頁上半部最多 70% 可以是 float
\renewcommand\topfraction{.7}
% 每頁下半部最多放一個 float
\setcounter{bottomnumber}{1}
% 每頁下半部最多 70% 可以是 float
\renewcommand\bottomfraction{.3}
% 每頁最多 3 個 float objects
\setcounter{totalnumber}{3}
% 每頁最少 20% 必須是文字
\renewcommand\textfraction{.2}
% 只有 float 的頁面至少要有 50% 是 float
% 此數值設很小的話可能會出現一整頁只有一個
% 小小的 float 物件
\renewcommand\floatpagefraction{.5}
以上這些參數和 [bp], [hbp] 這些選項牽連在一起,簡直不是人腦可以理解的。
: 主要發生的情況是(以下pseudo code)
: \section{1}
: \figure1
: \figure2
: sometext here \ref{figure1、2}
: \section{2}
: sometext here
: 原本預計那兩張圖或者放在那節的最前面或者放在最後面,但出來的結果是
: 1
: {figure1}
: sometext \ref{figure1、2}
: \newpage
: 2
: {figure2}
: sometext
: 初學LaTeX不到一星期,關於排版幾乎是一無所知。只是因為自己沒看過類似的書才一廂
: 情願認為是惡果 Orz
: 請問上面這樣的結果對於排版而言是正確的嗎?
以你的例子而言,可能 figure2 太大,違反上面的一個或多個設定,所以 LaTeX
決定把 figure2 放到下一頁。
這情況很常見,你要用 LaTeX + float 的話就要接受這邏輯。總之兩張大圖是
不太可能同時出現在一頁之中。
如果你不想讓 figure2 跑到 section 2,建議每個 section/chapter
結尾都加上 \clearpage 指令,強迫所有還沒排版到的 floats 都先排出來再
進入下一章節。
: 另外一種情況是
: \section{1}
: \figure
: sometext here \ref{equation}
: \equation
: 讓LaTeX自己排出來的結果是
: 1
: somtext \ref{equation}
: {figure}
: {equation}
: 在數學書籍幾乎沒有看過即將要用到的equation被圖片隔開的,所以又一廂情願的以為是
: 惡果 Orz
: 所以才想請教有沒有可以讓LaTeX知道文字跟equation之間不可插入圖表的相關設定或者
: 指令。
: 又或者在排版上這樣的情況反而才是正確的呢?
: 謝謝!
我沒理解錯誤的話,上例中 figure 和 equation 都是 floats,此時
「讓LaTeX知道文字跟equation之間不可插入圖表的相關設定」這句話基本上違反你
把 equation 設成 float 的原意。
你覺得最後排版怪怪的,和第一例一樣,是因為 LaTeX 自己有決定權把 figure
放在該頁上半部還是下半部。並不是你把 figure 放在 text 之前,LaTeX 就要
聽你的。如果這認知沒有的話,那有你頭痛的了。
總之,我手上的 The LaTeX Companion, 2nd edition p.284,作者承認 LaTeX
對 floats 排版上有很多問題。原因是 LaTeX 開發的年代,一般文件根本
沒有多少圖表這類的 floats,所以簡單幾個控制參數就夠用。