免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖
回复 20# kuing

之前还没注意,这次仔细看了,发现有这个问题。开始还以为跟章节标题一样,每章的第二页都这样,但经过实验发现不是,第二章第一节就没再出现这个问题。
这种现象是正常的吗?

TOP

回复 21# abababa

这当然是不正常的现象了,而且我已经知道是页眉太大导致的。

首先我看到编译信息中有个警告是:
Package Fancyhdr Warning: \headheight is too small (12.0pt):
Make it at least 25.04993pt.
We now make it that large for the rest of the document.
This may cause the page layout to be inconsistent, however.
意思就是现在的页眉有 25.04993pt 高,大于默认的最大高度 12pt,而且他还说了这可能导致页面布局不一致(超出的 13pt 自然就是下沉的距离)。

然后我在 geometry 包中加入选项 showframe ,它能显示页面各区域的边界,于是清楚看到从正文第 2 页起页眉框被撑大:
QQ截图20190719204435_2.gif
2019-7-19 20:57

.
QQ截图20190719204459_2.gif
2019-7-19 20:57

那为什么从第 3 页才开始沉?我估计是因为排版时每页都是先排正文再排页眉页脚的。

其实是那条双线太占位置,由 showframe 的效果看出,那双线的底部并不是在第二条线上,而是更低的位置(实际上它占了一个普通行的高度),放大来看看:
QQ截图20190719211701.png
2019-7-19 21:44

所以这条双线的设计其实不怎么样,我决定改一下这条双线。
用 \show\headrule 可以看到原本 \headrule 的设计是:
  1. \if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
  2. \hrule\@height\headrulewidth\@width\headwidth\vskip-\headrulewidth
复制代码
所以搞成双线其实非常简单,并不需要 \makebox 啥的技巧,只需把画线部分再抄一次,中间加个距离就行:
  1. \renewcommand{\headrule}{%
  2. \if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
  3. \hrule\@height\headrulewidth\@width\headwidth\vskip0.15\baselineskip
  4. \hrule\@height\headrulewidth\@width\headwidth}
复制代码
而且这样依然能用 \headrulewidth 来控制线宽。
来看看改后的效果:
QQ截图20190719211734.png
2019-7-19 21:44

好多了,但编译后还是提示超了 5pt+,没办法,默认给的高度仅仅够一行字,只好再在 geometry 设置一下,把 headheight 增高一点好了。

综上,代码为:
  1. ............
  2. \usepackage[top=43mm,bottom=41mm,left=34mm,right=34mm,headheight=18pt]{geometry}
  3. ............
  4. \makeatletter
  5. % 双线页眉
  6. \renewcommand{\headrule}{%
  7. \if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
  8. \hrule\@height\headrulewidth\@width\headwidth\vskip0.15\baselineskip
  9. \hrule\@height\headrulewidth\@width\headwidth}
  10. \makeatother
  11. ............
  12. 附录前的内容
  13. ............
  14. \clearpage
  15. \renewcommand{\headrulewidth}{0pt}
  16. \pagestyle{empty}
  17. \fancypagestyle{plain}{\fancyhf{}}
  18. \newcommand\flsection[1]{
  19.         \phantomsection%不加它链接定位会不准确,不知为什么
  20.         \addcontentsline{toc}{section}{#1}\section*{#1}
  21. }
  22. \begin{appendices}
  23. \flsection{附录1}
  24. \pagebreak
  25. \flsection{附录2}
  26. \end{appendices}
  27. \clearpage
  28. \fontsize{10pt}{\baselineskip}\selectfont
  29. 追加页,无内容,无页眉页脚,无章节标题
  30. \end{document}
复制代码
这样就 OK 了,你也可以加个 showframe 试试。
$\href{https://kuingggg.github.io/}{\text{About Me}}$

TOP

回复 22# kuing

果然如此!谢谢,之前都忽视警告之类的,觉得能编译通过就很好了。这样设置了页眉高度,再把top的减一些,就和原来的一样了。

TOP

回复 23# abababa

top 不需要减吧?

TOP

showframe,涨知识了

TOP

回复 24# kuing

我怎么感觉不减的话,看着距离页面顶端要更远一些呢。

TOP

回复 26# abababa

嗯?你原先的设置就是 top 大于 bottom 啊,你看 1# 的代码,一个 43 一个 41

TOP

回复 27# kuing

是不是页眉的那个18pt比原来高,又多了一块?就是最初那种画双线的方法,和最后的画双线的方法的区别。

TOP

回复 28# abababa

headheight 只要不小于实际页眉的高,就不会产生下沉,正文与顶端的距离都会是你所设的 top 和 bottom 的值,不信将我的 ...,headheight=18pt] 改成 ...,headheight=50pt] 甚至更大试试看就知道了(当然,弄得太大时会不会产生其他问题就不知道了)
所以如果仅仅只是为了解决下沉的问题,只需增加 headheight 至大于 25.05pt 就行,双线也可以不修改,我改是为了精益求精而已。

TOP

还可以试试这样玩,在导言区加入
  1. \usepackage{eso-pic}
  2. \usepackage{tikzpagenodes}
  3. \AddToShipoutPictureBG{%
  4. \tikz[remember picture,overlay,<->,very thick,red]{
  5. \draw(current page.north)--node[right]{43mm}+(0,-43mm);%top的值
  6. \draw(current page.south)--node[right]{41mm}+(0,41mm);%bottom的值
  7. }}
复制代码
编译两次后看效果。

PS、顺便示范了加背景水印的一种方式了

TOP

返回列表 回复 发帖