<p align="center">
<a href="https://github.com/BMPixel/moffee">
<img src="https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/logo.png" alt="moffee logo" width="150">
</a>
</p>
<h1 align="center">
moffee
</h1>
<p align="center">
Make Markdown Ready to Present.
<p>
<p align="center">
<a href="https://github.com/bmpixel/moffee/actions/workflows/python-app-test.yaml">
<img src="https://github.com/bmpixel/moffee/actions/workflows/python-app-test.yaml/badge.svg" alt="GitHub Actions">
</a>
<a href="https://pypi.org/project/moffee/">
<img src="https://img.shields.io/pypi/v/moffee.svg" alt="PyPI version">
</a>
<a href="https://github.com/bmpixel/moffee/blob/main/LICENSE">
<img src="https://img.shields.io/pypi/l/moffee.svg" alt="License">
</a>
<a href="https://moffee.readthedocs.io/en/latest/">
<img src="https://readthedocs.org/projects/moffee/badge/?version=latest" alt="Doc build status">
</a>
<a href="https://github.com/bmpixel/moffee">
<img src="https://img.shields.io/github/stars/bmpixel/moffee.svg?style=social" alt="GitHub stars">
</a>
</p>
moffee is an open-source slide maker that transforms markdown documents into clean, professional slide decks.
- **moffee handles layout, pagination, and styling**, so you can focus on your content.
- **There's little to learn**. moffee uses simple syntax to arrange and style content to your liking.
- **A live web interface** updates slides as you type, allowing you to start a slideshow or export it to PDF.
## An Example
<details>
<summary> Click to expand input markdown document (29 lines)</summary>
```markdown
# moffee
## Make markdown ready to present
@(layout=centered)
## Why moffee?
- **80/20 Rule**[^1]: Creating slides can be time-consuming, often requiring 80% of the effort for just 20% of the outcome.
- `moffee` transforms markdown into professional presentations effortlessly.
- Use simple markdown syntax.
- Enjoy out-of-the-box paging and styling.
- Easily arrange text and images.
[^1]: https://en.wikipedia.org/wiki/Pareto_principle
## Showcasing
### Style with Markdown
==Markdown== is all you need! Elements like $tex$ and `code` are rendered with elegant style.
!!! note
moffee automatically breaks pages and chooses titles based on context.
### Media Layout
One of moffee's strengths is using dividers to organize text and images effectively.
===
- Use `---` to trigger page breaks.
- Use `<->` to arrange elements horizontally.
- Use `===` to split elements vertically.
moffee automatically adjusts element sizes to accommodate large blocks of text or complex illustrations.
<->
![blue coffee](coffee.png)
```
</details>
<p align="center">
<img src="https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/moffee-example.png" alt="moffee example PDF">
</p>
Or you can use other built-in [themes](https://moffee.readthedocs.io/en/latest/theme/):
<table>
<tr>
<td align="center"><strong>default</strong></td>
<td align="center"><strong>beam</strong></td>
<td align="center"><strong>robo</strong></td>
</tr>
<tr>
<td align="center"><img src="https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/default.png" alt="default theme" /></td>
<td align="center"><img src="https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/beam.png" alt="beam theme" /></td>
<td align="center"><img src="https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/robo.png" alt="robo theme" /></td>
</tr>
<tr>
<td align="center"><strong>blue</strong></td>
<td align="center"><strong>gaia</strong></td>
<td></td>
</tr>
<tr>
<td align="center"><img src="https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/blue.png" alt="blue theme" /></td>
<td align="center"><img src="https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/gaia.png" alt="gaia theme" /></td>
<td></td>
</tr>
</table>
## Installation
moffee is written in Python and is recommended to install with `pipx`. See [our documentation](https://moffee.readthedocs.io/en/latest/installation/) for step-by-step instructions.
```bash
pipx install moffee
# or `pip install moffee`
```
Preview slides in a live web server or export to HTML:
```bash
moffee live example.md # launch a server
# or
moffee make example.md -o output_html/ # export to HTML
```
## Usage
To start, write in standard markdown. moffee supports most extended syntax found in [Obsidian Flavored Markdown](https://help.obsidian.md/Editing+and+formatting/Obsidian+Flavored+Markdown). See [the syntax documentation](https://moffee.readthedocs.io/en/latest/syntax/) for more details.
```markdown
# Markdown Title
Use **bold** and *italic* for emphasis.
- Extended syntax like ~~strikethroughs~~ is supported.
```
To create a new slide, begin a new heading:
```markdown
## Page 1
Some text
## Page 2
This sentence will appear on the second slide.
```
Alternatively, use `---` to manually trigger a new slide:
```markdown
## Page 1
Text on the first slide
---
Text on the next slide.
```
You'll notice the second slide shares the `Page 1` title. moffee selects the most suitable title for each slide.
In addition to `---`, moffee supports `<->` and `===` for in-slide layout. Use `<->` to separate elements horizontally:
```markdown
Text on the left.
<->
![Image on the right](https://placehold.co/600x400)
```
`===` places elements vertically and takes precedence over `<->`. Use them together for flexible layouts:
```markdown
Top bun
===
Patty on the left
<->
Lettuce on the right
===
Bottom bun
```
### Options and Styles
Front matter is used to define moffee's behavior. Here are some common used options. Refer to [Configuration](https://moffee.readthedocs.io/en/latest/configuration/) for the full list.
```yaml
---
theme: default # Other availble themes are "beam", "robo", "blue" and "gaia"
layout: content # HTML template. Use "centered" for centered alignment.
resource_dir: "." # Relative URLs are based on this directory.
aspect_ratio: "16:9" # Aspect ratio of the slides
---
```
Any CSS property can be set in the front matter. For example, set a dark gray background for all slides:
```yaml
---
layout: content
background-color: darkgray
color: white
---
```
moffee also supports local style decorators with the syntax `@(property=value)`. Use these within the document to set attributes for specific slides:
```markdown
# A refined landing page
Our journey begins here
@(layout=content, background-image='url("https://placehold.co/600x400")')
```
## Contributing
Find moffee helpful? ![star](https://img.shields.io/github/stars/bmpixel/moffee.svg?style=social) are the best motivation to keep me improving. So thank you! ;)
To submit bug/feature requests/PR, please see [CONTRIBUTING.md](CONTRIBUTING.md).
## License
MIT License © 2024 [Wenbo Pan](https://wenbo.io)
Raw data
{
"_id": null,
"home_page": "https://github.com/bmpixel/moffee",
"name": "moffee",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "markdown, slides, presentation, CLI",
"author": "Wenbo Pan",
"author_email": "pixelwenbo@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/c4/80/f73ecbafff252c1defca0dfc192ce4430906f52fe0343acead686004fb17/moffee-0.2.7.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <a href=\"https://github.com/BMPixel/moffee\">\n <img src=\"https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/logo.png\" alt=\"moffee logo\" width=\"150\">\n </a>\n</p>\n<h1 align=\"center\">\nmoffee\n</h1>\n<p align=\"center\">\nMake Markdown Ready to Present.\n<p>\n<p align=\"center\">\n <a href=\"https://github.com/bmpixel/moffee/actions/workflows/python-app-test.yaml\">\n <img src=\"https://github.com/bmpixel/moffee/actions/workflows/python-app-test.yaml/badge.svg\" alt=\"GitHub Actions\">\n </a>\n <a href=\"https://pypi.org/project/moffee/\">\n <img src=\"https://img.shields.io/pypi/v/moffee.svg\" alt=\"PyPI version\">\n </a>\n <a href=\"https://github.com/bmpixel/moffee/blob/main/LICENSE\">\n <img src=\"https://img.shields.io/pypi/l/moffee.svg\" alt=\"License\">\n </a>\n <a href=\"https://moffee.readthedocs.io/en/latest/\">\n <img src=\"https://readthedocs.org/projects/moffee/badge/?version=latest\" alt=\"Doc build status\">\n </a>\n <a href=\"https://github.com/bmpixel/moffee\">\n <img src=\"https://img.shields.io/github/stars/bmpixel/moffee.svg?style=social\" alt=\"GitHub stars\">\n </a>\n</p>\n\nmoffee is an open-source slide maker that transforms markdown documents into clean, professional slide decks.\n\n- **moffee handles layout, pagination, and styling**, so you can focus on your content.\n- **There's little to learn**. moffee uses simple syntax to arrange and style content to your liking.\n- **A live web interface** updates slides as you type, allowing you to start a slideshow or export it to PDF.\n\n## An Example\n\n<details>\n <summary> Click to expand input markdown document (29 lines)</summary>\n\n```markdown\n# moffee\n## Make markdown ready to present\n@(layout=centered)\n\n## Why moffee?\n\n- **80/20 Rule**[^1]: Creating slides can be time-consuming, often requiring 80% of the effort for just 20% of the outcome.\n- `moffee` transforms markdown into professional presentations effortlessly.\n - Use simple markdown syntax.\n - Enjoy out-of-the-box paging and styling.\n - Easily arrange text and images.\n\n[^1]: https://en.wikipedia.org/wiki/Pareto_principle\n\n## Showcasing\n### Style with Markdown\n\n==Markdown== is all you need! Elements like $tex$ and `code` are rendered with elegant style.\n\n!!! note\n moffee automatically breaks pages and chooses titles based on context.\n\n### Media Layout\n\nOne of moffee's strengths is using dividers to organize text and images effectively.\n\n===\n\n- Use `---` to trigger page breaks.\n- Use `<->` to arrange elements horizontally.\n- Use `===` to split elements vertically.\n\nmoffee automatically adjusts element sizes to accommodate large blocks of text or complex illustrations.\n\n<->\n\n![blue coffee](coffee.png)\n```\n</details>\n\n<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/moffee-example.png\" alt=\"moffee example PDF\">\n</p>\n\nOr you can use other built-in [themes](https://moffee.readthedocs.io/en/latest/theme/):\n\n<table>\n <tr>\n <td align=\"center\"><strong>default</strong></td>\n <td align=\"center\"><strong>beam</strong></td>\n <td align=\"center\"><strong>robo</strong></td>\n </tr>\n <tr>\n <td align=\"center\"><img src=\"https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/default.png\" alt=\"default theme\" /></td>\n <td align=\"center\"><img src=\"https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/beam.png\" alt=\"beam theme\" /></td>\n <td align=\"center\"><img src=\"https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/robo.png\" alt=\"robo theme\" /></td>\n </tr>\n <tr>\n <td align=\"center\"><strong>blue</strong></td>\n <td align=\"center\"><strong>gaia</strong></td>\n <td></td>\n </tr>\n <tr>\n <td align=\"center\"><img src=\"https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/blue.png\" alt=\"blue theme\" /></td>\n <td align=\"center\"><img src=\"https://raw.githubusercontent.com/BMPixel/moffee/main/docs/images/gaia.png\" alt=\"gaia theme\" /></td>\n <td></td>\n </tr>\n</table>\n\n## Installation\n\nmoffee is written in Python and is recommended to install with `pipx`. See [our documentation](https://moffee.readthedocs.io/en/latest/installation/) for step-by-step instructions.\n\n```bash\npipx install moffee\n# or `pip install moffee`\n```\n\nPreview slides in a live web server or export to HTML:\n\n```bash\nmoffee live example.md # launch a server\n# or\nmoffee make example.md -o output_html/ # export to HTML\n```\n\n\n## Usage\n\nTo start, write in standard markdown. moffee supports most extended syntax found in [Obsidian Flavored Markdown](https://help.obsidian.md/Editing+and+formatting/Obsidian+Flavored+Markdown). See [the syntax documentation](https://moffee.readthedocs.io/en/latest/syntax/) for more details.\n\n```markdown\n# Markdown Title\nUse **bold** and *italic* for emphasis.\n\n- Extended syntax like ~~strikethroughs~~ is supported.\n```\n\nTo create a new slide, begin a new heading:\n\n```markdown\n## Page 1\nSome text\n\n## Page 2\nThis sentence will appear on the second slide.\n```\n\nAlternatively, use `---` to manually trigger a new slide:\n\n```markdown\n## Page 1\nText on the first slide\n---\nText on the next slide.\n```\n\nYou'll notice the second slide shares the `Page 1` title. moffee selects the most suitable title for each slide.\n\nIn addition to `---`, moffee supports `<->` and `===` for in-slide layout. Use `<->` to separate elements horizontally:\n\n```markdown\nText on the left.\n<->\n![Image on the right](https://placehold.co/600x400)\n```\n\n`===` places elements vertically and takes precedence over `<->`. Use them together for flexible layouts:\n\n```markdown\nTop bun\n===\nPatty on the left\n<->\nLettuce on the right\n===\nBottom bun\n```\n\n### Options and Styles\n\nFront matter is used to define moffee's behavior. Here are some common used options. Refer to [Configuration](https://moffee.readthedocs.io/en/latest/configuration/) for the full list.\n\n```yaml\n---\ntheme: default # Other availble themes are \"beam\", \"robo\", \"blue\" and \"gaia\"\nlayout: content # HTML template. Use \"centered\" for centered alignment.\nresource_dir: \".\" # Relative URLs are based on this directory.\naspect_ratio: \"16:9\" # Aspect ratio of the slides\n---\n```\n\nAny CSS property can be set in the front matter. For example, set a dark gray background for all slides:\n\n```yaml\n---\nlayout: content\nbackground-color: darkgray\ncolor: white\n---\n```\n\nmoffee also supports local style decorators with the syntax `@(property=value)`. Use these within the document to set attributes for specific slides:\n\n```markdown\n# A refined landing page\nOur journey begins here\n@(layout=content, background-image='url(\"https://placehold.co/600x400\")')\n```\n\n## Contributing\n\nFind moffee helpful? ![star](https://img.shields.io/github/stars/bmpixel/moffee.svg?style=social) are the best motivation to keep me improving. So thank you! ;)\n\nTo submit bug/feature requests/PR, please see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nMIT License \u00a9 2024 [Wenbo Pan](https://wenbo.io)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A slide maker that transform markdown into slides.",
"version": "0.2.7",
"project_urls": {
"Homepage": "https://github.com/bmpixel/moffee",
"Repository": "https://github.com/bmpixel/moffee"
},
"split_keywords": [
"markdown",
" slides",
" presentation",
" cli"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b6a78d038eb4c86bda5a2f5bb054be49e7a3833f1644d127f40a36c1dc9d81ec",
"md5": "6d914e3686ff0fd589bf46b5ea95773f",
"sha256": "de9f786654948398361f492d9bf011739fed0c951dd869e05643520d1b054b41"
},
"downloads": -1,
"filename": "moffee-0.2.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6d914e3686ff0fd589bf46b5ea95773f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 35178,
"upload_time": "2024-11-22T10:21:39",
"upload_time_iso_8601": "2024-11-22T10:21:39.907900Z",
"url": "https://files.pythonhosted.org/packages/b6/a7/8d038eb4c86bda5a2f5bb054be49e7a3833f1644d127f40a36c1dc9d81ec/moffee-0.2.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c480f73ecbafff252c1defca0dfc192ce4430906f52fe0343acead686004fb17",
"md5": "9cba30a4ebd544c586857caf896760df",
"sha256": "1a1903238dd8c7b48c75c59f539f181b36a919a6a49cdbdda7d0913adca7a9ab"
},
"downloads": -1,
"filename": "moffee-0.2.7.tar.gz",
"has_sig": false,
"md5_digest": "9cba30a4ebd544c586857caf896760df",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 29476,
"upload_time": "2024-11-22T10:21:42",
"upload_time_iso_8601": "2024-11-22T10:21:42.025287Z",
"url": "https://files.pythonhosted.org/packages/c4/80/f73ecbafff252c1defca0dfc192ce4430906f52fe0343acead686004fb17/moffee-0.2.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-22 10:21:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bmpixel",
"github_project": "moffee",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "moffee"
}