重置页面顶部的垂直空间?

重置页面顶部的垂直空间?

这是其中一种情况,我尝试了一段时间,想出一个可以演示问题的最小示例,但我做不到。我所能提供的只是主文档的问题行为,所以我希望你能耐心等待。

本质上,我使用titlesec它来自定义标题;并pdfpages包含 PDF 页面。我的结构如下:

\includepdf{...}
\cleardoublepage

\tracingpages=1
mysection*{Section X} \tracingpages=0

% rest of content...

当它像这样时,一切都很好,我可以确认所有部分都位于页面上的同一位置(编辑:对\tracingpages日志的一个很好的解释是#60213 - 我如何创建仅包含不同部分的图形章节?):

$ grep '^%' mydocument.log

%% goal height=591.5302, max depth=5.5
% t=14.4 g=591.5302 b=10000 p=0 c=100000#
% t=-10.76009 g=591.5302 b=10000 p=-300 c=100000#
% t=35.31354 plus 0.15234 g=591.5302 b=10000 p=0 c=100000#
%% goal height=591.5302, max depth=5.5
% t=0.0 g=591.5302 b=10000 p=0 c=100000#
% t=14.4 g=591.5302 b=10000 p=0 c=100000#
% t=-10.76009 g=591.5302 b=10000 p=-300 c=100000#
% t=35.31354 plus 0.15234 g=591.5302 b=10000 p=0 c=100000#
%% goal height=591.5302, max depth=5.5
% t=14.4 g=591.5302 b=10000 p=0 c=100000#
% t=-10.76009 g=591.5302 b=10000 p=-300 c=100000#
% t=35.31354 plus 0.15234 g=591.5302 b=10000 p=0 c=100000#
%% goal height=591.5302, max depth=5.5
% t=14.4 g=591.5302 b=10000 p=0 c=100000#
% t=-10.76009 g=591.5302 b=10000 p=-300 c=100000#
% t=35.31354 plus 0.15234 g=591.5302 b=10000 p=0 c=100000#

因此,所有部分都结束于顶部位置 t=35.31354,并且它们确实对齐了。

问题是,有时\cleardoublepage会插入空白页两次。如果包含的 pdf 以奇数页结束,则\cleardoublepage正确插入空白页,新部分从下一个奇数页开始。如果包含的 pdf 以偶数页结束,则我在(下一个)奇数页上得到空白页;\cleardoublepage显然会选择它,并插入另一个偶数页 - 并且新部分从(下一个 +2)奇数页开始。

因此,如果我\cleardoublepage从这样的位置删除,那么下一个“第 X 节”将在 PDF 完成后从下一页开始,并且位于奇数页,正如预期的那样 - 但现在标题在垂直方向上略有错位(:/);以下是日志报告的内容:

%% goal height=591.5302, max depth=5.5
% t=14.4 g=591.5302 b=10000 p=0 c=100000#
% t=-10.76009 g=591.5302 b=10000 p=-300 c=100000#
% t=35.31354 plus 0.15234 g=591.5302 b=10000 p=0 c=100000#
%% goal height=591.5302, max depth=5.5
% t=0.0 g=591.5302 b=10000 p=0 c=100000#
% t=14.4 g=591.5302 b=10000 p=0 c=100000#
% t=-10.76009 g=591.5302 b=10000 p=-300 c=100000#
% t=35.31354 plus 0.15234 g=591.5302 b=10000 p=0 c=100000#
# NOTE NO 'goal height' HERE!!
% t=40.68004 plus 4.0 minus 6.0 g=591.5302 b=10000 p=0 c=100000#
% t=15.51996 plus 4.0 minus 6.0 g=591.5302 b=10000 p=-300 c=100000#
% t=61.59358 plus 4.15234 minus 6.0 g=591.5302 b=10000 p=0 c=100000#
%% goal height=591.5302, max depth=5.5
% t=14.4 g=591.5302 b=10000 p=0 c=100000#
% t=-10.76009 g=591.5302 b=10000 p=-300 c=100000#
% t=35.31354 plus 0.15234 g=591.5302 b=10000 p=0 c=100000#

因此显然列出的第三部分是有问题的部分:

  • 没有%% goal height——好像新的一页从未开始过;
  • 报告的第一个最高排名是40.68004 plus 4.0 minus 6.0,与其他排名不同,为 14.4
  • 然后顶部似乎“重置”为 15.51996 - 但它需要在 -10.76009 上才能像其他的一样对齐。

对我来说,有问题的部分看起来像一种状态,就好像我们“目前”在一张空白页上;但乳胶仍然认为它不是一张新页面。

请注意,我不热衷于使用\vspace{-Xpt}或类似于手动更正的方法,因为我必须手动调整值,并且主文档需要几分钟才能构建......(并且我如何保证所有最终出现问题的部分都会以相同的量错位?


那么有没有一个我可以使用命令,可以“重置”当前页面,以便将“顶部位置”重置为默认值(作为副作用,我希望如果你在半排版的页面上使用这样的命令,“光标”基本上会向上移动,并排版在现有内容上


PS:作为一项实验,我尝试从以下来源获取最后的陈述\newpage

$ texdef -t latex -c book \newpage -f
\newpage is defined by (La)TeX.

\newpage:
macro:->\if@noskipsec \ifx \@nodocument \relax \leavevmode \global \@noskipsecfalse \fi \fi \if@inlabel \leavevmode \global \@inlabelfalse \fi \if@nobreak \@nobreakfalse \everypar {}\fi \par \vfil \penalty -\@M 

...并将它们添加到有问题的位置\cleardoublepage,希望它们可以在不破坏页面的情况下“重置”页面 - 但是,即使只是\penalty -\@M在有问题的位置插入一个新的空白页(并且\leavevmode在同一位置也没有采取任何措施来纠正这种情况

答案1

好的,FWIW(没有适当的 MWE),我解决了我的问题\unskip(因为我听说某处它会重置跳过),并且\vspace*- 但是“重置顶部”命令的问题仍然存在。

首先,我尝试插入一个 ,\unskip而不是有问题的\cleardoublepage; ,这产生了“有问题的”页面部分测量值:

% t=28.68004 g=591.5302 b=10000 p=0 c=100000#
% t=3.51996 g=591.5302 b=10000 p=-300 c=100000#
% t=49.59358 plus 0.15234 g=591.5302 b=10000 p=0 c=100000#

因此,我得到了一个3.51996(很好,没有plusminus组件);并且为了正确对齐,我应该有-10.76009;所以我需要 3.51996-(-10.76009)向上偏移,所以我只需输入这个序列而不是有问题的\cleardoublepage

...
\unskip
\vspace*{-14.28pt}
...

...现在(最终)页面尺寸为:

% t=14.40004 g=591.5302 b=10000 p=0 c=100000#
% t=-10.76004 g=591.5302 b=10000 p=-300 c=100000#
% t=35.31358 plus 0.15234 g=591.5302 b=10000 p=0 c=100000#

只有 0.0004 pt 的差异,而且我视觉上看不出来 - 所以我对此没意见。

另一件事是,提到的\mysection实际上是一个titlesec自定义切片命令;还有另一件我上面没有提到的事情是,该序列更准确地看起来像这样:

\newcommand{\SetMyVar}[1]{%
\def\MyVar{#1} % 
}

...

\includepdf{...}
\cleardoublepage

\SetMyVar{1}
\tracingpages=1
mysection*{Section X} \tracingpages=0

....

(是的,\SetMyVar这很简单 - 它只是为了与我使用的其他宏保持语法一致性)

现在这是诀窍 - 如果我替换\cleardoublepage“原样” - 像这样:

\includepdf{...}
\unskip
\vspace*{-14.28pt}

\SetMyVar{1}
\tracingpages=1
mysection*{Section X} \tracingpages=0

...事实上,我在日志文件中看不到任何预期的位移!然而,当我放置\cleardoublepage替换\SetMyVar调用:

\includepdf{...}

\SetMyVar{1}
\unskip
\vspace*{-14.28pt}
\tracingpages=1
mysection*{Section X} \tracingpages=0

...然后它终于开始工作了 - 我得到了上面提到的(最终)页面测量值。

我仍然希望我可以通过命令重置,而不是“手动”进行“补偿”——但只要这种方法继续有效,我就会很高兴:)

希望这可以帮助到别人,
干杯!

相关内容