Como traduzir \ifthenelse de "ifthen" para "etoolbox"?

Como traduzir \ifthenelse de "ifthen" para "etoolbox"?

Tentando fazer expressões condicionais que inspecionem a contagem total de páginas do documento (vejaessa questão), encontrei esta solução usando iftheno pacote:

\documentclass{article}
\usepackage{lipsum}
\usepackage{ifthen}
\usepackage{lastpage}
\begin{document}

\ifthenelse{\pageref{LastPage}>1}{\pagestyle{plain}}{\pagestyle{empty}}

\lipsum[2-3]

\end{document}

Eu gostaria de tentar usar etoolboxem vez de ifthenporque parece que agora é um pacote mais comumente usado. Minha seguinte tentativa não funciona:

\documentclass{article}
\usepackage{lipsum}
\usepackage{etoolbox}
\usepackage{lastpage}

\begin{document}

\ifnumcomp{\pageref{LastPage}}{>}{1}{\pagestyle{plain}}{\pagestyle{empty}}

\lipsum[2-13]

\end{document}

Então, como posso fazer isso cometoolbox

Responder1

O principal problema é que \pageref{LastPage}não pode ser usado no argumento de \ifthenelse, nem nas etoolboxfunções, porque só serve paraimpressãoa referência da página.

É preciso usar uma abordagem diferente, com o pacote mais seguro 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}

Em vez da função \ifnumcorrespondente etoolboxpode ser usada

\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

No entanto, isso ainda requer \makeatlettere \makeatothere \AtBeginDocumentcomo o código acima, porque temos que garantir que o código seja executadodepoiso .auxarquivo foi lido.

Remover o comentário das linhas %mostrará o número da página em ambas as páginas; como é, nenhum número de página será impresso.

informação relacionada