{"id":18379728,"url":"https://github.com/paolobrasolin/setup-texlive-action","last_synced_at":"2025-04-06T22:32:38.107Z","repository":{"id":43350862,"uuid":"425844871","full_name":"paolobrasolin/setup-texlive-action","owner":"paolobrasolin","description":"GitHub action to setup TeX Live","archived":false,"fork":false,"pushed_at":"2022-12-22T10:00:44.000Z","size":21,"stargazers_count":3,"open_issues_count":4,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-22T07:45:30.140Z","etag":null,"topics":["action","actions","cross-platform","github-action","github-actions","latex","multi-platform","tex","tex-live","texlive"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paolobrasolin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-08T13:17:46.000Z","updated_at":"2023-10-18T17:38:07.000Z","dependencies_parsed_at":"2023-01-30T07:00:23.089Z","dependency_job_id":null,"html_url":"https://github.com/paolobrasolin/setup-texlive-action","commit_stats":{"total_commits":36,"total_committers":1,"mean_commits":36.0,"dds":0.0,"last_synced_commit":"04ddc71e652c8a892d232b26d55fe8eb02551687"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paolobrasolin%2Fsetup-texlive-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paolobrasolin%2Fsetup-texlive-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paolobrasolin%2Fsetup-texlive-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paolobrasolin%2Fsetup-texlive-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paolobrasolin","download_url":"https://codeload.github.com/paolobrasolin/setup-texlive-action/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247563905,"owners_count":20958971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["action","actions","cross-platform","github-action","github-actions","latex","multi-platform","tex","tex-live","texlive"],"created_at":"2024-11-06T00:39:41.920Z","updated_at":"2025-04-06T22:32:37.891Z","avatar_url":"https://github.com/paolobrasolin.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Setup TeX Live\n\n[![Ubuntu CI tests status badge][ubuntu-ci-shield]][ubuntu-ci-url]\n[![macOS CI tests status badge][macos-ci-shield]][macos-ci-url]\n[![Windows CI tests status badge][windows-ci-shield]][windows-ci-url]\n\n[![Latest release badge][release-shield]][release-url]\n[![License badge][license-shield]][license-url]\n\n[ubuntu-ci-url]: https://github.com/paolobrasolin/setup-texlive-action/actions/workflows/ubuntu.yml \"Ubuntu CI tests\"\n[macos-ci-url]: https://github.com/paolobrasolin/setup-texlive-action/actions/workflows/macos.yml \"macOS CI tests\"\n[windows-ci-url]: https://github.com/paolobrasolin/setup-texlive-action/actions/workflows/windows.yml \"Windows CI tests\"\n\n[ubuntu-ci-shield]: https://img.shields.io/github/actions/workflow/status/paolobrasolin/setup-texlive-action/ubuntu.yml?branch=main\u0026label=Ubuntu\u0026logo=ubuntu\u0026logoColor=white\n[macos-ci-shield]: https://img.shields.io/github/actions/workflow/status/paolobrasolin/setup-texlive-action/macos.yml?branch=main\u0026label=macOS\u0026logo=apple\u0026logoColor=white\n[windows-ci-shield]: https://img.shields.io/github/actions/workflow/status/paolobrasolin/setup-texlive-action/windows.yml?branch=main\u0026label=Windows\u0026logo=windows\u0026logoColor=white\n\n[release-url]: https://github.com/paolobrasolin/setup-texlive-action/releases \"Latest release\"\n[license-url]: https://github.com/paolobrasolin/setup-texlive-action/blob/main/LICENSE \"License\"\n\n[release-shield]: https://img.shields.io/github/v/release/paolobrasolin/setup-texlive-action?display_name=tag\u0026sort=semver\n[license-shield]: https://img.shields.io/github/license/paolobrasolin/setup-texlive-action\n\nThis action provides a smooth way to setup a TeX Live distribution tailored to your needs. Its features:\n\n* preconfigured cache for blazing-fast builds,\n* same customization level of a local installation,\n* compatible with Ubuntu, macOS and Windows runners.\n\n# Getting started\n\nHere is the minimal workflow to see the action running:\n\n```yaml\n# .github/workflows/barebones.yml\non: push\njobs:\n  main:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: paolobrasolin/setup-texlive-action@v1\n      - run: tlmgr version\n```\n\nThis will install the `infraonly` scheme and check that `tlmgr` is available.\n\nThat's nice, but too bare-bones to actually compile a document.\n\nTo pick a richer scheme and a few custom packages you will need to setup two configuration files and feed them to the action:\n\n```ini\n# .github/texlive.profile\n# Install the scheme minimal:\nselected_scheme scheme-minimal\n# Omit documentation files:\ntlpdbopt_install_docfiles 0\n# Omit source files:\ntlpdbopt_install_srcfiles 0\n# Avoid doing backups:\ntlpdbopt_autobackup 0\n```\n\n```ini\n# .github/texlive.packages\nlatex-bin\n```\n\n```yaml\n# .github/workflows/barebones.yml\non: push\njobs:\n  main:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: paolobrasolin/setup-texlive-action@v1\n        with:\n          profile-path: ${{ github.workspace }}/.github/texlive.profile\n          packages-path: ${{ github.workspace }}/.github/texlive.packages\n      - run: pdflatex sample2e\n```\n\nYou just compiled `sample2e` in your CI!\nThe world is your oyster.\n\n# Usage\n\nHere is a full rundown of options for advanced usage.\n\n## Inputs\n\n### `profile-path`\n\n* Optional\n* Default: the path of the [default profile][default-profile], which provides just the `infraonly` scheme\n\nThis option is the file path of the profile that the action will feed to [`install-tl`][install-tl-man] to setup your distribution.\n\nThe [default profile][default-profile] is an excellent starting point to write your own.\nIt contains general instructions and most likely you'll just need to copy it and pick a different scheme.\n\n**PLEASE be a responsible citizen and avoid waste!**\n\n* Use the smallest setup which is suitable for your purpose.\n* Omit documentation, source files and backups (the [default profile][default-profile] already contains the correct flags for that).\n\nIf more details are needed, you can find everything about writing profiles in the [official documentation][install-tl-profiles-man].\n\n[default-profile]: https://github.com/paolobrasolin/setup-texlive-action/blob/main/texlive.profile\n[install-tl-man]: https://www.tug.org/texlive/doc/install-tl.html\n[install-tl-profiles-man]: https://www.tug.org/texlive/doc/install-tl.html#PROFILES\n\n### `packages-path`\n\n* Optional\n* Default: the path of the [default list][default-packages], which is empty\n\nThis option is the file path of the package list that the action will feed to [`tlmgr`][tlmgr-man] to install them.\n\nThe empty [default list][default-packages] might be enough if the scheme you picked already covers all your bases.\nIf that's not the case, the file format is simple: list the packages one per line. Lines starting with `#` are comments and will be ignored.\n\nTo search or browse for packages you can use [CTAN][ctan].\n\n[default-packages]: https://github.com/paolobrasolin/setup-texlive-action/blob/main/texlive.packages\n[tlmgr-man]: https://www.tug.org/texlive/doc/tlmgr.html\n[ctan]: https://www.ctan.org/\n\n### `cache-key`\n\n* Optional\n* Default: `texlive`\n\nThis option is the key which will identify the cached installation.\n\n**Irrespectively of how you set this, the cache will expire when your profile or your package list change.**\n\nYou won't need to change this unless your CI requires finely configured cache reuse and segregation.\n\nFor the sake of concreteness, let's make an example.\nImagine you need to run your daily tests on three different platforms, while keeping their caches separate and forcing their expiration every week.\nHere is how to do that:\n\n```yaml\n# .github/workflows/example.yml\nname: example\non:\n  schedule:\n    - cron: '0 0 * * *' # daily at midnight\njobs:\n  main:\n    runs-on: ${{ matrix.os }}\n    strategy:\n      fail-fast: false\n      matrix:\n        os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ]\n    steps:\n      - name: Generate a YYYY-WW timestamp\n        id: timestamp\n        run: ${{ runner.os == 'Windows' \u0026\u0026 'Write-Output \"::set-output name=yyyy-ww::$(Get-Date -UFormat %Y-%W)\"' || 'echo \"::set-output name=yyyy-ww::$(date +%Y-%W)\"' }}\n      - uses: paolobrasolin/setup-texlive-action@v1\n        with:\n          cache-key: texlive-${{ matrix.os }}-${{ steps.timestamp.output.yyyy-ww }}\n      - run: tlmgr version\n```\n\nThe caching mechanism is implemented using the excellent [`cache`][cache-action] action. It has some [limitations][cache-action-limits]:\n\n* up to 5GB per repo,\n* older caches are evicted upon reaching the limit,\n* caches are evicted after a week if unused.\n\n[cache-action]: https://github.com/actions/cache\n[cache-action-limits]: https://github.com/actions/cache#cache-limits\n\n### `cache-enabled`\n\n* Optional\n* Default: `true`\n\nThis option can disable caching.\n\n**PLEASE be a responsible citizen and always use caching!**\n\nNot only this will avoid uselessly burdening CTAN mirrors, but your build will also be **much faster**.\n\n### `installation-path`\n\n* Optional\n* Default: the `texlive` folder inside the runner's tool cache path\n\nThis option is the path where the TeX Live is installed on the runner.\n\nThere should be no need to change it.\n\n## Outputs\n\nThe action currently provides no outputs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaolobrasolin%2Fsetup-texlive-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaolobrasolin%2Fsetup-texlive-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaolobrasolin%2Fsetup-texlive-action/lists"}