考虑这个文档:
\documentclass{article}
\usepackage{amsmath}
\usepackage{texpower}
\usepackage{picture}
\usepackage{atbegshi}
\setbox0\hbox{\textbf{TEXT}}
\AtBeginShipout{%
\AtBeginShipoutUpperLeft{%
\put(0,-\ht0){\usebox0}
}}
\begin{document}
This is a test
\end{document}
TEXT
出现在页面左上角。但是,只要您使用align
环境amsmath
,就会TEXT
消失:
\documentclass{article}
\usepackage{amsmath}
\usepackage{texpower}
\usepackage{picture}
\usepackage{atbegshi}
\setbox0\hbox{\textbf{TEXT}}
\AtBeginShipout{%
\AtBeginShipoutUpperLeft{%
\put(0,-\ht0){\usebox0}
}}
\begin{document}
This is a test
\begin{align}
x&=1+2\\
&=2+1
\end{align}
\end{document}
怎么了?
答案1
无需任何包即可显示该行为。
考虑这个 Plain TeX 示例:
\setbox0=\hbox{Hello} % the same as \sbox0{Hello}
\copy0 % the same as \usebox0
{\box0}
\copy0
\bye
一旦\box0
执行,最新的化身就会被销毁,因此你只能看到二即使\box0
是在组中执行,“Hello” 也会有多个副本。
确实,它amsmath
不能以非常连贯的方式管理临时框,但是临时寄存器应该在定义后立即使用,而不是拖延到将来。
\documentclass{article}
\usepackage{amsmath}
\usepackage{texpower}
\usepackage{picture}
\usepackage{atbegshi}
\newsavebox\vafabox
\sbox\vafabox{\textbf{TEXT}}
\AtBeginShipout{%
\AtBeginShipoutUpperLeft{%
\put(0,-\ht\vafabox){\usebox\vafabox}%
}}
\begin{document}
This is a test
\end{document}