Skip to main content

A Jupyter notebook exporter for academic papers using Tufte style

Project description

LabPaper

A sophisticated Jupyter notebook exporter designed for creating academic papers. This package provides a seamless integration between Jupyter notebooks and professional academic paper formats.

Features

  • Export Jupyter notebooks to professional academic paper formats
  • Support for Nature journal format
  • Customizable templates and exporters
  • Advanced preprocessing capabilities
  • Flexible filtering system

Installation

pip install labpaper

Quick Start

Basic usage example:

jupyter nbconvert --to nature your_notebook.ipynb

Documentation

  • Exporters - Document conversion and output generation
  • Filters - Content transformation and processing
  • Preprocessors - Pre-conversion notebook manipulation
  • Templates - Document layout and styling
  • Embedded Resources - Any additional resources required by your exporter or template

Requirements

  • Python ≥ 3.11
  • Jupyter ≥ 7.0.0
  • nbconvert ≥ 7.16.0
  • pandoc >= 3.6
  • A LaTeX distribution (e.g., MikTeX, TeX Live, etc.)
  • Other dependencies are handled automatically during installation

Development

  1. Clone the repository:

    git clone https://github.com/yourusername/labpaper.git
    cd labpaper
    
  2. Create and activate a virtual environment:

    python -m venv env
    source env/bin/activate  # On Windows use `env\Scripts\activate`
    
  3. Install the package in development mode along with development dependencies:

    pip install -e .[dev]
    
  4. Install pre-commit hooks:

    pre-commit install
    
  5. Add New Exporters:

    • Create a new Python file for your exporter in the labpaper/exporters directory.
    • Implement your exporter class by inheriting from the base exporter class provided by LabPaper.
    • Ensure your exporter handles the conversion logic specific to the desired output format.
    • Register your new exporter in the pyproject.toml file under the [tool.labpaper.exporters] section to make it available for use.
  6. Add New Filters:

    • Create a new Python file for your filter in the labpaper/filters directory.
    • Implement your filter function or class, ensuring it processes the content as required.
    • Register your new filter in the pyproject.toml file under the [tool.labpaper.filters] section to integrate it into the conversion pipeline.
  7. Add New Preprocessors:

    • Create a new Python file for your preprocessor in the labpaper/preprocessors directory.
    • Implement your preprocessor class by inheriting from nbconvert.preprocessors.Preprocessor.
    • Define the preprocess method to modify notebook content before conversion.
    • Register your new preprocessor in the labpaper/preprocessors/__init__.py file to include it in the available preprocessors list. Note that preprocessors will be refactored in a later release for better modularity.
  8. Create New Templates:

    • Create a new subdirectory for your template in the templates directory.
    • Add the necessary Jinja2 template files (.tex.j2) to define the document structure and styling.
    • Include a conf.json file in your template subdirectory to specify template metadata and configuration options, following the nbconvert documentation.
    • Register your new template in the pyproject.toml file under the [tool.labpaper.templates] section to make it available for use.
  9. Place Resources in the Appropriate texmf Subdirectory:

    • Organize any additional resources (e.g., .bst files, .cls files, custom style files) required for TeX/LaTeX compilation in the texmf directory.
    • Follow the existing directory structure within texmf to ensure resources are correctly located and accessible during the PDF generation process.
    • Update any relevant documentation or configuration files to reference the new resources as needed.

Contributing

We welcome contributions to LabPaper! Here's how you can help:

Please read our Contributing Guidelines before submitting any contributions.

License

This project is licensed under the BSD License - see the LICENSE file for details.

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

labpaper-1.0.6.tar.gz (133.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

labpaper-1.0.6-py3-none-any.whl (136.2 kB view details)

Uploaded Python 3

File details

Details for the file labpaper-1.0.6.tar.gz.

File metadata

  • Download URL: labpaper-1.0.6.tar.gz
  • Upload date:
  • Size: 133.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for labpaper-1.0.6.tar.gz
Algorithm Hash digest
SHA256 42557697daf7ce00fb032a636e08106c12a2f16c2a7fcc6906a355433d2aad5e
MD5 a3087a1f888db632ac2cc1cf47cf1160
BLAKE2b-256 c3a2b40f2419ed22b36d2c0b96492d240ecf16292c561932c7817f734efb4c98

See more details on using hashes here.

Provenance

The following attestation bundles were made for labpaper-1.0.6.tar.gz:

Publisher: publish.yml on Khlick/LabPaper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file labpaper-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: labpaper-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 136.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for labpaper-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b240913f655ef30792ef4accba00beab7be5c2661187e64b3bb3d14df58d6e69
MD5 18c5ab3ea12c2053eed95908f0e44223
BLAKE2b-256 631b8c3a230fe47a231d6482316bebed444859bacd71f92d0b5ad5c430f62229

See more details on using hashes here.

Provenance

The following attestation bundles were made for labpaper-1.0.6-py3-none-any.whl:

Publisher: publish.yml on Khlick/LabPaper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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