برای کامل کردن [میرا](http://miraxy.github.io) نیاز به یک تحلیلکنندهی متن به روزتر از تحلیلگر استاندارد مارکداون داشتم که علائم بیشتر و نگارش کاملتری داشته باشه، ازونجایی که میرا با پرل نوشته شده و چیزی که مورد نیازم بود با پرل نوشته نشده بود هنوز، ناچارا خودم دست به کار شدم. اول تصمیم داشتم مارکداون با طعم گیتهاب رو بازنویسی کنم، اما با مرور زمان نیازهای بیشتری رو دیدم، مخصوصا برای متنهایی که نیاز هست راست به چپ بنویسیم و هر از گاهی ممکنه بخوایم چیزی رو چپ به راست بنویسیم که باعث شد به این فکر بیفتم که **مارکداون با طعم میرا** رو بنویسم که بعد از مدتی هم اسمش رو به markmoredown یا ساده تر markmod، مارکمود تغییر دادم. برای دیدن یک مثال از متنهای نوشته شده با مارکمود میتوانید متن همین پست را در [این لینک](/assets/markmod.txt) ببینید. - [معرفی](#معرفی) - [نصب](#نصب) - [دستور زبان](#دستور_زبان) + [سربرگها](#سربرگها) * [برچسبهای دلخواه](#برچسبهای_دلخواه_در_سربرگ) + [جداکنندههای افقی](#جداکنندههای_افقی) + [پاراگرافها و خطوط جدید](#پاراگرافها_و_خطوط_جدید) * [استایل دادن به پاراگراف](#استایل_دادن_به_پاراگراف) + [تایپوگرافی](#تایپوگرافی) * [متن پررنگ یا قوی](#متن_پررنگ_یا_قوی) * [متن کج یا مورد تاکید](#متن_کج_یا_مورد_تاکید) * [مارک کردن](#مارک_کردن) * [متن اضافه شده](#متن_اضافه_شده) * [متن کوچک](#متن_کوچک) * [متن حذف شده](#متن_حذف_شده) * [متن حذف/اضافه شده](#متن_حذف_اضافه_شده) * [متن بالانویس](#متن_بالانویس) * [متن زیرنویس](#متن_زیرنویس) + [لیستها](#لیستها) * [لیستهای ساده](#لیستهای_ساده) * [لیستهای شمارهدار](#لیستهای_شمارهدار) * [لیستهای تعریفی](#لیستهای_تعریفی) * [جداساز لیستها](#جداساز_لیستها) + [نقل قولها](#نقل_قولها) * [جداساز نقل قولها](#جداساز_نقل_قولها) + [لینکها](#لینکها) * [لینکهای درونخطی](#لینکهای_درونخطی) * [لینکهای ارجاعی](#لینکهای_ارجاعی) * [تعیین خواص لینکها](#تعیین_خواص_لینکها) + [تصاویر](#تصاویر) * [تصاویر درخط](#تصاویر_درخط) * [تصاویر ارجاعی](#تصاویر_ارجاعی) * [تعیین خواص تصاویر](#تعیین_خواص_تصاویر) + [کد (code)](#کد) * [کدهای درخط](#کدهای_درخط) * [بلوکهای کد](#بلوکهای_کد) - [جداساز بلوکهای کد](#جداساز_بلوکهای_کد) * [بلوکهای کد محصور](#بلوکهای_کد_محصور) + [جداول](#جداول) + [فرمولهای ریاضی](#فرمولهای_ریاضی) * [نمایش بلوکی فرمولهای ریاضی](#نمایش_بلوکی_فرمولهای_ریاضی) * [نمایش درخط فرمولهای ریاضی](#نمایش_درخط_فرمولهای_ریاضی) + [پانویس](#پانویس) + [کتاب نگاری](#کتاب_نگاری) ## معرفی مارکمورداون یک کتابخانهی آزاد با لایسنس MIT است برای تبدیل متنهای شبه مارکداون به html که از مارکداون استاندارد به همراه تعدادی اصلاحات و امکانات اضافه که اکثرا از پارسرهای دیگر مارکداون مانند PHP Markdown Extra, MultiMarkdown, kramdown و... الهام گرفته شدهاند پشتیبانی میکند. ## نصب اگر خارج از محیط میرا بخواهید از مارکمود استفاده کنید نیاز به پرل دارید. سیستمعاملهای شبه یونیکس مثل توزیعهای گنو/لینوکسی یا مک، پرل را به شکل پیشفرض دارند، برای ویندوز هم میتوانید [پرل توتفرنگی](http://strawberryperl.com/) را نصب کنید. بعد از مطمین شدن از نصب پرل با این دستور مارکمود را نصب کنید: cpan Text::Markmoredown اگر بخواهید خارج از محیط برنامه نویسی از مارکمود استفاده کنید در خط فرمان این دستور را برای فایلی که نیاز به ترجمه دارد استفاده کنید: markmod filename.md به این ترتیب خروجی ترجمه شده روی خط فرمان نمایش داده میشود. یا میتوانید آن را در یک فایل ذخیره کنید markmod filename > name.html همچنین کدهای منبع هم در [مخزن گیتهاب پروژه](https://github.com/kiamazi/markmoredown) در دسترس هستند و میتونید از روی سورس نصبش کنید یا در گسترشش مشارکت کنید. ## دستور زبان ### سربرگها سربرگها از h1 تا h6 fh با کمک # ها ساخته میشوند. # h1 Heading ## h2 Heading ### h3 Heading #### h4 Heading ##### h5 Heading ###### h6 Heading
` با استفاده از یک خط خالی بین دو بلوک متن مشخص میشوند و خطوط جدید`
مارکداون به شدت سادهگیر است و میتوان پاراگراف را مانند مثال بالا در چندین خط جدا از هم یا به شکل مثال پایین به صورت متوالی نوشت > این یک نقل قول در ۲پاراگراف است. نقل قولها برای نمایش متنی سخن دیگران یا ارجاع دادن به مطالبی از منابع متفاوت و خارج از متن اصلی است > ادامه نقل قول در پاراگراف دوم همچنین در هر نقل قول میتوان از سایر اجزای مارکداون شامل نقل قول، سربرگها لیست ها و بلوکهای کد استفاده کرد > این یک نقل قول است > > > این یک نقل قول درون یک نقل قول دیگر است > > ## سربرگ سطح دو > >1. آیتم یک >2. آیتم دوم > > return shell_exec("echo $input | $markdown_script"); [بلوک کد] > این یک نقل قول است > > > این یک نقل قول درون یک نقل قول دیگر است > > ## سربرگ سطح دو >1. آیتم یک >2. آیتم دوم > > return shell_exec("echo $input | $markdown_script"); [بلوک کد] #### جداساز نقل قولها اگر میخواهید یک نقل قول بلافاصله بعد از یک نقل قول دیگر داشته باشید برای جدا کردنشان از یک خط که تنها یک ^ دارد بین دو بلوک استفاده کنید. > block1 ^ > block2 ### لینکها مارکداون از ۲ نوع لینک پشتیبانی میکند، لینکهای درون خطی و لینکهای ارجاعی. #### لینکهای درونخطی لینکهای درونخطی را به این شکل میتوان ایجاد کرد This is [an example](http://example.com/ "Title") inline link. [This link](http://example.net/) has no title attribute. ---این یک نقل قول در ۲پاراگراف است. نقل قولها برای نمایش متنی سخن دیگران یا ارجاع دادن به مطالبی از منابع متفاوت و خارج از متن اصلی است
ادامه نقل قول در پاراگراف دوم
This is an example inline link.
This link has no title attribute.
#### لینکهای ارجاعی و لینک های ارجاعی نیز ساختاری به این صورت دارند This is [an example][id] reference-style link. یا This is [an example] [id] reference-style link. ادامه متن و متن و متن و متن. [id]: http://example.com/ "Optional Title Here" ---This is an example reference-style link.
This is an example reference-style link.
ادامه متن و متن و متن و متن.
همچنین لینکهای ارجاعی رو به این صورت هم میتوان نوشت my name is [kiavash][] سایر پاراگرافها و.... [kiavash]: https://kiavash.one/ #### تعیین خواص لینکها در مارکمود برای لینکها میتوان خاصیتهای شخصی هم تعریف کرد. برای اینکار باید بلافاصله بعد از پرانتز یا براکت پایانی یک آکولاد باز و بسته کرد و نشخصات را در آن تعریف کرد. This is [an example][id]{.class1 .class2 #id1 style="..." #id3 other-attributes} یا [This link](http://kiavash.one/){.class1 .class2 #id1 style="..." #id3 name="link-name" other-attributes=""} This link **از کاراکتر فاصله در مشخصات استفاده نکنید** اشتباه style="border: 1px; width: 150px" صحیح style="border:1px;width:150px" ### تصاویر برای اضافه کردن تصاویر از همان کاراکترهای مورد استفاده برای افزودن لینکها استفاده میکنیم، تنها یک علامت تعجب اضافه در ابتدای آن باید قید شود. #### تصاویر درخط   #### تصاویر ارجاعی ![Alt text][id] سایر پاراگرافها و.... [id]: url/to/image "Optional title attribute" #### تعیین خواص تصاویر در مارکمود برای تصاویر میتوان خاصیتهای شخصی هم تعریف کرد. برای اینکار باید بلافاصله بعد از پرانتز یا براکت پایانی یک آکولاد باز و بسته کرد و نشخصات را در آن تعریف کرد. {.class1 .class2 #id1 style="..." #id3 width="100px" height="100px"} ![Alt text][id]{.class1 .class2 #id1 style="border:2px;max-width:100%" #id3 other-attributes} **از کاراکتر فاصله در مشخصات استفاده نکنید** اشتباه style="border: 1px; width: 150px" صحیح style="border:1px;width:150px" ### کد (code) #:کد #### کدهای درخط تنها کافی است قبل و بعد از هر کد درون خطی یک (`) گذاشته شود برای پرینت کردن در خروجی از \`printf()\` استفاده کنید برای پرینت کردن در خروجی از `printf()` استفاده کنید #### بلوکهای کد برای نوشتن یک بلوک کد تنها کافی است به اندازهی یک tab یا ۴کاراکتر فاصله(space) در ابتدای هر خط خالی جلو برویم. This is a normal paragraph: This is a code block. برابر است باThis is a normal paragraph:
This is a code block.
همچنین فرورفتگیها در کدهای بلوکی حفظ میشوند.
Here is an example of AppleScript:
tell application "Foo"
beep
end tell
برابر است با:
Here is an example of AppleScript:
tell application "Foo"
beep
end tell
##### جداساز بلوکهای کد
اگر میخواهید یک بلوک کد بلافاصله بعد از یک بلوک دیگر داشته باشید برای جدا کردنشان از یک خط که تنها یک ^ دارد بین دو بلوک استفاده کنید.
code block1
code block1
^
code block2
code block2
#### بلوکهای کد محصور
از یک حصار ``` برای مشخص کردن این بلوکها استفاده میشود و نیازی به اعمال فرورفتگیها ندارند.
```
codes...
```
میتوان کلاس زبان یا خواص دیگر class را برای این حصارها مشخص کرد. اگر بعد از کلاس نام زبان برنامه نویسی مورد نظرتان را بنویسید کلاس زبان در نظر گرفته خواهد شد.
``` perl
code...
code...
code...
```
code...
code...
code...
و اگر با : بعد از حصار نام کلاس را بنویسید، کلاس شخصی در نظر گرفته خواهد شد.
``` :class-name
some codes...
```
some codes...
### جداول
جدول ها به سادگی نمایششان با خطوط ساخته میشوند.
| | Grouping ||
| First Header | Second Header | Third Header |
| ------------ | :-----------: | -----------: |
| Content | *Long Cell* ||
| Content | **Cell** | Cell |
| New section | More | Data |
| | Grouping ||
| First Header | Second Header | Third Header |
| ------------ | :-----------: | -----------: |
| Content | *Long Cell* ||
| Content | **Cell** | Cell |
| New section | More | Data |
### فرمولهای ریاضی
فرمولهای ریاضی را به صورت در خط و بلوکی میتوان نمایش داد. در حال حاضر مارک مود تنها از MathML2 پشتیبانی میکند. --(ممکن است فرمولها را به صورت کامل و صحیح نبینید، بعضی از مرورگها مثل اپرا یا کروم، پشتیبانی کامل از MathML ندارند، اما اگر از فایرفاکس استفاده میکنید فرمولها را کامل و صحیح خواهید دید.)--
#### نمایش بلوکی فرمولهای ریاضی
```
$$
{e}^{i\pi }+1=0
$$
```
یا
\\[
{(2x,+,17y,=,23),(x,-,y,=,5):}
\\]
که به ترتیب به این صورت به نمایش در میایند:
$$
{e}^{i\pi }+1=0
$$
و
\\[
{(2x,+,17y,=,23),(x,-,y,=,5):}
\\]
#### نمایش درخط فرمولهای ریاضی
$Math formula$
یا
\\(
formula
\\)
که به ترتیب به اینصورت استفاده میشوند.
تست یک فرمول \$sum_(i=1)^n i^3=((n(n+1))/2)^2\$ به صورت بر خط
a formula test \\\\(sum_(i=1)^n i^3=((n(n+1))/2)^2\\\\)
{=dir="ltr"}
تست یک فرمول $sum_(i=1)^n i^3=((n(n+1))/2)^2$ به صورت بر خط
تست همان فرمول \\(sum_(i=1)^n i^3=((n(n+1))/2)^2\\) به شکل دیگر
### پانویس
برای مثال میتوان گفت که این کتابخانه با استفاده از پرل\[^perl\] نوشته شده است.
\[^perl\]: پرل یک زبان برنامه نویسی است
که نتیجه به این صورت خواهد بود:
برای مثال میتوان گفت که این کتابخانه با استفاده از پرل[^perl] نوشته شده است.
[^perl]: پرل یک زبان برنامه نویسی است
### کتاب نگاری
این مطالب برگرفته از این کتاب بود \[پاراگراف پنجم، خط دوم\]\[#منبع\]
\[#منبع\]: یک کتاب تخیلی، فصل سوم، پاراگراف پنجم، خط دوم، نوشته شده توسط کیاوش، انتشارات نامعلوم
که به این صورت نمایش داده خواهد شد:
این مطالب برگرفته از این کتاب بود [پاراگراف پنجم، خط دوم][#منبع]
[#منبع]: یک کتاب تخیلی، فصل سوم، پاراگراف پنجم، خط دوم، نوشته شده توسط کیاوش، انتشارات نامعلوم