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.7.tar.gz (133.5 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.7-py3-none-any.whl (136.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: labpaper-1.0.7.tar.gz
  • Upload date:
  • Size: 133.5 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.7.tar.gz
Algorithm Hash digest
SHA256 a705cbd4d9a1bfed7ad1636144131d366ac1e15d5f3c0fe503a7661139fa69e9
MD5 a45843deba4619589ce10caaaf299a48
BLAKE2b-256 58c2385fa1ce0a746e9690d6f79099d9b78842ecf84214f213c5c7c6330f9dd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for labpaper-1.0.7.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.7-py3-none-any.whl.

File metadata

  • Download URL: labpaper-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 136.6 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 24b1501cd57f3bc90b8d1711337619cf5a1fc7e750b6ea8156a20ebdb65c0a23
MD5 c31e4ad0c719f16e5d3d6d6df3a4f8d5
BLAKE2b-256 7dab778a515c6efa2b7d03588467846100aaf5f763785709172ac751a6489ebb

See more details on using hashes here.

Provenance

The following attestation bundles were made for labpaper-1.0.7-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