\usepackage{latexindent}

كيفية تنسيق شيفرة LaTeX و تجميلها

شيفرة LaTeX المصدرية غير المنظمة يصعب قراءتها، ويصعب تنقيحها أكثر، والتعاون عليها مرهق. تنسيق ملفات .tex بمسافات بادئة متسقة وبنية نظيفة يسهّل كل شيء. يوضح هذا الدليل كيف تنسّق شيفرة LaTeX عبر الإنترنت باستخدام منسّق FormaTeX المجاني المدعوم بـ latexindent ، دون الحاجة إلى تثبيت.

سواء كنت تنظّف أطروحة قبل التقديم، أو تفرض أسلوبًا موحدًا في ورقة متعددة المؤلفين، أو تريد ببساطة أن تسهّل مسح شيفرتك المصدرية، فإن منسّق LaTeX يغنيك عن فعل ذلك يدويًا. الصق شيفرتك، وانقر تنسيق، وانسخ النتيجة.

\section{لماذا التنسيق}

لماذا تنسّق شيفرة LaTeX؟

LaTeX لغة ترميز، وكأي ترميز يمكن أن يصبح الملف المصدري صعب التصفح بسرعة إذا كان التنسيق غير متسق. وعلى خلاف المخرجات المجمَّعة، تقضي معظم وقتك في التحديق في المصدر، لذا فإن قابليته للقراءة تؤثر مباشرةً في إنتاجيتك. إليك الأسباب الأربعة الرئيسية للحفاظ على تنسيق شيفرة LaTeX.

قابلية القراءة

Properly indented LaTeX code lets you see the document structure at a glance. When every \begin and \end pair is visually aligned, you can instantly tell which content belongs to which environment. This is especially important in long documents with deeply nested structures like figures inside subfigures inside columns.

التعاون

عندما يعمل عدة مؤلفين على ملف .tex نفسه، تتراكم تناقضات التنسيق بسرعة. يستخدم أحدهم مسافتين للإزاحة، وآخر علامات جدولة، وثالث لا يستخدم أي إزاحة. المعيار المشترك للتنسيق، الذي تفرضه أداة، يلغي الجدالات حول الأسلوب ويُبقي فروق الإصدارات نظيفة.

التنقيح

The most common LaTeX errors are mismatched braces and missing \end tags. When your code is properly formatted, these problems become visually obvious. An \end{itemize} that is not at the same indentation level as its \begin{itemize} immediately stands out. Without formatting, you are left counting braces by hand.

الاتساق

كثيرًا ما تضع المجلات والجامعات والمجموعات البحثية إرشادات أسلوبية لشيفرة LaTeX المصدرية. يتيح لك المنسّق تطبيق هذه القواعد تلقائيًا على كل ملف في المشروع، ما يضمن أن تبدو شيفرتك المصدرية متماثلة سواء كتبها طالب في سنته الأولى أو باحث كبير.

\section{خطوة بخطوة}

خطوة بخطوة: التنسيق باستخدام FormaTeX

يشغّل FormaTeX الأداة latexindent على الخادم، فلا تحتاج إلى تثبيت Perl أو TeX Live أو أي اعتماديات على جهازك. تستغرق العملية كلها ثوانٍ قليلة بغض النظر عن حجم الملف.

1

الصق شيفرة LaTeX

Open the FormaTeX LaTeX Formatter tool and paste your unformatted .tex source code into the editor panel on the left. The tool accepts any valid LaTeX — full documents with \documentclass, standalone environments, or even single fragments like a tabular block. There is no file size limit for the free tier, so you can paste an entire thesis chapter if needed.

يمكنك أيضًا الكتابة مباشرةً في المحرر إذا كنت تكتب LaTeX جديدًا من الصفر وتريده منسّقًا أثناء الكتابة.

2

انقر تنسيق

Press the Format button to send your code to the FormaTeX server. The formatter runs latexindent with sensible defaults: it normalizes indentation to consistent spacing, aligns \begin and \end delimiters, removes trailing whitespace, and applies clean brace placement. The operation typically completes in under a second — you will see the formatted output appear in the right panel immediately.

يحافظ المنسّق على تعليقاتك ولا يغيّر أي أوامر LaTeX أو محتوى. يعدّل المسافات البيضاء والمسافات البادئة فقط.

3

انسخ المخرجات المنسّقة

راجع شيفرة LaTeX المنسّقة بنظافة في لوحة المخرجات. يبرز المنسّق التغييرات لتعرف بالضبط ما الذي تعدّل. وعندما تكون راضيًا، انقر زر النسخ لوضع الشيفرة المنسّقة في الحافظة، ثم الصقها في محررك، سواء كان VS Code أو Overleaf أو TeXstudio أو محرر FormaTeX عبر الإنترنت. ويمكنك أيضًا تنزيل الملف المنسّق مباشرةً.

إذا كنت تعمل ضمن فريق، ففكّر في تشغيل المنسّق قبل كل commit للحفاظ على نظافة المستودع وأقل قدر من الفروق.

\section{خلف الكواليس}

ما الذي تفعله latexindent خلف الكواليس

يعمل منسّق FormaTeX بالأداة latexindent ، وهي نص Perl القياسي في المجال لتنسيق مصدر LaTeX. وهي مضمَّنة في كل توزيعة حديثة من TeX Live وMiKTeX، وهي الأداة نفسها التي تستخدمها محررات مثل VS Code (عبر إضافة LaTeX Workshop) وTeXstudio للتنسيق التلقائي.

عندما تضغط تنسيق في FormaTeX، تُرسل شيفرتك إلى خادم يشغّل تثبيت TeX Live كاملًا. يستدعي الخادم latexindent بإعداد افتراضي يغطي الغالبية العظمى من حالات الاستخدام. ويعالج شيفرتك في مرور واحد ويعيد النتيجة، ولا تلمس شيفرتك المصدرية القرص أبدًا وتُحذف من الذاكرة فور انتهاء التنسيق.

تشمل العمليات الرئيسية التي تؤديها latexindent: توحيد مستويات المسافات البادئة لجميع البيئات، ومحاذاة وسمي \begin و \end ، وإزالة المسافات البيضاء الزائدة في نهاية كل سطر، وتوحيد استخدام الأسطر الفارغة بين الفقرات، وضمان اتساق مواضع الأقواس المعقوفة والمربعة حول وسائط الأوامر. وهي تفهم البنى الخاصة بـ LaTeX مثل الشروط \if...\fi وحدود وضع الرياضيات وبيئات verbatim (التي تُترك دون مساس).

\section{أفضل الممارسات}

أفضل ممارسات التنسيق

يتولى المنسّق العمل الآلي، لكن معرفة المبادئ وراء التنسيق الجيد في LaTeX ستساعدك على كتابة شيفرة أنظف منذ البداية. تنطبق هذه الممارسات سواء كنت تستخدم FormaTeX أو تثبيت latexindent محليًا أو تنسّق يدويًا.

استخدم مسافات بادئة متسقة

اختر مسافتين أو أربع مسافات لكل مستوى إزاحة والتزم بها في مشروعك بأكمله. أزح محتويات كل بيئة: document وfigure وtable وitemize وenumerate وequation وalign. والاستثناء الوحيد هو بيئة document نفسها، إذ يفضل بعض المؤلفين عدم إزاحتها لتجنب دفع كل المحتوى مستوى إلى الداخل. وأيًّا كان الاصطلاح الذي تختاره، طبّقه بشكل موحد.

مثال
\begin{itemize}
  \item First item
  \item Second item
    \begin{itemize}
      \item Sub-item
    \end{itemize}
\end{itemize}

حافظ على تداخل البيئات بشكل صحيح

Every \begin must have a matching \end at the same indentation level. When environments are nested — a tabular inside a table inside a figure, for example — each level should be indented one step further. This visual nesting makes it trivial to spot mismatched or missing delimiters. If you find yourself more than four or five levels deep, consider extracting the inner content into a separate \input file.

مثال
\begin{figure}[h]
  \centering
  \begin{tabular}{lc}
    \toprule
    Name & Score \\
    \midrule
    Alice & 95 \\
    \bottomrule
  \end{tabular}
  \caption{Results}
\end{figure}

اكتب تعليقات ذات معنى

Use comments to explain why, not what. A comment like "% begin table" above a \begin{table} adds nothing. A comment like "% Grade distribution for Fall 2025 cohort" tells a co-author what the table represents. Place section-level comments on their own line, and use end-of-line comments sparingly. Keep comments at the same indentation level as the code they describe.

مثال
% Grade distribution for Fall 2025 cohort
\begin{table}[h]
  \centering
  \begin{tabular}{lc}
    ...
  \end{tabular}
\end{table}

تحكّم في طول السطر

أبقِ الأسطر أقل من 80 إلى 100 حرف. الأسطر الطويلة يصعب قراءتها، وتنتج فروقًا مشوشة في نظام التحكم في الإصدارات، وتعيق سير العمل في التحرير المتجاور. اكسر الجمل الطويلة عند نقاط طبيعية: بعد علامات الترقيم أو بين العبارات. وبالنسبة إلى وسائط الأوامر الطويلة، ضع كل وسيط في سطر مستقل. يتجاهل مُجمِّع LaTeX فواصل الأسطر المفردة داخل الفقرة، لذا فإن تقسيم الأسطر لا يؤثر في المخرجات.

مثال
% Bad: one very long line
\caption{The relationship between input voltage and output current measured across a 10k ohm resistor at room temperature}

% Good: broken at natural points
\caption{
  The relationship between input voltage
  and output current measured across
  a 10k ohm resistor at room temperature
}

\section{قبل وبعد}

قبل التنسيق وبعده

إليك مثالًا واقعيًا يوضح ما يفعله منسّق FormaTeX بملف LaTeX فوضوي نموذجي. المحتوى متطابق، ولا يتغير سوى المسافات البيضاء والمسافات البادئة.

قبل
\begin{document} \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{chart.png} \caption{Quarterly results for 2025. This chart shows revenue growth.} \label{fig:chart} \end{figure} \begin{table}[h] \centering \begin{tabular}{lcc} \toprule Quarter & Revenue & Growth \\ \midrule Q1 & \$120k & 12\% \\ Q2 & \$145k & 21\% \\ Q3 & \$132k & -9\% \\ \bottomrule \end{tabular} \caption{Revenue by quarter} \end{table} \end{document}
بعد
\begin{document} \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{chart.png} \caption{ Quarterly results for 2025. This chart shows revenue growth. } \label{fig:chart} \end{figure} \begin{table}[h] \centering \begin{tabular}{lcc} \toprule Quarter & Revenue & Growth \\ \midrule Q1 & \$120k & 12\% \\ Q2 & \$145k & 21\% \\ Q3 & \$132k & -9\% \\ \bottomrule \end{tabular} \caption{Revenue by quarter} \end{table} \end{document}

لاحظ كيف تُزاح كل بيئة مستوى واحدًا داخل بيئتها الأم. ويُقسَّم الأمر \caption ذو الوسيط الطويل على عدة أسطر. وتفصل الأسطر الفارغة بين الكتل المنطقية. لا يتغير المحتوى ولا الأوامر، بل تتضح البنية فقط.

\section{متى تنسّق}

متى يجب أن تنسّق شيفرة LaTeX؟

لا يوجد وقت خاطئ للتنسيق، لكن بعض اللحظات أكثر تأثيرًا من غيرها. نسّق شيفرتك قبل الالتزام (commit) في نظام التحكم في الإصدارات، فهذا يُبقي فروق git (diffs) مركزة على تغييرات المحتوى لا على ضوضاء المسافات البيضاء. ونسّق قبل تقديم ورقة إلى مجلة، ليرى المحكّمون والمنضِّدون مصدرًا نظيفًا. ونسّق عندما تتلقى ملفًا مشتركًا من شخص آخر، لتوحّد أسلوبه مع أسلوبك.

إذا كنت تستخدم FormaTeX API، يمكنك دمج التنسيق في خط CI/CD أو في خطاف pre-commit. بهذه الطريقة يُنسَّق كل ملف .tex في مستودعك تلقائيًا قبل أن يصل إلى الفرع الرئيسي، على غرار عمل Prettier مع JavaScript أو Black مع Python.

نسّق شيفرة LaTeX الآن

الصق مصدر .tex، وانقر تنسيق، واحصل على شيفرة بمسافات بادئة نظيفة في ثوانٍ. مجاني ودون الحاجة إلى حساب.