quarto-dev / quarto-dev/quarto-cli

Links and cross-references get messed up when rendering to PDF on GitHub Actions with `pdf-standard: ua-2`

Open
#14,752 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug latex upstream
Dominant language
JavaScript
Stars
6k
Forks
458
Avg merge
1d 9h
Merged PRs (30d)
41

Description

I have:
  • searched the issue tracker for similar issues
  • installed the latest version of Quarto CLI
  • formatted my issue following the Bug Reports guide
Bug description

When rendering to PDF on GitHub Actions (Ubuntu 24.04.4) with pdf-standard: ua-2, my links and cross-references get messed up in Quarto version 1.10.18.

For example, [URL link](https://www.google.com) gets converted to 0.0 0.0 1.00 g 0 GURL link.

I only experience this issue on GitHubActions. I do not experience it locally.

Steps to reproduce

Here is a link to a GitHub repo with a minimal reproducible example: https://github.com/isaactpetersen/quartoReprex2

Here are the contents of index.pdf:

---
title: "Quarto Reprex"
---

This is a [cross-reference link](syllabus.qmd).

This is a [URL link](https://www.google.com).

This renders as:

Quarto Reprex
This is a 0.0 0.0 1.00 g 0 Gcross-reference link.
This is a 0.0 0.0 1.00 g 0 GURL link.

Here are the contents of syllabus.qmd:

---
title: "Syllabus"
---

This is a [cross-reference link](index.qmd).

This is a [URL link](https://www.google.com).

Here are the contents of _quarto.yml:

project:
  type: website

website:
  title: "Quarto Reprex"
  repo-url: https://github.com/isaactpetersen/quartoReprex2

format:
  html:
    toc: true
  pdf:
    toc: false
    pdf-standard: ua-2 # links and cross-references work fine when I comment out this line

Here are the contents of the DESCRIPTION file:

Package: placeholder
Title: QuartoReprex
Version: 1.0.0
Imports:
  quarto,
  knitr,
  rmarkdown

Here are the contents of .github/workflows/publish.yml:

on:
    workflow_dispatch:
    push:
       branches:
         - main

name: Quarto Publish

jobs:
  build-deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - name: Check out repository
        uses: actions/checkout@v6
    
      - name: Set up Quarto
        uses: quarto-dev/quarto-actions/setup@v2
    
      - name: Install R
        uses: r-lib/actions/setup-r@v2
    
      - name: Session info
        run: Rscript -e 'sessionInfo()'
    
      - name: Setup pandoc
        uses: r-lib/actions/setup-pandoc@v2
    
      - name: Install system dependencies
        if: runner.os == 'Linux'
        run: |
          sudo apt-get update -y
          sudo apt-get install -y \
            libcurl4-openssl-dev \
            libharfbuzz-dev \
            libfribidi-dev

      - name: Install veraPDF for accessibility validation
        run: quarto install verapdf
        
      - name: Install tinytex
        uses: r-lib/actions/setup-tinytex@v2
        
      - name: Install additional LaTeX packages
        run: |
          tlmgr update --self
          tlmgr install \
            collectbox \
            titling \
            framed \
            mdframed \
            ulem \
            hyperref \
            url \
            underscore \
            xcolor \
            csquotes
    
      - name: Install package dependencies
        uses: r-lib/actions/setup-r-dependencies@v2

      - name: Render & Publish
        uses: quarto-dev/quarto-actions/publish@v2
        with:
          target: gh-pages

      - name: List files in workspace
        if: always()
        run: |
          ls -lh
          find . -type f
          
      - name: Archive production artifacts
        if: always()
        uses: actions/upload-artifact@v7
        with:
          name: site
          path: _site/

Here is a link to the rendered PDF: https://isaactpetersen.github.io/quartoReprex2/index.pdf

Actual behavior

Links and cross-references get converted to: 0.0 0.0 1.00 g 0 G

Expected behavior

I expected the URL links and cross-reference links to show correctly.

Your environment
  • OS: Ubuntu 24.04.4 via GitHub Actions
  • Quarto: version 1.10.18
Quarto check output
  quarto check
  shell: /usr/bin/bash -e {0}
  env:
    BUNDLE_EXT: linux-amd64.deb
    R_LIBS_USER: /home/runner/work/_temp/Library
    TZ: UTC
    _R_CHECK_SYSTEM_CLOCK_: FALSE
    NOT_CRAN: true
    RSPM: https://packagemanager.posit.co/cran/__linux__/noble/latest
    RENV_CONFIG_REPOS_OVERRIDE: https://packagemanager.posit.co/cran/__linux__/noble/latest
    R_LIB_FOR_PAK: /opt/R/4.6.1/lib/R/site-library
  
Quarto 1.10.18
[✓] Checking environment information...
      Quarto cache location: /home/runner/.cache/quarto
[✓] Checking versions of quarto binary dependencies...
      Pandoc version 3.10.0: OK
      Dart Sass version 1.101.0: OK
      Deno version 2.7.14: OK
      Typst version 0.15.1: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
      Version: 1.10.18
      Path: /opt/quarto/bin

[✓] Checking tools....................OK
      TinyTeX: (external install)
      VeraPDF: 1.28.2
      Chrome Headless Shell: (not installed)
(|) Checking LaTeX....................
[✓] Checking LaTeX....................OK
      Using: TinyTex
      Path: /home/runner/.TinyTeX/bin/x86_64-linux
      Version: 2026

[✓] Checking Chrome Headless....................OK
      Using: Chrome found on system
      Path: /usr/bin/google-chrome
      Source: PATH
(|) Checking basic markdown render....
[✓] Checking basic markdown render....OK
(|) Checking R installation...........
[✓] Checking R installation...........OK
      Version: 4.6.1
      Path: /opt/R/4.6.1/lib/R
      LibPaths:
        - /home/runner/work/_temp/Library
        - /opt/R/4.6.1/lib/R/site-library
        - /opt/R/4.6.1/lib/R/library
      knitr: 1.51
      rmarkdown: 2.31
(|) Checking Knitr engine render......
[✓] Checking Knitr engine render......OK
(|) Checking Python 3 installation....
[✓] Checking Python 3 installation....OK
      Version: 3.12.3
      Path: /usr/bin/python3
      Jupyter: (None)
      Jupyter is not available in this Python installation.
      Install with python3 -m pip install jupyter
(|) Checking Julia installation...
[✓] Checking Julia installation...

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the minimal repository, especially _quarto.yml, index.qmd, syllabus.qmd, and .github/workflows/publish.yml, then compare local and GitHub Actions PDF rendering with pdf-standard: ua-2. Check the generated index.pdf and the listed Quarto, TinyTeX, and workflow environment details. Done means URL links and cross-references render as readable links in the Actions-produced PDF.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, latex, ubuntu
Domain
build-system, ci-cd, documentation
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.