> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ar/mzyd-mn-almwdhwaat/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md).

# كيفية كتابة ملف فئة LaTeX وتصميم سيرتك الذاتية الخاصة (الجزء 1)

الجزء 1 | [الجزء 2](/latex/ar/mzyd-mn-almwdhwaat/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)

**المؤلف: James Allen (مارس 2011)**

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

### ما هو ملف الفئة؟

عندما تكتب `\documentclass{article}` في ملف LaTeX الخاص بك، فأنت تُدرِج ملف الفئة `article.cls`، وهذا يعرّف جميع الأوامر مثل `\section` و `\title` والتي تُستخدم في هيكلة مستندك. كما يضبط كيفية تأثير هذه الأوامر في تنسيق الصفحة وتخطيطها.

### إعداد ملف الفئة الخاص بك

إن أنظف طريقة لتخصيص تنسيق مستند هي الاحتفاظ بكل تلك المعلومات في ملف فئة شخصي. وهذا يبقي بنية مستندك منفصلة بوضوح عن التنسيق ويتيح إعادة الاستخدام بسهولة. من السهل إعداد هذا، لذا أنشئ مستندًا يسمى cv.tex بالمحتوى التالي:

```latex
\documentclass{my_cv}
\begin{document}
\section{Education}
\subsection{جامعة لا مكان}
\section{العمل}
\subsection{ABC المحدودة.}
\end{document}
```

هذا يحاول تحميل ملف الفئة المخصص الخاص بك `my_cv.cls`، والذي لا يوجد بعد. أنشئ `my_cv.cls` في المجلد نفسه مثل `cv.tex` واكتب السطر التالي فيه:

```latex
\LoadClass{article}
```

إذا قمت بترجمة مستندك الآن، فيجب أن ترى العناوين بالنمط الافتراضي لمقالة article.

فماذا حدث هنا؟ تحتاج ملفات الفئة إلى احتواء الكثير من معلومات التنسيق والإعداد الداخلي لكي يعمل LaTeX بشكل صحيح، لكننا لا نريد إدخال كل ذلك يدويًا. بدلًا من ذلك يمكننا أن نبني ملف الفئة الجديد الخاص بنا على `article.cls`، ونستخدم `\LoadClass` إلى تضمين `article.cls` ونحمّل جميع الأوامر والأنماط المعرّفة فيه. لاحظ أننا لا نستخدم الأمر المعتاد `\documentclass` لإدراج `article.cls` لأن `\documentclass` يجب ألا يُستدعى إلا مرة واحدة فقط في بداية مستند LaTeX الخاص بك.

### إخبار LaTeX عن فئتك

يجب أن تبدأ جميع ملفات الفئة بسطرين مشابهين لما يلي، والذي ينبغي أن تضيفهما في أعلى `my_cv.cls` الآن:

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[2011/03/26 My custom CV class]
```

ال `\NeedsTeXFormat` تُخبر هذه الأوامر المترجم بإصدار LaTeX الذي تخصّه الحزمة. الإصدار الحالي من LaTeX هو LaTeX2e وتستخدمه معظم التوزيعات.

ال `\ProvidesClass` يمنح الأمر المترجم بعض المعلومات عن حزمتك. يجب أن يطابق الوسيط الأول اسم ملف الفئة الخاص بك ويخبر LaTeX باسم حزمتك. الوسيط الثاني اختياري ويوفر وصفًا لفئتك سيظهر في سجل التشغيل وفي أماكن أخرى. يجب أن يبدأ الوصف بتاريخ بالشكل الدقيق الموضح أعلاه، ويجب أن يكون تاريخ آخر تعديل للحزمة. يمكن استخدام ذلك عند تضمين الفئة للتحقق من أن لديك نسخة حديثة بما يكفي منها. على سبيل المثال إذا أدرجتها عبر `\documentclass{my_cv}[2012/01/01]` مع تاريخ أحدث من التاريخ المذكور في وصف الفئة فسيظهر تحذير يقول إن الفئة قديمة.

### تعديل عناوين الأقسام

عناوين أقسام article القياسية لا تناسب السيرة الذاتية فعلًا، لذا نود استبدالها بشيء أنظف. وللقيام بذلك، يمكننا إعادة تعريف الأمر `\section` لإخراج ترويسة مخصّصة.

لحسن الحظ، توجد بالفعل حزمة ممتازة تُدعى `titlesec` والتي توفر طريقة سهلة لتخصيص أنماط عناويننا. أضف هذا إلى ملف الفئة الخاص بك باستخدام:

```latex
\RequirePackage{titlesec}
```

لاحظ أننا ينبغي أن نستخدم `\RequirePackage` بدلاً من الأمر المعتاد `\usepackage` لأننا داخل ملف فئة. يقوم `\RequirePackage` الأمر بالتأكد من تحميل كل حزمة مرة واحدة فقط، حتى لو استُدعي عدة مرات من ملفات أنماط وفئات مختلفة.

ال `titlesec` توفر الحزمة الأمر `\titleformat` الذي يتيح لنا تخصيص عناوين الأقسام. أضف ما يلي في نهاية `my_cv.cls` لتخصيص تنسيق العنوان:

```latex
\titleformat{\section}         % تخصيص الأمر \section
  {\Large\scshape\raggedright} % اجعل رؤوس \section كبيرة (\Large)،
                               % بأحرف كبيرة صغيرة (\scshape) ومحاذاة إلى اليسار (\raggedright)
  {}{0em}                      % يمكن استخدامه لإضافة بادئة إلى جميع الأقسام، مثل 'Section ...'
  {}                           % يمكن استخدامه لإدراج شيفرة قبل العنوان
  [\titlerule]                 % يدرج خطًا أفقيًا بعد العنوان
```

إذا قمنا بالترجمة `cv.tex` الآن فسنرى أن لدينا بعض العناوين الرئيسية الأنسب لسيرة ذاتية:

![Screenshot1.png](/files/10bf1d642c89069c51126f7547fb72d362a425df)

يمكننا تخصيص عناوين \subsection أيضًا:

```latex
\titleformat{\subsection}
  {\large\scshape\raggedright}
  {}{0em}
  {}
```

أصبحت الأقسام الفرعية الآن بالأسلوب نفسه:

![Screenshot2.png](/files/d02cc7065770d064fbdf4ad15ffc3af83d465d38)

ينبغي أن تجرب بعض خيارات التنسيق المتاحة لترى ما يناسبك:

* `\bfseries`, `\itshape`: اجعل العنوان غامقًا أو مائلًا؛
* `\scshape`: أحرف كبيرة صغيرة؛
* `\small`, `\normalsize`, `\large`, `\Large`, `\LARGE`, `\huge`, `\Huge`: اضبط حجم الخط؛
* `\rmfamily`, `\sffamily`, `\ttfamily`: اضبط نوع الخط إلى ذو الزوائد، أو بلا زوائد، أو آلة كاتبة على التوالي.

### إضافة التواريخ إلى عناوين الأقسام

يمكننا تعريف بعض الأوامر الجديدة التي تتيح لنا تضمين التواريخ في عناوين أقسامنا. أضف ما يلي إلى ملف الفئة الخاص بك:

```latex
\newcommand{\datedsection}[2]{%
  \section[#1]{#1 \hfill #2}%
}
\newcommand{\datedsubsection}[2]{%
  \subsection[#1]{#1 \hfill #2}%
}
```

هذا يعرّف أمرين جديدين `\datedsection` و `\datedsubsection` اللذين يأخذان وسيطين: اسم القسم كما من قبل، وتاريخًا سيُطبع على الجانب الأيمن من الصفحة. ويأمر الأمر `\hfill` LaTeX بملء أكبر قدر ممكن من المساحة، وبالتالي يدفع الوسيط الثاني (`#2`) إلى يمين الصفحة. عدّل `cv.tex` لاستخدام هذه الأوامر:

```latex
\documentclass{my_cv}

\begin{document}

\section{Education}
\datedsubsection{جامعة لا مكان}{2004--2008}
التحقت بجامعة لا مكان من عام 2004 إلى عام 2008.

\section{العمل}
\datedsubsection{ABC المحدودة.}{2008--الآن}
عملت لدى ABC المحدودة منذ عام 2008 فصاعدًا.

\end{document} ​
```

تحتوي سيرتنا الذاتية الآن على تواريخ:

![Screenshot3.png](/files/b037d04bcce67eb6ca74b549e9b92f13947ab46b)

### الاستنتاجات

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

شكرًا للقراءة!

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

الجزء 1 | [الجزء 2](/latex/ar/mzyd-mn-almwdhwaat/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ar/mzyd-mn-almwdhwaat/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
