How to Markdown?
4 min read
- نشر في :
Ahmed Ja'dan
4 min read
Ahmed Ja'dan
Markdown and Mdx parsing is supported via unified
, and other remark and rehype packages. next-mdx-remote
allows us to parse .mdx
and .md
files in a more flexible manner without touching webpack.
Github flavored markdown is used. mdx-prism
provides syntax highlighting capabilities for code blocks. Here's a demo of how everything looks.
The following markdown cheatsheet is adapted from: https://guides.github.com/features/mastering-markdown/
Markdown is a way to style text on the web. You control the display of the document; formatting words as bold or italic, adding images, and creating lists are just a few of the things we can do with Markdown. Mostly, Markdown is just regular text with a few non-alphabetic characters thrown in, like #
or *
.
Here’s an overview of Markdown syntax that you can use anywhere on GitHub.com or in your own text files.
# This is a h1 tag
## This is a h2 tag
#### This is a h4 tag
_This text will be italic_
**This text will be bold**
_You **can** combine them_
This text will be italic
This text will be bold
You can combine them
- Item 1
- Item 2
- Item 2a
- Item 2b
1. Item 1
1. Item 2
1. Item 3
1. Item 3a
1. Item 3b
http://github.com - automatic!
[GitHub](http://github.com)
http://github.com - automatic! GitHub
As Kanye West said:
> We're living the future so
> the present is our past.
As Kanye West said:
We're living the future so the present is our past.
I think you should use an
`<addr>` element here instead.
I think you should use an
<addr>
element here instead.
Here’s an example of how you can use syntax highlighting with GitHub Flavored Markdown:
And here's how it looks - nicely colored with styled code titles!
function fancyAlert(arg) {
if (arg) {
$.facebox({ div: '#foo' })
}
}
//mdx file
export async function getFileBySlug(type, slug, otherLocale = '') {
const [mdxPath, mdPath] =
otherLocale === ''
? [
path.join(root, 'data', type, `${slug}.mdx`),
path.join(root, 'data', type, `${slug}.md`),
]
: [
path.join(root, 'data', type, `${slug}.${otherLocale}.mdx`),
path.join(root, 'data', type, `${slug}.${otherLocale}.md`),
];
const source = fs.existsSync(mdxPath)
? fs.readFileSync(mdxPath, 'utf8')
: fs.readFileSync(mdPath, 'utf8');
const { data, content } = matter(source);
const mdxContent = await renderToString(content, {
components: MDXComponents,
mdxOptions: {
remarkPlugins: [
require('remark-autolink-headings'),
require('remark-slug'),
require('remark-code-titles'),
],
rehypePlugins: [mdxPrism],
},
});
//console.log('data', data);
return {
mdxContent,
frontMatter: {
wordCount: content.split(/\s+/gu).length,
readingTime: readingTime(content),
slug: slug || null,
...data,
},
};
}
- [x] list syntax required (any unordered or ordered list supported)
- [x] this is a complete item
- [ ] this is an incomplete item
You can create tables by assembling a list of words and dividing them with hyphens -
(for the first row), and then separating each column with a pipe |
:
| First Header | Second Header |
| --------------------------- | ---------------------------- |
| Content from cell 1 | Content from cell 2 |
| Content in the first column | Content in the second column |
First Header | Second Header |
---|---|
Content from cell 1 | Content from cell 2 |
Content in the first column | Content in the second column |
Any word wrapped with two tildes (like ~~this~~
) will appear crossed out.