有没有办法保存垂直的\lastskip
,\write
或者更一般地说,有没有办法编写一个“垂直版本”的\@bsphack
…… \@esphack
?
在以下最小示例中
\documentclass{article}
\parindent0pt
\author{}
\title{}
\makeatletter
\def\myAux{\write\@auxout{\string\def\string\mypage{\thepage}}}%%does disturb \lastskip
% \def\myAux{}%% does not disturb \lastskip
\makeatother
\begin{document}
First example: lastskip preserved\par
\vskip5pt
\addvspace{5pt}
Paragraph with 5pt space above: correct\par
\vskip5pt
\myAux
\addvspace{5pt}
Paragraph with 10pt space above: not correct!.
\end{document}
我的目标是让第二个的行为与第一个一样。为了实现这一点,\addvspace
我需要如何定义 -Macro ?\myAux
而且,只是出于好奇:为什么首先要\write
重置?\lastskip
\z@
笔记:
根据这个问题,
\immediate\write
在这种情况下会有所帮助,但是因为我想存储最终输出的实际页码,所以我无法使用\immediate
(对吗?)。假设文本 -> 空格 -> 书写 -> 空格 -> 文本的顺序是固定的。我的真实示例最终如下所示:
它是一个小节(“3. Keine...”),作为独立标题,
0.5\baselineskip
下方有空间,还有两个连续的内联标题(立法者,不要问……),其中第一个标题0.5\baselineskip
上方有空间。如果两个或多个标题发生冲突,则应仅将其中一个值插入为垂直跳过(0.5\baselineskip
而不是1\baselineskip
)。在这两个标题块之间有一个宏,它会在边距中生成数字,还会调用\write
.aux 文件:\subsection{3. Keine größeren Wettbewerbsverzerrungen} \Randnummer{30} \paragraph{a) Allgemeiner Regelungsinhalt.} \subparagraph{aa) Noch genauere Beschreibung was der Regelinhalt ist.} Selbst wenn...
-macro
\Randnummer
需要位于\subsection
和 段落标题之间,因为 marginnote 应放置在与内联标题第一行相同的高度,而不是 的高度,也不是\subsection
段落实际文本的起始位置,因此我无法将其移动到 后面\paragraph
或 之前\subsection
。我还注意到,marginnote 机制和连续标题本身都不会导致 的重置\lastskip
,而只是\write
。上面的 MWE 是核心问题的最小化版本。