Попытка создания условных выражений, проверяющих общее количество страниц документа (см.этот вопрос), я нашел это решение с помощью 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
был прочитан.
Раскомментирование строк с помощью %
приведет к отображению номера страницы на обеих страницах; в противном случае номер страницы печататься не будет.