Typst هو نظام تنضيد جديد قائم على العلامات تم تصميمه ليكون بنفس قوة LaTeX مع سهولة التعلم والاستخدام. تايبست لديه:
يحتوي هذا المستودع على مترجم Typst وواجهة سطر الأوامر (CLI) الخاصة به، وهو كل ما تحتاجه لتجميع مستندات Typst محليًا. للحصول على أفضل تجربة كتابة، فكر في الاشتراك في محررنا التعاوني عبر الإنترنت مجانًا.
تتوفر مقدمة لطيفة عن Typst في وثائقنا. ومع ذلك، إذا كنت تريد رؤية قوة Typst مغلفة في صورة واحدة، فها هي:
دعونا نحلل ما يحدث:
نستخدم قواعد المجموعة لتكوين خصائص العناصر مثل حجم الصفحات أو ترقيم العناوين. من خلال ضبط ارتفاع الصفحة على auto
، يتم تغيير حجمه ليناسب المحتوى. تتوافق القواعد المعينة مع التكوينات الأكثر شيوعًا. إذا كنت بحاجة إلى التحكم الكامل، يمكنك أيضًا استخدام قواعد العرض لإعادة تعريف مظهر العنصر بشكل كامل.
نقوم بإدراج عنوان باستخدام بناء جملة = Heading
. علامة يساوي واحدة تنشئ عنوانًا للمستوى الأعلى، واثنتان تنشئان عنوانًا فرعيًا، وهكذا. يحتوي Typst على ترميز خفيف الوزن مثل هذا، راجع مرجع بناء الجملة للحصول على القائمة الكاملة.
المعادلات الرياضية محاطة بعلامات الدولار. من خلال إضافة مسافات إضافية حول محتويات المعادلة، يمكننا وضعها في كتلة منفصلة. يتم تفسير المعرفات متعددة الأحرف على أنها تعريفات ووظائف Typst ما لم يتم وضعها بين علامتي اقتباس. بهذه الطريقة، لا نحتاج إلى خطوط مائلة عكسية لأشياء مثل floor
و sqrt
. ويقوم phi.alt
بتطبيق معدّل alt
على phi
لتحديد متغير رمز معين.
الآن، نصل إلى بعض البرمجة النصية. لإدخال رمز في مستند Typst، يمكننا كتابة تجزئة متبوعة بتعبير. نحدد متغيرين ودالة عودية لحساب رقم فيبوناتشي n. ثم نقوم بعرض النتائج في جدول محاذاة للوسط. تأخذ وظيفة الجدول خلاياها صفًا تلو الآخر. لذلك، نقوم أولاً بتمرير الصيغ $F_1$
إلى $F_8$
ثم أرقام فيبوناتشي المحسوبة. نحن نطبق عامل الانتشار ( ..
) على كليهما لأنهما مصفوفات ونريد تمرير عناصر المصفوفات كوسائط فردية.
#set page ( width : 10cm , height : auto )
#set heading ( numbering : " 1. " )
= Fibonacci sequence
The Fibonacci sequence is defined through the
recurrence relation $ F_n = F_(n-1) + F_(n-2) $ .
It can also be expressed in _closed form:_
$ F_n = round(1 / sqrt(5) phi.alt^n), quad
phi.alt = (1 + sqrt(5)) / 2 $
#let count = 8
#let nums = range ( 1 , count + 1 )
#let fib ( n ) = (
if n <= 2 { 1 }
else { fib ( n - 1 ) + fib ( n - 2 ) }
)
The first #count numbers of the sequence are:
#align (center, table(
columns: count,
..nums.map(n => $ F_#n $ ),
..nums.map(n => str(fib(n))),
))
يتوفر CLI الخاص بـ Typst من مصادر مختلفة:
يمكنك الحصول على المصادر والثنائيات المعدة مسبقًا لأحدث إصدار من Typst من صفحة الإصدارات. قم بتنزيل الأرشيف الخاص بنظامك الأساسي وضعه في الدليل الموجود في PATH
الخاص بك. للبقاء على اطلاع بالإصدارات المستقبلية، يمكنك ببساطة تشغيل typst update
.
يمكنك تثبيت Typst من خلال مديري الحزم المختلفين. لاحظ أن الإصدارات الموجودة في مديري الحزم قد تتأخر عن الإصدار الأخير.
brew install typst
winget install --id Typst.Typst
إذا كان لديك سلسلة أدوات Rust مثبتة، فيمكنك تثبيتها
cargo install --locked typst-cli
cargo install --git https://github.com/typst/typst --locked typst-cli
يمكن لمستخدمي نيكس
typst
مع nix-shell -p typst
nix run github:typst/typst -- --version
. يمكن لمستخدمي Docker تشغيل صورة تم إنشاؤها مسبقًا باستخدام docker run ghcr.io/typst/typst:latest --help
.
بمجرد تثبيت Typst، يمكنك استخدامه على النحو التالي:
# Creates `file.pdf` in working directory.
typst compile file.typ
# Creates PDF file at the desired path.
typst compile path/to/source.typ path/to/output.pdf
يمكنك أيضًا مشاهدة الملفات المصدر وإعادة ترجمة التغييرات تلقائيًا. يعد هذا أسرع من التجميع من البداية في كل مرة لأن Typst يحتوي على تجميع تزايدي.
# Watches source files and recompiles on changes.
typst watch file.typ
يتيح لك Typst أيضًا إضافة مسارات خطوط مخصصة لمشروعك وسرد جميع الخطوط التي اكتشفها:
# Adds additional directories to search for fonts.
typst compile --font-path path/to/fonts file.typ
# Lists all of the discovered fonts in the system and the given directory.
typst fonts --font-path path/to/fonts
# Or via environment variable (Linux syntax).
TYPST_FONT_PATHS=path/to/fonts typst fonts
للتعرف على الأوامر الفرعية والخيارات الأخرى لواجهة سطر الأوامر (CLI)، انظر أدناه:
# Prints available subcommands and options.
typst help
# Prints detailed usage of a subcommand.
typst help watch
إذا كنت تفضل تجربة متكاملة تشبه IDE مع الإكمال التلقائي والمعاينة الفورية، فيمكنك أيضًا الاطلاع على تطبيق الويب المجاني الخاص بـ Typst.
المكان الرئيسي الذي يتجمع فيه المجتمع هو خادم Discord الخاص بنا. لا تتردد في الانضمام إلى هناك لطرح الأسئلة أو مساعدة الآخرين أو مشاركة الأشياء الرائعة التي أنشأتها باستخدام Typst أو لمجرد الدردشة.
وبصرف النظر عن ذلك، هناك عدد قليل من الأماكن حيث يمكنك العثور على الأشياء التي بناها المجتمع:
إذا كانت لديك تجربة سيئة في مجتمعنا، يرجى التواصل معنا.
نحن نحب أن نرى المساهمات من المجتمع. إذا واجهت أخطاء، فلا تتردد في فتح مشكلة. إذا كنت ترغب في تنفيذ ميزة جديدة أو إصلاح خطأ، فيرجى اتباع الخطوات الموضحة في دليل المساهمة.
لإنشاء Typst بنفسك، تأكد أولاً من تثبيت أحدث إصدار ثابت من Rust. بعد ذلك، قم باستنساخ هذا المستودع وإنشاء واجهة سطر الأوامر (CLI) باستخدام الأوامر التالية:
git clone https://github.com/typst/typst
cd typst
cargo build --release
سيتم تخزين الثنائي الأمثل في target/release/
.
هناك طريقة أخرى جيدة للمساهمة وهي مشاركة الحزم مع المجتمع.
IPA: /taɪpst/. "Ty" كما في Ty pesetting و"pst" كما في Hi pst er. عند الكتابة عن Typst، اكتب اسمها بحرف كبير كاسم علم، بحرف كبير "T".
تم تصميم Typst بالكامل مع وضع ثلاثة أهداف رئيسية في الاعتبار: القوة والبساطة والأداء. نعتقد أن الوقت قد حان لنظام يتوافق مع قوة LaTeX، ويكون سهل التعلم والاستخدام، كل ذلك مع كونه سريعًا بما يكفي لتحقيق المعاينة الفورية. ولتحقيق هذه الأهداف، نتبع ثلاثة مبادئ أساسية للتصميم:
البساطة من خلال الاتساق: إذا كنت تعرف كيفية القيام بشيء واحد في Typst، فيجب أن تكون قادرًا على نقل هذه المعرفة إلى أشياء أخرى. إذا كانت هناك طرق متعددة للقيام بنفس الشيء، فيجب أن تكون إحداها على مستوى تجريد مختلف عن الأخرى. على سبيل المثال، لا بأس أن = Introduction
و #heading[Introduction]
يفعلان نفس الشيء لأن الأول هو مجرد سكر تركيبي للأخير.
القوة من خلال قابلية التركيب: هناك طريقتان لجعل شيء ما مرنًا: أن يكون لديك مقبض لكل شيء أو أن يكون لديك عدد قليل من المقابض التي يمكنك دمجها بعدة طرق. تم تصميم Typst مع وضع الطريقة الثانية في الاعتبار. نحن نقدم أنظمة يمكنك تأليفها بطرق لم نفكر بها من قبل. TeX موجود أيضًا في الفئة الثانية، لكنه ذو مستوى منخفض بعض الشيء، وبالتالي يستخدم الأشخاص LaTeX بدلاً من ذلك. ولكن هناك، ليس لدينا حقًا الكثير من القدرة على التركيب. بدلاً من ذلك، هناك حزمة لكل شيء ( usepackage{knob}
).
الأداء من خلال التزايدية: يجب أن تستوعب جميع ميزات لغة Typst التجميع التزايدي. لحسن الحظ لدينا comemo
، وهو نظام للتجميع المتزايد الذي يقوم بمعظم العمل الشاق في الخلفية.