racket / scribble

Other
199 stars 91 forks source link

Autobib citation links jump to the wrong place in PDF backend #346

Closed wilbowma closed 2 years ago

wilbowma commented 2 years ago

Consider the following two files which are padded with lots of lipsum to get links on different pages, built with scribble --pdf meow.scrbl. If you click either of the citation, they both jump to the top of the bibliography, but the second citation should jump to the second page of the bibliography.

It looks like autobib needs to insert a \phantomsection{} before every label it generates, otherwise the links all go to the enclosing bib section.

meow.scrbl

#lang scribble/acmart

@(require
scriblib/autobib
scriblib/bibtex)

@(define-cite acite acitet generate-bibliography)
@(define-bibtex-cite* "bib.bib" acite acitet ~cite citet)

@title{Foo}

@author[
"William J. Bowman"
]

@~cite["ghuloum2006" "keep2013"]

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque aliquam diam in magna ultrices commodo. Cras rhoncus ipsum purus, nec egestas augue accumsan ut. Ut vehicula dolor mi, et suscipit est blandit et. Sed venenatis diam in leo vulputate, vel semper eros aliquam. Morbi sit amet quam non tellus mollis consequat. Quisque a urna non magna egestas placerat eget a metus. Donec vitae tempus purus. Mauris viverra ex sit amet elit dapibus, et vestibulum mauris pretium. Proin sed viverra lacus, nec iaculis erat. Mauris nec libero tempus justo tincidunt eleifend. Duis arcu augue, rhoncus id pulvinar sed, dapibus sit amet arcu. Aliquam id sagittis libero. Fusce ultricies a augue tempor congue. Morbi rutrum, lectus quis iaculis eleifend, purus nunc consequat tortor, ac bibendum metus libero ac est. Donec a massa id purus sollicitudin feugiat. Etiam cursus leo pretium, semper velit eget, iaculis odio.

Praesent sodales a nisi quis convallis. Suspendisse pharetra libero vitae sapien pretium pretium. Morbi sagittis interdum erat, a scelerisque velit finibus a. Sed tortor dui, bibendum et turpis eleifend, feugiat tristique risus. Praesent vitae pretium dui. Proin venenatis at massa nec egestas. Vivamus a tortor vel nulla sollicitudin scelerisque. Pellentesque maximus diam at est hendrerit, vitae pulvinar ante gravida. Curabitur in commodo tortor, eu semper massa. Nulla facilisis ut felis id condimentum. Vestibulum laoreet orci sed suscipit dignissim. Aenean ac odio aliquam, eleifend mauris molestie, consectetur magna. Vestibulum vitae risus sit amet tellus sodales vestibulum vel ac lacus. Maecenas et eros nunc. Nullam aliquam tellus eget blandit rutrum.

Nulla hendrerit purus quis orci bibendum lobortis. Donec pretium nisl ullamcorper urna tincidunt, id dignissim nibh posuere. Suspendisse potenti. Duis vel eros eget nisl auctor rutrum. Vestibulum ultrices velit ac ex consectetur, pellentesque facilisis ipsum eleifend. Donec sem dolor, iaculis et ante eget, gravida bibendum enim. Duis in libero sit amet nisi tempus molestie ut in nisi. Aliquam suscipit rhoncus turpis, at accumsan nisl ultricies sed. Nam in mi nisi. Nam est risus, ultrices nec bibendum vel, dignissim accumsan metus.

Pellentesque iaculis nunc eget congue viverra. Nam a imperdiet purus. Integer tincidunt dui felis. Nam interdum libero pharetra, tincidunt massa et, bibendum tellus. Praesent ut elementum elit. Etiam vitae consequat nibh. Ut dapibus ornare lectus vitae efficitur. Duis ornare tortor vehicula, euismod lectus a, fringilla mi. Maecenas nec gravida lectus. Morbi scelerisque a mi at blandit. Vestibulum quis mattis velit. Vivamus viverra mi nec pulvinar vestibulum. Nullam eleifend nec elit a luctus.

Nunc ornare rhoncus pulvinar. Proin diam diam, tincidunt non ante eget, fermentum lobortis ante. Integer cursus felis vel orci fringilla interdum. Cras dui enim, egestas eget rhoncus ac, elementum nec ex. Quisque blandit nisl ac facilisis tristique. Cras congue eros id est facilisis, in pharetra erat sollicitudin. In diam est, tempus et lorem nec, fringilla consectetur elit. Duis congue metus mauris, sed ullamcorper leo porta nec.

Sed ultricies dictum dui, eget congue sapien semper id. Sed ac eleifend neque. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam porta tempor sapien quis lobortis. Pellentesque iaculis augue vehicula arcu vestibulum ultrices. Suspendisse urna risus, laoreet id suscipit eu, imperdiet ac nunc. Quisque consectetur blandit lacinia. Nulla et aliquet nisl. Donec commodo scelerisque massa vel efficitur.

Fusce eget est a sem pharetra sodales. Praesent faucibus metus vel hendrerit mollis. Nulla ac nisl turpis. Integer id eleifend mauris. Aliquam iaculis, risus eget fringilla auctor, mi leo interdum sapien, non semper metus nisl a massa. Pellentesque sit amet felis ut leo aliquet condimentum sed nec lectus. Morbi accumsan nibh nec lectus auctor aliquet. Duis et vestibulum massa. Nullam sollicitudin sit amet enim at semper. Donec in ornare sem. Donec at lorem egestas, dictum neque sit amet, blandit diam.

Aenean sed erat sit amet enim bibendum molestie sit amet vitae augue. Sed feugiat laoreet lectus, tincidunt feugiat quam feugiat vitae. Cras venenatis tincidunt tellus, nec malesuada ante mattis vel. Suspendisse nisi ex, accumsan non hendrerit ut, porta eget nisl. Sed finibus interdum augue in feugiat. Sed ultricies lorem tempus sem condimentum bibendum. Nam efficitur, erat sed blandit fringilla, dui risus aliquam mi, sit amet posuere risus neque in quam. Pellentesque rutrum ullamcorper lectus a pretium. Nunc semper dui quis ultrices porttitor. Ut faucibus ullamcorper magna, sit amet consequat enim finibus eget. Etiam sem massa, iaculis ac nunc rutrum, tempor suscipit nisi. In non mollis nisi.

Praesent sagittis tellus sed justo consequat fringilla. Phasellus arcu nisi, ornare sed venenatis et, mattis eu justo. Aliquam eget sapien justo. Integer enim leo, suscipit vel enim sit amet, accumsan interdum ligula. Etiam interdum massa eu tellus imperdiet, a condimentum ante finibus. Sed euismod ipsum imperdiet odio pretium, sit amet dignissim mi euismod. Aliquam dignissim ex sit amet erat faucibus, in ultrices nisl consectetur. Donec posuere orci justo, vitae dignissim massa convallis sit amet. Nunc ac sem mi. Pellentesque aliquet erat nec augue luctus luctus. Nullam eu consequat nulla.

Etiam felis lectus, hendrerit condimentum auctor quis, sodales et ipsum. Nulla sit amet vulputate libero. Fusce id consequat est. Suspendisse ac lorem vitae sapien sagittis vestibulum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce cursus nisi ligula, a blandit libero consectetur ut. Quisque vehicula scelerisque finibus. Donec ac tempor sapien, nec varius purus. Proin et purus sem.

@(generate-bibliography)

bib.bib

@String{icfp    = {International Conference on Functional Programming ({ICFP})}}

@InProceedings{keep2013,
  author    = {Andrew W. Keep and R. Kent Dybvig},
  booktitle = icfp,
  doi       = {10.1145/2500365.2500618},
  title     = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque aliquam diam in magna ultrices commodo. Cras rhoncus ipsum purus, nec egestas augue accumsan ut. Ut vehicula dolor mi, et suscipit est blandit et. Sed venenatis diam in leo vulputate, vel semper eros aliquam. Morbi sit amet quam non tellus mollis consequat. Quisque a urna non magna egestas placerat eget a metus. Donec vitae tempus purus. Mauris viverra ex sit amet elit dapibus, et vestibulum mauris pretium. Proin sed viverra lacus, nec iaculis erat. Mauris nec libero tempus justo tincidunt eleifend. Duis arcu augue, rhoncus id pulvinar sed, dapibus sit amet arcu. Aliquam id sagittis libero. Fusce ultricies a augue tempor congue. Morbi rutrum, lectus quis iaculis eleifend, purus nunc consequat tortor, ac bibendum metus libero ac est. Donec a massa id purus sollicitudin feugiat. Etiam cursus leo pretium, semper velit eget, iaculis odio. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque aliquam diam in magna ultrices commodo. Cras rhoncus ipsum purus, nec egestas augue accumsan ut. Ut vehicula dolor mi, et suscipit est blandit et. Sed venenatis diam in leo vulputate, vel semper eros aliquam. Morbi sit amet quam non tellus mollis consequat. Quisque a urna non magna egestas placerat eget a metus. Donec vitae tempus purus. Mauris viverra ex sit amet elit dapibus, et vestibulum mauris pretium. Proin sed viverra lacus, nec iaculis erat. Mauris nec libero tempus justo tincidunt eleifend. Duis arcu augue, rhoncus id pulvinar sed, dapibus sit amet arcu. Aliquam id sagittis libero. Fusce ultricies a augue tempor congue. Morbi rutrum, lectus quis iaculis eleifend, purus nunc consequat tortor, ac bibendum metus libero ac est. Donec a massa id purus sollicitudin feugiat. Etiam cursus leo pretium, semper velit eget, iaculis odio.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque aliquam diam in magna ultrices commodo. Cras rhoncus ipsum purus, nec egestas augue accumsan ut. Ut vehicula dolor mi, et suscipit est blandit et. Sed venenatis diam in leo vulputate, vel semper eros aliquam. Morbi sit amet quam non tellus mollis consequat. Quisque a urna non magna egestas placerat eget a metus. Donec vitae tempus purus. Mauris viverra ex sit amet elit dapibus, et vestibulum mauris pretium. Proin sed viverra lacus, nec iaculis erat. Mauris nec libero tempus justo tincidunt eleifend. Duis arcu augue, rhoncus id pulvinar sed, dapibus sit amet arcu. Aliquam id sagittis libero. Fusce ultricies a augue tempor congue. Morbi rutrum, lectus quis iaculis eleifend, purus nunc consequat tortor, ac bibendum metus libero ac est. Donec a massa id purus sollicitudin feugiat. Etiam cursus leo pretium, semper velit eget, iaculis odio.  A nanopass framework for commercial compiler development},
  year      = {2013},
  editor    = {Greg Morrisett and Tarmo Uustalu},
  pages     = {343--350},
  publisher = {{ACM}},
  bibsource = {dblp computer science bibliography, https://dblp.org},
  biburl    = {https://dblp.org/rec/bib/conf/icfp/KeepD13},
  file      = {:keep2013 - A Nanopass Framework for Commercial Compiler Development.pdf:PDF},
}

@InProceedings{ghuloum2006,
  author    = {Abdulaziz Ghuloum},
  booktitle = {Scheme Workshop},
  title     = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque aliquam diam in magna ultrices commodo. Cras rhoncus ipsum purus, nec egestas augue accumsan ut. Ut vehicula dolor mi, et suscipit est blandit et. Sed venenatis diam in leo vulputate, vel semper eros aliquam. Morbi sit amet quam non tellus mollis consequat. Quisque a urna non magna egestas placerat eget a metus. Donec vitae tempus purus. Mauris viverra ex sit amet elit dapibus, et vestibulum mauris pretium. Proin sed viverra lacus, nec iaculis erat. Mauris nec libero tempus justo tincidunt eleifend. Duis arcu augue, rhoncus id pulvinar sed, dapibus sit amet arcu. Aliquam id sagittis libero. Fusce ultricies a augue tempor congue. Morbi rutrum, lectus quis iaculis eleifend, purus nunc consequat tortor, ac bibendum metus libero ac est. Donec a massa id purus sollicitudin feugiat. Etiam cursus leo pretium, semper velit eget, iaculis odio. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque aliquam diam in magna ultrices commodo. Cras rhoncus ipsum purus, nec egestas augue accumsan ut. Ut vehicula dolor mi, et suscipit est blandit et. Sed venenatis diam in leo vulputate, vel semper eros aliquam. Morbi sit amet quam non tellus mollis consequat. Quisque a urna non magna egestas placerat eget a metus. Donec vitae tempus purus. Mauris viverra ex sit amet elit dapibus, et vestibulum mauris pretium. Proin sed viverra lacus, nec iaculis erat. Mauris nec libero tempus justo tincidunt eleifend. Duis arcu augue, rhoncus id pulvinar sed, dapibus sit amet arcu. Aliquam id sagittis libero. Fusce ultricies a augue tempor congue. Morbi rutrum, lectus quis iaculis eleifend, purus nunc consequat tortor, ac bibendum metus libero ac est. Donec a massa id purus sollicitudin feugiat. Etiam cursus leo pretium, semper velit eget, iaculis odio.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque aliquam diam in magna ultrices commodo. Cras rhoncus ipsum purus, nec egestas augue accumsan ut. Ut vehicula dolor mi, et suscipit est blandit et. Sed venenatis diam in leo vulputate, vel semper eros aliquam. Morbi sit amet quam non tellus mollis consequat. Quisque a urna non magna egestas placerat eget a metus. Donec vitae tempus purus. Mauris viverra ex sit amet elit dapibus, et vestibulum mauris pretium. Proin sed viverra lacus, nec iaculis erat. Mauris nec libero tempus justo tincidunt eleifend. Duis arcu augue, rhoncus id pulvinar sed, dapibus sit amet arcu. Aliquam id sagittis libero. Fusce ultricies a augue tempor congue. Morbi rutrum, lectus quis iaculis eleifend, purus nunc consequat tortor, ac bibendum metus libero ac est. Donec a massa id purus sollicitudin feugiat. Etiam cursus leo pretium, semper velit eget, iaculis odio.  An Incremental Approach to Compiler Construction},
  year      = {2006},
  file      = {:ghuloum2006 - An Incremental Approach to Compiler Construction.pdf:PDF},
  keywords  = {nanopass},
  url       = {http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf},
}