嘗試建立條件運算式來檢查文件的總頁數(請參閱這個問題),我使用套件找到了這個解決方案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
and\makeatother
和\AtBeginDocument
像上面的程式碼一樣,因為我們必須確保程式碼被執行後文件.aux
已被讀入。
取消註解行將%
在兩頁上顯示頁碼;因為它不會列印頁碼。