مشروع تخرج من نوع مختلف
كل برامج معالجة النصوص سيئة. كلها بلا استثناء. سواء 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:
ميزات البرنامج:
يعمل من الطرفية
يمكن استخدامه لتحويل عدة ملفات دفعة واحدة
يدعم فكرة "السمات"، حيث أنشأت سمة مرفقة اسمها "thesis" لإخراج الملفات بصورة مناسبة لطباعة كتاب تعليمي، ولأنني أعلم أنّها لن تناسب الجميع، فقد قررت جعل البرنامج يقبل السمات.
يدعم الإضافات: احتجت مثلًا لإرفاق الصور، فكتبت إضافة أسميتها local-images تبحث عن ملفات الصور المذكورة في Markdown وتنسخها إلى الوجهة وتربطها بـHTML، وإضافة أخرى تتعرف على جهة النصوص (RTL/LTR) وتنسقها بشكل مناسب (مثلًا قسم Abstract في مشروعي تطلب أن تكون جهة الفقرة من اليسار إلى اليمين لأنه بالإنكليزية)...
كانت هذه تجربة مثيرة لي أحببت مشاركتها. للعلم المشروع متوفر على GitHub لأنني من هؤلاء المهووسين :)
https://github.com/forabi/t...ما أسعدني هو حديث رفاقي منذ فترة عن معاناتهم في تنسيق النصوص في Word، ابتسمت في سرّي لأنهم لم يعرفوا بعد Markdown وقليلًا جدًا من JavaScript :)
التعليقات
بالعكس، سؤالك متوقع وفي محله :)
لا أدري في الحقيقة، يمكنك القول أن اختياري لطب الأسنان كان خيارًا وسطًا بين رغبة أهلي في اختيار الطب البشري وعدم حبي له مع غياب كلية ذات مستوى جيد لدراسة علوم الحاسب (للعلم لا يوجد لدينا فرع اسمه علوم الحاسب، بل "هندسة معلوماتية" أقرب ما يمكن)، لدي مشاعر مختلطة تجاه اختياري اليوم، فمن ناحية هي مهنة محترمة، لكنها مُجهدة. مهما يكن الأمر، فقد قررت أن لا أندم على شيء فعلته، لأنني لا أستطيع تغييره، كما أن الأمر أفادني بتعلم البرمجة بالأسلوب الذي أريد، بخلاف الحاجة للالتزام بمنهاج ووقت محددين، كما أنني أحيانًا أتعلم أمور لا يتعلمها أصدقائي في الهندسة المعلوماتية، حتى أن أحدهم سألني عن كيفية استخدام git وGitHub.
لا أدري في الحقيقة، يمكنك القول أن اختياري لطب الأسنان كان خيارًا وسطًا بين رغبة أهلي في اختيار الطب البشري وعدم حبي له
ليس أمامك إذن غير تحوير هوايتك لتعينك في مهنتك، لا أقصد هنا برمجة برنامج لحفظ بيانات عملائك فقط، فهذا متوقع وعادي، لكني أقصد شيئا آخر قد يفيد غيرك أيضا، فكما تدري، آلات وبرامج الأطباء لا يصنعها الأطباء بما تعلموه في مجالهم بل يصنعها آخرون لديهم تخصصات مختلفة، وأنت بين هذا وذاك ... إستغل حظك :)
رائع! أحييك على مجهودك،
بمناسبة الحديث عن "الوسيلة ما" لتحويل html إلى ملف PDF جاهز للطباعة، فإنه كان لدي بحث في هذا الموضوع
إنتظر لحظة سأنظر الى مفضلتي:
http://wkhtmltopdf.org بسيطة وعملية أكثر كان لي معها تجرية في مشروع يحول مدونة الي كتاب (بي دي اف) لكني لم أواصل في المشروع
http://manual.calibre-ebook... يبدو أنها أداة قوية تحول الى pdf epub .. وكثير من الصيغ، لكني وجدتها صعبة الاستخدام
خدمو مفتوحة المصدر لتحويل markdown الى pdf ( بطبع بالمرور على خطوة html) ، الخدمة لا تدعم RTL، هذا حسابهمم على
هذا مالدي في هذا الموضوع.
لدي بعض الأسئلة:
ما هي الأداة التي استعملتها للتحويل الى الـ PDF ؟
ماذا يعني مفهموم separation of presentation and content ؟ لم أفهم شرحهافي الويكيبديا
قمت بطباعة الملف من خلال Chrome بصورة ملف PDF.
معنى المفهوم هو أن تفصل بين المحتوى وطريقة عرضه، بمعنى ألا تصمم هيكل المشروع بحيث يمكنك فيما بعد تغيير طريقة عرض المحتوى، فلو كان لديك مثلًا ملف HTML، فإنك تكتبه بلا تنسيق ثم تربطه بملف CSS، ليمكنك فيما بعد تبديل ملف CSS بآخر دون الحاجة للتعديل على المحتوى، وهذا أبسط صور المفهوم، ولكن يمكن توسيعه في شتى مجالات البرمجة.
لماذا لم تلقي نظرة على LaTeX؟ أغلب البحوث والأوراق العملية تكتب بها.
انظر لبعض الأمثلة وكيفية التحكم في كل شي في الصفحة (الهوامش، الفهرس، الصور، الخطوط، المعادلات الرياضية، المعادلات الكيمائية، سورس كود):
http://liantze.penguinattac...
وهذا مشروع تخرجي، كتبته عبر LaTeX باللغة العربية:
طبعا يمكنك أنشاء CVs, Presentation, Posters, PDF forms, books, articles, journals
ويمكنك البحث عن LaTeX/TeX للمزيد من المعلومات
لامثلة اخرى من
/questions/134638/showcase-tex-typography-for-tugs-calendar?lq=1
/questions/158668/nice-scientific-pictures-show-off?lq=1
حديث ذو شجون حقاً... حالياً أستخدم PrinceXML لتوليد ملفات PDF من ملفات HTML، فهي الوحيدة (فيما أعلم) التي تدعم معايير CSS في الطباعة، لكن علة هذه الأداة أنها ليست حرة.
السؤال: هل يوجد بديل حر لهذه الأداة؟ فكافة المتصفحات الحالية لا تدعم معايير CSS الطباعية، مع أن موزيلا تقول إن كافة المتصفحات تدعمها! انظر:
فما حقيقة الأمر؟!
مشروع رائع، بارك الله فيك، وأعانك على دراستك!
ما أعجبني في الأمر أنك شاركت المصدر مع الجميع، وهو ما يعجبني في فلسفة البرمجيات الحرة مفتوحة المصدر. أن يجد أي مستخدم للحاسوب بُغيته في كودٍ يكتُبُه ثم يتشاركه والناس ممّن قد يحتاجونَه، ومن ثمّ يطورونه ويحسنونه! :)
في الشركة التي أعمل بها، نستخدم wkhtmltopdf لتحويل HTML إلى PDF. غالب المستندات المتشاركة بين العاملين بالشركة تكون على Google Drive باستخدام Google Docs. وهو أسهل بالمناسبة من Microsoft Office و LibreOffice.