Re: [问题] 如何告诉TeX某些地方不能被中断

楼主: hoch (Sanctuary)   2015-11-06 17:39:03
LaTeX 控制 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,所以简单几个控制参数就够用。
作者: leo80042 (嗯嗯啊啊去洗澡)   2015-11-10 00:55:00
作者: lovesnake (LoyalDog)   2015-11-15 15:09:00
谢谢! 不好意思太晚看到,后来有尝试clearpage,有比较符合期待了,虽然可能违反排版上的规则就是了Orz

Links booklink

Contact Us: admin [ a t ] ucptt.com