TransWikia.com

Unable to link to inserted pages with pdfpages

TeX - LaTeX Asked on April 15, 2021

I would like to add labels to pages inserted with the pdfpages package.
It sort of works right now, but it is not possible to link to the labels with ref and pageref commands. In spite of that not working, it is possible to link to the page with the hyperlink command from hyperref.

The goal is to compile a list of things to read in a course and then later say ‘read from page xx to yy’. The pagenumbers should of course be determined automatically.

In the document below, the pageref expands to ?? while the text Hello links to the correct page.

documentclass{article}
usepackage{hyperref}
usepackage{pdfpages}
begin{document}
See page pageref{testing.1}.
hyperlink{testing.1}{Hello.}
includepdf[pages=-,link,linkname=testing]{test.pdf}
end{document}

For reference, the inserted document (test.pdf) can be any valid PDF document.

2 Answers

The inserted link is a hyper-link, not a LaTeX label. Therefore the hyperlink macro works but not the pageref. I don't think you can get the page information from a hyper-link, so I think you need to add labels manually. This can be done best using the pagecommand key and a custom counter:

documentclass{article}
usepackage{hyperref}
usepackage{pdfpages}
newcounter{includepdfpage}
begin{document}
See page pageref{testing.1} till pageref{testing.10}.
hyperlink{testing.1}{Hello.}
includepdf[pages=-,link,linkname=testing,pagecommand={refstepcounter{includepdfpage}label{testing.theincludepdfpage}}]{test.pdf}
end{document}

Correct answer by Martin Scharrer on April 15, 2021

Just for reference, here is the solution I ended up using. It is based on the answer of Martin Scharrer, but modified to work with several inserted documents.

documentclass{article}
usepackage{hyperref}
usepackage{pdfpages}

newcounter{includepdfpage}
newcounter{currentpagecounter}
newcommand{addlabelstoallincludedpages}[1]{
   refstepcounter{includepdfpage}
   stepcounter{currentpagecounter}
   label{#1.thecurrentpagecounter}}
newcommand{modifiedincludepdf}[3]{
    setcounter{currentpagecounter}{0}
    includepdf[pages=#1,pagecommand=addlabelstoallincludedpages{#2}]{#3}}

begin{document}

See page pageref{one.1} till pageref{two.3}.

modifiedincludepdf{-}{one}{test.pdf}
modifiedincludepdf{-}{two}{test.pdf}

end{document}

Answered by midtiby on April 15, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP