Repository: marp-team/marp Branch: main Commit: be6eea91a8bc Files: 85 Total size: 220.9 KB Directory structure: gitextract_8zf9058k/ ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ └── test.yml ├── .gitignore ├── .nvmrc ├── .prettierignore ├── LICENSE ├── README.md ├── netlify.toml ├── package.json ├── tsconfig.json └── website/ ├── .eslintrc.js ├── assets.d.ts ├── babel.config.js ├── blog/ │ ├── 202205-ecosystem-update.md │ ├── how-to-make-custom-transition.md │ ├── marp-for-vs-code-v1.md │ ├── marpit-v2-marp-core-v2-and-marp-cli-v1.md │ ├── re-creation-of-marp-website.md │ └── the-story-of-marp-next.md ├── components/ │ ├── Button.tsx │ ├── CodeBlock.tsx │ ├── Footer.tsx │ ├── Header.tsx │ ├── Layout.tsx │ ├── Marp.tsx │ ├── ScrollToTop.tsx │ ├── Title.tsx │ ├── Typography.tsx │ ├── blog/ │ │ └── BlogHeader.tsx │ ├── docs/ │ │ ├── Breadcrumb.tsx │ │ ├── Layout.tsx │ │ ├── Navigation.tsx │ │ └── layouts/ │ │ ├── Desktop.tsx │ │ └── Mobile.tsx │ ├── markdown/ │ │ ├── Anchor.tsx │ │ ├── Heading.tsx │ │ ├── Image.tsx │ │ └── Pre.tsx │ └── top/ │ ├── Description.tsx │ ├── Features.tsx │ ├── GetStarted.tsx │ └── Hero.tsx ├── css/ │ ├── index.css │ └── plugin-rem.js ├── docs/ │ ├── guide/ │ │ ├── directives.md │ │ ├── fitting-header.md │ │ ├── fragmented-list.md │ │ ├── heading-divider.md │ │ ├── how-to-write-slides.md │ │ ├── image-syntax.md │ │ ├── math-typesetting.md │ │ └── theme.md │ ├── introduction/ │ │ ├── install.md │ │ └── whats-marp.md │ ├── manifest.yaml │ └── tools/ │ ├── marp-cli.md │ └── marp-for-vs-code.md ├── global.d.ts ├── next-env.d.ts ├── next.config.js ├── package.json ├── pages/ │ ├── 404.tsx │ ├── _app.tsx │ ├── _document.tsx │ ├── blog/ │ │ └── [slug].tsx │ ├── blog.tsx │ ├── docs/ │ │ └── [[...slug]].tsx │ └── index.tsx ├── postcss.config.js ├── public/ │ └── blog/ │ └── .gitignore ├── tailwind.config.js ├── tsconfig.json └── utils/ ├── date.ts ├── hooks/ │ └── useFontFace.tsx ├── markdown/ │ ├── index.tsx │ ├── parse/ │ │ ├── image-paragraph-to-figure.ts │ │ ├── index.ts │ │ └── marp-code-block.ts │ └── renderer/ │ ├── index.ts │ └── sanitize.ts ├── title.ts └── url.ts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true [*] charset = utf-8 end_of_line = lf indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true ================================================ FILE: .eslintignore ================================================ .next coverage lib node_modules out ================================================ FILE: .eslintrc.js ================================================ const path = require('path') const { workspaces } = require('./package.json') module.exports = { root: true, env: { browser: true, node: true, es6: true, }, extends: ['eslint:recommended', 'plugin:import/recommended', 'prettier'], rules: { // eslint-plugin-import cannot parse exports field in package.json. // https://github.com/import-js/eslint-plugin-import/issues/1810 'import/no-unresolved': ['error', { ignore: ['^swiper'] }], 'import/order': ['error', { alphabetize: { order: 'asc' } }], }, overrides: [ { files: ['**/*.ts', '**/*.tsx'], parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint'], extends: [ 'plugin:@typescript-eslint/recommended', 'plugin:import/typescript', 'prettier', ], rules: { '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', }, settings: { 'import/resolver': { typescript: { project: ['', ...workspaces].map((dir) => path.join(dir, 'tsconfig.json') ), }, }, }, }, ], } ================================================ FILE: .github/dependabot.yml ================================================ version: 2 updates: - package-ecosystem: npm directory: '/' reviewers: - 'marp-team/maintainers' schedule: interval: daily allow: - dependency-name: '@marp-team/*' versioning-strategy: increase - package-ecosystem: github-actions directory: '/' reviewers: - 'marp-team/maintainers' schedule: interval: weekly # versioning-strategy: increase-if-necessary open-pull-requests-limit: 0 # Dependabot does not allow relaxed versioning :( ================================================ FILE: .github/workflows/test.yml ================================================ name: Test on: - pull_request - push env: CACHE_PREFIX: v1 YARN_VERSION: '^1.22.4' jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version-file: '.nvmrc' - name: Install yarn id: yarn run: | cd $HOME && yarn policies set-version $YARN_VERSION echo "::set-output name=cache_dir::$(yarn cache dir)" - uses: actions/cache@v3 with: path: ${{ steps.yarn.outputs.cache_dir }} key: yarn_cache-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/yarn.lock') }} restore-keys: yarn_cache-${{ env.CACHE_PREFIX }}- - run: yarn install - run: yarn audit - name: Prettier formatting run: yarn check:format - name: ESLint run: yarn lint:js - name: TypeScript type checking run: yarn check:ts ================================================ FILE: .gitignore ================================================ # Created by https://www.toptal.com/developers/gitignore/api/vim,node,linux,emacs,macos,windows,intellij,sublimetext,visualstudiocode # Edit at https://www.toptal.com/developers/gitignore?templates=vim,node,linux,emacs,macos,windows,intellij,sublimetext,visualstudiocode ### Emacs ### # -*- mode: gitignore; -*- *~ \#*\# /.emacs.desktop /.emacs.desktop.lock *.elc auto-save-list tramp .\#* # Org-mode .org-id-locations *_archive # flymake-mode *_flymake.* # eshell files /eshell/history /eshell/lastdir # elpa packages /elpa/ # reftex files *.rel # AUCTeX auto folder /auto/ # cask packages .cask/ dist/ # Flycheck flycheck_*.el # server auth directory /server/ # projectiles files .projectile # directory configuration .dir-locals.el # network security /network-security.data ### Intellij ### # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff .idea/**/workspace.xml .idea/**/tasks.xml .idea/**/usage.statistics.xml .idea/**/dictionaries .idea/**/shelf # AWS User-specific .idea/**/aws.xml # Generated files .idea/**/contentModel.xml # Sensitive or high-churn files .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml .idea/**/dbnavigator.xml # Gradle .idea/**/gradle.xml .idea/**/libraries # Gradle and Maven with auto-import # When using Gradle or Maven with auto-import, you should exclude module files, # since they will be recreated, and may cause churn. Uncomment if using # auto-import. # .idea/artifacts # .idea/compiler.xml # .idea/jarRepositories.xml # .idea/modules.xml # .idea/*.iml # .idea/modules # *.iml # *.ipr # CMake cmake-build-*/ # Mongo Explorer plugin .idea/**/mongoSettings.xml # File-based project format *.iws # IntelliJ out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # SonarLint plugin .idea/sonarlint/ # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties # Editor-based Rest Client .idea/httpRequests # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser ### Intellij Patch ### # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 # *.iml # modules.xml # .idea/misc.xml # *.ipr # Sonarlint plugin # https://plugins.jetbrains.com/plugin/7973-sonarlint .idea/**/sonarlint/ # SonarQube Plugin # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin .idea/**/sonarIssues.xml # Markdown Navigator plugin # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced .idea/**/markdown-navigator.xml .idea/**/markdown-navigator-enh.xml .idea/**/markdown-navigator/ # Cache file creation bug # See https://youtrack.jetbrains.com/issue/JBR-2257 .idea/$CACHE_FILE$ # CodeStream plugin # https://plugins.jetbrains.com/plugin/12206-codestream .idea/codestream.xml # Azure Toolkit for IntelliJ plugin # https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij .idea/**/azureSettings.xml ### Linux ### # temporary files which can be created if a process still has a handle open of a deleted file .fuse_hidden* # KDE directory preferences .directory # Linux trash folder which might appear on any partition or disk .Trash-* # .nfs files are created when an open file is removed but is still being accessed .nfs* ### macOS ### # General .DS_Store .AppleDouble .LSOverride # Icon must end with two \r Icon # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk ### macOS Patch ### # iCloud generated files *.icloud ### Node ### # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json # Runtime data pids *.pid *.seed *.pid.lock # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage *.lcov # nyc test coverage .nyc_output # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) .grunt # Bower dependency directory (https://bower.io/) bower_components # node-waf configuration .lock-wscript # Compiled binary addons (https://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules/ jspm_packages/ # Snowpack dependency directory (https://snowpack.dev/) web_modules/ # TypeScript cache *.tsbuildinfo # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Optional stylelint cache .stylelintcache # Microbundle cache .rpt2_cache/ .rts2_cache_cjs/ .rts2_cache_es/ .rts2_cache_umd/ # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # Yarn Integrity file .yarn-integrity # dotenv environment variable files .env .env.development.local .env.test.local .env.production.local .env.local # parcel-bundler cache (https://parceljs.org/) .cache .parcel-cache # Next.js build output .next out # Nuxt.js build / generate output .nuxt dist # Gatsby files .cache/ # Comment in the public line in if your project uses Gatsby and not Next.js # https://nextjs.org/blog/next-9-1#public-directory-support # public # vuepress build output .vuepress/dist # vuepress v2.x temp and cache directory .temp # Docusaurus cache and generated files .docusaurus # Serverless directories .serverless/ # FuseBox cache .fusebox/ # DynamoDB Local files .dynamodb/ # TernJS port file .tern-port # Stores VSCode versions used for testing VSCode extensions .vscode-test # yarn v2 .yarn/cache .yarn/unplugged .yarn/build-state.yml .yarn/install-state.gz .pnp.* ### Node Patch ### # Serverless Webpack directories .webpack/ # Optional stylelint cache # SvelteKit build / generate output .svelte-kit ### SublimeText ### # Cache files for Sublime Text *.tmlanguage.cache *.tmPreferences.cache *.stTheme.cache # Workspace files are user-specific *.sublime-workspace # Project files should be checked into the repository, unless a significant # proportion of contributors will probably not be using Sublime Text # *.sublime-project # SFTP configuration file sftp-config.json sftp-config-alt*.json # Package control specific files Package Control.last-run Package Control.ca-list Package Control.ca-bundle Package Control.system-ca-bundle Package Control.cache/ Package Control.ca-certs/ Package Control.merged-ca-bundle Package Control.user-ca-bundle oscrypto-ca-bundle.crt bh_unicode_properties.cache # Sublime-github package stores a github token in this file # https://packagecontrol.io/packages/sublime-github GitHub.sublime-settings ### Vim ### # Swap [._]*.s[a-v][a-z] !*.svg # comment out if you don't need vector files [._]*.sw[a-p] [._]s[a-rt-v][a-z] [._]ss[a-gi-z] [._]sw[a-p] # Session Session.vim Sessionx.vim # Temporary .netrwhist # Auto-generated tag files tags # Persistent undo [._]*.un~ ### VisualStudioCode ### .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json !.vscode/*.code-snippets # Local History for Visual Studio Code .history/ # Built Visual Studio Code Extensions *.vsix ### VisualStudioCode Patch ### # Ignore all local history of files .history .ionide # Support for Project snippet scope .vscode/*.code-snippets # Ignore code-workspaces *.code-workspace ### Windows ### # Windows thumbnail cache files Thumbs.db Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db # Dump file *.stackdump # Folder config file [Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msix *.msm *.msp # Windows shortcuts *.lnk # End of https://www.toptal.com/developers/gitignore/api/vim,node,linux,emacs,macos,windows,intellij,sublimetext,visualstudiocode ================================================ FILE: .nvmrc ================================================ 18.18.2 ================================================ FILE: .prettierignore ================================================ .next node_modules out ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2018- Marp team (marp-team@marp.app) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================
Marp: Markdown Presentation Ecosystem
{tokens.map((line, i) => {
const lineProps = getLineProps({ line, key: i })
return (
-
{line.map((token, key) =>
token.empty ? (
) : (
)
)}
)
})}
{copyButton && (
)}
{(author || github) && (
<>
{github && (
)}
by{' '}
{author && (
<>
{author}
{github &&
}
>
)}
{github && (
@{github}
)}
>
)}
> = React.PropsWithChildren
const anchorLinkContext = createContext(true)
const Heading: React.FC
Marp (also known as the Markdown Presentation Ecosystem) provides an
intuitive experience for creating beautiful slide decks. You only have
to focus on writing your story in a Markdown document.
{children} {summary} {description} {children}
Find all of the Marp tools, integrations, and examples in the GitHub
repository!
{article.data.author && ` by ${article.data.author}`}
}
================================================
FILE: website/components/markdown/Pre.tsx
================================================
import { CodeBlock } from '../CodeBlock'
export const Pre: React.FC = (props) => {
if (props['data-code'] === undefined) return
return (
Create beautiful slide decks using an intuitive Markdown experience
}
return (
{name}
--- for splitting pages.
),
({ index }) => (
default, gaia, and{' '}
uncover
, to tell your story beautifully. If you'd rather customize your
design, you can use Marp to{' '}
tweak styles with Markdown
, or{' '}
create your own Marp theme with plain CSS
.
),
({ index }) => (
{name}
{badge && (
)}
Tools and integrations
For developers
presentation
# Feature
# Huge text
# A few words
```
```markdown:marp
---
theme: uncover
headingDivider: 1
---
# Takahashi-style
presentation
# Feature
# Huge text
# A few words
```
================================================
FILE: website/docs/guide/fragmented-list.md
================================================
# Fragmented list
Marp uses some uncommon list markers to denote a **fragmented list** (also known as an incremental list or builds), which allows list content to appear incrementally.
Fragmented lists are _only available if you export to HTML_. If you export to PDF and PPTX, the fragmented list will be rendered as a normal list.
> Be careful when using fragmented lists. While fragmented lists can help focus the audience's attention on the last displayed item, they may also create confusion about hidden items. Some articles recommend never using builds (e.g. [Presentation Rules](http://www.jilles.net/perma/2020/06/05/presentation-rules.html)).
## For bullet lists
CommonMark's bullet list markers are `-`, `+`, and `*` (https://spec.commonmark.org/0.29/#bullet-list-marker). If you use `*` as the marker, Marp will parse the list as a fragmented list.
```markdown
# Bullet list
- One
- Two
- Three
---
# Fragmented list
* One
* Two
* Three
```
## For ordered list
CommonMark's [ordered list marker](https://spec.commonmark.org/0.29/#ordered-list-marker) must have `.` or `)` after digits. If you use `)` as the following character, then Marp will parse the ordered list as a fragmented list.
```markdown
# Ordered list
1. One
2. Two
3. Three
---
# Fragmented list
1) One
2) Two
3) Three
```
> These are inherited from [Marpit framework](https://marpit.marp.app/fragmented-list).
>
> [This syntax only indicates that the list _should_ be fragmented](https://marpit.marp.app/fragmented-list?id=rendering). If the tools integrated with Marp do nothing with the syntax, this list would be rendered as a normal list. In the official toolset, [Marp CLI](https://github.com/marp-team/marp-cli)'s default HTML template `bespoke` can reproduce a fragmented list as a build animation.
================================================
FILE: website/docs/guide/heading-divider.md
================================================
# Heading divider
The heading divider directive tells Marp to automatically add a slide break before a heading of the specified level. This directive is particularly useful when converting an existing Markdown document to slides.
Heading dividers is similar to [Pandoc](https://pandoc.org/)'s [`--slide-level` option](https://pandoc.org/MANUAL.html#structuring-the-slide-show) and [Deckset 2](https://www.deckset.com/2/)'s "Slide Dividers" option.
> This feature is inherited from the [Marpit framework](https://marpit.marp.app/directives?id=heading-divider).
## Example
Let’s say you have a Markdown document like this:
```markdown
# Markdown document
The article of Markdown
## What is Markdown?
> Markdown is a lightweight markup language for creating formatted text using a plain-text editor.
>
> _-- https://en.wikipedia.org/wiki/Markdown_
## History
### Origin
Markdown has created by John Gruber in 2004.
https://daringfireball.net/projects/markdown/
### Standardization
CommonMark is a project for a standardization of Markdown launched in 2012.
```
Add the [`headingDivider` global directive](/docs/guide/directives#global-directives).
```markdown
```
Once you have specified the directive, Marp will automatically split the document into slides by starting a new slide whenever a section has a heading level of 2.
```markdown:marp
# Markdown document
The article of Markdown
## What is Markdown?
> Markdown is a lightweight markup language for creating formatted text using a plain-text editor.
>
> _-- https://en.wikipedia.org/wiki/Markdown_
## History
### Origin
Markdown was created by John Gruber in 2004.
https://daringfireball.net/projects/markdown/
### Standardization
CommonMark is a project for a standardization of Markdown launched in 2012.
```
The `headingDivider` global directive accepts heading levels from 1 to 6. When the heading level is set as a number, Marp will split slides at headings that are _at the specified level and at all parent levels_. So, `headingDivider: 2` will actually make new slides at headings of levels 1 and 2.
If a section has so much content that it overflows the slide, it might be better to split it by subsection. To do that, just change the base level for `headingDivider` to `3`. Check out the difference from the previous example after the 3rd page:
```markdown:marp
# Markdown document
The article of Markdown
## What is Markdown?
> Markdown is a lightweight markup language for creating formatted text using a plain-text editor.
>
> _-- https://en.wikipedia.org/wiki/Markdown_
## History
### Origin
Markdown was created by John Gruber in 2004.
https://daringfireball.net/projects/markdown/
### Standardization
CommonMark is a project for a standardization of Markdown launched in 2012.
```
> [Rulers to split pages](/docs/guide/how-to-write-slides#slides) still work normally even if enabled `headingDivider`.
## Advanced
Auto split in parent heading levels is reasonable behavior in most cases, but sometimes you may require finer control of splitting levels. If you set the directive value to an array, you also instruct Marp to split at only the specified levels.
```markdown
```
This setting will instruct Marp to split slides at heading levels 1 and 3.
================================================
FILE: website/docs/guide/how-to-write-slides.md
================================================
# How to write slides
## Markdown
To write slides using Marp, you have to know basic Markdown syntax. It doesn't take long to learn the basics, and there are many Markdown tutorials on the internet, so this guide will focus on the additional syntax used by Marp that allows you to write slides.
### Resources for learning Markdown
- **[Markdown Guide](https://www.markdownguide.org/)** - A simple guide on how to use Markdown
- **[Markdown Tutorial](https://www.markdowntutorial.com/)** - Step-by-step Markdown tutorials with interactive exercises
## Slides
OK, let's write presentation slides. Marp splits slides in the deck using the horizontal ruler (e.g. `---`).
```markdown
# Slide 1
Hello, world!
---
# Slide 2
Marp splits slides in the deck by horizontal ruler.
```
```markdown:marp
# Slide 1
Hello, world!
---
# Slide 2
Marp splits slides in the deck by horizontal ruler.
```
If you use the `---` ruler, an empty line may be required before the ruler by [the spec of CommonMark](https://spec.commonmark.org/0.29/#example-28). If you do not want to add empty lines around the ruler, you can also use the underline ruler `___`, asterisk ruler `***`, or space-included ruler `- - -` to split slides.
> This feature is inherited from [Marpit framework](https://marpit.marp.app/markdown).
## Syntaxes
Marp's Markdown syntax is based on [CommonMark](https://commonmark.org/). In addition, Marp uses some extended syntax:
- Line breaks in a paragraph will convert to `
` tag automatically.
- You also can use `
` tag directly (Useful if you need a line break within a [fitting header](/docs/guide/fitting-header)).
- There is special meaning in some (uncommon) list markers `*` and `1)`. [▶️ Fragmented list](/docs/guide/fragmented-list).
- Some extended syntaxes that came from [GitHub Flavored Markdown (GFM)](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) are enabled:
- [Automatic linking for URLs](https://github.github.com/gfm/#autolinks-extension-)
- Emoji shortcode (provided by [markdown-it-emoji](https://github.com/markdown-it/markdown-it-emoji) and [twemoji](https://github.com/twitter/twemoji))
- [Strikethrough](https://github.github.com/gfm/#strikethrough-extension-) (`~~strike~~`)
- Syntax highlighting for code blocks (via [highlight.js](https://highlightjs.org/))
- [Tables](https://github.github.com/gfm/#tables-extension-)
- Most HTML tags are _disabled_ by default for security reasons. Marp only allows users to use two tags by default: the `
{article.data.title}
{article.data.title}