Giter VIP home page Giter VIP logo

matisse's Introduction

MaTiSSe.py Latest Version GitHub tag

Join the chat at https://gitter.im/szaghi/MaTiSSe

License

MaTiSSe.py, Markdown To Impressive Scientific Slides

MaTiSSe.py is a very simple and stupid (KISS) presentation maker based on simple markdown syntax producing high quality first-class html/css presentation with great support for scientific contents.

  • MaTiSSe.py is NOT WYSIWYG: it converts your sources to high quality html presentation with the same approach of LaTeX typesetting;
  • MaTiSSe.py is tailored to scientific contents (equations, figures, tables, etc...);
  • MaTiSSe.py is a Command Line Tool;
  • MaTiSSe.py is a Free, Open Source Project.

Status

Build Status Coverage Status Code Health

Issues

GitHub issues Ready in backlog In Progress Open bugs

Python support Supported Python versions

Documentation

MaTiSSe.py has a comprehensive wiki: read it to know how to install and use MaTiSSe.py.

A Taste of MaTiSSe.py

See MaTiSSe.py in action with the getting started presentation or see the following screenshots.

The Titlepage

shot01

Figure environment

shot02

LaTeX Equations support

shot03

LaTeX-Beamer Themes support

shot04

Go to Top

Main Features

MaTiSSe.py has a too much long list of features. Here the main features are listed whereas for a complete list read all the documentation material (examples, wiki, etc...).

  • markdown-to-html slides maker (with extended markdown syntax);
  • support for structured, long presentations:
    • presentation metadata;
    • presentation sectioning:
      • titlepage;
      • section;
      • subsection;
      • slide;
    • helpers:
      • TOC;
      • countdown timer;
      • navigation controls;
  • easy theming:
    • canvas;
    • headings (h1,h2,...);
    • global slide theme as well theme of a specific slide (local slide theme):
      • headers (unlimited number);
      • footers (unlimited number);
      • left and right sidebars (unlimited number);
      • content;
    • beamer-like-styles support;
  • latex equations support;
  • scientific contents support:
    • boxes with fully customizable environment;
    • figures with fully customizable environment;
    • tables with fully customizable environment;
    • notes with fully customizable environment;
    • code listings with syntax highlighting;
    • columns fully customizable environment;
  • note handouts support;
  • impress.js support;
  • jmpress.js support;
  • reveal.js support;

Copyrights

MaTiSSe.py is an open source project, it is distributed under the GPL v3 license. A copy of the license should be distributed within MaTiSSe.py. Anyone interested to use, develop or to contribute to MaTiSSe.py is welcome. Take a look at the contributing guidelines for starting to contribute to the project.

Go to Top

matisse's People

Contributors

band-a-prend avatar gitter-badger avatar szaghi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

matisse's Issues

Round parenthesis

I know that MaTiSSe uses Markdown, but in scientific presentations isn't infrequent the use of round parenthesis: is possible, in a tricky way (but you, @szaghi , are the master of complex tasks!), to introduce in MaTiSSe a character combination that can be used to obtain in the slides the round parenthesis?

Bullet list not available in box environment

I suspect that with all the new features recently introduced, some bug rise up: using the last version is impossible to obtain a bullet list into the box environment.

Here a minimum work example:

---theme_slide_global border = 2px solid black ---endtheme_slide_global

io

ioio

ioioio

$box
$style[background:white;box-shadow:7px 7px 7px;border-radius:5px;max-width:95%]
$caption(none)[font-size:200%;position:TOP;]{Bullet list test}
$content[font-size:120%;color:black;]{

  • test;
  • test2.}
    $endbox

Table environment

As I can see, the table environment relies on the "simple" Markdown syntax, that doesn't permit to obtain LaTeX like table environment (absence of vertical delimiters, absence of horizontal delimiters into the main part of the table, ecc...): I think that could be another very useful features to transform MaTiSSe in the perfect Beamer replacement if a new ambient (like figure, box, etc...) 'table' could be created.

Footnotes and citations

I will not tire of repeating, once again, that MaTiSSe is a fantastic project; in order to obtain a complete tool for "Markdown To Impressive Scientific Slides", I think that an useful and indispensable feature could be the possibility to insert footnotes and a minimal bibliography with citations.

I don't know if could be of any help, but Pandoc and Multimarkdown markdown flavours support citations, using a bibtex file that contains citations.

Anyhow, thanks a lot @szaghi !

List in box environment

I'm becoming a MaTiSSe addicted: this program is very very good, but unfortunately it lacks some useful LaTeX-Beamer features, like bullet lists in box environment. I hope that this feature can be easily added: thamk you @szaghi for your awesome work!

Wrong figures-tables enumeration

The number of the "floating objects", as figures and tables, is unique: so, if I put ten figures and then a table, the table caption is 'Table 11', while it should be 'Table 1'; and if I add a figure after the table, the figure caption is 'Figure 12' while it should be 'Figure 11'.

Add figure zoom/popup

It could be useful to have the possibility to click on one figure to zoom to it or to create a popup with enlarged figure.

Figure in columns environment

I've a problem with multiple figure in columns environment: I want to put two figures side by side and to obtain this I create two columns of the same width (50%) and of the same height (50%); but when I insert the two figures and I try to specify the relative height of the two figures (100%), I obtain as output two big figures that fill a space that is bigger than the maximum column height.

Here a minimal working example:

---metadata
title = Multi-Resolution Techniques for a Compressible Staggered LES Numerical Code
subtitle =
authors = ['Giacomo Rossi']
authors_short = ['G. Rossi']
emails = ['[email protected]']
affiliations = ['Dipartimento di Ingegneria Meccanica e Aerospaziale, Universita'' Sapienza']
affiliations_short = ['DIMA, Sapienza']
location = Via Eudossiana 18, 00184 Roma
location_short = Roma
date = 29th February, 2015
conference =
conference_short =
session =
session_short =
logo = images/Cherubino-Bianco-Trasparente.png
max_time = 60
dirs_to_copy = ['images']
---endmetadata

$include(sapienza_theme.md)

titlepage[plain]

$box
$style[width:100%;height:35%;background:#822433;font-family:'Comic Sans MS', cursive, sans-serif;]
$content[color:white;text-align:center;]{
$title[display:block;font-size:200%;padding-top:2%;]
$subtitle[display:block;font-size:120%;padding-top:2%;]
$logo[height:50px;]
}
$endbox

$box
$style[width:100%;font-family:'Comic Sans MS', cursive, sans-serif;]
$content[text-align:center;]{
a presentation by $authors[display:block;font-size:150%]
$emails[display:block;font-size:90%;]
$affiliations[display:block;]
}
$endbox

$box
$style[width:100%;padding-top:2%;font-family:'Comic Sans MS', cursive, sans-serif;]
$content[text-align:center;color:#822433;]{
$conference[display:block;font-size:150%;]
$session[display:block;font-size:120%;]
$location[display:block;font-size:90%;text-align:right;padding-right:5%;padding-top:5%;]
$date[display:block;font-size:90%;text-align:right;padding-right:5%;]
}
$endbox

Introduction

  • Turbulent combustion is a phenomenon visible in a lot of common combusion systems, such as internal combustion engines, turbojets, liquid and solid rocket motors.
  • Turbulent combustion is usually divided in premixed and non-premixed: in the first fuel and oxydizer are mixed before they reach the flame front, while in the second
    the mixing is due to molecolar diffusion.
  • Turbulent combustion is the result of a mutual interaction between chemical reactions and fluid structures: the turbulence is conditioned by the presence of the flame
    front, because of the heat release and kinematic viscosity variations that speed up the fluid; the turbulence interacts with the flame structure, because strong mixing
    can intensify chemical reactions or inhibit the combustion.

$columns

$column[width:50%;height:50%]

$figure
$content[height:100%]{images/prem_flame2.jpg}
$caption(None){Turbulent premixed flame}
$endfigure

$column[width:50%;height:50%]

$figure
$content[height:100%]{images/diff_flame2.jpg}
$caption(None){Turbulent diffusion flame}
$endfigure

$endcolumns

The sapienza_theme.md file contains the following text:

---theme_slide_global
data-offset = 200
background = white
border-radius = 10px
---endtheme_slide_global

---theme_toc
font-variant = small-caps
---endtheme_toc

---theme_section_emph_toc
border = 1px solid #822433
border-radius = 5px
---endtheme_section_emph_toc

---theme_subsection_emph_toc
border = 1px solid #822433
border-radius = 5px
---endtheme_subsection_emph_toc

---theme_slide_emph_toc
border = 1px solid #822433
border-radius = 5px
---endtheme_slide_emph_toc

---theme_slide_header_1
height = 6%
padding = 1% 2%
background = #822433
color = white
border-radius = 10px 10px 0 0
metadata = [['slidetitle','float:left;font-variant:small-caps;font-size:150%;'],&&
['logo','float:right;height:100%;']]
---endtheme_slide_header_1

---theme_slide_footer_1
height = 3%
width = 90%
float = right
background = #822433
metadata = []
---endtheme_slide_footer_1

---theme_slide_footer_2
height = 6%
padding = 1% 2%
background = #822433
color = white
metadata = [['title','padding:0 1%;'], &&
['date','padding:0 1%;'], &&
['total_slides_number','float:right;padding:0 1%;'], &&
['|custom| of ','float:right;'], &&
['slidenumber','float:right;padding:0 1%;'], &&
['|custom|slide ','float:right;']]
---endtheme_slide_footer_2

---theme_slide_sidebar_1
active = False
---endtheme_slide_sidebar_1

---theme_figure
style = font-variant:small-caps;text-align:center;
caption = font-size:80%;color:#822433;
---endtheme_figure

---theme_note
style = display:inline-block;font-variant:small-caps;box-shadow: 7px 7px 5px rgba(200,200,200,0.3);border-radius:20px
caption = padding:0 2%;color:#822433;border-bottom:1px solid #822433;display:inline-block;
content = padding:0 2%;font-size:120%;
---endtheme_note

mah

Box caption position

Is possible to introduce an option that defines the caption position in the box environment? In my opinion is useful in some cases that the caption operates as a title for the box.

LaTeX equations in boxes

Is possible to add the opportunity of writing LaTeX equations in boxes? This feature could be very useful!

Overtheme improving

When the awesome overtheme feature is used with the "copy from theme: True" option, MaTiSSe doesn't modifies the only part of the theme that the user specifies into the overtheme section, but changes all the characteristics of the object. For example, if I write


---
overtheme:
  - copy-from-theme: True
  - slide:
    - transition: 'diagonal'
    - content:
      - font-size: 130%

---

the slide attributes aren't copied from the main theme, but the slide style is reset to a "blank" style.

A very cool feature of the overtheme option could be that all the main theme characteristics are copied, except that specified in the overtheme section.

Support for non ascii text (encoding)

Today I tried MaTiSSe to create a simple presentation and found the following error:

Traceback (most recent call last):
  File "~/.virtualenvs/virtualenv1/bin/MaTiSSe.py", line 5, in <module>
    main()
  File "~/.virtualenvs/virtualenv1/local/lib/python2.7/site-packages/matisse/matisse.py", line 161, in main
    make_presentation(config=config, source=source, output=output)
  File "~/.virtualenvs/virtualenv1/local/lib/python2.7/site-packages/matisse/matisse.py", line 114, in make_presentation
    presentation.parse(config=config, source=source)
  File "~/.virtualenvs/virtualenv1/local/lib/python2.7/site-packages/matisse/presentation.py", line 292, in parse
    self.__get_metadata(source=complete_source)
  File "~/.virtualenvs/virtualenv1/local/lib/python2.7/site-packages/matisse/presentation.py", line 115, in __get_metadata
    self.metadata[key].update_value(value=element[key])
  File "~/.virtualenvs/virtualenv1/local/lib/python2.7/site-packages/matisse/metadata.py", line 45, in update_value
    self.value = str(value)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)

Here is the actual Markdown that I used:

---
metadata:
  - title: "áéíóúüñ"
  - conference: "Prueba"
  - date: "07 Febrero 2018"
  - authors:
    - Eivar Montenegro
  - authors_short:
    - E. Montenegro
---

# Primera parte

## Historia
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sed ipsum
tincidunt, facilisis magna vitae, rutrum nisl. Cras nec fringilla nisi. Proin
non aliquam ante. Duis ullamcorper bibendum auctor. Donec ac tristique nisl.
Donec dapibus magna quis felis sagittis, sollicitudin pretium diam tincidunt.
Curabitur faucibus nisl nisi, in viverra neque tristique quis. In hac habitasse
platea dictumst. Phasellus quis tellus arcu. Mauris purus lectus, varius
iaculis finibus id, molestie eu risus. Etiam tellus tellus, convallis vel
dignissim ut, sagittis eu tortor. Sed facilisis, augue sed tincidunt fringilla,
arcu velit tincidunt diam, sed tincidunt massa ipsum ut odio. Curabitur id ex
in quam sagittis fringilla tincidunt et orci. Donec pretium dolor at velit
faucibus, eget porttitor diam iaculis.

# Segunda parte

## algo más de contenido

 Morbi bibendum odio et turpis vestibulum, non sodales arcu laoreet. Donec
 lobortis interdum convallis. Sed non egestas est. Proin vulputate ante et nisi
 bibendum, nec viverra orci consequat. Cras dictum mauris augue, a maximus
 metus dapibus eu. In ultricies venenatis tempor. Nunc varius, lectus non
 semper sollicitudin, diam nibh posuere purus, quis euismod erat velit sed
 ipsum. Donec dictum dolor erat. Vivamus at risus non mi blandit malesuada.
 Fusce egestas pretium metus vel luctus. Maecenas eleifend, nisi sit amet
 congue efficitur, sem diam lacinia turpis, sit amet rhoncus leo lacus id
 velit.

Quisque accumsan nisl magna, vitae eleifend tortor mattis sollicitudin.
Curabitur id arcu eu nisi efficitur faucibus eu in orci. Aliquam fringilla
mattis lacus, in fermentum lorem suscipit et. Nam lobortis ullamcorper blandit.
Proin fringilla augue suscipit felis commodo, non molestie enim semper. Mauris
lobortis quis ex et pulvinar. Praesent auctor, sem ac fermentum sollicitudin,
felis velit euismod nisi, id luctus lorem quam sit amet nisi. Vivamus eleifend,
lorem nec ornare semper, metus mi fringilla augue, imperdiet malesuada odio
sapien ut leo. Suspendisse blandit enim at ipsum imperdiet porttitor. Ut
fermentum eros ac erat congue, id consectetur ex cursus. Vivamus laoreet nulla
id tempor scelerisque. Donec imperdiet, orci ac cursus placerat, dui urna
sollicitudin odio, eget varius urna nisl at sapien. Nunc sem dui, dapibus id
placerat vitae, lobortis at risus. Curabitur placerat nibh ligula, non lobortis
mi faucibus ac.

In vitae neque non velit maximus bibendum quis vel purus. Lorem ipsum dolor sit
amet, consectetur adipiscing elit. Pellentesque finibus eget sapien sed
rhoncus. Fusce nec volutpat nibh. Aenean sed purus vel mi dapibus laoreet.
Vestibulum tristique lorem erat, eget porttitor quam interdum ut. Curabitur non
finibus lorem, in malesuada urna.

Vestibulum laoreet eleifend eros vel sollicitudin. Vivamus feugiat risus
turpis, quis fringilla ex accumsan non. Fusce hendrerit aliquam dolor, eget
pretium orci hendrerit ac. Proin vel efficitur turpis. Ut lacinia nisi at
dictum pharetra. Mauris eu porta nisi. Quisque ornare nunc euismod volutpat
vehicula. Cras condimentum enim aliquet hendrerit porttitor.

Theme enhancement

To obtain a maximum level of personalization (yes, often engineers are very cool and narcissist persons) could be very useful to modifiy the color of the bullets in a bullet-list or the color of the numbers in an arabic list: this can be obtained also with a simple change in the 'theme.css' produced by MaTiSSe, but I don't think that's the right way!

Increase the number of builtin-themes

Increase the number of builtin-themes.

Start from the following themes:

  • Sapienza;
  • all beamer themes defined into the getting started example;
  • prezi like themes.

Add a wiki page where people can upload their nice theme (maybe there will be other users sooner or later).

Add spacer(s)

It is useful to have null-box for manually spacing elements, like vspace and hspace of LaTeX.

It should be easy to implement via the Box class.

Restore builtin theme

With the recent main refactor many cli options are not working and among theme the builtin theme handling.

Restore the builtin theme handling.

Restore sample skeleton generation

With the recent main refactor many cli options are not working and among theme the sample skeleton generation.

Restore the sample skeleton generation.

Incopatibility between full-md-support on box-like env and other md stuffs

After the failed fixing of issue#28, issue#30 related to box-like envs, it is now clear that if the md features are fully-supported into the box-like envs the other md stuffs (such as themes) go to be broken. For supporting both, the md-to-html convertion must be refactored. In particular:

For the moment, the fully support of md inside box-like is disabled.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.