Latexpages
==========
|PyPI version| |License| |Supported Python| |Downloads|
|Build| |Codecov|
This tool automates compiling LaTeX document collections (for working papers,
proceedings, etc.) into a single combined PDF file using the pdfpages_ package.
Create an **INI file** giving the name and parts of your collection and build
it with the ``latexpages`` command-line utility.
``latexpages`` will start one parallel typesetting process per core for
speedup.
As each part is typeset independently, this allows to combine documents that
cannot be merged into a single master-document (use of incompatible
packages/options, latex-dvips-ps2pdf vs. pdflatex, etc.).
Links
-----
- GitHub: https://github.com/xflr6/latexpages
- PyPI: https://pypi.org/project/latexpages/
- Issue Tracker: https://github.com/xflr6/latexpages/issues
- Download: https://pypi.org/project/latexpages/#files
Installation
------------
This package runs under Python 3.10+, use pip_ to install:
.. code:: bash
$ pip install latexpages
The compilation requires a TeX distribution (e.g. `TeX Live`_ or MikTeX_) and
either latexmk_ or MikTeX's texify_ utility being available on your system.
The optional automatic page numbering (see below) requires either the
``pdfinfo`` command-line utility (included in poppler_-utils,
miktex-poppler-bin_, xpdf_), or the pdftk_ command-line utility (both
available cross-platform).
Usage
-----
Create a working directory holding your plain-text INI file with the latexpages
configuration. Put all your documents into subdirectories with the same name as
the corresponding ``.tex`` file:
::
collection/
latexpages.ini
article1/
article1.tex
references.bib
article2/
article2.tex
...
Note: the directory names cannot contain spaces.
Edit the INI file to configure the parts, their order and various other
options:
.. code:: ini
[make]
name = MY_COLL
directory = _output
[parts]
mainmatter =
article1
article2
The following will typeset all parts, copy their PDFs to the output directory,
and combine them into a single PDF. By default, this also creates a 2-up
version:
.. code:: bash
$ latexpages latexpages.ini
Check the `example directory`_ in the source distribution for a working
complete example.
Invocation
----------
Check the usage of the ``latexpages`` command:
.. code:: bash
$ latexpages --help
usage: latexpages [-h] [--version] [-c {latexmk,texify}] [--keep]
[--only <part>] [--processes <n>]
[filename]
Compiles and combines LaTeX docs into a single PDF file
positional arguments:
filename INI file configuring the parts and output options
(default: latexpages.ini in the current directory)
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
-c {latexmk,texify} use latexmk.pl or texify (default: guess from platform)
--keep keep combination document(s) and their auxiliary files
--only <part> compile the given part without combining
--processes <n> number of parallel processes (default: one per core)
Pagination
----------
The following command goes trough all main documents and **updates the page
number** in the first ``\setcounter{page}{<number>}`` line of the source
according to the page count of the preceding documents' compiled PDFs.
.. code:: bash
$ latexpages-paginate latexpages.ini
Make sure either the ``pdfinfo`` command-line tool (poppler_/xpdf_) or the
``pdftk`` executable from pdftk_ is available on your systems' path.
To use a different pattern for finding the ``\setcounter`` lines, set the
``update`` option in the ``paginate`` section of your INI file to a suitable
`regular expression`_.
.. code:: ini
[paginate]
update = \\setcounter\{page\}\{(\d+)\}
To also update the page numbers in your **table of contents**, put the
corresponding part name in the ``paginate`` section of your INI file.
Directory structure:
::
collection/
latexpages.ini
prelims/
prelims.tex
article1/
article1.tex
...
Configuration:
.. code:: ini
[parts]
frontmatter =
prelims
mainmatter =
article1
article2
[paginate]
contents = prelims
By default, ``latexpages-paginate`` will search and update
``\startpage{<number>}`` lines in the source. To use this as marker, define and
use a corresponding LaTeX-command in your table of contents, e.g.
``\newcommand{\startpage}[1]{#1}``. A complete example is in the `example
directory`_
To use a different pattern for finding the table of contents lines, change
the `regular expression`_ in the ``replace`` option.
.. code:: ini
[paginate]
replace = \\startpage\{(\d+)\}
Check the usage of the ``latexpages-paginate`` command:
.. code:: bash
$ latexpages-paginate --help
usage: latexpages-paginate [-h] [--version] [filename]
Computes and updates start page numbers in compiled parts and contents
positional arguments:
filename INI file configuring the parts and paginate options
(default: latexpages.ini in the current directory)
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
Advanced options
----------------
Below are annotated INI file sections showing the **default options** for all
available configuration settings.
The ``make`` section sets the **names** and file name templates_ for the
results:
.. code:: ini
[make]
name = COLL # name of the resulting PDF file
directory = _output # directory to copy/put the results
two_up = __%(name)s_2up # name of the 2-up version PDF file
make_two_up = true # create a 2-up version (yes/no)
# templates for the name of the copied part PDF files for each
# of the three possible groups (frontmatter, mainmatter, extras)
# available substitutions:
# (note that the percent-sign must be doubled here)
# %%(name)s name of the result file (see above)
# %%(part)s name of the part directory/filename
# %%(index0)d zero-based index inside group
# %%(index1)d one-based index inside group
frontmatter = _%%(name)s_%%(part)s
mainmatter = %%(name)s_%%(index1)02d_%%(part)s
extras = %(frontmatter)s
The ``parts`` section gives **space-delimited** lists of parts to compile
and/or include:
.. code:: ini
[parts]
frontmatter = # include at the beginning, roman page numbering
mainmatter = # include after frontmatter, arabic page numbering
extras = # compile and copy only (e.g. a separate cover page)
use_dvips = # use latex -> dvips -> ps2pdf for these parts
# instead of pdflatex (e.g. pstricks usage)
# pull the first mainmatter part into the roman page numbering area
first_to_front = false
The ``substitute`` section fills the template that is used to create the
combination document. With the default template, this allows to set the PDF
**meta data**:
.. code:: ini
[substitute]
# options for \usepackage{hyperref}
author = # pdfauthor
title = # pdftitle
subject = # pdfsubject
keywords = # pdfkeywords
The ``template`` section allows to customize the details of the **combination
document**:
.. code:: ini
[template]
filename = # use a custom template
filename_two_up = # different template for 2-up version
class = scrartcl # use this documentclass
# documentclass options for combination and 2-up version
options = paper=a5
options_two_up = paper=a4,landscape
# includepdfmerge options for combination and 2-up version
include = fitpaper
include_two_up = nup=2x1,openright
The ``compile`` section allows to change the **invocation options** of the
compilation commands used.
.. code:: ini
[compile]
latexmk = -silent # less verbose
texify = --batch --verbose --quiet # halt on error, less verbose
# only used with texify (latexmk calls these automatically)
dvips = -q
ps2pdf =
Finally, the ``paginate`` section controls ``latexpages-paginate`` (see above).
.. code:: ini
[paginate]
update = \\setcounter\{page\}\{(\d+)\} # search/update regex
contents = # part with table of contents
replace = \\startpage\{(\d+)\} # toc line search/update regex
See also
--------
- https://www.ctan.org/topic/compilation
- https://www.ctan.org/topic/confproc
- https://www.ctan.org/pkg/pdfpages
- https://www.ctan.org/pkg/confproc
- http://go.warwick.ac.uk/pdfjam
- http://community.coherentpdf.com
- https://github.com/JacksonLLee/cls-proceedings
License
-------
``latexpages`` is distributed under the `MIT license`_.
.. _pdfpages: https://www.ctan.org/pkg/pdfpages
.. _pip: https://pip.readthedocs.io
.. _TeX Live: https://www.tug.org/texlive/
.. _MikTeX: https://miktex.org
.. _latexmk: http://personal.psu.edu/jcc8/software/latexmk-jcc/
.. _texify: https://docs.miktex.org/manual/texifying.html
.. _poppler: https://poppler.freedesktop.org
.. _miktex-poppler-bin: https://www.ctan.org/search/?phrase=miktex-poppler-bin&ext=true&FILES=on
.. _xpdf: http://foolabs.com/xpdf/
.. _pdftk: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
.. _regular expression: https://docs.python.org/2/library/re.html
.. _example directory: https://github.com/xflr6/latexpages/tree/master/example
.. _templates: https://docs.python.org/2/library/stdtypes.html#string-formatting
.. _MIT license: https://opensource.org/licenses/MIT
.. |--| unicode:: U+2013
.. |PyPI version| image:: https://img.shields.io/pypi/v/latexpages.svg
:target: https://pypi.org/project/latexpages/
:alt: Latest PyPI Version
.. |License| image:: https://img.shields.io/pypi/l/latexpages.svg
:target: https://github.com/xflr6/latexpages/blob/master/LICENSE.txt
:alt: License
.. |Supported Python| image:: https://img.shields.io/pypi/pyversions/latexpages.svg
:target: https://pypi.org/project/latexpages/
:alt: Supported Python Versions
.. |Downloads| image:: https://img.shields.io/pypi/dm/latexpages.svg
:target: https://pypistats.org/packages/latexpages
:alt: Monthly downloads
.. |Build| image:: https://github.com/xflr6/latexpages/actions/workflows/build.yaml/badge.svg?branch=master
:target: https://github.com/xflr6/latexpages/actions/workflows/build.yaml?query=branch%3Amaster
:alt: Build
.. |Codecov| image:: https://codecov.io/gh/xflr6/latexpages/branch/master/graph/badge.svg
:target: https://codecov.io/gh/xflr6/latexpages
:alt: Codecov
Raw data
{
"_id": null,
"home_page": null,
"name": "latexpages",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "pdfpages, parallel, compilation, proceedings",
"author": null,
"author_email": "Sebastian Bank <sebastian.bank@uni-leipzig.de>",
"download_url": "https://files.pythonhosted.org/packages/f7/53/2e5d84422fee15dda03df6f832c0d1d6e67b1776a1cc85b64a37a07e503e/latexpages-0.8.tar.gz",
"platform": "any",
"description": "Latexpages\r\n==========\r\n\r\n|PyPI version| |License| |Supported Python| |Downloads|\r\n\r\n|Build| |Codecov|\r\n\r\nThis tool automates compiling LaTeX document collections (for working papers,\r\nproceedings, etc.) into a single combined PDF file using the pdfpages_ package.\r\n\r\nCreate an **INI file** giving the name and parts of your collection and build\r\nit with the ``latexpages`` command-line utility.\r\n\r\n``latexpages`` will start one parallel typesetting process per core for\r\nspeedup.\r\n\r\nAs each part is typeset independently, this allows to combine documents that\r\ncannot be merged into a single master-document (use of incompatible\r\npackages/options, latex-dvips-ps2pdf vs. pdflatex, etc.).\r\n\r\n\r\nLinks\r\n-----\r\n\r\n- GitHub: https://github.com/xflr6/latexpages\r\n- PyPI: https://pypi.org/project/latexpages/\r\n- Issue Tracker: https://github.com/xflr6/latexpages/issues\r\n- Download: https://pypi.org/project/latexpages/#files\r\n\r\n\r\nInstallation\r\n------------\r\n\r\nThis package runs under Python 3.10+, use pip_ to install:\r\n\r\n.. code:: bash\r\n\r\n $ pip install latexpages\r\n\r\nThe compilation requires a TeX distribution (e.g. `TeX Live`_ or MikTeX_) and\r\neither latexmk_ or MikTeX's texify_ utility being available on your system.\r\n\r\nThe optional automatic page numbering (see below) requires either the\r\n``pdfinfo`` command-line utility (included in poppler_-utils,\r\nmiktex-poppler-bin_, xpdf_), or the pdftk_ command-line utility (both\r\navailable cross-platform).\r\n\r\n\r\nUsage\r\n-----\r\n\r\nCreate a working directory holding your plain-text INI file with the latexpages\r\nconfiguration. Put all your documents into subdirectories with the same name as\r\nthe corresponding ``.tex`` file:\r\n\r\n::\r\n\r\n collection/\r\n latexpages.ini\r\n article1/\r\n article1.tex\r\n references.bib\r\n article2/\r\n article2.tex\r\n ...\r\n\r\nNote: the directory names cannot contain spaces.\r\n\r\nEdit the INI file to configure the parts, their order and various other\r\noptions:\r\n\r\n.. code:: ini\r\n\r\n [make]\r\n name = MY_COLL\r\n directory = _output\r\n \r\n [parts]\r\n mainmatter = \r\n article1\r\n article2\r\n\r\nThe following will typeset all parts, copy their PDFs to the output directory,\r\nand combine them into a single PDF. By default, this also creates a 2-up\r\nversion:\r\n\r\n.. code:: bash\r\n\r\n $ latexpages latexpages.ini\r\n\r\nCheck the `example directory`_ in the source distribution for a working\r\ncomplete example. \r\n\r\n\r\nInvocation\r\n----------\r\n\r\nCheck the usage of the ``latexpages`` command:\r\n\r\n.. code:: bash\r\n\r\n $ latexpages --help\r\n usage: latexpages [-h] [--version] [-c {latexmk,texify}] [--keep]\r\n [--only <part>] [--processes <n>]\r\n [filename]\r\n \r\n Compiles and combines LaTeX docs into a single PDF file\r\n \r\n positional arguments:\r\n filename INI file configuring the parts and output options\r\n (default: latexpages.ini in the current directory)\r\n \r\n optional arguments:\r\n -h, --help show this help message and exit\r\n --version show program's version number and exit\r\n -c {latexmk,texify} use latexmk.pl or texify (default: guess from platform)\r\n --keep keep combination document(s) and their auxiliary files\r\n --only <part> compile the given part without combining\r\n --processes <n> number of parallel processes (default: one per core)\r\n\r\n\r\nPagination\r\n----------\r\n\r\nThe following command goes trough all main documents and **updates the page\r\nnumber** in the first ``\\setcounter{page}{<number>}`` line of the source\r\naccording to the page count of the preceding documents' compiled PDFs.\r\n\r\n.. code:: bash\r\n\r\n $ latexpages-paginate latexpages.ini\r\n\r\nMake sure either the ``pdfinfo`` command-line tool (poppler_/xpdf_) or the\r\n``pdftk`` executable from pdftk_ is available on your systems' path.\r\n\r\nTo use a different pattern for finding the ``\\setcounter`` lines, set the\r\n``update`` option in the ``paginate`` section of your INI file to a suitable\r\n`regular expression`_.\r\n\r\n.. code:: ini\r\n\r\n [paginate]\r\n update = \\\\setcounter\\{page\\}\\{(\\d+)\\}\r\n\r\n\r\nTo also update the page numbers in your **table of contents**, put the\r\ncorresponding part name in the ``paginate`` section of your INI file.\r\n\r\nDirectory structure:\r\n\r\n::\r\n\r\n collection/\r\n latexpages.ini\r\n prelims/\r\n prelims.tex\r\n article1/\r\n article1.tex\r\n ...\r\n\r\nConfiguration:\r\n\r\n.. code:: ini\r\n\r\n [parts]\r\n frontmatter =\r\n prelims\r\n mainmatter = \r\n article1\r\n article2\r\n\r\n [paginate]\r\n contents = prelims\r\n\r\nBy default, ``latexpages-paginate`` will search and update\r\n``\\startpage{<number>}`` lines in the source. To use this as marker, define and\r\nuse a corresponding LaTeX-command in your table of contents, e.g.\r\n``\\newcommand{\\startpage}[1]{#1}``. A complete example is in the `example\r\ndirectory`_\r\n\r\nTo use a different pattern for finding the table of contents lines, change\r\nthe `regular expression`_ in the ``replace`` option.\r\n\r\n.. code:: ini\r\n\r\n [paginate]\r\n replace = \\\\startpage\\{(\\d+)\\}\r\n\r\n\r\nCheck the usage of the ``latexpages-paginate`` command:\r\n\r\n.. code:: bash\r\n\r\n $ latexpages-paginate --help\r\n usage: latexpages-paginate [-h] [--version] [filename]\r\n \r\n Computes and updates start page numbers in compiled parts and contents\r\n \r\n positional arguments:\r\n filename INI file configuring the parts and paginate options\r\n (default: latexpages.ini in the current directory)\r\n \r\n optional arguments:\r\n -h, --help show this help message and exit\r\n --version show program's version number and exit\r\n\r\n\r\nAdvanced options\r\n----------------\r\n\r\nBelow are annotated INI file sections showing the **default options** for all\r\navailable configuration settings.\r\n\r\nThe ``make`` section sets the **names** and file name templates_ for the\r\nresults:\r\n\r\n.. code:: ini\r\n\r\n [make]\r\n name = COLL # name of the resulting PDF file\r\n directory = _output # directory to copy/put the results\r\n \r\n two_up = __%(name)s_2up # name of the 2-up version PDF file\r\n make_two_up = true # create a 2-up version (yes/no)\r\n \r\n # templates for the name of the copied part PDF files for each\r\n # of the three possible groups (frontmatter, mainmatter, extras)\r\n # available substitutions:\r\n # (note that the percent-sign must be doubled here)\r\n # %%(name)s name of the result file (see above)\r\n # %%(part)s name of the part directory/filename\r\n # %%(index0)d zero-based index inside group\r\n # %%(index1)d one-based index inside group\r\n \r\n frontmatter = _%%(name)s_%%(part)s\r\n mainmatter = %%(name)s_%%(index1)02d_%%(part)s\r\n extras = %(frontmatter)s\r\n\r\n\r\nThe ``parts`` section gives **space-delimited** lists of parts to compile\r\nand/or include:\r\n\r\n.. code:: ini\r\n\r\n [parts]\r\n frontmatter = # include at the beginning, roman page numbering \r\n mainmatter = # include after frontmatter, arabic page numbering\r\n extras = # compile and copy only (e.g. a separate cover page)\r\n \r\n use_dvips = # use latex -> dvips -> ps2pdf for these parts\r\n # instead of pdflatex (e.g. pstricks usage)\r\n \r\n # pull the first mainmatter part into the roman page numbering area\r\n first_to_front = false\r\n\r\n\r\nThe ``substitute`` section fills the template that is used to create the\r\ncombination document. With the default template, this allows to set the PDF\r\n**meta data**:\r\n\r\n.. code:: ini\r\n\r\n [substitute] \r\n # options for \\usepackage{hyperref}\r\n author = # pdfauthor\r\n title = # pdftitle\r\n subject = # pdfsubject\r\n keywords = # pdfkeywords\r\n\r\n\r\nThe ``template`` section allows to customize the details of the **combination\r\ndocument**:\r\n\r\n.. code:: ini\r\n\r\n [template]\r\n filename = # use a custom template\r\n filename_two_up = # different template for 2-up version\r\n \r\n class = scrartcl # use this documentclass\r\n \r\n # documentclass options for combination and 2-up version\r\n options = paper=a5 \r\n options_two_up = paper=a4,landscape\r\n \r\n # includepdfmerge options for combination and 2-up version\r\n include = fitpaper\r\n include_two_up = nup=2x1,openright\r\n\r\n\r\nThe ``compile`` section allows to change the **invocation options** of the\r\ncompilation commands used.\r\n\r\n.. code:: ini\r\n\r\n [compile]\r\n latexmk = -silent # less verbose \r\n \r\n texify = --batch --verbose --quiet # halt on error, less verbose\r\n # only used with texify (latexmk calls these automatically)\r\n dvips = -q\r\n ps2pdf =\r\n\r\n\r\nFinally, the ``paginate`` section controls ``latexpages-paginate`` (see above).\r\n\r\n.. code:: ini\r\n\r\n [paginate]\r\n update = \\\\setcounter\\{page\\}\\{(\\d+)\\} # search/update regex\r\n contents = # part with table of contents\r\n replace = \\\\startpage\\{(\\d+)\\} # toc line search/update regex\r\n\r\n\r\nSee also\r\n--------\r\n\r\n- https://www.ctan.org/topic/compilation\r\n- https://www.ctan.org/topic/confproc\r\n- https://www.ctan.org/pkg/pdfpages\r\n- https://www.ctan.org/pkg/confproc\r\n- http://go.warwick.ac.uk/pdfjam\r\n- http://community.coherentpdf.com\r\n- https://github.com/JacksonLLee/cls-proceedings\r\n\r\n\r\nLicense\r\n-------\r\n\r\n``latexpages`` is distributed under the `MIT license`_.\r\n\r\n\r\n.. _pdfpages: https://www.ctan.org/pkg/pdfpages\r\n.. _pip: https://pip.readthedocs.io\r\n\r\n.. _TeX Live: https://www.tug.org/texlive/\r\n.. _MikTeX: https://miktex.org\r\n.. _latexmk: http://personal.psu.edu/jcc8/software/latexmk-jcc/\r\n.. _texify: https://docs.miktex.org/manual/texifying.html\r\n.. _poppler: https://poppler.freedesktop.org\r\n.. _miktex-poppler-bin: https://www.ctan.org/search/?phrase=miktex-poppler-bin&ext=true&FILES=on\r\n.. _xpdf: http://foolabs.com/xpdf/\r\n.. _pdftk: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/\r\n.. _regular expression: https://docs.python.org/2/library/re.html\r\n\r\n.. _example directory: https://github.com/xflr6/latexpages/tree/master/example\r\n\r\n.. _templates: https://docs.python.org/2/library/stdtypes.html#string-formatting\r\n\r\n.. _MIT license: https://opensource.org/licenses/MIT\r\n\r\n\r\n.. |--| unicode:: U+2013\r\n\r\n\r\n.. |PyPI version| image:: https://img.shields.io/pypi/v/latexpages.svg\r\n :target: https://pypi.org/project/latexpages/\r\n :alt: Latest PyPI Version\r\n.. |License| image:: https://img.shields.io/pypi/l/latexpages.svg\r\n :target: https://github.com/xflr6/latexpages/blob/master/LICENSE.txt\r\n :alt: License\r\n.. |Supported Python| image:: https://img.shields.io/pypi/pyversions/latexpages.svg\r\n :target: https://pypi.org/project/latexpages/\r\n :alt: Supported Python Versions\r\n.. |Downloads| image:: https://img.shields.io/pypi/dm/latexpages.svg\r\n :target: https://pypistats.org/packages/latexpages\r\n :alt: Monthly downloads\r\n\r\n.. |Build| image:: https://github.com/xflr6/latexpages/actions/workflows/build.yaml/badge.svg?branch=master\r\n :target: https://github.com/xflr6/latexpages/actions/workflows/build.yaml?query=branch%3Amaster\r\n :alt: Build\r\n.. |Codecov| image:: https://codecov.io/gh/xflr6/latexpages/branch/master/graph/badge.svg\r\n :target: https://codecov.io/gh/xflr6/latexpages\r\n :alt: Codecov\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Combine LaTeX docs into a single PDF",
"version": "0.8",
"project_urls": {
"CI": "https://github.com/xflr6/latexpages/actions",
"Homepage": "https://github.com/xflr6/latexpages",
"Issue Tracker": "https://github.com/xflr6/latexpages/issues"
},
"split_keywords": [
"pdfpages",
" parallel",
" compilation",
" proceedings"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "70a5cd7ae64178917eebb952a69a76a9951f430fed803ab52678ce1180423fc9",
"md5": "d894159a094ffef0292829a73acc2648",
"sha256": "1b6e607ad9bd17d5e99fef0c2d1d0a71231a874ac93799bc5e309d6942e8689a"
},
"downloads": -1,
"filename": "latexpages-0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d894159a094ffef0292829a73acc2648",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 19475,
"upload_time": "2025-10-12T18:27:07",
"upload_time_iso_8601": "2025-10-12T18:27:07.825422Z",
"url": "https://files.pythonhosted.org/packages/70/a5/cd7ae64178917eebb952a69a76a9951f430fed803ab52678ce1180423fc9/latexpages-0.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f7532e5d84422fee15dda03df6f832c0d1d6e67b1776a1cc85b64a37a07e503e",
"md5": "3dadc3fb3be0a3b7a294d2a859fd4f5d",
"sha256": "0c2a044de697583078fcc70842f8f99c3fcc8659ce286482ae47a97929bce046"
},
"downloads": -1,
"filename": "latexpages-0.8.tar.gz",
"has_sig": false,
"md5_digest": "3dadc3fb3be0a3b7a294d2a859fd4f5d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 24414,
"upload_time": "2025-10-12T18:27:09",
"upload_time_iso_8601": "2025-10-12T18:27:09.128402Z",
"url": "https://files.pythonhosted.org/packages/f7/53/2e5d84422fee15dda03df6f832c0d1d6e67b1776a1cc85b64a37a07e503e/latexpages-0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-12 18:27:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "xflr6",
"github_project": "latexpages",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "latexpages"
}