كاتب ورق
Type: Build
Languages: Python
Prerequisites: Phase 19 lessons 50-53
Time: ~90 minutes
أهداف التعلم
- تعامل ورقة بحثية كآثار مهيكلة مع رسمية قسم معروفة، وليس وثيقة في شكل حر.
- إنشاء هيكل لا تيكس الذي يعلن عن المجرد، والقسمات، والمساحات الرقمية، ومفاتيح الكتابة قبل كتابة أي بروسة.
- حقن الأرقام من نتائج التجربة (الطرق والعناوين) في العظم من خلال آلية فتحة تحديدية.
- سلك مولد النص المزعج الذي يملأ كل قسم من مخطط مهيكل حتى يكون القناع قابلاً للتحقق من دون نموذج.
- أطلقوا واحدة
paper.tex+ areferences.bibبالإضافة إلى إشارة قائمة بكل رقم مرجع إليه وكل اقتباس مستعمل
لماذا العظم أولاً
يكتسب مشروع يبدأ بالنثر الدين الهيكلي. يكتسب المقدمة ثلاثة فقرات يجب أن تكون في العمل المرتبط. يتم إشارة إلى رقم قبل تعريفه. ينتهي الكتابة المكتوبة بمفاتيح ثلاثة لنفس الورقة. بحلول الوقت الذي يلاحظ فيه المؤلف، تكلفة إعادة الكتابة أعلى من تكلفة الكتابة.
العظام يعكس ذلك يتم إعلان الهيكل مقدماً كبيانات. القسمات هي فتحات مع الأسماء والترتيب. الأرقام هي فتحات مع الهويات والقوائم. يتم إعلان مفاتيح الكتابة في الأعلى مع الإدخالات التي تشير إليها. يتم إنتاج النص في تلك الفتحات واحدة في كل مرة يمكن أن يؤكد الحزام، قبل أن يتم كتابة أي بروتين، أن كل شخصية لديها فتحة، كل اقتباس لديه مدخل، وكل قسم يظهر في جدول المحتوى.
هذا هو نفس التخصص الذي تطبق عليه الدروس السابقة على الخطط، و أدوات الاتصال، و آثار.
شكل الورق
flowchart TB
Paper[Paper] --> Meta[metadata]
Paper --> Sections[sections list]
Paper --> Figures[figures list]
Paper --> Bib[bibliography list]
Meta --> Title[title]
Meta --> Authors[authors]
Meta --> Abstract[abstract]
Sections --> Sec1[Section: id, title, body, cites]
Figures --> Fig1[Figure: id, path, caption, label]
Bib --> Entry1[BibEntry: key, fields]كل حقل هو بيانات بيثون عادية.Paperإلى سلسلة لا تيكس. يمكن للخيط أن يتطلع إلى الورق قبل التصوير: احتساب القسمات، قائمة الملفات المفقودة، تحقق من كل \cite{key}لديه مطابقةBibEntry. . .
عقد الإصدار
يضمن جهاز التصوير ثلاث خصائص أولاً، كل فتحة في العظم تنبعث\begin{figure}كتلة مع علامة ثابتة على النموذج fig:<id>ثانياً، كل قسم ينبعث\section{}مع علامة ثابتة على النموذجsec:<id>لذا فإن الإشارات المتقاطعة تعمل. ثالثاً، فإن الكتابة الإلكترونية تنبعث عن\bibliographyكتلة منreferences.bibيحتوي على الإدخالات التي أعلنتها على الورق، لا أكثر ولا أقل.
إن خرق أي من هذه العبارات هو خطأ في التصوير، وليس تحذير. العظام هو العقد؛ التصوير الذي يضع في صمته رقم هو خرق العقد.
حقن الرقم من التجارب
أدت الدروس السابقة في هذا المسار إلى إنتاج نتائج التجربة كما يظهر JSON. يحمل كل منشور قائمة من الأدوات مع المسارات والقوائم القصيرة. يقرأ كاتب الورق الذي يظهر وينتج Figureالسجلات
flowchart LR
Exp[experiment.json] --> Reader[read_experiment_manifest]
Reader --> Figs[Figure list]
Figs --> Paper[Paper.figures]
Paper --> Render[render_latex]
Render --> Out[paper.tex]الحقن هو تحديد. تم استنباط أرقام الهوية من اسم التجربة بالإضافة إلى عداد واحد. الأسعار تأتي من المظاهر. يتم تطبيع المسارات نسبيا إلى دليل الخروج في الورقة حتى يتم تجميع LaTeX حتى عندما تكون نتائج التجربة في مكان آخر على القرص.
مولد النص المهزوم
الدروس لا تدعو إلى نموذجMockProseGeneratorيقرأ شكل الخطوط المخطوطة ويصدر النصوص بشكل محدد. شكل الخطوط المخطوطة حبل قصير لكل قسم. مولد توسيع هذا السلسلة إلى فقرتين قصيرة مع عنوان القسم منسوجة. النصوص المولد اسم - قطرات الأرقام والحروف بالضبط عندما يعلن الخطوط المخطوطة لهم.
هذا يكفي لاختبار كل سلوك من الكاتب. تنفيذ حقيقي سوف تغير المولد لموديل المكالمة. الحبل حولها لا يتغير. وهذا هو قيمة إعلان المولد النصي كالمكالمة: الاختبار يحل محل تحديد واحد، إنتاج يحل محل نموذج واحد، بقية خط الأنابيب هو نفسه.
الخروج المبين
يُصدر الكاتب ثلاثة ملفات إلى دليل الخروج.
flowchart TB
Writer[PaperWriter.write] --> Tex[paper.tex]
Writer --> Bib[references.bib]
Writer --> Man[manifest.json]
Man --> F[figures referenced]
Man --> C[citations used]
Man --> S[sections rendered]المخطط هو ما يقرأه المقيّم أو حلقة النقد أسفل التيار. لا ينفحص LaTeX؛ إنه يقرأ المخطط. الدروس التالية، حلقة النقد، تأخذ هذا المخطط كمدخول وينتج قائمة ردود الفعل. لهذا السبب يكون المخطط جزءًا من العقد وليس LaTeX.
بوابات التحقق من المصادقة
الكاتب يدير أربعة بوابات قبل كتابة أي ملف.
- كل رقم هو فريد في الورقة.
- كل قسم
citesيشير الحقل إلى مفتاح الكتابة المعلنة على الورق. - المجرد ليس فارغًا
- العنوان ليس فارغًا
بوابة فشلت ترتفعPaperValidationErrorمع سبب دقيق. الحزام يظهر السبب كوضع فشل. لا يوجد كتابة جزئية: إما كل الملفات الثلاثة يتم إصدارها، أو لا.
كيفية قراءة الرمز
code/main.pyيحددPaper،Section،Figure،BibEntry،PaperValidationError،MockProseGenerator،PaperWriterوrender_latexوظيفةwriteطريقة تأخذ إطار الخروج وتصدر paper.tex،references.bibوmanifest.json- المُؤمنونread_experiment_manifestالمساعد يحول قائمة من التجارب إلىFigureالسجلات
code/tests/test_paper_writer.pyتغطية: عرض العظام بدون أقسام، عرض كامل مع أقسام و اثنين من الأرقام، بوابة الإشارة المفقودة، بوابة الهوية المكررة الأرقام، محتوى المظهر، وعقد سلسلة لا تيكس (كل قسم ينبعث من \section{}كل رقم يُصدّر\begin{figure})
الذهاب إلى أبعد
إضافة اثنين من التطبيقات الحقيقية سوف تحتاج. أولا، التسجيل متعدد الأشكال: نفس Paperيجمع الشكل إلى Markdown للمشاركات في المدونات و HTML للمبصرات المسبقة.Paperثانيا، إثراء الاقتباسات: يحصل الكاتب على إدخالات BibTeX من مفتاح الاقتباسات، نظراً لخزنة محلية من DOIs. كلاهما يمكن إضافة قيمة، كلاهما يمكن إضافة دون لمس العقد العظمي.
العظم هو الرهان. القسمات والأرقام والحروف المعلنة كبيانات، النصوص التي تم إنشاؤها في فتحات، والذي يتم إصدارها جنبا إلى جنب مع لاتكس. كل تحسين آخر يكوّن على رأس.
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.