Skip to main content

LabPaper - A Jupyter notebook extension for exporting notebooks to academic papers.

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for labpaper-1.0.20.tar.gz
Algorithm Hash digest
SHA256 bfb310378d7d977615acd657f232934dcc34654c360219b43e2cebb19dd7a1ef
MD5 4a34a313af768392fa7dbaa2a2185f22
BLAKE2b-256 0c99311d881ffa05627d9ef10ce9e4b9cafccc5f95270dbac8ac1d6c0f5cf0fc

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for labpaper-1.0.20-py3-none-any.whl
Algorithm Hash digest
SHA256 ce7052e008dbea1ad7153f6c51365ec832017e9f03664d363f41c9b138aec3c3
MD5 fa4a0bdeaf94c2c90415a626c634897a
BLAKE2b-256 ea670659e563324997e659e8b408ebefdc3e672aba3845a488648df5960e4f97

See more details on using hashes here.

Provenance

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