XeTeX 参考手册说这个引擎理解\pdfpageheight
和\pdfpagewidth
。然而,它似乎忽略了在文档中间更改纸张大小的请求。考虑这个例子(来自https://www.tug.org/members/TUGboat/tb32-3/tb102veytsman-ebooks.pdf)
\documentclass{article}
\usepackage{everyshi,lipsum}
\pagestyle{empty}
\textheight500cm
\pdfpageheight500cm
\EveryShipout{\pdfpageheight=\pagetotal
\advance\pdfpageheight by 2in
\advance\pdfpageheight by 2\topmargin
\advance\pdfpageheight by \footskip
\advance\pdfpageheight by \textheight
\advance\pdfpageheight by -\pagegoal}
\begin{document}
\lipsum[3-5]
\pagebreak
This line has a footnote\footnote{\lipsum[6-8]}.
\lipsum[1]
And this line too\footnote{\lipsum[12]}.
\pagebreak
\end{document}
pdflatex
按预期生成两个具有不同页面高度的页面。lualatex
也很好用xelatex
(XeTeX, Version 3.1415926-2.3-0.9997.5 (TeX Live 2011)
,xdvipdfmx-0.7.8
)产生两页相同高度(字母)的页面,即不是我想要的。
我的问题:
这是中的错误
xetex
吗?可能是中的xdvipdfmx
,或者也许我做错了什么?有没有什么解决方法——例如,使用 PostScript
\special
s 而不是\pdfpageheight
?
答案1
多么复杂的例子;-)。
默认情况下,两个长度在 xetex 中的值均为 0pt。如果您仅更改一个,xetex 将忽略它并恢复为默认值。因此,您还应该设置,\pdfpagewidth
然后它才会起作用:
\documentclass{article}
\showthe\pdfpagewidth
\showthe\pdfpageheight
\begin{document}
\pdfpageheight10cm
\pdfpagewidth5cm
abc
\newpage
\pdfpageheight5cm
\pdfpagewidth15cm
cde
\end{document}