مارک مور داون (مارک‌مود) / MarkMoreDown~>markmod

مارک‌مود یک تحلیلگر متن بر اساس قواعد نگارشی مارک‌داون است که تمام قابلیت‌های مارک‌داون به همراه چند تحلیل اضافه را انجام می‌دهد. برای دیدن کامل مثال‌های این پست می‌توانیدبه این آدرس مراجعه کنید. https://kiavash.one/2018/04/14/markmoredown/ برای کامل کردن میرا نیاز به یک تحلیل‌کننده‌ی متن به روز‌تر از تحلیل‌گر استاندارد مارک‌داون داشتم که علائم بیشتر و نگارش کامل‌تری داشته باشه، ازونجایی که میرا با پرل نوشته شده و چیزی که مورد نیازم بود با پرل نوشته نشده بود هنوز، ناچارا خودم دست به کار شدم.اول تصمیم داشتم مارک‌داون با طعم گیت‌هاب رو بازنویسی کنم، اما با مرور زمان نیازهای بیشتری رو دیدم، مخصوصا برای متن‌هایی که نیاز هست راست به چپ بنویسیم و هر از گاهی ممکنه بخوایم چیزی رو چپ به راست بنویسیم که باعث شد به این فکر بیفتم که مارک‌داون با طعم میرا رو بنویسم که بعد از مدتی هم اسمش رو به 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" کد (code) #:کدکدهای درخطتنها کافی است قبل و بعد از هر کد درون خطی یک (`) گذاشته شودبرای پرینت کردن در خروجی از `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]: پرل یک زبان برنامه نویسی استکتاب نگاریاین مطالب برگرفته از این کتاب بود [پاراگراف پنجم، خط دوم][#منبع][#منبع]: یک کتاب تخیلی، فصل سوم، پاراگراف پنجم، خط دوم، نوشته شده توسط کیاوش، انتشارات نامعلوم