كل برامج معالجة النصوص سيئة. كلها بلا استثناء. سواء Word أو LibreOffice Writer. لسبب واحد: أنها معقدة أكثر من اللازم لدرجة تُشتتك عن كتابة المحتوى، الذي هو أهم شيء في المستند. فهي تجعلك تنقطع عن التفكير لتتوجه لتنسيق كلمة، أو إضافة صورة... كما أن واجهتها تحتوي مئات الأزرار والقوائم.

البديل الوحيد المناسب للكتابة في نظري هو ملف نصي بسيط. لكنه لا يكفي عندما تريد الحصول على محتوى منسق يصلح للطباعة.

لهذا ظهرت لغة Markdown، الغنية عن التعريف. ولهذا انتشرت كالنار في الهشيم في المواقع التقنية مثل GitHub، وStackOverflow حتى أصبحت اللغة شبه القياسية للكتابة بين المبرمجين.

ما علاقة كل هذا بعنوان الموضوع؟

كنت متأخرًا في اختيار موضوع مشروع التخرج (للعلم أنا طالب في كلية طب الأسنان)، وكاد الموعد النهائي لاستلام المشاريع ينتهي، وبينما كان رفاقي يتحدثون عن تقدمهم في مشاريعهم، كنت أتساءل... كيف سأتمكن من اختيار المشروع، وكتابته، ثم تنسيقه، ثم مراجعته ثم تسليمه ثم طباعته في الأسابيع القليلة القادمة؟

سارعت باختيار المشروع وتم قبوله من قبل الدكتور المشرف، وبدأت بالعمل عليه، ولأنني مغرم بعالم البرمجة والتقنية، فقد قررت كتابته بـMarkdown ثم تحويله بوسيلة ما إلى ملف PDF جاهز للطباعة، كانت هذه "الوسيلة ما" هي ما اعتمدت عليه لاختبار قدرتي في كتابة برامج تعمل من الطرفية بـNode.js، وتصميم هيكل برنامج قابل للتوسعة بالإضافات (extensible).

وبعد أن كنت متأخرًا بأسابيع عن أصدقائي، ساعدتني Markdown في إنهاء كتابة المشروع في بضعة أيام، ثم قمت بكتابة برنامج يحول Markdown إلى HTML في بضع ساعات. ميزة Markdown الجوهرية هي أنها تسمح لك بمواصلة الكتابة دون انقطاع، ليس عليك أن تتوقع لإضافة الصور أو ضغط زر ما أو فتح قائمة لإدراج جدول... فقط استمرّ بالكتابة، ثم تولَّ موضوع الإخراج بصورة منفصلة (شيء يشبه مفهوم separation of presentation and content في عالم البرمجة).

هذا هو مشروعي، لمن يهمه الأمر:

http://forabi.net/thesis/co... http://forabi.net/thesis/ac... http://forabi.net/thesis/co...

وهذا هو البرنامج الذي كتبته لتحويل ملفات Markdown إلى HTML:

ميزات البرنامج:

  1. يعمل من الطرفية

  2. يمكن استخدامه لتحويل عدة ملفات دفعة واحدة

  3. يدعم فكرة "السمات"، حيث أنشأت سمة مرفقة اسمها "thesis" لإخراج الملفات بصورة مناسبة لطباعة كتاب تعليمي، ولأنني أعلم أنّها لن تناسب الجميع، فقد قررت جعل البرنامج يقبل السمات.

  4. يدعم الإضافات: احتجت مثلًا لإرفاق الصور، فكتبت إضافة أسميتها local-images تبحث عن ملفات الصور المذكورة في Markdown وتنسخها إلى الوجهة وتربطها بـHTML، وإضافة أخرى تتعرف على جهة النصوص (RTL/LTR) وتنسقها بشكل مناسب (مثلًا قسم Abstract في مشروعي تطلب أن تكون جهة الفقرة من اليسار إلى اليمين لأنه بالإنكليزية)...

كانت هذه تجربة مثيرة لي أحببت مشاركتها. للعلم المشروع متوفر على GitHub لأنني من هؤلاء المهووسين :)

https://github.com/forabi/t...

ما أسعدني هو حديث رفاقي منذ فترة عن معاناتهم في تنسيق النصوص في Word، ابتسمت في سرّي لأنهم لم يعرفوا بعد Markdown وقليلًا جدًا من JavaScript :)