منذ أن درست في الجامعة ، استخدمت LaTeX لتصميم أوراق المعمل والدراسة. قابلت LaTeX لأول مرة في Coursera ، في الدورة التدريبية " المستندات والعروض التقديمية في LaTeX ".
في هذه المقالة ، سأصف كيف كتبت دبلومًا باستخدام LaTeX ولماذا استخدمت GitHub و Docker و TravisCI.

مقدمة
بدأ طريقي لتحرير المستندات وإنشاءها باستخدام Microsoft Word ، ربما مثل الكثير. بعد التبديل من Windows إلى Linux ، بدأت بسهولة في استخدام OpenOffice ثم LibreOffice ، والذي لم يكن في وظيفتي أدنى من الوظيفية في Word.
كان الأمر مؤلمًا بعض الشيء عندما كتبت بعض المقالات في غرفة الكمبيوتر بالمكتبة في OpenOffice وحملتها إلى نسخة مطبوعة على الكمبيوتر الإداري باستخدام Microsoft Word ، وجميع ذباب التنسيق. في ذلك الوقت من المدرسة ، لم يشرح لي أحد أنه يمكنك حفظ مستند بتنسيق PDF والطباعة دون مشاكل ، لقد اكتشفت بالفعل عندما كنت في الجامعة وكان من الضروري طباعة المستندات كل يوم تقريبًا.
دعنا نعود إلى LaTeX ، قبل استخدامه ، كل ما سمعته عن LaTeX هو أنهم يستخدمونه لكتابة مقالات في المجلات العلمية لأنه مناسب جدًا للعمل مع الصيغ. أولئك الذين يفكرون في الأمر نفسه ، أوصي بمشاهدة الدورة التدريبية على Coursera ، ربما سيغير رأيك ، على سبيل المثال أعجبني حقًا.
مرحبًا بالعالم على LaTeX:
\documentclass{article} \begin{document} Hello, World! \end{document}
بالمناسبة ، بمساعدة LaTeX يمكنك عمل عروض تقديمية. هنا يمكنك أن ترى أمثلة كثيرة لكيفية ظهور هذه العروض التقديمية.
درجة البكالوريوس مع LaTeX
بحلول نهاية السنة الثالثة ، كنت قد استخدمت بالفعل LaTeX لرسم جميع المستندات تقريبًا ، وقد تقرر كتابة دبلوم البكالوريوس معها .
في البداية ، استخدمت LaTeXila باعتباره IDE ، حيث تم إنشاء المشروع بزر واحد ، يمكنني توصيل المدقق الإملائي ، ولكنه تعطل وأبطأ في بعض الأحيان ، لذلك بدأت في استخدام Sublime Text مع Makefile.
مثال Makefile:
all: build run build: latexmk -xelatex -synctex=1 main.tex run: xreader main.pdf & clean: rm *.aux *.fdb_latexmk *.fls *.log *.out *.synctex.gz *.toc
تم تخزين جميع المصادر في بوابة ، من أجل راحة التعاون مع المشرف الذي استخدمته GitHub. كانت بنية المشروع بسيطة للغاية ، حيث تم ربط المقدمة والفصول الأخرى التي تم تخزينها في دليل منفصل بملف main.tex
.
main.tex:
\documentclass[a4paper,14pt]{extarticle}
وصف جميع الأنماط والتنسيق موجود في ملف preamble.tex
، والذي تم preamble.tex
في بداية المستند.
كان من الملائم ألا تقلق بشأن تنسيق المحتوى والمراجع وأجزاء أخرى من الدبلوم.

المحتويات
سأصف مزاياي عند العمل مع LaTeX ، مقارنةً بمحرري WYSIWYG:
- إمكانية الإصدار المريحة (بدلاً من diploma.odt و diploma_01.01.2015.odt و diploma_fix_print.odt - النسخ في git والقدرة على التراجع إلى أي التزام)
- عندما تنقر عن طريق الخطأ على شيء ما ، لا يتعطل التصميم (حدث ذلك لي)
- الإعدادات المرنة (التي لا تتوفر دائمًا في برامج تحرير WYSIWYG أو أنها غير واضحة)
- بيئة متجانسة لكل شيء (توجد مصادر العرض التقديمي في نفس مستودع الدبلوم)
- إمكانية التعاون (يمكن لمدير الدراسات العليا أن ينظر في المستودع ما تغير منذ الفحص الأخير)
- ملائمة للاستخدام كنموذج للعديد من المستندات المختلفة
- من الملائم تضمين إدخالات مثل رمز المصدر على سبيل المثال أو ملفات PDF إضافية
فيما يلي مثال على مدى سهولة تضمين ملف مصدر في مستند:
\lstinputlisting[numbers=left]{inc/ddos-deflate/ddos.sh}

كود المصدر المتصل في الوثيقة
هناك ناقص واحد فقط لاستخدام LaTeX بالنسبة لي - تحتاج إلى قضاء بعض الوقت من أجل صقل كل شيء إلى النتيجة المرجوة. حتى أنني كنت أرغب في الخلط للحظة لإعادة رسم جميع الرسوم البيانية والرسوم البيانية بطريقة أصلية باستخدام TikZ ، لكن الأمر استغرق الكثير من الوقت ، لذلك استخدمت بهدوء رسومات Google و draw.io لهذا الغرض.
بعد أن دافعت بنجاح عن شهادة البكالوريوس الخاصة بي واكتسبت بعض المعرفة بالعمل مع git و GitHub و Makefile و LaTeXStackExchange google باللغة الإنجليزية ، لقد نسيت الدبلوم لبضع سنوات من أجل استخدام النموذج الخاص بي لكتابة دبلوم الماجستير.
درجة الماجستير
في ذلك الوقت عندما كنت أدرس في القضاء ، بدأت في الانخراط في الأدوات الهندسية ، مثل Docker ، وبدأت في التدريب باستخدام أدوات التكامل المستمر ، ودرست ممارسات DevOps. كان من المثير للاهتمام أيضًا بالنسبة لي أن أقوم بتصميم مشاريعي مفتوحة المصدر للحيوانات الأليفة بشكل جميل مع ملفات README الجميلة.
بشكل عام ، عندما بدأت في كتابة دبلوم الماجستير ، لم تتغير متطلبات التسجيل كثيرًا ، لذلك أخذت النموذج الخاص بدبلوم البكالوريوس وأكملته في تفاهات ، على سبيل المثال ، عناصر مثل قائمة المواد التوضيحية ، وقائمة الاختصارات ، وما إلى ذلك. عند الدفاع عن دبلومة البكالوريوس ، استخدمنا ملصقات بحجم A1 ، وفي برنامج الماجستير ، سمح لنا بالفعل باستخدام العروض التقديمية في شكل شرائح ، لذلك قمت أيضًا بتشكيل الشرائح باستخدام LaTeX و beamer.

التخطيط مع LaTeX و beamer
لقد فكرت في مفهوم CI ، فكرت ، لماذا لا تجمع ملف PDF جديد في كل مرة تلتزم فيها بالمستودع؟ استغرق ربط GitHub بـ TravisCI بضع دقائق فقط. على الرغم من أن TravisCI لا يعرف كيفية العمل مباشرة مع LaTeX ، إلا أنه يعمل بشكل رائع مع Docker. رائع ، فكرت ، سأقتل العديد من الطيور بحجر واحد:
- تدرب على كتابة ملف إرساء
- سوف أقوم بنقل جميع حزم LaTeX إلى Docker (وهناك الكثير منها وهي ثقيلة جدًا)
- تدرب على استخدام TravisCI
- سأساعد أولئك الذين يريدون فجأة يومًا ما استخدام النموذج الخاص بي على نظام تشغيل لا يعمل بنظام Linux
لم تستغرق كتابة ملف تكوين لـ TravisCI و Dockerfile وتحرير Makefile وقتًا طويلاً واتضح أنه ملائم.
جزء من ملف Makefile لتشغيل بناء المشروع في Docker:
... docker: docker build -t docker-latex . docker run -ti -v ${PWD}:/master-thesis:Z docker-latex bash -c "make build && make clean" docker run -ti -v ${PWD}:/master-thesis:Z docker-latex bash -c "make -C presentation && make -C presentation clean"
الآن ، لم يتمكن مشرف الخريجين من رؤية التغييرات التي أجريتها في الرمز فحسب ، بل أيضًا نسخة مختصرة من المستند.

الإصدارات
بعد أن أكملت الدبلومة بالشكل الذي احتاجه ، قررت مشاركة النموذج مع المجتمع ، عن طريق القياس مع درجة البكالوريوس. تقرر ترتيب ملف README في المستودع بشكل جميل ، لأن هذا هو وجه المشروع. يجب على الشخص الذي وجد مشروعك على الإنترنت أن يكتشف على الفور كيفية تجميع المشروع وماذا يفعل به باستخدام ملف README.

ملف README.md
سرعان ما يجب أن أكتب دبلومًا ثالثًا وأعتقد أن نهجي في كتابته لن يتغير على الإطلاق وسأقضي وقتًا صغيرًا جدًا في تصميمه. بالنظر إلى أنني انتقلت من Linux إلى Mac OS ، فسيكون الانتقال غير مؤلم تمامًا ، نظرًا لوجود Docker.
الملخص
سمح لي الاهتمام المعتاد في LaTeX بالغوص أكثر قليلاً في هذا المجال:
- "حصلت على مساعدة" عند العمل مع LaTeX ، مما ساعد في وقت لاحق على توفير الوقت عند إنشاء المستندات والعروض التقديمية
- اكتسبت خبرة في العمل مع git و GitHub أثناء العمل مع مشاريع الحيوانات الأليفة هذه
- تستخدم في الممارسة مثل أشياء مثل Docker و TravisCI ، مما أعطاني زخمًا جيدًا عند الانغماس في DevOps
- تعلمت كيفية ترتيب مشروعاتها الاليفة بدقة
إجابات على الأسئلة المحتملة
لماذا تحفظ ملفات PDF في المستودع؟
فقط حتى لا يتمكن الشخص الذي دخل إلى المستودع من رؤية المصدر فقط ، ولكن أيضًا يرى نتيجة كل هذا دون تنزيل الإصدار.
لماذا لا تكون الكثير من الأشياء مؤتمتة بالكامل ، مثل المراجع؟
لسبب أو لآخر ، لم أعمق في هذا الأمر ، ربما سيتضرر أولئك الذين لديهم مئات مصادر الأدب المستخدم.
هل يتوافق النموذج مع GOST / DSTU؟
لقد استرشدت فقط بمتطلبات وحدة التحكم ، لذا ليس في الحقيقة.
ترجمة المقال إلى اللغة الإنجليزية إلى متوسط .