Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- discardpages{-2,-1}
- keeppages{-3,-1}
- documentclass{article}
- usepackage{lipsum,atbegshi,etoolbox}
- usepackage{lastpage,refcount}
- makeatletter
- newcommand{discardpages}[1]{% discardpages{<csv list>}
- xdefdiscard@pages{#1}% Store pages to discard
- AtBeginShipout{% At shipout, decide whether to discard page/not
- renewcommand*{do}[1]{% How to handle each page entry in csv list
- ifnum##1<0
- ifnumvalue{page}=numexprgetpagerefnumber{LastPage}+##1+1relax
- AtBeginShipoutDiscard% Discard page/not
- gdefdo####1{}% Do nothing further
- fi
- else% ##1 >= 0
- ifnumvalue{page}=##1relax%
- AtBeginShipoutDiscard% Discard page/not
- gdefdo####1{}% Do nothing further
- fi
- fi
- }%
- expandafterdocsvlistexpandafter{discard@pages}% Process list of pages to discard
- }%
- }
- newififkeeppage
- newcommand{keeppages}[1]{% keeppages{<csv list>}
- xdefkeep@pages{#1}% Store pages to keep
- AtBeginShipout{% At shipout, decide whether to discard page/not
- keeppagefalse%
- renewcommand*{do}[1]{% How to handle each page entry in csv list
- ifnum##1<0
- ifnumvalue{page}=numexprgetpagerefnumber{LastPage}+##1+1relax
- keeppagetrue% Page should be kept
- gdefdo####1{}% Do nothing further
- fi
- else% ##1 >= 0
- ifnumvalue{page}=##1relax%
- keeppagetrue% Page should be kept
- gdefdo####1{}% Do nothing further
- fi
- fi
- }%
- expandafterdocsvlistexpandafter{keep@pages}% Process list of pages to keep
- ifkeeppageelseAtBeginShipoutDiscardfi% Discard page/not
- }%
- }
- makeatother
- %discardpages{-2,-1}
- keeppages{-3,-1}% Keep these pages.
- begin{document}
- sloppylipsum[1-50]lipsum[1-50]lipsum[1-50]lipsum[1-50]lipsum[1-50]
- end{document}
Add Comment
Please, Sign In to add comment