برنامه نویسی

اتفاقات با TexCreate نسخه 3

Rate this post

آخرین نسخه TexCreate نسخه 2.2.1 است و بیش از 9 ماه پیش منتشر شد. بنابراین با توجه به اینکه انتقال از TexCreate نسخه 1 به 2 چند ماه توسعه بود، چرا این مدت زمان زیادی طول می کشد؟

تمرکز بر مدولار بودن قالب

نقص شناخته شده ای که در نسخه فعلی با TexCreate داشتم، “کدگذاری سخت” قالب های داخل برنامه است. برای کسانی که نمی دانند، TexCreate یک مدیر پروژه LaTeX است که از قالب های از پیش ساخته شده برای ساخت پروژه ها برای نیازهای مختلف استفاده می کند. در نسخه 2 من به استفاده از کتابخانه بومی Rust تغییر مکان دادم tex-rs برای ساخت کد LaTeX، اما کتابخانه خود ماژولار نبود.

پس چه کار کنیم؟ اولین تمرکز من ساختن کتابخانه ای بود که بتوانم آن را گسترش دهم، و این جایی است که توسعه با آن texcore آغاز شده. پس از 6 ماه توسعه، آن چیزی است که من برای TexCreate آماده می دانم، آخرین نسخه در زمان نوشتن v0.4.10. کتابخانه را می توان در crates.io یافت. ویژگی جدید جالب در v0.4 ویژگی TexCreate Template است که ارائه می دهد template ماژول با نوع زیر:

#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, PartialOrd)]
pub struct Template {
    pub name: String,
    pub description: String,
    pub version: Version,
    element_list: RefCell<ElementList<Any>>,
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

قالب های سفارشی؟

در حال حاضر قصد دارم برنامه فقط از قالب های شخص اولی که من توسعه می دهم استفاده کند، اما برنامه هایی برای اضافه کردن قابلیت برای قالب های سفارشی وجود دارد.

چگونه کار می کند؟ خوب وقتی TexCreate مقداردهی اولیه شود، یک دایرکتوری در آن ایجاد می کند $HOME/.texcreate. برنامه فعلی این است که همه فایل‌های JSON قالب‌ها را در آنجا نگه دارد، اما چیزی که می‌تواند اتفاق بیفتد این است که داخل آن باشد .texcreate دایرکتوری ممکن است ساختار زیر را داشته باشیم:

.texcreate/
     mkproj/
        Basic.json
     custom/
        Foo.json 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک الگوی نمونه ممکن است به شکل زیر باشد:

{
  "name": "Basic",
  "description": "This is a basic LaTeX document",
  "version": {
    "major": 1,
    "minor": 0,
    "patch": 0
  },
  "element_list": {
    "metadata": {
      "author": "author",
      "date": "date",
      "title": "title",
      "fontsize": 11,
      "doc_class": "article",
      "maketitle": true
    },
    "list": [
      {
        "value": {
          "value": "\\pagenumbering{arabic}",
          "type_": "T_Custom",
          "level": "Document",
          "header_level": null,
          "text_type": null,
          "list_type": null,
          "items": null,
          "elements": null
        },
        "type_": "T_Custom",
        "level": "Document"
      },
      {
        "value": {
          "value": "\\newpage",
          "type_": "T_Custom",
          "level": "Document",
          "header_level": null,
          "text_type": null,
          "list_type": null,
          "items": null,
          "elements": null
        },
        "type_": "T_Custom",
        "level": "Document"
      },
      {
        "value": {
          "value": "amsmath",
          "type_": "T_Package",
          "level": null,
          "header_level": null,
          "text_type": null,
          "list_type": null,
          "items": null,
          "elements": null
        },
        "type_": "T_Package",
        "level": "Packages"
      }
    ]
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس الگوی زیر پردازش می شود و به کد TeX زیر تبدیل می شود:

\documentclass[11pt, letterpaper]{article}
\title{title}
\author{author}
\date{date}
\usepackage{amsmath}
\begin{document}
\maketitle
\pagenumbering{arabic}
\newpage
\end{document}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چی شده…

در حال حاضر در حال توسعه هستم texcreate-services که قصد دارد مجموعه ای از برنامه های کاربردی برای مدیریت قالب ها برای TexCreate باشد. این بخش از پروژه ممکن است منبع باز نباشد زیرا می تواند به یک آسیب پذیری برای پروژه تبدیل شود و با توجه به عملکرد اصلی آن، من ترجیح می دهم این ریسک را نداشته باشم. با این حال، من قصد دارم برنامه ای بنویسم که به توسعه دهندگان کمک کند پس از فعال شدن این عملکرد، الگوهای سفارشی خود را ایجاد کنند.

این پروژه پیشرفت های زیادی دارد و به همراه آن زمان آزمایش و توسعه زیادی نیز به همراه دارد. با در نظر گرفتن اینکه چطور همیشه سرم شلوغ است، احتمال می‌دهم یک نسخه پایدار تا زمانی در سال 2024 منتشر شود.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا