通过执行命令将新页面添加到文档时\shipout
,哪些设置会被转移到\shipout
执行命令的新页面?
例如,如以下示例所示,字体设置保留,但颜色设置丢失。
\documentclass{article}
\usepackage{xcolor}
\begin{document}%
\font\myfont=cmtt17\myfont%
\color{red}%
\shipout\hbox{Hello, world!}%
\end{document}
生成的pdf:
\newpage
但是,如果我使用或开始新页面\eject
:
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\font\myfont=cmtt17\myfont%
\color{red}%
\newpage% also works with \eject
Hello, world!
\end{document}
两种设置均延续:
我如何预测新页面开始时哪些设置会保留\shipout
?规则是什么?我不仅询问字体和颜色设置,还询问所有可能的设置,或者至少询问 TeX 固有的所有可能设置(我知道颜色不是 TeX 固有的)。
答案1
在
\documentclass{article}
\usepackage{xcolor}
\begin{document}%
\font\myfont=cmtt17\myfont%
\color{red}%
\shipout\hbox{Hello, world!}%
\end{document}
该\color
命令将一个内容放到主垂直列表中,告诉后端将当前颜色设置为红色。
然后,您将\shipout
水平框直接输出到输出,根本不使用主垂直列表,因此文本将在 pdf 的开头输出(黑色)。主垂直列表输出的任何文本都将是红色的,但实际上 latex 会丢弃只有 whatsit 而没有框或规则的页面\clearpage
,\end{document}
因此实际上红色指令根本没有输出到 pdf,因为此文档中没有文本,因此唯一的页面输出是水平\shipout
框。