如何將 \ifthenelse 從“ifthen”翻譯為“etoolbox”?

如何將 \ifthenelse 從“ifthen”翻譯為“etoolbox”?

嘗試建立條件運算式來檢查文件的總頁數(請參閱這個問題),我使用套件找到了這個解決方案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

然而這仍然需要\makeatletterand\makeatother\AtBeginDocument像上面的程式碼一樣,因為我們必須確保程式碼被執行文件.aux已被讀入。

取消註解行將%在兩頁上顯示頁碼;因為它不會列印頁碼。

相關內容