考虑这个例子(基于在文档中间更改纸张尺寸):
\documentclass{article}
\begin{document}
Normal page
\def\normalpdfpagewidth{\pdfpagewidth}
\eject \pdfpagewidth=17in
Wide page
\eject \pdfpagewidth=\normalpdfpagewidth
Normal page again
\end{document}
在此示例中,我尝试将正常值存储\pdfpagewidth
在:
\def\normalpdfpagewidth{\pdfpagewidth}
并在后续页面中重新应用该值。
然而,这一招并没有奏效:
怎么了?
答案1
当你写\pdfpagewidth=17in
或\pdfpagewidth=\normalpdfpagewidth
分配一个长度或者方面到另一长度或者方面。这是用于此类赋值的语法<lenA>=<lenB>
(=
是可选的),并将的长度复制<lenB>
到中<lenA>
。如果<lenB>
在赋值后发生变化,<lenA>
仍保留原来的长度<lenB>
。
在您的例子中,您正在\def
编写一些控制序列(或宏)来表示长度,如\def<csname>{<stuff>}
。由于 TeX 不会自然地扩展其控制序列,直到它在纸上设置,所以 中的任何更改<stuff>
都会随 一起进行<csname>
。您要么想要长度的扩展版本(正如 muzimuzhi 所提到的)
\edef\normalpdfpagewidth{\the\pdfpagewidth}
或者以更自然的方式分配长度:
\newlength{\normalpdfpagewidth}
\setlength{\normalpdfpagewidth}{\pdfpagewidth}
\documentclass{article}
\newlength{\normalpdfpagewidth}
\begin{document}
Normal page
\setlength{\normalpdfpagewidth}{\pdfpagewidth}
\clearpage \setlength{\pdfpagewidth}{17in}
Wide page
\clearpage \setlength{\pdfpagewidth}{\normalpdfpagewidth}
Normal page again
\end{document}