مارکمود یک تحلیلگر متن بر اساس قواعد نگارشی مارکداون است که تمام قابلیتهای مارکداون به همراه چند تحلیل اضافه را انجام میدهد. برای دیدن کامل مثالهای این پست میتوانیدبه این آدرس مراجعه کنید.
برای کامل کردن میرا نیاز به یک تحلیلکنندهی متن به روزتر از تحلیلگر استاندارد مارکداون داشتم که علائم بیشتر و نگارش کاملتری داشته باشه، ازونجایی که میرا با پرل نوشته شده و چیزی که مورد نیازم بود با پرل نوشته نشده بود هنوز، ناچارا خودم دست به کار شدم.
اول تصمیم داشتم مارکداون با طعم گیتهاب رو بازنویسی کنم، اما با مرور زمان نیازهای بیشتری رو دیدم، مخصوصا برای متنهایی که نیاز هست راست به چپ بنویسیم و هر از گاهی ممکنه بخوایم چیزی رو چپ به راست بنویسیم که باعث شد به این فکر بیفتم که مارکداون با طعم میرا رو بنویسم که بعد از مدتی هم اسمش رو به markmoredown یا ساده تر markmod، مارکمود تغییر دادم.
برای دیدن یک مثال از متنهای نوشته شده با مارکمود میتوانید متن همین پست را در این لینک ببینید.
مارکمورداون یک کتابخانهی آزاد با لایسنس MIT است برای تبدیل متنهای شبه مارکداون به html که از مارکداون استاندارد به همراه تعدادی اصلاحات و امکانات اضافه که اکثرا از پارسرهای دیگر مارکداون مانند PHP Markdown Extra, MultiMarkdown, kramdown و... الهام گرفته شدهاند پشتیبانی میکند.
اگر خارج از محیط میرا بخواهید از مارکمود استفاده کنید نیاز به پرل دارید. سیستمعاملهای شبه یونیکس مثل توزیعهای گنو/لینوکسی یا مک، پرل را به شکل پیشفرض دارند، برای ویندوز هم میتوانید پرل توتفرنگی را نصب کنید. بعد از مطمین شدن از نصب پرل با این دستور مارکمود را نصب کنید:
cpan -i Text::Markmoredown
اگر بخواهید خارج از محیط برنامه نویسی از مارکمود استفاده کنید در خط فرمان این دستور را برای فایلی که نیاز به ترجمه دارد استفاده کنید:
markmod filename.md
به این ترتیب خروجی ترجمه شده روی خط فرمان نمایش داده میشود. یا میتوانید آن را در یک فایل ذخیره کنید
markmod filename > name.html
همچنین کدهای منبع هم در مخزن گیتهاب پروژه در دسترس هستند و میتونید از روی سورس نصبش کنید یا در گسترشش مشارکت کنید.
سربرگها از h1 تا h6 fh با کمک # ها ساخته میشوند.
# h1 Heading ## h2 Heading ### h3 Heading #### h4 Heading ##### h5 Heading ###### h6 Heading <h1>h1 Heading</h1> <h2>h2 Heading</h2> <h3>h3 Heading</h3> <h4>h4 Heading</h4> <h5>h5 Heading</h5> <h6>h6 Heading</h6>
برای سربرگهای ۱ و ۲ دستور زبان متفاوتی هم وجود دارد:
Alt-H1 ====== Alt-H2 ------ <h1>Alt-H1</h1> <h2>Alt-H2</h2>
## h2 #:head-label #### h4 ######## :my-label <h2 id="head-label">h2</h2> <h4 id="my-label">h4</h4> Alt-h1 ====== :my-label <h1 id="my-label">Alt-H1</h1>
جداکنندههای افقی با استفاده از تکرار بیشتر از ۳تای - یا ـ یا * شناخته میشوند که میتوانند بینشان از یک فاصلهی دلخواه هم استفاده کرد
*** --- ___ * * * * * * * * * -------- ______________ <hr>
پاراگرافها <p>
با استفاده از یک خط خالی بین دو بلوک متن مشخص میشوند و خطوط جدید<hr>
با دو فاصله(space) در آخر خط شناخته میشوند.
برای استایل دادن به یک پاراگراف در آخر هر پاراگراف در یک خط جدید بین یک آکولاد و یک مساوی بلافاصله بعد از آن و آکولاد بسته میتوان کلاسها، id و هر چیز موردد نیا دیگری را نوشت. هر کلاس با یک . و هر id با یک # در ابتدا مشخص میشوند و با یک فاصله از هم جدا میشوند. به جز جدا کردن این مشخصه ها از هم در هیچ جای دیگری از فاصله نباید استفاده شود.
{= .class #id style="..." dir="..." align="..." style="background:#DDD;font-size:12px;" more... }
^
Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi.⋅⋅ Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad. {= .class #entry .more align="center" #body width="200px" }
متن های پررنگ با تکرار دو ستاره قبل و بعد از کلمات مشخص میشوند
این قسمت از متن **پر رنگ** یا **قوی** است.
این قسمت از متن پر رنگ یا قوی است.
برای کج نوشتن یا موردتاکید قرار دادن یک کلمه از یک زیرخط _ قبل و بعد از کلمات استفاده میکنیم.
این کلمه _مورد تاکید_ است این کلمه <em>مورد تاکید</em> است
این کلمه مورد تاکید است
کلمات با دو مساوی = قبل و بعدشان مارک میشوند
می•توان قسمتی از متن را ==مارک== کرد می•توان قسمتی از متن را <mark>مارک</mark> کرد
با استفاده از دو بعلاوه + متن اضافه شده مشخص میشود
این یک متن است که این ++کلمه++ به آن اضافه شده است. این یک متن است که این <ins>کلمه</ins> به آن اضافه شده است.
با استفاده از دو منفی - قبل و بعد از هر کلمه آن را کوچک میکنیم
این کلمه --کوچک•تر-- است این کلمه <small>کوچکتر</small> است
با استفاده از دو آکولاد ~ قبل و بعد از کلمات آنها را حذف شده معرفی میکنیم
قسمتی از متن ~~ابتشاه~~ نوشته شده قسمتی از متن <del>ابتشاه</del> نوشته شده
این قسمت از متن ~~ابتشاه~>اشتباه~~ نوشته شده بود این قسمت از متن <del>ابتشاه</del> <ins>اشتباه</ins> نوشته شده بود
قبل و بعد از ~> یک فاصله اختیاری است.
x ^y + z^ x <sup>y + z</sup>
متن ~زیرنویس~
C~6~H~12~O~6~ C<sub>6</sub>H<sub>12</sub>O<sub>6</sub>
C<sub>6</sub>H<sub>12</sub>O<sub>6</sub>
لیست های ساده با خط تیره (-) علامت جمع (+) یا ستاره (*) در ابتدای خط مشخص میشوند. با هر بار تو رفتگی با چهار اسپیس میتوان یک زیر لیست در لیست قبلی مشخص کرد. ترتیب استفاده از علایم هیچ اهمیتی ندارد.
+ لورم ایپسوم + متن ساختگی + با تولید سادگی نامفهوم + از صنعت چاپ + و با استفاده از + طراحان گرافیک است. - چاپگرها - متون - روزنامه - مجله * در ستون * و سطرآنچنان که * لازم است - برای شرایط فعلی - تکنولوژی مورد نیاز + کاربردهای متنوع + با هدف بهبود + ابزارهای کاربردی می باشد. <ul> <li>لورم ایپسوم</li> ... <li>طراحان گرافیک است.</li> <ul> <li>چاپگرها</li> ... <li>مجله</li> <ul> <li>در ستون</li> ... <li>لازم است </ul> ... <li>تکنولوژی مورد نیاز </ul> ... <li>ابزارهای کاربردی می باشد.</li>
این لیستها با یک عدد در ابتدا به همراه یک نقطه بلافاصله بعد از آن شناخته میشوند.
1. لورم ایپسوم 2. متن ساختگی 3. با تولید سادگی نامفهوم 1. از صنعت چاپ 2. و با استفاده از 4. طراحان گرافیک است. 5. چاپگرها - متون - روزنامه - مجله 1. در ستون 2. و سطرآنچنان که 3. لازم است 6. برای شرایط فعلی 7. تکنولوژی مورد نیاز 8. کاربردهای متنوع + با هدف بهبود + ابزارهای کاربردی می باشد.
سیب : درخت سیب (نام علمی: M. pumila) درختی برگریز از خانواده گلسرخیان است که به خاطر میوه شیرین و گوشتی•اش شناخته شده•است. : در برخی از منابع مذهبی به عنوان گیاه ممنوعه•ای که باعث اخراج آدم از بهشت شد معرفی شده•است. پرتقال : میوه•ای از خانواده مرکبات می•باشد. درخت آن همیشه سبز و پر برگ است و ارتفاع آن تا ۱۰ متر هم می•رسد.
برابر است با:
<dl> <dt>سیب</dt> <dd>درخت سیب (نام علمی: M. pumila) درختی برگریز از خانواده گلسرخیان است که به خاطر میوه شیرین و گوشتی•اش شناخته شده•است.</dd> <dd>در برخی از منابع مذهبی به عنوان گیاه ممنوعه•ای که باعث اخراج آدم از بهشت شد معرفی شده•است.</dd> <dt>پرتقال</dt> <dd>میوه•ای از خانواده مرکبات می•باشد. درخت آن همیشه سبز و پر برگ است و ارتفاع آن تا ۱۰ متر هم می•رسد.</dd> </dl>
اگر میخواهید یک لیست بلافاصله بعد از لیست قبلی داشته باشید برای جدا کردن این لیستها از یک خط که تنها یک ^ دارد بین دو لیست استفاده کنید.
* List one ^ * List two
خطوطی که با یک > در ابتدا شروع میشوند یک نقل قول هستند. نقل قولها میتوانند تو در تو باشند و از یک نقل قول درون یک نقل قول دیگر استفاده کرد. همچنین سایر علایم مارکداون شامل لیستها، سربرگها و کدها هم در بین نقل قولها معتبر هستند.
> این یک نقل قول در ۲پاراگراف است. نقل قول•ها برای نمایش > متنی سخن دیگران یا ارجاع دادن به مطالبی از منابع متفاوت و > خارج از متن اصلی است > > ادامه نقل قول در پاراگراف دوم <blockquote> <p> این یک نقل قول در ۲پاراگراف است. نقل قول•ها برای نمایش متنی سخن دیگران یا ارجاع دادن به مطالبی از منابع متفاوت و خارج از متن اصلی است </p> <p> ادامه نقل قول در پاراگراف دوم </p> </blockquote>
مارکداون به شدت سادهگیر است و میتوان پاراگراف را مانند مثال بالا در چندین خط جدا از هم یا به شکل مثال پایین به صورت متوالی نوشت
> این یک نقل قول در ۲پاراگراف است. نقل قول•ها برای نمایش متنی سخن دیگران یا ارجاع دادن به مطالبی از منابع متفاوت و خارج از متن اصلی است > ادامه نقل قول در پاراگراف دوم
همچنین در هر نقل قول میتوان از سایر اجزای مارکداون شامل نقل قول، سربرگها لیست ها و بلوکهای کد استفاده کرد
> این یک نقل قول است > > > این یک نقل قول درون یک نقل قول دیگر است > > ## سربرگ سطح دو > >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. --- <p>This is <a href="http://example.com/" title="Title"> an example</a> inline link.</p> <p><a href="http://example.net/">This link</a> has no title attribute.</p>
و لینک های ارجاعی نیز ساختاری به این صورت دارند
This is [an example][id] reference-style link. یا This is [an example] [id] reference-style link. ادامه متن و متن و متن و متن. [id]: http://example.com/ "Optional Title Here" --- <p>This is <a href="http://example.com/" title="Optional Title Here">an example</a> reference-style link.</p> <p>This is <a href="http://example.com/" title="Optional Title Here">an example</a> reference-style link.</p> <p>ادامه متن و متن و متن و متن.</p>
همچنین لینکهای ارجاعی رو به این صورت هم میتوان نوشت
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=""} <a class="class1 class2" id="id1 id3" style="..." name="link-name" other-attributes="">This link</a>
از کاراکتر فاصله در مشخصات استفاده نکنید
اشتباه style="border: 1px; width: 150px" صحیح style="border:1px;width:150px"
برای اضافه کردن تصاویر از همان کاراکترهای مورد استفاده برای افزودن لینکها استفاده میکنیم، تنها یک علامت تعجب اضافه در ابتدای آن باید قید شود.
![Alt text](/path/to/img.jpg) ![Alt text](/path/to/img.jpg "Optional title")
![Alt text][id] سایر پاراگرافها و.... [id]: url/to/image "Optional title attribute"
در مارکمود برای تصاویر میتوان خاصیتهای شخصی هم تعریف کرد. برای اینکار باید بلافاصله بعد از پرانتز یا براکت پایانی یک آکولاد باز و بسته کرد و نشخصات را در آن تعریف کرد.
![Alt text](/path/to/img.jpg){.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"
تنها کافی است قبل و بعد از هر کد درون خطی یک (`) گذاشته شود
برای پرینت کردن در خروجی از `printf()` استفاده کنید
برای پرینت کردن در خروجی از printf()
استفاده کنید
برای نوشتن یک بلوک کد تنها کافی است به اندازهی یک tab یا ۴کاراکتر فاصله(space) در ابتدای هر خط خالی جلو برویم.
This is a normal paragraph: This is a code block.
برابر است با
<p>This is a normal paragraph:</p> <pre><code>This is a code block. </code></pre>
همچنین فرورفتگیها در کدهای بلوکی حفظ میشوند.
Here is an example of AppleScript: tell application "Foo" beep end tell
برابر است با:
<p>Here is an example of AppleScript:</p> <pre><code>tell application "Foo" beep end tell </code></pre>
اگر میخواهید یک بلوک کد بلافاصله بعد از یک بلوک دیگر داشته باشید برای جدا کردنشان از یک خط که تنها یک ^ دارد بین دو بلوک استفاده کنید.
code block1 code block1 ^ code block2 code block2
از یک حصار ``` برای مشخص کردن این بلوکها استفاده میشود و نیازی به اعمال فرورفتگیها ندارند.
``` codes... ```
میتوان کلاس زبان یا خواص دیگر class را برای این حصارها مشخص کرد. اگر بعد از کلاس نام زبان برنامه نویسی مورد نظرتان را بنویسید کلاس زبان در نظر گرفته خواهد شد.
``` perl code... code... code... ``` <pre><code class="language-perl"> code... code... code... </code></pre>
و اگر با : بعد از حصار نام کلاس را بنویسید، کلاس شخصی در نظر گرفته خواهد شد.
``` :class-name some codes... ``` <pre><code class="class-name"> some codes... </code></pre>
جدول ها به سادگی نمایششان با خطوط ساخته میشوند.
| | 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):} \\]
$Math formula$ یا \\( formula \\)
برای مثال میتوان گفت که این کتابخانه با استفاده از پرل[^perl] نوشته شده است.
[^perl]: پرل یک زبان برنامه نویسی است
این مطالب برگرفته از این کتاب بود [پاراگراف پنجم، خط دوم][#منبع]
[#منبع]: یک کتاب تخیلی، فصل سوم، پاراگراف پنجم، خط دوم، نوشته شده توسط کیاوش، انتشارات نامعلوم