Skip to main content

Combine LaTeX docs into a single PDF

Project description

Latest PyPI Version License Wheel Status Downloads

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 latxepages command-line utility.

latxepages will start one parallel typesetting process per core for speedup.

Installation

This package runs under Python 2.7 and 3.3+, use pip to install:

$ pip install latexpages

The compilation requires a LaTeX distribution (e.g. TeX Live or MikTeX) and either latexmk or MikTeX’s texify utility being available on your system.

Usage

Create a working directory holding your plain-text INI file. Put all your documents into subdirectories with the same name as the corresponding .tex file:

collection/
    collection.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:

[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. By default, this also create a 2-up version:

$ latexpages collection.ini

Check the example directory in the source distribution for a working complete example.

Invocation

Check the usage of the latexpages command:

$ latexpages --help
usage: latexpages [-h] [--version] [-c latexmk|texify] [--keep]
                  filename [processes]

Compiles and combines LaTeX docs into a single PDF file

positional arguments:
  filename           .ini-style file configuring the parts and output options
  processes          number of parallel processes to use (default: one per
                     core)

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

Advanced options

Below are annotated INI file sections showing the default options for all available configuration settings.

The make section sets the names and name templates for the results:

[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:

[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. Currently this allows to set the PDF meta data:

[substitute]
# options for \usepackage{hyperref}
author =       # pdfauthor
title =        # pdftitle
subject =      # pdfsubject

Finally, the template section allows to customize the details of the combination document:

[template]
filename =        # use a custom template

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

See also

License

latexpages is distributed under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

latexpages-0.1.zip (22.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page