如何判断输出的位置?

如何判断输出的位置?

为了使章节标题与上述文本保持距离,其属性已通过 进行更改\titlespacing

\titlespacing*{\chapter}
{0pt} %left gap
{10pt} %above gap
{0pt} %bottom gap

目的: [图片中布局部分的颜色未定义。仅供参考]1

现在的问题是:当在新页面中章节标题距离页眉很远时:[间隙距离过大]2

需要解决:在新页面上渲染章节标题时,章节标题的顶部间隙不会被渲染。

所以我需要一些方法来查看渲染的章节标题是否在页面的第一行。

演示:

\documentclass{article}

\usepackage{blindtext}
\usepackage{titlesec}

%%%%%%%%%%%%% Customize our title format and space %%%%%%%%%
\titleformat{\section}{}{}{0pt}{}
\titlespacing*{\section}{0pt}{50pt}{0pt}

%%%%%%%%%%%%% Head of Page for compare gap %%%%%%%%%%%%%%
\usepackage{fancyhdr}
\pagenumbering{Alph}
\pagestyle{fancy}
\fancyhead[L]{}
\fancyhead[R]{}
\fancyhead[L]{}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{4pt}
\renewcommand{\footrulewidth}{4pt}
                
\begin{document}
\section{Section-1}
\blindtext
\section{Section-2}
\blindtext
\section{Section-3}
ssss \\
ssss\\
ssss\\
ssss\\
ssss\\
ssss\\
ssss \\
ssss\\
ssss\\
ssss\\
ssss\\
ssss\\
ssss\\
ssss\\
% The gap defined by `\titlespacing` of section would not rendered, but it will be.
\section{Section-4}
\blindtext
\section{Section-5}
ssss \\
ssss\\
ssss\\
ssss\\
ssss\\
ssss\\
ssss \\
ssss\\
ssss\\
ssss\\
ssss\\
ssss\\

\end{document}

答案1

TeX 实现了“可丢弃项”的概念,用于将段落拆分为行并将行拆分为页面。第一种情况丢弃水平空格,第二种情况丢弃垂直空格。水平空格的示例:假设:“word space word space wordX space wordY”。如果行在 wordX 之后立即拆分,则丢弃后面的空格,下一行以 wordY 开头,前面没有空格。

垂直意义上也是同样的概念。例如,假设:

line
  space 
lineX 
  space-before-title 
title-line
  nobreakable-space 
line 
  space 
line 
  space

如果 TeX 决定在 lineX 之后立即断行,那么 space-before-title 会被丢弃,并且 title-line 会跟在下一页后面,前面没有空格。

如果此概念在您的文档中不可见,则某些特定宏会通过在标题行前放置不可见行和 nobreakable-space 来禁止此概念。这是特定于宏的问题。请使用不这样做的其他宏。

编辑对于您的演示文档:删除\\最后一个 之后的ssss。这会在段落中创建下一个空行。页面在此空行之前被拆分,因此您在下一页有空行、空格和标题行。

在所有情况下,段落\\末尾都有 都是错误的。请注意,由于这个错误,会打印 Underfull 警告。

启示:你看,做最小的例子是非常有意义的。因为只有这样的例子才能说明提问者认为不重要但这个很重要的事情。

相关内容