Skip to main content

Profile manager of text processing pipelines: Pandoc filters, any text CLI filters. Atom+Markdown+Pandoc+Jupyter workflow, export to ipynb.

Project description

Pandoctools

Pandoctools is a combination of tools that help write reproducible markdown reports. They rely on Pandoc and Jupyter kernels.

Introduction articles:

“Glueing” part of pandoctools is a profile manager of text processing pipelines. It stores short crossplatform bash scripts that define chain operations over text. They are mostly Pandoc filters but any CLI text filter is OK.

Update instructions

(Update instructions to v.1.4.2)

  • Switch to bash profiles as batch profiles are no longer supported (and install bash if needed),
  • results=pandoc was a misunderstanding. The right way to output Markdown is to use
    from IPython.display import Markdown; Markdown('hello').
  • Import pandas, matplotlib and feather helpers from separate modules: matplotlibhelper, featherhelper, tabulatehelper,
  • v1.4.2 is not backward compatible but profiles can be easily fixed. Uninstall Pandoctools before updating. Update your custom bash scripts as names and logic changed. References: Default_args, Default (profile), Default_pipe.
  • Since v1.4.2 bash on Windows first rearched in the python environment, then in the $PATH, then by path from config, then in the %PROGRAMFILES%\Git.

Contents

Notable parts of Pandoctools

  • Pandoc, Jupyter, pandoc-crossref (dependence) - classical tools.
  • Pandoctools CLI app: profile manager of text processing pipelines. It stores short bash scripts - called profiles - that define chain operations over text. They are mostly Pandoc filters but any CLI text filter is OK. Profiles can be used to convert any document of choise in the specified manner.
  • Knitty (dependence): Knitty is a Pandoc filter and another CLI for Stitch/Knotr: reproducible report generation tool via Jupyter, Pandoc and Markdown. Insert python code (or other Jupyter kernel code) to the Markdown document and have code's results in the output document. Can even export to Jupyter ipynb notebooks. You can use ipynb-py-convert to convert .ipynb to .py to use with Knitty.
  • SugarTeX (dependence): SugarTeX is a more readable LaTeX language extension and transcompiler to LaTeX.
  • Pyppdf (dependence): Pyppeteer PDF. Prints html output to pdf via patched Pyppeteer.
  • Prism.js and github-markdown-css (integrated): used for default to PDF conversion (but with borrowing from Default_args to custom profile you can use them with to HTML conversion too).
  • libsass-python: tweak and write css with more convenient sass or scss (see Default.sass).
  • (optional) Tabulate Helper converts tabular data like Pandas dataframe to GitHub Flavored Markdown pipe table.
  • (optional) Matplotlib Helper: custom helper to tune Matplotlib experience in Atom/Hydrogen and Pandoctools/Knitty.
  • (optional) Feather Helper: concise interface to cache numpy arrays and pandas dataframes.
  • (optional) pypugjs: Write HTML via Pug that is much more readable.

Pandoctools is a tool for converting markdown document. But we also need tools for writing markdown and deploying python/Jupyter code blocks.
And the best one for it is:

Examples

Here are examples that demonstrate converting documents:

  • from markdown .md with Jupyter python code blocks, SugarTeX math and cross-references to ipynb notebook.
  • from Hydrogen/python notebook .py with Atom/Hydrogen code cells, Knitty markdown incerts (again with SugarTeX math and cross-references) to .ipynb notebook.

Examples are given for to .ipynb conversion but Pandoctools surely capable of conversion to .html, .pdf, .md.md or any Pandoc output format.

Extras:

  • If you need to capture Matplotlib plots please see matplotlibhelper (the approach showed in examples there can be used with other plot libraries).
  • If you need to autonumber sections see pandoc-crossref or this SE question
  • If you need criticmarkup support please consider using git repository with git-time-machine for tracking changes, <!-- html comments --> for adding notes, pigments for highlighting text.

Install

If you have an antivirus then the first or two runs may fail - there may be errors like "Permission denied" because of the antivirus checking all the components.

Via conda

  • (on Windows) Install 64-bit Git together with Bash,
  • Install 64-bit Miniconda3 (≥3.6),
  • (on Windows) Creating "pandoctools" conda environment:
    call activate root
    conda update conda
    conda create -n pandoctools -c defaults -c conda-forge "pandoctools>=1.4.5"
    call activate pandoctools
    pandoctools-ready
    
  • (on Unix) Creating "pandoctools" conda environment:
    source activate root
    conda update conda
    conda create -n pandoctools -c defaults -c conda-forge "pandoctools>=1.4.5"
    source activate pandoctools
    pandoctools-ready
    
  • The significant commands are the following:
    conda install -c defaults -c conda-forge "pandoctools>=1.4.5"
    pandoctools-ready
    
    But it's recommended to create a dedicated conda environment for the Pandoctools.

Via pip

  • (on Windows) Install Git together with Bash,
  • Install Pandoc (maybe pip would also install it but I'm not sure),
  • Install latest stable pandoc-crossref (compatible with pandoc version) to the dedicated virtual environment's .\Scripts (Windows) or ./bin (Unix) folder.
  • Install Pandoctools:
    pip install pandoctools
    pandoctools-ready
    

Useful tips (reload imported modules in Hydrogen, Python kernel, R kernel, Typescript kernel)

Useful tips

Alternatives to R Markdown (Markdown-based Literate Programming)

Alternatives to R Markdown

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

pandoctools-1.4.8.tar.gz (193.8 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