尝试制作检查文档总页数的条件表达式(参见这个问题),我使用包找到了这个解决方案ifthen
:
\documentclass{article}
\usepackage{lipsum}
\usepackage{ifthen}
\usepackage{lastpage}
\begin{document}
\ifthenelse{\pageref{LastPage}>1}{\pagestyle{plain}}{\pagestyle{empty}}
\lipsum[2-3]
\end{document}
我想尝试使用etoolbox
而不是ifthen
因为它现在看起来是一个更常用的包。我的以下尝试不起作用:
\documentclass{article}
\usepackage{lipsum}
\usepackage{etoolbox}
\usepackage{lastpage}
\begin{document}
\ifnumcomp{\pageref{LastPage}}{>}{1}{\pagestyle{plain}}{\pagestyle{empty}}
\lipsum[2-13]
\end{document}
那么我该怎么做呢etoolbox
答案1
主要问题是\pageref{LastPage}
不能在的参数中使用\ifthenelse
,也不能在etoolbox
函数中使用,因为它只适用于印刷頁面參考。
人们必须采用不同的方法,使用更安全的包装zref-lastpage
。
\documentclass{article}
\usepackage{zref-lastpage}
\makeatletter
\AtBeginDocument{% this must be executed after the aux file has been input
\ifnum\zref@extractdefault{LastPage}{page}{0}>1
\pagestyle{plain}%
\else
\pagestyle{empty}%
\fi
}
\makeatother
\begin{document}
x
%\clearpage
%y
\end{document}
可以使用\ifnum
相应的函数代替etoolbox
\makeatletter
\AtBeginDocument{% this must be executed after the aux file has been input
\ifnumcomp{\zref@extractdefault{LastPage}{page}{0}}{>}{1}
{\pagestyle{plain}}
{\pagestyle{empty}}%
}
\makeatother
然而这仍然需要\makeatletter
和上面的代码\makeatother
一样\AtBeginDocument
,因为我们必须确保代码被执行后文件.aux
已被读入。
取消注释%
行将在两页上显示页码;因为不会打印页码。