LabPaper Documentation

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.