From e24db9ded5f5092443c19f57c85228a9aea0ad34 Mon Sep 17 00:00:00 2001 From: Christophe Demko Date: Wed, 11 Dec 2019 23:43:18 +0100 Subject: [PATCH 1/6] First commit --- .travis.yml | 19 + LICENSE | 29 ++ MANIFEST.in | 4 + README.md | 76 ++++ docs/conf.py | 196 ++++++++++ docs/images/pandoc-beamer-arrow-sample.pdf | Bin 0 -> 44220 bytes docs/images/pandoc-beamer-arrow-sample.txt | 13 + docs/index.rst | 20 ++ docs/requirements.txt | 3 + pandoc_beamer_arrow.py | 397 +++++++++++++++++++++ setup.cfg | 11 + setup.py | 91 +++++ tests/__init__.py | 0 tests/test_arrow.py | 329 +++++++++++++++++ tox.ini | 13 + 15 files changed, 1201 insertions(+) create mode 100644 .travis.yml create mode 100644 LICENSE create mode 100644 MANIFEST.in create mode 100644 README.md create mode 100644 docs/conf.py create mode 100644 docs/images/pandoc-beamer-arrow-sample.pdf create mode 100644 docs/images/pandoc-beamer-arrow-sample.txt create mode 100644 docs/index.rst create mode 100644 docs/requirements.txt create mode 100644 pandoc_beamer_arrow.py create mode 100644 setup.cfg create mode 100644 setup.py create mode 100644 tests/__init__.py create mode 100644 tests/test_arrow.py create mode 100644 tox.ini diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..a7a3be7 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,19 @@ +language: python +python: + - "3.6" +install: + - wget https://github.com/jgm/pandoc/releases/download/2.8.1/pandoc-2.8.1-1-amd64.deb + - sudo dpkg -i pandoc-2.8.1-1-amd64.deb + - pandoc -v + - pip install -e .[test] + - pip install black + - pip install pylint + - pip install coverage + - pip install coveralls +script: + - black --check pandoc_beamer_arrow.py setup.py tests/test_arrow.py + - pylint pandoc_beamer_arrow.py setup.py + - coverage run -a --source=pandoc_beamer_arrow setup.py test +after_success: + - coveralls + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5fa142e --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2019, Christophe Demko +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..b42efab --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,4 @@ +include README.md +include LICENSE +include MANIFEST.in + diff --git a/README.md b/README.md new file mode 100644 index 0000000..c240ae2 --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ +# pandoc-beamer-arrow +[![Build Status](https://img.shields.io/travis/chdemko/pandoc-beamer-arrow/develop.svg?logo=travis)](https://travis-ci.org/chdemko/pandoc-beamer-arrow/branches) +[![Coveralls](https://img.shields.io/coveralls/github/chdemko/pandoc-beamer-arrow/develop.svg?logo=Codecov&logoColor=white)](https://coveralls.io/github/chdemko/pandoc-beamer-arrow?branch=develop) +[![Code Climate](https://codeclimate.com/github/chdemko/pandoc-beamer-arrow/badges/gpa.svg)](https://codeclimate.com/github/chdemko/pandoc-beamer-arrow/) +[![Code Beat](https://codebeat.co/badges/8430d731-6b3d-401a-a26f-1172904e8e5b)](https://codebeat.co/projects/github-com-chdemko-pandoc-beamer-arrow-develop/) +[![Codacy](https://img.shields.io/codacy/grade/443f4a26698a4ba0be5064fe9323f2a0.svg?logo=codacy&logoColor=white)](https://www.codacy.com/app/chdemko/pandoc-beamer-arrow) +[![CodeFactor](https://www.codefactor.io/repository/github/chdemko/pandoc-beamer-arrow/badge)](https://www.codefactor.io/repository/github/chdemko/pandoc-beamer-arrow) +[![PyPI version](https://img.shields.io/pypi/v/pandoc-beamer-arrow.svg?logo=Python&logoColor=white)](https://pypi.org/project/pandoc-beamer-arrow/) +[![PyPI format](https://img.shields.io/pypi/format/pandoc-beamer-arrow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gwPFiYw92eBNAAAAgJJREFUeNrt3T1WwkAUgNH31Br3ogWptdAlgyvQxYgHeh0LKKxI+PHAzNyvRo8xlxl5CZKllBIaax0Rr5n53tqB3Ti3k7qPiEUpZQAAggEACAYAIBgAgGAAoG8Ey9oRAHBas9oR5NgcIDOz5TN4pjnIJiJeapwTWAFGfMR2CDRlJViUUuYAtAfgOSK+Jv5N8FbddlBGav4M7+9795jHUsqqTGtdFQIAxgE0jQCAaQCaRQDAdABNIgDgMADNIQDgcAB/EHxWjwCA4wDsvvahegQAHA+gCQQAnAagegQAnA6gagQAnAdArQhcDdx//D+ZeXvg95tHxDK21wbG2mTm/SWP38Wgcz+jMj8i4ikiVhMePrv0z3vnlO1/grS+DVoBehfuVwCAABAAAkAAqLO6nwP896Tz2ucIVgBbgAAQAAJAAAgAASAABIAAEAACQAAIADXZyfcD9P55A7W/c8oKYAsQAAJAAAgAASBzgJ5eB1sBBIAAEAACQAAIAJkDTM/9AO4HEAACQAAIAAEgANTPHMD9AFYAASAABIAAEAACQP3MAWq/H6D3OYYVwBYgAASAABAAAkDmAF5HWwEEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAXVWj/x+g988FtAIIAAEgAASAABAAaqhfB1BFkJjdTNQAAAAASUVORK5CYII=)](https://pypi.org/project/pandoc-beamer-arrow/) +[![License](https://img.shields.io/pypi/l/pandoc-beamer-arrow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABmCAYAAAADI5lUAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gwPFiQKA106BAAABUNJREFUeNrtnV2IFlUYx3/P625qbrGlpWmWdaMVKau2EmpCrSDqxRpUUkr0SYVEFyFRUXQhfUAihTdCESVpKpKQpLZBsghltn605VVKpmZgGYvmbhpPFzMbWu3LO7szO1//H+zN7sw5c57nd8685+zMeY0quLsB04FW4A7gWmAMMAyRRbqBE8BRYCfwMfCNmXlfJ1iV5LcAbwBNimuu+Q54xcw21iSAuzcA7wOLFLtCsQl4yMxO9ymAu48HtgK3Kl6F5ACw0Mx++o8AYc/fBUxWnArN98DtZtYFULngDx8o+aXgZuDdi0YAd58fDv2iPMwzs+0WTvX2qfeXjv1Ak7n7DOBLxaOU3FYhWOQR5aS1AsxWHErLnArB8q4oJ+PM3buBoRFO6gJ2K3aZpBm4PMLxPXh09ijO2cTd90RNZkVhKzcSQAIICSAkgJAAQgIICSAkgJAAQgIICSAKT91gVOLui4EVKbZzvZm9kGD7rgHmEbw9NRoYCTQCvwInCd7UaQPaep/GLZUABP+ivDHFdo5KKPHTgNeAu6jyllXIk8A5d/8QeN7MjusWkGPcfRnBs5QtNSS/l3rgQaDT3e+UAPlN/iPA2wMYQa8APnH3ZgmQv+SPBlbGUNRw4D13r5MA+WIF0R67qsZNwMMSID+9vwF4IOZin5AA+WE+8W+O0eTuN0iAfNCSs3IlQMxMSqjciRIgH0wsmgCDNQU5CKxJMXHtMXwAHAJcndD1jSu0AGbWHkcSUmZEgmVfqltA9kkySQ0SIPsMyWnZEiAm/kiw7DMSIPt0AecSKvukBMg4ZvYXcCSh4g9LgHzwVc7KzcY00N0XAM+kmLitZrYqhnLagPsTuL7PCy0AwUJHS4oCHMpwok4AnboF5ONzwJFwFIiTd6pt5y4BssebMZbVA6xOszESIDrbiW+TrDVm9rMEyNdtwIHHgPMDLOoX4KW02yMB+ifBAWCgs4qnzex3CZBfXgS+7ee568xsQxYaIQH6Pwr0ELzk8WfEU48Dy7LSDgkwMAn2Eu2dRwceNbPfJEBxeD3s1bWwzcw+zdLFD9ZK4DHiX0CJwsEkbwXuvrrGkWBl5vTVXsGxxHBaDXE76+71CV+H9gpOiRM1HHPKzM5l7cIlQDxcX8Mxo9x9uAQoJktqOKYeuE8CFO/+P5NgabgWXnX3sRKgOMmfDWyJMJsaA+xw9wkSIN+Jr7j7U+HUdmTE028Bdrv73NKsA4Q9ZUmK7Ww3s7UxtaUZeAuYMYBirgpHgg3AcjP7sdACEOyE8XjKsq8dSI8H5gLPEu+jbfcCi9x9PbDKzDqKKkBeh/rpwN0Eu4Jcl1A19cBSYKm77wXWAZvN7AcJkG7ypwBfD3K1TeHPy+7eaGbnk65QHwL7ZlKKdY8AxmsWkC5XlqF+CdA3jWWoXwL0TUPK9V8mAdLlkpTrr5cA6VInAcpNfRnqHyzLu4jvBc3+0J8NGE6lfM1nB6UWPRJWHPRImNBnACEBhAQQEkBIACEBhAQQEkBIACEBhAQQ/8bcvRsYGuGcLuLbJ0/ESzPRvtW0x9z9MDBBsSslhyoE27eIcnKsAuxUHErLFxWC15tFOdli7m7AXmCK4lEq9gFTK+Hmx88pHqVjuZkFj4SZ2TZgs2JSGjaa2WcA1vsbd28AdgGTFZ9Csx+YaWZn4IKVQDM7DSwIDxDFve8v7E3+RQKEEhwFZgGbFKvC8REwK8wx/ytA70hgZvcQbInSobjlns6w1y++sOf/k+9qZ4ZTxKlAKzCH4OvfxgLDFNdM0k2wc/lRggW+LUBHtW8l+xuWwqBw5I0ApAAAAABJRU5ErkJggg==)](https://raw.githubusercontent.com/chdemko/pandoc-beamer-arrow/develop/LICENSE) +[![Python version](https://img.shields.io/pypi/pyversions/pandoc-beamer-arrow.svg?logo=Python&logoColor=white)](https://pypi.org/project/pandoc-beamer-arrow/) +[![Downloads](https://pepy.tech/badge/pandoc-beamer-arrow)](https://pepy.tech/project/pandoc-beamer-arrow) +[![Development Status](https://img.shields.io/pypi/status/pandoc-beamer-arrow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gwPFiUnX5lXMAAAAlBJREFUeNrt3b1qlEEUBuB3TNDCP7wDOwv/cgv+pDC3YcDe+xBFFFLoDWhhpxiD12Ch1mJsg7irjRLGYjcKEbLC92n223meMgQSzrx7Zs6wMAkAAAAAAAAAAAAAAAAAAAAw78r+H9RaLyZZT3Itydkkx5XpUH1L8iHJVpJHpZS3/yQAtdZjSe4muZXkiLrPpd0kG0lul1K+9xaA6eK/SHJFjQfhdZIbfYRg75N+z+IPytUkd3rpANM9/422P8jt4HIp5V3XDrBu8QdpKcnNPraA62o5WKt9bAHjJCfUcpDGpZRTXQNQ1fGAApVSDvPvz1qfrv+fvb9xAiAACACDVf80qrU+q7Wecwhs4BB4gM+ZXBRt6wBtOpO/uC7WARa3AyTJqJRyWgdo18xLIgEwBSAACABt3hOYAhZ7Cph9TyAAzQYgSZ4KQNsBGAlA2wFwCDQFIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAIvniwC07aVvBM2wwN8I2kmyogO0Z5TkSZKVUsqnZfVou4PpAKYABAABYDHnfAFofM6feUh0D7Cw9wA7e6OeDtDwnD/rl90DNN6hdABTAAJAs5aTjJOcVIreT+H/68DXuQNsW+bB+thHAF6p42Btdp4iaq0XMnk2bkk9B2U3yaVSyvtOHWD6Fu2Geg7Ow66Ln/x+OvZokueZPBjN/NtKslZK+dHLGDh9g3YtyYNpa2F+2/79vhb/VwfYN/acz+RFytVMno/3puDh+prJ8/GbSR730fYBAAAAAAAAAAAAAAAAAACAYfkJuHbYr8dtGYwAAAAASUVORK5CYII=)](https://pypi.org/project/pandoc-beamer-arrow/) +[![Docs](https://img.shields.io/readthedocs/pandoc-beamer-arrow.svg?logo=read-the-docs&logoColor=white)](http://pandoc-beamer-arrow.readthedocs.io/en/latest/) +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAANwSURBVGiB7Zndi1VlFIefNZPR9GkTmSkOhIZYeBFiIDEYNUREXVQEQUhK4hdEf0GQf0IUU2BdhHUjNQTpRRdl0NdFXYRZCA0SJTZ9CJEDmY49Xewzw57Xfc7+OGfOEJzn5vCuvfbav/Wutd+993tgwIAB/2ui3xdUVwKPAbcDPwDHIuJiv3XURr1HPaTOuphpdeNy6ytEvUbdoX5pZ75Xr15uvQuoa9WX1N9KhOfZsdyih9QJ9Yg6V0P4PF8sl/CV6gvq6QaiU7b0U/g29bB6oQfC5znUD+HXqu/2UHSeWbNltjJDDXKYBJ4EfgFeBo42iNGO64BnexhvMeoqsxt0Vh3L2V/tYRVOqZUfsHUrcCcwDJyKiJ9y9g9rxunERuDBqs51Ezjb+t2UrwDwcM04Zeyv6lj7XUj9GtgCzABHgA3AI3XjlDAH3BERZ3ocF9TnetjvnThYRU+TCowAZ4DRuufWZAYYi4hLnZxqL6MR8TfwVlNVNVgNPL4kkdUN6uU+tNEnZVo6VkC9tcgeEdPAR83Sr8V29e5ODmUttLvDscn6ehpReUldhLpebTvL6rD6Yx/a6C/1xnY6OlVgf6fjEXEZeKPSbHTHDcAztc5QR9Q/1OOJfSgZr1b/6UMVTrTT2m6GnwZuKbBvVRfW/4iYAaaqT01jNqvjRQfaJdDuxhkBdia21xqKqku1m9ls+2OetIXuN9sGSVvpRB/a6KK6JtVbVIHnS3JcD0wktterTE6XrAB2pcZ0JkfJ+r+MA8n4MHC+sbTq7FGH84a0AjvJ+ryMR819D0TEeeDtruWVMwbcmzcsJGD2GbevYqBhYE9i69eTeVV+kK/ANrJPxqrsNrcdGBEngU+701aJb/ODfAJ1xAPcBjyR2Ja6Cu9FxOm8IZ/AdIOA6c08RfYhshQcB/amxnwCXwHf1Qw6rm6eH7T2+d9sJK+YObJJmYiIByLiXEfv1kPs15IHWcpk4rPOZpu7ec6qB9W1tVNWR9UX1Z8LEhgvuNgVr7vq+w1E/6t+rD6lrqgtvCCRq0x2i9U1rQulHEj8Hqoh/E/1FXVT16IrJjZVIOJk4hPqZyXCv1H3qtf3RXhO3M3qsQJB2xO/dS2ReS6o76j39UpP438p1QlgK3BTy/R5RHyQ+AyRbTveBZwDjkbE702vOWDAgCv5DyyzjR7/CUzHAAAAAElFTkSuQmCC)](https://pypi.org/project/black/) + +*pandoc-beamer-arrow* is a [pandoc] filter for adding admonition to `div`s or `codeblock`s elements. + +It uses the *tcolorbox* LaTeX package to generate admonitions and the *footnote* LaTeX package to handle correctly footnotes in admonition. + +[pandoc]: http://pandoc.org/ + +Documentation +------------- + +See the [Read the docs pages](http://pandoc-beamer-arrow.readthedocs.io/en/latest/). + +Usage +----- + +To apply the filter, use the following option with pandoc: + + --filter pandoc-beamer-arrow + +Installation +------------ + +*pandoc-beamer-arrow* requires [python 3.6], a programming language that comes pre-installed on linux and Mac OS X, and which is easily installed [on Windows]. + +Install *pandoc-beamer-arrow* as root using the bash command + + pip install pandoc-beamer-arrow + +To upgrade to the most recent release, use + + pip install --upgrade pandoc-beamer-arrow + +To upgrade to the current code, use + + pip install --upgrade --force git+https://github.com/chdemko/pandoc-beamer-arrow + +`pip` is a script that downloads and installs modules from the Python Package Index, [PyPI]. It should come installed with your python distribution. If you are running linux, `pip` may be bundled separately. On a Debian-based system (including Ubuntu), you can install it as root using + + apt-get update + apt-get install python-pip + +Make sure you have the + +* *xcolor* + +LaTeX packages. On linux you have to install some extra libraries **before** *pandoc-beamer-arrow*. On a Debian-based system (including Ubuntu), you can install it as root using + + apt-get texlive-latex-extra + +[python 3.6]: https://www.python.org +[on Windows]: https://www.python.org/downloads/windows +[PyPI]: https://pypi.org + + +Getting Help +------------ + +If you have any difficulties with pandoc-beamer-arrow, please feel welcome to [file an issue] on github so that we can help. + +[file an issue]: https://github.com/chdemko/pandoc-beamer-arrow/issues + diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..d11a6a3 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,196 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +import os +import sys + +sys.path.insert(0, os.path.abspath("../..")) + +on_rtd = os.environ.get("READTHEDOCS", None) == "True" + +# -- Project information ----------------------------------------------------- + +project = "pandoc-latex-admonition" +copyright = "2017-2019, Christophe Demko" +author = "Christophe Demko" + +# The short X.Y version +version = "1.3" +# The full version, including alpha/beta/rc tags +release = "1.3.1" + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' +needs_sphinx = "1.8" + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [] + +# Add any paths that contain templates here, relative to this directory. +templates_path = [] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = ".rst" + +# The master toctree document. +master_doc = "index" + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +# pygments_style = None +pygments_style = "sphinx" + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +if not on_rtd: # only import and set the theme if we're building docs locally + import sphinx_rtd_theme + + html_theme = "sphinx_rtd_theme" + html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = [] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = "pandoc-latex-admonitiondoc" + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + ( + master_doc, + "pandoc-latex-admonition.tex", + "pandoc-latex-admonition Documentation", + "Christophe Demko", + "manual", + ) +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ( + master_doc, + "pandoc-latex-admonition", + "pandoc-latex-admonition Documentation", + [author], + 1, + ) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ( + master_doc, + "pandoc-latex-admonition", + "pandoc-latex-admonition Documentation", + author, + "pandoc-latex-admonition", + "One line description of project.", + "Miscellaneous", + ) +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ["search.html"] diff --git a/docs/images/pandoc-beamer-arrow-sample.pdf b/docs/images/pandoc-beamer-arrow-sample.pdf new file mode 100644 index 0000000000000000000000000000000000000000..96b6c80ca1d3250302ddf93b0cf02b0a9b10c302 GIT binary patch literal 44220 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�}y`>N#G4wWSIYs}mf`rHm;Ne?H^hcF#CENuzi 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 literal 0 HcmV?d00001 diff --git a/docs/images/pandoc-beamer-arrow-sample.txt b/docs/images/pandoc-beamer-arrow-sample.txt new file mode 100644 index 0000000..926a593 --- /dev/null +++ b/docs/images/pandoc-beamer-arrow-sample.txt @@ -0,0 +1,13 @@ +[**abc**]{.beamer-arrow-node #id1} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer auctor blandit felis ut +elementum. Donec accumsan ex at orci volutpat iaculis. Proin in risus metus. Nunc sit amet +auctor nunc, quis consectetur turpis. Maecenas gravida blandit odio vitae dignissim. In +maximus purus quis enim molestie iaculis. Quisque ut urna nec justo dictum accumsan ut +quis odio. Sed nulla erat, posuere at sapien tempus, venenatis vulputate mi. Nam pretium +sem id enim condimentum, vel porttitor dolor viverra. Sed commodo est sit amet nisi +pharetra lacinia. Vivamus consectetur ut mauris quis posuere. Pellentesque eget ipsum et +nibh ullamcorper ullamcorper eget eu velit. +[**def**]{.beamer-arrow-node #id2 color="pink" from="2"} Pellentesque eget ipsum et nibh +ullamcorper ullamcorper eget eu velit. + +[]{.beamer-arrow-edge src="id1" dest="id2" angle_src="90" color="pink" linewidth="3" from="2"} diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..8d93ccc --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,20 @@ +.. pandoc-numbering documentation master file, created by + sphinx-quickstart on Mon Dec 17 11:33:59 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to pandoc-beamer-arrow's documentation! +=================================================== + +Explanation +----------- + +*pandoc-beamer-arrow* creates arrows between text elements for beamer presentation. + +Example +------- + +Demonstration: Using +:download:`pandoc-beamer-arrow-sample.txt ` +as input gives output file in +:download:`pdf `. diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..ef39d0f --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,3 @@ +Sphinx>=1.8.0 +sphinx_rtd_theme>=0.4 + diff --git a/pandoc_beamer_arrow.py b/pandoc_beamer_arrow.py new file mode 100644 index 0000000..e3894f6 --- /dev/null +++ b/pandoc_beamer_arrow.py @@ -0,0 +1,397 @@ +#!/usr/bin/env python + +""" +Pandoc filter for adding admonition in LaTeX +""" +from panflute import ( + run_filter, + RawInline, + MetaList, + MetaInlines, + convert_text, + Plain, + debug, +) + + +def x11colors(): + """ + Get the x11 colors + + Returns + ------- + The x11 colors + """ + # See https://www.w3.org/TR/css-color-3/#svg-color + return { + "aliceblue": "F0F8FF", + "antiquewhite": "FAEBD7", + "aqua": "00FFFF", + "aquamarine": "7FFFD4", + "azure": "F0FFFF", + "beige": "F5F5DC", + "bisque": "FFE4C4", + "black": "000000", + "blanchedalmond": "FFEBCD", + "blue": "0000FF", + "blueviolet": "8A2BE2", + "brown": "A52A2A", + "burlywood": "DEB887", + "cadetblue": "5F9EA0", + "chartreuse": "7FFF00", + "chocolate": "D2691E", + "coral": "FF7F50", + "cornflowerblue": "6495ED", + "cornsilk": "FFF8DC", + "crimson": "DC143C", + "cyan": "00FFFF", + "darkblue": "00008B", + "darkcyan": "008B8B", + "darkgoldenrod": "B8860B", + "darkgray": "A9A9A9", + "darkgreen": "006400", + "darkgrey": "A9A9A9", + "darkkhaki": "BDB76B", + "darkmagenta": "8B008B", + "darkolivegreen": "556B2F", + "darkorange": "FF8C00", + "darkorchid": "9932CC", + "darkred": "8B0000", + "darksalmon": "E9967A", + "darkseagreen": "8FBC8F", + "darkslateblue": "483D8B", + "darkslategray": "2F4F4F", + "darkslategrey": "2F4F4F", + "darkturquoise": "00CED1", + "darkviolet": "9400D3", + "deeppink": "FF1493", + "deepskyblue": "00BFFF", + "dimgray": "696969", + "dimgrey": "696969", + "dodgerblue": "1E90FF", + "firebrick": "B22222", + "floralwhite": "FFFAF0", + "forestgreen": "228B22", + "fuchsia": "FF00FF", + "gainsboro": "DCDCDC", + "ghostwhite": "F8F8FF", + "gold": "FFD700", + "goldenrod": "DAA520", + "gray": "808080", + "green": "008000", + "greenyellow": "ADFF2F", + "grey": "808080", + "honeydew": "F0FFF0", + "hotpink": "FF69B4", + "indianred": "CD5C5C", + "indigo": "4B0082", + "ivory": "FFFFF0", + "khaki": "F0E68C", + "lavender": "E6E6FA", + "lavenderblush": "FFF0F5", + "lawngreen": "7CFC00", + "lemonchiffon": "FFFACD", + "lightblue": "ADD8E6", + "lightcoral": "F08080", + "lightcyan": "E0FFFF", + "lightgoldenrodyellow": "FAFAD2", + "lightgray": "D3D3D3", + "lightgreen": "90EE90", + "lightgrey": "D3D3D3", + "lightpink": "FFB6C1", + "lightsalmon": "FFA07A", + "lightseagreen": "20B2AA", + "lightskyblue": "87CEFA", + "lightslategray": "778899", + "lightslategrey": "778899", + "lightsteelblue": "B0C4DE", + "lightyellow": "FFFFE0", + "lime": "00FF00", + "limegreen": "32CD32", + "linen": "FAF0E6", + "magenta": "FF00FF", + "maroon": "800000", + "mediumaquamarine": "66CDAA", + "mediumblue": "0000CD", + "mediumorchid": "BA55D3", + "mediumpurple": "9370DB", + "mediumseagreen": "3CB371", + "mediumslateblue": "7B68EE", + "mediumspringgreen": "00FA9A", + "mediumturquoise": "48D1CC", + "mediumvioletred": "C71585", + "midnightblue": "191970", + "mintcream": "F5FFFA", + "mistyrose": "FFE4E1", + "moccasin": "FFE4B5", + "navajowhite": "FFDEAD", + "navy": "000080", + "oldlace": "FDF5E6", + "olive": "808000", + "olivedrab": "6B8E23", + "orange": "FFA500", + "orangered": "FF4500", + "orchid": "DA70D6", + "palegoldenrod": "EEE8AA", + "palegreen": "98FB98", + "paleturquoise": "AFEEEE", + "palevioletred": "DB7093", + "papayawhip": "FFEFD5", + "peachpuff": "FFDAB9", + "peru": "CD853F", + "pink": "FFC0CB", + "plum": "DDA0DD", + "powderblue": "B0E0E6", + "purple": "800080", + "red": "FF0000", + "rosybrown": "BC8F8F", + "royalblue": "4169E1", + "saddlebrown": "8B4513", + "salmon": "FA8072", + "sandybrown": "F4A460", + "seagreen": "2E8B57", + "seashell": "FFF5EE", + "sienna": "A0522D", + "silver": "C0C0C0", + "skyblue": "87CEEB", + "slateblue": "6A5ACD", + "slategray": "708090", + "slategrey": "708090", + "snow": "FFFAFA", + "springgreen": "00FF7F", + "steelblue": "4682B4", + "tan": "D2B48C", + "teal": "008080", + "thistle": "D8BFD8", + "tomato": "FF6347", + "turquoise": "40E0D0", + "violet": "EE82EE", + "wheat": "F5DEB3", + "white": "FFFFFF", + "whitesmoke": "F5F5F5", + "yellow": "FFFF00", + "yellowgreen": "9ACD32", + } + + +# pylint: disable=inconsistent-return-statements,too-many-branches,too-many-statements +def tikz(elem, doc): + """ + Add admonition to elem + + Arguments + --------- + elem: + The current element + doc: + The pandoc document + + Returns + ------- + The modified element + """ + # Is it in the right format and is it Div or a CodeBlock? + if doc.format in ["beamer"] and elem.tag in ["Span"]: + # Is there a latex-admonition-color attribute? + if "beamer-arrow-node" in elem.classes: + text = convert_text( + Plain(*elem.content), input_format="panflute", output_format="latex" + ) + + options = ["anchor=base"] + + color = get_color(elem, doc) + if color: + options.append(f"fill={color}") + + (from_value, to_value) = get_range(elem, doc) + if from_value or to_value: + display = f"\\only<{from_value}-{to_value}>" + else: + display = "" + + return RawInline( + f"\\tikz[baseline]{{" + f"{display}{{\\node[{','.join(options)}] " + f"({elem.identifier}) " + f"{{{text}}}" + f";}}}}", + format="tex", + ) + + if "beamer-arrow-edge" in elem.classes: + angles = [] + if "angle_src" in elem.attributes: + try: + angle = elem.attributes["angle_src"] + angle = int(angle) + angles.append(f"in={angle}") + except ValueError: + debug(f"pandoc-beamer-arrow: angle_src '{angle}' is not correct") + + if "angle_dest" in elem.attributes: + try: + angle = elem.attributes["angle_dest"] + angle = int(angle) + angles.append(f"out={angle}") + except ValueError: + debug(f"pandoc-beamer-arrow: angle_dest '{angle}' is not correct") + + options = ["->"] + + color = get_color(elem, doc) + if color: + options.append(color) + + if "linewidth" in elem.attributes: + try: + linewidth = elem.attributes["linewidth"] + linewidth = int(linewidth) + options.append(f"line width={linewidth}pt") + except ValueError: + debug( + f"pandoc-beamer-arrow: linewidth '{linewidth}' is not correct" + ) + + (from_value, to_value) = get_range(elem, doc) + if from_value or to_value: + display = f"<{from_value}-{to_value}>" + else: + display = "" + + return RawInline( + f"\\begin{{tikzpicture}}[overlay]" + f"\\path[{','.join(options)}]{display} " + f"({elem.attributes['src']}) " + f"edge " + f"[{','.join(angles)}] " + f"({elem.attributes['dest']});" + f"\\end{{tikzpicture}}", + format="tex", + ) + + +def get_range(elem, _): + """ + Get the range of display for an element. + """ + from_value = elem.attributes.get("from", "") + if bool(from_value): + try: + from_value = max(1, int(from_value)) + except ValueError: + debug(f"pandoc-beamer-arrow: from value '{from_value}' is not " f"correct") + from_value = "" + else: + from_value = "" + + to_value = elem.attributes.get("to", "") + if bool(to_value): + try: + to_value = max(1, int(to_value)) + except ValueError: + debug(f"pandoc-beamer-arrow: to value '{to_value}' is not " f"correct") + to_value = "" + else: + to_value = "" + + try: + if to_value < from_value: + debug( + f"pandoc-beamer-arrow: from value '{from_value}' and " + f" to value '{to_value}' are incompatible" + ) + from_value = "" + to_value = "" + except TypeError: + pass + + return (from_value, to_value) + + +def get_color(elem, doc): + """ + Get the color of display for an element. + """ + if "color" in elem.attributes: + color = elem.attributes["color"] + if color in doc.x11colors: + return color + debug(f"pandoc-beamer-arrow: color '{color}' is not correct") + return "" + + +def prepare(doc): + """ + Prepare the document + + Arguments + --------- + doc: + The pandoc document + """ + doc.x11colors = x11colors() + + +def finalize(doc): + """ + Finalize the pandoc document + + Arguments + --------- + doc: + The pandoc document + """ + # Add header-includes if necessary + if "header-includes" not in doc.metadata: + doc.metadata["header-includes"] = MetaList() + # Convert header-includes to MetaList if necessary + elif not isinstance(doc.metadata["header-includes"], MetaList): + doc.metadata["header-includes"] = MetaList(doc.metadata["header-includes"]) + + # Add usefull LaTexPackage + doc.metadata["header-includes"].append( + MetaInlines(RawInline("\\usepackage{tikz}", "tex")) + ) + doc.metadata["header-includes"].append( + MetaInlines(RawInline("\\tikzstyle{every picture}+=[remember picture]", "tex")) + ) + doc.metadata["header-includes"].append( + MetaInlines(RawInline("\\usetikzlibrary{positioning}", "tex")) + ) + doc.metadata["header-includes"].append( + MetaInlines( + RawInline( + "\\tikzset{onslide/.code args={<#1>#2}{\\only<#1>{\\pgfkeysalso{#2}}}}", + "tex", + ) + ) + ) + + # Define x11 colors + tex = [] + for name, color in doc.x11colors.items(): + tex.append("\\definecolor{" + name.lower() + "}{HTML}{" + color + "}") + doc.metadata["header-includes"].append( + MetaInlines(RawInline("\n".join(tex), "tex")) + ) + + +def main(doc=None): + """ + Main function called by the script. + + Arguments + --------- + doc: + The pandoc document + + Returns + ------- + The modified pandoc document + """ + return run_filter(tikz, prepare=prepare, finalize=finalize, doc=doc) + + +if __name__ == "__main__": + main() diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..ee9c50a --- /dev/null +++ b/setup.cfg @@ -0,0 +1,11 @@ +[bdist_wheel] +# This flag says that the code is written to work on both Python 2 and Python +# 3. If at all possible, it is good practice to do this. If you cannot, you +# will need to generate wheels for each Python version that you support. +universal=1 + +[metadata] +description-file = README.md + +[aliases] +test=pytest diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..941b182 --- /dev/null +++ b/setup.py @@ -0,0 +1,91 @@ +"""A setuptools based setup module. + +See: +https://packaging.python.org/en/latest/distributing.html +https://github.com/chdemko/pandoc-beamer-arrow +""" + +# To use a consistent encoding +import codecs +import os + +# Always prefer setuptools over distutils +from setuptools import setup + +HERE = os.path.abspath(os.path.dirname(__file__)) + +# Get the long description from the README file +try: + import pypandoc + + LONG_DESCRIPTION = pypandoc.convert("README.md", "rst") +except (IOError, ImportError): + with codecs.open(os.path.join(HERE, "README.md"), encoding="utf-8") as f: + LONG_DESCRIPTION = f.read() + + +setup( + name="pandoc-pandoc-beamer-arrow", + # Versions should comply with PEP440. For a discussion on single-sourcing + # the version across setup.py and the project code, see + # https://packaging.python.org/en/latest/single_source_version.html + version="0.1.0", + # The project's description + description="A pandoc filter for adding arrows in Beamer/LaTeX", + long_description=LONG_DESCRIPTION, + # The project's main homepage. + url="https://github.com/chdemko/pandoc-pandoc-beamer-arrow", + # The project's download page + download_url="https://github.com/chdemko/pandoc-pandoc-beamer-arrow/archive/develop.zip", + # Author details + author="Christophe Demko", + author_email="chdemko@gmail.com", + # Maintainer details + maintainer="Christophe Demko", + maintainer_email="chdemko@gmail.com", + # Choose your license + license="BSD-3-Clause", + # See https://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=[ + # How mature is this project? Common values are + # 3 - Alpha + # 4 - Beta + # 5 - Production/Stable + "Development Status :: 4 - Beta", + # Specify the OS + "Operating System :: OS Independent", + # Indicate who your project is intended for + "Environment :: Console", + "Intended Audience :: End Users/Desktop", + "Intended Audience :: Developers", + "Topic :: Software Development :: Build Tools", + # Specify the Python versions you support here. In particular, ensure + # that you indicate whether you support Python 2, Python 3 or both. + "Programming Language :: Python :: 3.6", + ], + # What does your project relate to? + keywords="pandoc filters beamer arrows", + # Alternatively, if you want to distribute just a my_module.py, uncomment + # this: + py_modules=["pandoc_beamer_arrow"], + # To provide executable scripts, use entry points in preference to the + # "scripts" keyword. Entry points provide cross-platform support and allow + # pip to create the appropriate form of executable for the target platform. + entry_points={ + "console_scripts": ["pandoc-pandoc-beamer-arrow = pandoc_beamer_arrow:main"] + }, + # List run-time dependencies here. These will be installed by pip when + # your project is installed. For an analysis of "install_requires" vs pip's + # requirements files see: + # https://packaging.python.org/en/latest/requirements.html + install_requires=["panflute>=1.12", "pypandoc>=1.4"], + # List additional groups of dependencies here (e.g. development + # dependencies). You can install these using the following syntax, + # for example: + # $ pip install -e .[dev,test] + extras_require={"dev": ["check-manifest"], "test": ["coverage"]}, + # packages=find_packages(), + # include_package_data = True, + setup_requires=["pytest-runner"], + tests_require=["pytest", "coverage"], +) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_arrow.py b/tests/test_arrow.py new file mode 100644 index 0000000..b1bf0ba --- /dev/null +++ b/tests/test_arrow.py @@ -0,0 +1,329 @@ +# This Python file uses the following encoding: utf-8 + +import io +from contextlib import redirect_stderr +from unittest import TestCase + +from panflute import convert_text + +import pandoc_beamer_arrow + + +def conversion(markdown, fmt="markdown"): + doc = convert_text(markdown, standalone=True) + doc.format = fmt + pandoc_beamer_arrow.main(doc) + return doc + + +class NodeTest(TestCase): + def test_simple(self): + doc = conversion("[**abc**]{.beamer-arrow-node #id1}", fmt="beamer") + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, r"\tikz[baseline]{{\node[anchor=base] (id1) {\textbf{abc}};}}" + ) + + def test_color(self): + doc = conversion('[**abc**]{.beamer-arrow-node #id1 color="red"}', fmt="beamer") + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\tikz[baseline]{{\node[anchor=base,fill=red] (id1) {\textbf{abc}};}}", + ) + + def test_bad_color(self): + stream = io.StringIO() + with redirect_stderr(stream): + doc = conversion( + '[**abc**]{.beamer-arrow-node #id1 color="unknown"}', fmt="beamer" + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, r"\tikz[baseline]{{\node[anchor=base] (id1) {\textbf{abc}};}}" + ) + self.assertEqual( + stream.getvalue(), + "pandoc-beamer-arrow: color 'unknown' is not correct\n", + ) + + def test_from(self): + doc = conversion('[**abc**]{.beamer-arrow-node #id1 from="2"}', fmt="beamer") + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\tikz[baseline]{\only<2->{\node[anchor=base] (id1) {\textbf{abc}};}}", + ) + + def test_bad_from(self): + stream = io.StringIO() + with redirect_stderr(stream): + doc = conversion( + '[**abc**]{.beamer-arrow-node #id1 from="bad"}', fmt="beamer" + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, r"\tikz[baseline]{{\node[anchor=base] (id1) {\textbf{abc}};}}" + ) + self.assertEqual( + stream.getvalue(), + "pandoc-beamer-arrow: from value 'bad' is not correct\n", + ) + + def test_to(self): + doc = conversion('[**abc**]{.beamer-arrow-node #id1 to="2"}', fmt="beamer") + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\tikz[baseline]{\only<-2>{\node[anchor=base] (id1) {\textbf{abc}};}}", + ) + + def test_bad_to(self): + stream = io.StringIO() + with redirect_stderr(stream): + doc = conversion( + '[**abc**]{.beamer-arrow-node #id1 to="bad"}', fmt="beamer" + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, r"\tikz[baseline]{{\node[anchor=base] (id1) {\textbf{abc}};}}" + ) + self.assertEqual( + stream.getvalue(), + "pandoc-beamer-arrow: to value 'bad' is not correct\n", + ) + + def test_incompatible_from_to(self): + stream = io.StringIO() + with redirect_stderr(stream): + doc = conversion( + '[**abc**]{.beamer-arrow-node #id1 from="2" to="1"}', fmt="beamer" + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, r"\tikz[baseline]{{\node[anchor=base] (id1) {\textbf{abc}};}}" + ) + self.assertEqual( + stream.getvalue(), + "pandoc-beamer-arrow: from value '2' and to value '1' are incompatible\n", + ) + + +class ArrowTest(TestCase): + def test_simple(self): + doc = conversion( + '[**abc**]{.beamer-arrow-edge src="id1" dest="id2"}', fmt="beamer" + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\begin{tikzpicture}" + r"[overlay]\path[->] (id1) edge [] (id2);" + r"\end{tikzpicture}", + ) + + def test_angle_src(self): + doc = conversion( + '[**abc**]{.beamer-arrow-edge src="id1" dest="id2" angle_src="90"}', + fmt="beamer", + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\begin{tikzpicture}" + r"[overlay]\path[->] (id1) edge [in=90] (id2);" + r"\end{tikzpicture}", + ) + + def test_bad_angle_src(self): + stream = io.StringIO() + with redirect_stderr(stream): + doc = conversion( + '[**abc**]{.beamer-arrow-edge src="id1" dest="id2" angle_src="bad"}', + fmt="beamer", + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\begin{tikzpicture}" + r"[overlay]\path[->] (id1) edge [] (id2);" + r"\end{tikzpicture}", + ) + self.assertEqual( + stream.getvalue(), + "pandoc-beamer-arrow: angle_src 'bad' is not correct\n", + ) + + def test_angle_dest(self): + doc = conversion( + '[**abc**]{.beamer-arrow-edge src="id1" dest="id2" angle_dest="90"}', + fmt="beamer", + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\begin{tikzpicture}" + r"[overlay]\path[->] (id1) edge [out=90] (id2);" + r"\end{tikzpicture}", + ) + + def test_bad_angle_dest(self): + stream = io.StringIO() + with redirect_stderr(stream): + doc = conversion( + '[**abc**]{.beamer-arrow-edge src="id1" dest="id2" angle_dest="bad"}', + fmt="beamer", + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\begin{tikzpicture}" + r"[overlay]\path[->] (id1) edge [] (id2);" + r"\end{tikzpicture}", + ) + self.assertEqual( + stream.getvalue(), + "pandoc-beamer-arrow: angle_dest 'bad' is not correct\n", + ) + + def test_color(self): + doc = conversion( + '[**abc**]{.beamer-arrow-edge src="id1" dest="id2" color="red"}', + fmt="beamer", + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\begin{tikzpicture}" + r"[overlay]\path[->,red] (id1) edge [] (id2);" + r"\end{tikzpicture}", + ) + + def test_linewidth(self): + doc = conversion( + '[**abc**]{.beamer-arrow-edge src="id1" dest="id2" linewidth="3"}', + fmt="beamer", + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\begin{tikzpicture}" + r"[overlay]\path[->,line width=3pt] (id1) edge [] (id2);" + r"\end{tikzpicture}", + ) + + def test_bad_linewidth(self): + stream = io.StringIO() + with redirect_stderr(stream): + doc = conversion( + '[**abc**]{.beamer-arrow-edge src="id1" dest="id2" linewidth="bad"}', + fmt="beamer", + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\begin{tikzpicture}" + r"[overlay]\path[->] (id1) edge [] (id2);" + r"\end{tikzpicture}", + ) + self.assertEqual( + stream.getvalue(), + "pandoc-beamer-arrow: linewidth 'bad' is not correct\n", + ) + + def test_range(self): + doc = conversion( + '[**abc**]{.beamer-arrow-edge src="id1" dest="id2" to="3" from="2"}', + fmt="beamer", + ) + text = convert_text( + doc, + input_format="panflute", + output_format="latex", + extra_args=["--wrap=none"], + ) + self.assertEqual( + text, + r"\begin{tikzpicture}[overlay]\path[->]<2-3> (id1) edge [] (id2);\end{" + r"tikzpicture}", + ) diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..f947f4e --- /dev/null +++ b/tox.ini @@ -0,0 +1,13 @@ +[tox] +envlist = py36,py37,py38 + +[testenv] +deps = + coverage + black + pylint + panflute>=1.12 +commands = + black --check pandoc_beamer_arrow.py setup.py tests/test_arrow.py docs/conf.py + coverage run -a --source=pandoc_beamer_arrow setup.py test + pylint pandoc_beamer_arrow.py setup.py From 398271501951ac4d880deb843f61cafaa3c73027 Mon Sep 17 00:00:00 2001 From: Christophe Demko Date: Wed, 11 Dec 2019 23:44:02 +0100 Subject: [PATCH 2/6] Use sphinx 2.2 --- docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index ef39d0f..b57ad2e 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,3 +1,3 @@ -Sphinx>=1.8.0 +Sphinx>=2.2 sphinx_rtd_theme>=0.4 From 249c4f07e910b5b362a91c2bf22c0f73647c2821 Mon Sep 17 00:00:00 2001 From: Christophe Demko Date: Wed, 11 Dec 2019 23:57:40 +0100 Subject: [PATCH 3/6] Change versions --- docs/conf.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index d11a6a3..7a31e2d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -25,21 +25,21 @@ # -- Project information ----------------------------------------------------- -project = "pandoc-latex-admonition" -copyright = "2017-2019, Christophe Demko" +project = "pandoc-beamer-arrow" +copyright = "2019, Christophe Demko" author = "Christophe Demko" # The short X.Y version -version = "1.3" +version = "0.1" # The full version, including alpha/beta/rc tags -release = "1.3.1" +release = "0.1.0" # -- General configuration --------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. # # needs_sphinx = '1.0' -needs_sphinx = "1.8" +needs_sphinx = "2.2" # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom From 85207915cdb3380a670a5cd3b2311da25e218628 Mon Sep 17 00:00:00 2001 From: Christophe Demko Date: Thu, 12 Dec 2019 00:08:24 +0100 Subject: [PATCH 4/6] Add codacy and codebeat --- README.md | 4 ++-- docs/images/pandoc-beamer-arrow-sample.pdf | Bin 44220 -> 44883 bytes docs/images/pandoc-beamer-arrow-sample.txt | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c240ae2..7c074ac 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ [![Build Status](https://img.shields.io/travis/chdemko/pandoc-beamer-arrow/develop.svg?logo=travis)](https://travis-ci.org/chdemko/pandoc-beamer-arrow/branches) [![Coveralls](https://img.shields.io/coveralls/github/chdemko/pandoc-beamer-arrow/develop.svg?logo=Codecov&logoColor=white)](https://coveralls.io/github/chdemko/pandoc-beamer-arrow?branch=develop) [![Code Climate](https://codeclimate.com/github/chdemko/pandoc-beamer-arrow/badges/gpa.svg)](https://codeclimate.com/github/chdemko/pandoc-beamer-arrow/) -[![Code Beat](https://codebeat.co/badges/8430d731-6b3d-401a-a26f-1172904e8e5b)](https://codebeat.co/projects/github-com-chdemko-pandoc-beamer-arrow-develop/) -[![Codacy](https://img.shields.io/codacy/grade/443f4a26698a4ba0be5064fe9323f2a0.svg?logo=codacy&logoColor=white)](https://www.codacy.com/app/chdemko/pandoc-beamer-arrow) +[![Code Beat](https://codebeat.co/badges/4d7e44d2-04ed-4c66-b8d2-ea1d28bc16ee)](https://codebeat.co/projects/github-com-chdemko-pandoc-beamer-arrow-develop/) +[![Codacy](https://img.shields.io/codacy/grade/5e04e80fe4124ea18911026086fdafe9.svg?logo=codacy&logoColor=white)](https://www.codacy.com/app/chdemko/pandoc-beamer-arrow) [![CodeFactor](https://www.codefactor.io/repository/github/chdemko/pandoc-beamer-arrow/badge)](https://www.codefactor.io/repository/github/chdemko/pandoc-beamer-arrow) [![PyPI version](https://img.shields.io/pypi/v/pandoc-beamer-arrow.svg?logo=Python&logoColor=white)](https://pypi.org/project/pandoc-beamer-arrow/) [![PyPI format](https://img.shields.io/pypi/format/pandoc-beamer-arrow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gwPFiYw92eBNAAAAgJJREFUeNrt3T1WwkAUgNH31Br3ogWptdAlgyvQxYgHeh0LKKxI+PHAzNyvRo8xlxl5CZKllBIaax0Rr5n53tqB3Ti3k7qPiEUpZQAAggEACAYAIBgAgGAAoG8Ey9oRAHBas9oR5NgcIDOz5TN4pjnIJiJeapwTWAFGfMR2CDRlJViUUuYAtAfgOSK+Jv5N8FbddlBGav4M7+9795jHUsqqTGtdFQIAxgE0jQCAaQCaRQDAdABNIgDgMADNIQDgcAB/EHxWjwCA4wDsvvahegQAHA+gCQQAnAagegQAnA6gagQAnAdArQhcDdx//D+ZeXvg95tHxDK21wbG2mTm/SWP38Wgcz+jMj8i4ikiVhMePrv0z3vnlO1/grS+DVoBehfuVwCAABAAAkAAqLO6nwP896Tz2ucIVgBbgAAQAAJAAAgAASAABIAAEAACQAAIADXZyfcD9P55A7W/c8oKYAsQAAJAAAgAASBzgJ5eB1sBBIAAEAACQAAIAJkDTM/9AO4HEAACQAAIAAEgANTPHMD9AFYAASAABIAAEAACQP3MAWq/H6D3OYYVwBYgAASAABAAAkDmAF5HWwEEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAXVWj/x+g988FtAIIAAEgAASAABAAaqhfB1BFkJjdTNQAAAAASUVORK5CYII=)](https://pypi.org/project/pandoc-beamer-arrow/) diff --git a/docs/images/pandoc-beamer-arrow-sample.pdf b/docs/images/pandoc-beamer-arrow-sample.pdf index 96b6c80ca1d3250302ddf93b0cf02b0a9b10c302..68388be6e07181ef0abbfd836b47e7ffe8f3eeb1 100644 GIT binary patch delta 24958 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 diff --git a/docs/images/pandoc-beamer-arrow-sample.txt b/docs/images/pandoc-beamer-arrow-sample.txt index 926a593..6dde01b 100644 --- a/docs/images/pandoc-beamer-arrow-sample.txt +++ b/docs/images/pandoc-beamer-arrow-sample.txt @@ -9,5 +9,6 @@ pharetra lacinia. Vivamus consectetur ut mauris quis posuere. Pellentesque eget nibh ullamcorper ullamcorper eget eu velit. [**def**]{.beamer-arrow-node #id2 color="pink" from="2"} Pellentesque eget ipsum et nibh ullamcorper ullamcorper eget eu velit. +[**ghi**]{.beamer-arrow-node from="2"} []{.beamer-arrow-edge src="id1" dest="id2" angle_src="90" color="pink" linewidth="3" from="2"} From b5b4da071261698919f19c55fe58622e691643f3 Mon Sep 17 00:00:00 2001 From: Christophe Demko Date: Thu, 12 Dec 2019 00:23:28 +0100 Subject: [PATCH 5/6] Use correct filename --- setup.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 941b182..1f4804a 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ setup( - name="pandoc-pandoc-beamer-arrow", + name="pandoc-beamer-arrow", # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html @@ -34,9 +34,9 @@ description="A pandoc filter for adding arrows in Beamer/LaTeX", long_description=LONG_DESCRIPTION, # The project's main homepage. - url="https://github.com/chdemko/pandoc-pandoc-beamer-arrow", + url="https://github.com/chdemko/pandoc-beamer-arrow", # The project's download page - download_url="https://github.com/chdemko/pandoc-pandoc-beamer-arrow/archive/develop.zip", + download_url="https://github.com/chdemko/pandoc-beamer-arrow/archive/develop.zip", # Author details author="Christophe Demko", author_email="chdemko@gmail.com", @@ -72,7 +72,7 @@ # "scripts" keyword. Entry points provide cross-platform support and allow # pip to create the appropriate form of executable for the target platform. entry_points={ - "console_scripts": ["pandoc-pandoc-beamer-arrow = pandoc_beamer_arrow:main"] + "console_scripts": ["pandoc-beamer-arrow = pandoc_beamer_arrow:main"] }, # List run-time dependencies here. These will be installed by pip when # your project is installed. For an analysis of "install_requires" vs pip's From 329dafca06b7334f19e898080f325cd5900f07cb Mon Sep 17 00:00:00 2001 From: Christophe Demko Date: Thu, 12 Dec 2019 00:26:26 +0100 Subject: [PATCH 6/6] Publish 0.1.0 --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7c074ac..636300d 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # pandoc-beamer-arrow -[![Build Status](https://img.shields.io/travis/chdemko/pandoc-beamer-arrow/develop.svg?logo=travis)](https://travis-ci.org/chdemko/pandoc-beamer-arrow/branches) -[![Coveralls](https://img.shields.io/coveralls/github/chdemko/pandoc-beamer-arrow/develop.svg?logo=Codecov&logoColor=white)](https://coveralls.io/github/chdemko/pandoc-beamer-arrow?branch=develop) +[![Build Status](https://img.shields.io/travis/chdemko/pandoc-beamer-arrow/0.1.0.svg?logo=travis)](https://travis-ci.org/chdemko/pandoc-beamer-arrow/branches) +[![Coveralls](https://img.shields.io/coveralls/github/chdemko/pandoc-beamer-arrow/0.1.0.svg?logo=Codecov&logoColor=white)](https://coveralls.io/github/chdemko/pandoc-beamer-arrow?branch=0.1.0) [![Code Climate](https://codeclimate.com/github/chdemko/pandoc-beamer-arrow/badges/gpa.svg)](https://codeclimate.com/github/chdemko/pandoc-beamer-arrow/) [![Code Beat](https://codebeat.co/badges/4d7e44d2-04ed-4c66-b8d2-ea1d28bc16ee)](https://codebeat.co/projects/github-com-chdemko-pandoc-beamer-arrow-develop/) [![Codacy](https://img.shields.io/codacy/grade/5e04e80fe4124ea18911026086fdafe9.svg?logo=codacy&logoColor=white)](https://www.codacy.com/app/chdemko/pandoc-beamer-arrow) [![CodeFactor](https://www.codefactor.io/repository/github/chdemko/pandoc-beamer-arrow/badge)](https://www.codefactor.io/repository/github/chdemko/pandoc-beamer-arrow) [![PyPI version](https://img.shields.io/pypi/v/pandoc-beamer-arrow.svg?logo=Python&logoColor=white)](https://pypi.org/project/pandoc-beamer-arrow/) [![PyPI format](https://img.shields.io/pypi/format/pandoc-beamer-arrow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gwPFiYw92eBNAAAAgJJREFUeNrt3T1WwkAUgNH31Br3ogWptdAlgyvQxYgHeh0LKKxI+PHAzNyvRo8xlxl5CZKllBIaax0Rr5n53tqB3Ti3k7qPiEUpZQAAggEACAYAIBgAgGAAoG8Ey9oRAHBas9oR5NgcIDOz5TN4pjnIJiJeapwTWAFGfMR2CDRlJViUUuYAtAfgOSK+Jv5N8FbddlBGav4M7+9795jHUsqqTGtdFQIAxgE0jQCAaQCaRQDAdABNIgDgMADNIQDgcAB/EHxWjwCA4wDsvvahegQAHA+gCQQAnAagegQAnA6gagQAnAdArQhcDdx//D+ZeXvg95tHxDK21wbG2mTm/SWP38Wgcz+jMj8i4ikiVhMePrv0z3vnlO1/grS+DVoBehfuVwCAABAAAkAAqLO6nwP896Tz2ucIVgBbgAAQAAJAAAgAASAABIAAEAACQAAIADXZyfcD9P55A7W/c8oKYAsQAAJAAAgAASBzgJ5eB1sBBIAAEAACQAAIAJkDTM/9AO4HEAACQAAIAAEgANTPHMD9AFYAASAABIAAEAACQP3MAWq/H6D3OYYVwBYgAASAABAAAkDmAF5HWwEEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAXVWj/x+g988FtAIIAAEgAASAABAAaqhfB1BFkJjdTNQAAAAASUVORK5CYII=)](https://pypi.org/project/pandoc-beamer-arrow/) -[![License](https://img.shields.io/pypi/l/pandoc-beamer-arrow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABmCAYAAAADI5lUAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gwPFiQKA106BAAABUNJREFUeNrtnV2IFlUYx3/P625qbrGlpWmWdaMVKau2EmpCrSDqxRpUUkr0SYVEFyFRUXQhfUAihTdCESVpKpKQpLZBsghltn605VVKpmZgGYvmbhpPFzMbWu3LO7szO1//H+zN7sw5c57nd8685+zMeY0quLsB04FW4A7gWmAMMAyRRbqBE8BRYCfwMfCNmXlfJ1iV5LcAbwBNimuu+Q54xcw21iSAuzcA7wOLFLtCsQl4yMxO9ymAu48HtgK3Kl6F5ACw0Mx++o8AYc/fBUxWnArN98DtZtYFULngDx8o+aXgZuDdi0YAd58fDv2iPMwzs+0WTvX2qfeXjv1Ak7n7DOBLxaOU3FYhWOQR5aS1AsxWHErLnArB8q4oJ+PM3buBoRFO6gJ2K3aZpBm4PMLxPXh09ijO2cTd90RNZkVhKzcSQAIICSAkgJAAQgIICSAkgJAAQgIICSAKT91gVOLui4EVKbZzvZm9kGD7rgHmEbw9NRoYCTQCvwInCd7UaQPaep/GLZUABP+ivDHFdo5KKPHTgNeAu6jyllXIk8A5d/8QeN7MjusWkGPcfRnBs5QtNSS/l3rgQaDT3e+UAPlN/iPA2wMYQa8APnH3ZgmQv+SPBlbGUNRw4D13r5MA+WIF0R67qsZNwMMSID+9vwF4IOZin5AA+WE+8W+O0eTuN0iAfNCSs3IlQMxMSqjciRIgH0wsmgCDNQU5CKxJMXHtMXwAHAJcndD1jSu0AGbWHkcSUmZEgmVfqltA9kkySQ0SIPsMyWnZEiAm/kiw7DMSIPt0AecSKvukBMg4ZvYXcCSh4g9LgHzwVc7KzcY00N0XAM+kmLitZrYqhnLagPsTuL7PCy0AwUJHS4oCHMpwok4AnboF5ONzwJFwFIiTd6pt5y4BssebMZbVA6xOszESIDrbiW+TrDVm9rMEyNdtwIHHgPMDLOoX4KW02yMB+ifBAWCgs4qnzex3CZBfXgS+7ee568xsQxYaIQH6Pwr0ELzk8WfEU48Dy7LSDgkwMAn2Eu2dRwceNbPfJEBxeD3s1bWwzcw+zdLFD9ZK4DHiX0CJwsEkbwXuvrrGkWBl5vTVXsGxxHBaDXE76+71CV+H9gpOiRM1HHPKzM5l7cIlQDxcX8Mxo9x9uAQoJktqOKYeuE8CFO/+P5NgabgWXnX3sRKgOMmfDWyJMJsaA+xw9wkSIN+Jr7j7U+HUdmTE028Bdrv73NKsA4Q9ZUmK7Ww3s7UxtaUZeAuYMYBirgpHgg3AcjP7sdACEOyE8XjKsq8dSI8H5gLPEu+jbfcCi9x9PbDKzDqKKkBeh/rpwN0Eu4Jcl1A19cBSYKm77wXWAZvN7AcJkG7ypwBfD3K1TeHPy+7eaGbnk65QHwL7ZlKKdY8AxmsWkC5XlqF+CdA3jWWoXwL0TUPK9V8mAdLlkpTrr5cA6VInAcpNfRnqHyzLu4jvBc3+0J8NGE6lfM1nB6UWPRJWHPRImNBnACEBhAQQEkBIACEBhAQQEkBIACEBhAQQ/8bcvRsYGuGcLuLbJ0/ESzPRvtW0x9z9MDBBsSslhyoE27eIcnKsAuxUHErLFxWC15tFOdli7m7AXmCK4lEq9gFTK+Hmx88pHqVjuZkFj4SZ2TZgs2JSGjaa2WcA1vsbd28AdgGTFZ9Csx+YaWZn4IKVQDM7DSwIDxDFve8v7E3+RQKEEhwFZgGbFKvC8REwK8wx/ytA70hgZvcQbInSobjlns6w1y++sOf/k+9qZ4ZTxKlAKzCH4OvfxgLDFNdM0k2wc/lRggW+LUBHtW8l+xuWwqBw5I0ApAAAAABJRU5ErkJggg==)](https://raw.githubusercontent.com/chdemko/pandoc-beamer-arrow/develop/LICENSE) +[![License](https://img.shields.io/pypi/l/pandoc-beamer-arrow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABmCAYAAAADI5lUAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gwPFiQKA106BAAABUNJREFUeNrtnV2IFlUYx3/P625qbrGlpWmWdaMVKau2EmpCrSDqxRpUUkr0SYVEFyFRUXQhfUAihTdCESVpKpKQpLZBsghltn605VVKpmZgGYvmbhpPFzMbWu3LO7szO1//H+zN7sw5c57nd8685+zMeY0quLsB04FW4A7gWmAMMAyRRbqBE8BRYCfwMfCNmXlfJ1iV5LcAbwBNimuu+Q54xcw21iSAuzcA7wOLFLtCsQl4yMxO9ymAu48HtgK3Kl6F5ACw0Mx++o8AYc/fBUxWnArN98DtZtYFULngDx8o+aXgZuDdi0YAd58fDv2iPMwzs+0WTvX2qfeXjv1Ak7n7DOBLxaOU3FYhWOQR5aS1AsxWHErLnArB8q4oJ+PM3buBoRFO6gJ2K3aZpBm4PMLxPXh09ijO2cTd90RNZkVhKzcSQAIICSAkgJAAQgIICSAkgJAAQgIICSAKT91gVOLui4EVKbZzvZm9kGD7rgHmEbw9NRoYCTQCvwInCd7UaQPaep/GLZUABP+ivDHFdo5KKPHTgNeAu6jyllXIk8A5d/8QeN7MjusWkGPcfRnBs5QtNSS/l3rgQaDT3e+UAPlN/iPA2wMYQa8APnH3ZgmQv+SPBlbGUNRw4D13r5MA+WIF0R67qsZNwMMSID+9vwF4IOZin5AA+WE+8W+O0eTuN0iAfNCSs3IlQMxMSqjciRIgH0wsmgCDNQU5CKxJMXHtMXwAHAJcndD1jSu0AGbWHkcSUmZEgmVfqltA9kkySQ0SIPsMyWnZEiAm/kiw7DMSIPt0AecSKvukBMg4ZvYXcCSh4g9LgHzwVc7KzcY00N0XAM+kmLitZrYqhnLagPsTuL7PCy0AwUJHS4oCHMpwok4AnboF5ONzwJFwFIiTd6pt5y4BssebMZbVA6xOszESIDrbiW+TrDVm9rMEyNdtwIHHgPMDLOoX4KW02yMB+ifBAWCgs4qnzex3CZBfXgS+7ee568xsQxYaIQH6Pwr0ELzk8WfEU48Dy7LSDgkwMAn2Eu2dRwceNbPfJEBxeD3s1bWwzcw+zdLFD9ZK4DHiX0CJwsEkbwXuvrrGkWBl5vTVXsGxxHBaDXE76+71CV+H9gpOiRM1HHPKzM5l7cIlQDxcX8Mxo9x9uAQoJktqOKYeuE8CFO/+P5NgabgWXnX3sRKgOMmfDWyJMJsaA+xw9wkSIN+Jr7j7U+HUdmTE028Bdrv73NKsA4Q9ZUmK7Ww3s7UxtaUZeAuYMYBirgpHgg3AcjP7sdACEOyE8XjKsq8dSI8H5gLPEu+jbfcCi9x9PbDKzDqKKkBeh/rpwN0Eu4Jcl1A19cBSYKm77wXWAZvN7AcJkG7ypwBfD3K1TeHPy+7eaGbnk65QHwL7ZlKKdY8AxmsWkC5XlqF+CdA3jWWoXwL0TUPK9V8mAdLlkpTrr5cA6VInAcpNfRnqHyzLu4jvBc3+0J8NGE6lfM1nB6UWPRJWHPRImNBnACEBhAQQEkBIACEBhAQQEkBIACEBhAQQ/8bcvRsYGuGcLuLbJ0/ESzPRvtW0x9z9MDBBsSslhyoE27eIcnKsAuxUHErLFxWC15tFOdli7m7AXmCK4lEq9gFTK+Hmx88pHqVjuZkFj4SZ2TZgs2JSGjaa2WcA1vsbd28AdgGTFZ9Csx+YaWZn4IKVQDM7DSwIDxDFve8v7E3+RQKEEhwFZgGbFKvC8REwK8wx/ytA70hgZvcQbInSobjlns6w1y++sOf/k+9qZ4ZTxKlAKzCH4OvfxgLDFNdM0k2wc/lRggW+LUBHtW8l+xuWwqBw5I0ApAAAAABJRU5ErkJggg==)](https://raw.githubusercontent.com/chdemko/pandoc-beamer-arrow/0.1.0/LICENSE) [![Python version](https://img.shields.io/pypi/pyversions/pandoc-beamer-arrow.svg?logo=Python&logoColor=white)](https://pypi.org/project/pandoc-beamer-arrow/) [![Downloads](https://pepy.tech/badge/pandoc-beamer-arrow)](https://pepy.tech/project/pandoc-beamer-arrow) [![Development Status](https://img.shields.io/pypi/status/pandoc-beamer-arrow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gwPFiUnX5lXMAAAAlBJREFUeNrt3b1qlEEUBuB3TNDCP7wDOwv/cgv+pDC3YcDe+xBFFFLoDWhhpxiD12Ch1mJsg7irjRLGYjcKEbLC92n223meMgQSzrx7Zs6wMAkAAAAAAAAAAAAAAAAAAAAw78r+H9RaLyZZT3Itydkkx5XpUH1L8iHJVpJHpZS3/yQAtdZjSe4muZXkiLrPpd0kG0lul1K+9xaA6eK/SHJFjQfhdZIbfYRg75N+z+IPytUkd3rpANM9/422P8jt4HIp5V3XDrBu8QdpKcnNPraA62o5WKt9bAHjJCfUcpDGpZRTXQNQ1fGAApVSDvPvz1qfrv+fvb9xAiAACACDVf80qrU+q7Wecwhs4BB4gM+ZXBRt6wBtOpO/uC7WARa3AyTJqJRyWgdo18xLIgEwBSAACABt3hOYAhZ7Cph9TyAAzQYgSZ4KQNsBGAlA2wFwCDQFIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAIvniwC07aVvBM2wwN8I2kmyogO0Z5TkSZKVUsqnZfVou4PpAKYABAABYDHnfAFofM6feUh0D7Cw9wA7e6OeDtDwnD/rl90DNN6hdABTAAJAs5aTjJOcVIreT+H/68DXuQNsW+bB+thHAF6p42Btdp4iaq0XMnk2bkk9B2U3yaVSyvtOHWD6Fu2Geg7Ow66Ln/x+OvZokueZPBjN/NtKslZK+dHLGDh9g3YtyYNpa2F+2/79vhb/VwfYN/acz+RFytVMno/3puDh+prJ8/GbSR730fYBAAAAAAAAAAAAAAAAAACAYfkJuHbYr8dtGYwAAAAASUVORK5CYII=)](https://pypi.org/project/pandoc-beamer-arrow/) @@ -23,7 +23,7 @@ It uses the *tcolorbox* LaTeX package to generate admonitions and the *footnote* Documentation ------------- -See the [Read the docs pages](http://pandoc-beamer-arrow.readthedocs.io/en/latest/). +See the [Read the docs pages](http://pandoc-beamer-arrow.readthedocs.io/en/0.1.0/). Usage -----