{"id":16489748,"url":"https://github.com/phfaist/ltxpdflinks","last_synced_at":"2026-03-05T06:32:11.866Z","repository":{"id":52952652,"uuid":"356211776","full_name":"phfaist/ltxpdflinks","owner":"phfaist","description":"Extract links in PDF graphics for inclusion in LaTeX documents","archived":false,"fork":false,"pushed_at":"2022-09-28T17:16:40.000Z","size":1316,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-25T12:58:46.881Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TeX","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/phfaist.png","metadata":{"files":{"readme":"README.rst","changelog":null,"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-04-09T09:21:53.000Z","updated_at":"2025-01-11T23:10:12.000Z","dependencies_parsed_at":"2022-08-28T06:26:41.952Z","dependency_job_id":null,"html_url":"https://github.com/phfaist/ltxpdflinks","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/phfaist/ltxpdflinks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phfaist%2Fltxpdflinks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phfaist%2Fltxpdflinks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phfaist%2Fltxpdflinks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phfaist%2Fltxpdflinks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phfaist","download_url":"https://codeload.github.com/phfaist/ltxpdflinks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phfaist%2Fltxpdflinks/sbom","scorecard":{"id":730963,"data":{"date":"2025-08-11","repo":{"name":"github.com/phfaist/ltxpdflinks","commit":"12829daa8277e95453bebe3f821bfebff49f2fe4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.2,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.2.1 not signed: https://api.github.com/repos/phfaist/ltxpdflinks/releases/78481909","Warn: release artifact v0.1.1 not signed: https://api.github.com/repos/phfaist/ltxpdflinks/releases/41285167","Warn: release artifact v0.2.1 does not have provenance: https://api.github.com/repos/phfaist/ltxpdflinks/releases/78481909","Warn: release artifact v0.1.1 does not have provenance: https://api.github.com/repos/phfaist/ltxpdflinks/releases/41285167"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: GHSA-jrm6-h9cq-8gqw","Warn: Project is vulnerable to: PYSEC-2022-194 / GHSA-xcjx-m2pj-8g79","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T14:23:58.750Z","repository_id":52952652,"created_at":"2025-08-22T14:23:58.750Z","updated_at":"2025-08-22T14:23:58.750Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30112243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T03:40:26.266Z","status":"ssl_error","status_checked_at":"2026-03-05T03:39:15.902Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-10-11T13:45:16.070Z","updated_at":"2026-03-05T06:32:11.846Z","avatar_url":"https://github.com/phfaist.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"ltxpdflinks — include PDF graphics with links in LaTeX documents  \n================================================================\n\nTo include fancy graphics (say a diagram) in your LaTeX document, a common\nprocess is to design the diagram using your favorite graphics designer program,\nto export the figure as a PDF graphic, and to use::\n\n  \\includegraphics[width=10cm]{my_figure}\n\nAnd it works great.  Until you'd like to have figures with clickable links.  You\nmight even want to have links in your diagram to within the document—maybe a\nclickable link to a document section, equation, or an item in your bibliography.\n\nThe ``ltxpdflinks`` tool provides a simple solution to include a PDF with its\nlinks.  It includes ways to encode links to within the document, like you'd\nobtain with ``\\ref`` and ``\\cite`` in LaTeX.\n\n\nQuick Start\n~~~~~~~~~~~\n\nTo get started:\n\n1. Install ``ltxpdflinks``::\n\n     pip3 install ltxpdflinks\n\n2. Download the ``phflplx.sty`` file here:\n   \n   https://github.com/phfaist/ltxpdflinks/releases/latest\n\nTo compile your document:\n\n1. Drop the file ``phflplx.sty`` in the same folder as your latex source file,\n   and add to your document preamble::\n\n     \\usepackage{phflplx}\n     \\DeclareGraphicsExtensions{.lplx,.pdf}\n\n   [I'm assuming you're loading the ``graphicx`` (or alternatively\n   ``graphics``) and the ``hyperref`` packages, too.]\n\n   Note: If you'd like to include also other file types in your document\n   (e.g., ``.png``, ``.jpeg``, etc.), you need to add them to the\n   ``\\DeclareGraphicsExtensions`` argument, too.  See doc for the\n   `graphicx package \u003chttps://mirror.clientvps.com/CTAN/macros/latex/required/graphics/grfguide.pdf\u003e`_.\n\n2. Run the ``ltxpdflinks`` command-line program for all your PDF files that\n   contain links::\n\n     \u003e ltxpdflinks myfigure1.pdf\n\n3. Compile your LaTeX document as usual.\n\n\nHow to include links to other parts of the LaTeX document:\n\n1. When creating your figure in your favorite drawing software, create a \"web\n   hyperlink\" with an URL of the following form::\n\n     latexref://\u003ctype-of-reference\u003e/\u003creference-target\u003e\n\n   For a link to a section, equation, etc. (when you'd use ``\\ref`` /\n   ``\\autoref`` / ``\\cref`` in LaTeX), use ``latexref://ref/\u003clabel-target\u003e``\n   where you replace ``\u003clabel-target\u003e`` by the LaTeX label of the object you're\n   referencing (the argument of the ``\\label{...}`` command in LaTeX).\n\n   For a link to a bibliographic reference entry (as in ``\\cite{...}``), use\n   ``latexref://cite/\u003cbibtex-key\u003e``, where you replace ``\u003cbibtex-key\u003e`` by the\n   bibliographic reference key you'd like to refer to (the argument you'd use to\n   the ``\\cite{...}`` command).\n\n2. These special URL links are automatically converted to LaTeX references by\n   the ``ltxpdflinks`` utility and the ``phflplx`` package.\n\n\nFeatures\n~~~~~~~~\n\n- Special link conversions::\n\n    latexref://ref/XXXXXX   →   link to XXXXXX label as via \\ref{XXXXXX}\n    \n    latexref://cite/XXXXXX   →   link to XXXXXX citation as via \\cite{XXXXXX}\n\n  (In the future I'll probably add ways to plug in custom link conversions.  The\n  code is extendible \u0026 you can add them yourself already if you invoke\n  ``ltxpdflinks`` via your own python script.)\n\n- Full support for rotation, scaling and clipping via options to\n  ``\\includegraphics[...]{...}``\n\n- Links use the format defined in the LaTeX document (colors \u0026 border relevant\n  for link type URL/internal reference/citation as specified via the\n  ``hyperref`` package.)\n\n- Simple Python implementation which you can use via your own custom script if\n  you'd like to add link conversions or customize the process in any way.\n\n  To get started::\n\n    import ltxpdflinks\n\n    extractor = ltxpdflinks.PdfGraphicLinksExtractor(fname)\n    extracted = extractor.extractGraphicLinks()\n\n    converter = ltxpdflinks.LatexRefsLinkConverter()\n    converter.convertLinks(extracted)\n\n    lplxexporter = ltxpdflinks.LplxPictureEnvExporter()\n    lplx_content = lplxexporter.export(extracted)\n\n    with open('my_ouput_file_will_be_overwritten.lplx', 'w') as foutput:\n        foutput.write(lplx_content)\n\n\n\nPlanned future improvements\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- Support the possibility (as an opt-in option) to preserve link styling\n  (border, color, etc.)  instead if using the document links style?\n\n- Support for internal annotations within the PDF graphic (from one part of\n  the graphic to another)?\n\n- Support for other types of annotations?\n\n- Support for generation of ``.pax`` files for use with the `pax LaTeX package\n  \u003chttps://www.ctan.org/pkg/pax\u003e`_ instead?\n\n\nExisting alternatives\n~~~~~~~~~~~~~~~~~~~~~\n\n- You can also directly create your diagrams natively in LaTeX using `TiKZ\n  \u003chttps://www.overleaf.com/learn/latex/TikZ_package\u003e`_.  I prefer to prepare\n  diagrams with drawing software, but that's a personal preference.\n    \n- The `pax LaTeX package and associated utility \u003chttps://www.ctan.org/pkg/pax\u003e`_\n  also includes PDF links and annotations using a similar philosophy; it also\n  provides a separate command-line tool to process PDF files before inclusion.\n\n  As far as I could tell, `pax` supports more PDF annotations and preserves link\n  styles.  It doesn't seem to provide link conversion to LaTeX references and\n  citations for internal links.  It also doesn't seem to fully support rotation\n  and clipping via options to ``\\includegraphics``.  The command-line utility is\n  written in Java.\n\n  This option has been around for a while, so it might definitely be more\n  stable!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphfaist%2Fltxpdflinks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphfaist%2Fltxpdflinks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphfaist%2Fltxpdflinks/lists"}