%\iffalse meta-comment % % na-list.dtx % Version: 1.0 (Final Edition) % Date: 2026/05/24 % % --- AUTHOR / المؤلف --- % NAAM MOHAMED (الأستاذ: ناعم محمد) % % --- LICENSE / الترخيص --- % English: % This work (the na-list package) is licensed under the % LaTeX Project Public License (LPPL), version 1.3c or later. % % Arabic: % هذا العمل (حزمة na-list) مرخص تحت شروط رخصة مشروع لاتيك % العامة (LPPL)، الإصدار 1.3c أو أي إصدار لاحق. % % \fi % % \iffalse %<*driver> \ProvidesFile{na-list.dtx} \documentclass{ltxdoc} \usepackage[x11names,svgnames]{xcolor} \usepackage{na-list} \usepackage[explicit]{titlesec} \usepackage{etoolbox} \usepackage{contour} \usepackage{array} \usepackage{verbatim} \usepackage{tikz,geometry,eso-pic,polyglossia} \usetikzlibrary{shapes.geometric, calc,shapes.arrows, shadows} \usetikzlibrary{shadows.blur} \geometry{left=2.5cm, right=2.5cm, top=2.5cm, bottom=2.5cm} \setmainlanguage[numerals=maghrib,locale=algeria]{arabic} \setotherlanguage{english} \newfontfamily\arabicfont[Script=Arabic,Scale=1.2]{Amiri} \newfontfamily\na[Script=Arabic,Scale=1.2]{Amiri} \newfontfamily\arabicfontsf[Script=Arabic,Scale=1.2]{Amiri} \newfontfamily\latinfont{Latin Modern Roman} \AtBeginEnvironment{verbatim}{% \selectlanguage{english}% \setLTR% } \renewcommand{\thesection}{\arabic{section}} \titleformat{\section} {\bf\Large\sffamily} {\begin{tikzpicture}[baseline=(a.base)] \node[text=white,scale=1,anchor=east,draw=blue!50!black, fill=red!50!black,rounded corners=3pt] (a) {\thesection}; \node [text=black,anchor=east] at (a.west) (2){\large\textarabic{\bf\sffamily #1}}; \end{tikzpicture}} {0pt}{} \titleformat{\subsection} {\bf} {\begin{tikzpicture}[baseline=(a.base)] \node[text=white,scale=1,anchor=east,draw=blue!50!black, fill=blue!50!black,rounded corners=3pt] (a) {\thesubsection}; \node [text=black,anchor=east] at (a.west) (2){\large\textarabic{\bf\sffamily #1}}; \end{tikzpicture}} {0pt}{} \setnonlatin \definecolor{Navy}{RGB}{0,0,128} \definecolor{DeepBlue}{HTML}{0A192F} \definecolor{SoftSlate}{HTML}{2C3E50} \definecolor{coverfgcolor}{RGB}{20, 60, 100} \EnableCrossrefs \CodelineIndex \RecordChanges \tikzset{ render blur shadow/.prefix code={ \colorlet{black}{black}}} \newcommand\boxtitle[1]{% \begin{tikzpicture} % --- إضافة الزخرفة الجديدة --- \foreach \sx/\sy in {1/1, 1/-1, -1/1, -1/-1} { \begin{scope}[shift={(\sx*6.5, \sy*3.8)}] \foreach \i in {0,0.08,...,5.5} { \draw[blue, thin, opacity=0.7] (-\sx*\i, 0) -- (0, -\sy*5.5 + \sy*\i); } \end{scope} } % --- الإطار الأساسي --- \node[text width=0.5\textwidth, rectangle, draw=none,minimum width=0.55\textwidth, inner ysep=0.4cm, fill=white]{% \huge \begin{RTL} \begin{center} #1 \end{center} \end{RTL} }; \end{tikzpicture}} \begin{document} \OnlyDescription % <--- هذا السطر هو التعديل الوحيد: يمنع ظهور صفحة الأكواد الأخيرة \DocInput{na-list.dtx} \end{document} % % \fi % %\title{\boxtitle{\fontsize{1.4cm}{1cm}\color{blue} \texttt{na-list}\\[0.4cm]\fontsize{0.8cm}{1cm}\color{Navy}\bf\textarabic{ حزمة لانشاء القوائم \\ الإصدار 1.0}}} %\author{} \date{} %\maketitle % \section{مقدمة عن الحزمة} % تُعد حزمة \texttt{na-list} أداة برمجية متطورة ومخصصة لنظام (LaTeX)، صُممت خصيصاً لتوفير تحكم مرن % واحترافي في تنسيق القوائم التعدادية وتخصيص أشكالها الهندسية والرمزية. تمنح هذه الحزمة المستخدم % قدرة فائقة على دمج التصاميم البصرية المميزة مع المحتوى النصي، مما يضفي لمسة جمالية وتنظيمية متقنة % تخدم مختلف الأغراض التحريرية، خاصة في المجلات والمستندات الأكاديمية.\\ %\textbf{ملاحظة هامة:}\\ %تعمل الحزمة بكفاءة مع المعالجات التالية \texttt{pdfLaTeX}, \texttt{XeLaTeX}, و \texttt{LuaLaTeX}. % % \begin{otherlanguage}{english} % The \texttt{na-list} package is a sophisticated tool designed for the \LaTeX{} system, % engineered to provide flexible and professional control over list formatting and % the customization of geometric and symbolic shapes. This package grants users the % powerful ability to seamlessly integrate distinctive visual designs with textual % content, adding an aesthetic and organized touch that serves various editorial % purposes, particularly in journals and academic documents. % \end{otherlanguage} % \section{آلية العمل \LR{(Technical Overview)}} % \section{استخدام بيئة \texttt{nalist}} % تتيح هذه البيئة إنشاء قوائم مرقمة بأشكال هندسية متنوعة مع تحكم كامل في المظهر. % % \subsection{طريقة الاستخدام} % يتم استدعاء البيئة بالشكل التالي: % \begin{quote} % \texttt{\textbackslash begin\{nalist\}[color]\{shape\}} \\ % \quad \texttt{\textbackslash item المحتوى النصي} \\ % \texttt{\textbackslash end\{nalist\}} % \end{quote} % % \subsection{شرح الوسائط (Arguments)} % \begin{description} % \item[[color] \textbf{اللون (اختياري)}:] القيمة داخل الأقواس المربعة \texttt{[ ]} تحدد لون الشكل. % القيمة الافتراضية هي \texttt{blue}، ويمكنك اختيار أي لون من حزمة \texttt{xcolor}. % \item[\{shape\} \textbf{الشكل (إجباري)}:] القيمة داخل الحاضنات \texttt{\{ \}} تحدد الشكل الهندسي. الخيارات المتاحة هي: % \begin{itemize} % \item \texttt{circle}: دائرة. % \item \texttt{rectangle}: مستطيل. % \item \texttt{star}: نجمة خماسية. % \item \texttt{diamond}: معين. % \item \texttt{polygon}: مضلع خماسي. % \item \texttt{arrow}: سهم يتبع اتجاه النص. % \item \texttt{arrowar}: سهم موجه لليسار دائماً. % \end{itemize} % \end{description} % % \subsection{أوامر التحكم الإضافية} % قبل فتح البيئة، يمكنك استخدام هذه الأوامر لتخصيص القائمة: % \begin{itemize} % \item \texttt{\textbackslash nascale\{قيمة\}}: لتكبير أو تصغير حجم الشكل (الافتراضي 1.0). % \item \texttt{\textbackslash nasize\{\textbackslash small/ \textbackslash Large\}}: لتغيير حجم الخط داخل الشكل. % \item \texttt{\textbackslash nanumbercolor\{اللون\}}: لتغيير لون الرقم داخل الشكل. % \item \texttt{\textbackslash nastartat\{رقم\}}: للبدء من رقم معين غير الواحد. % \item \texttt{\textbackslash nashadow\{yes/no\}}: لتفعيل أو تعطيل الظل خلف الشكل. % \item \texttt{\textbackslash naListmargin\{مسافة\}}: لتحديد مقدار الإزاحة (الهامش) عن يسار القائمة (الافتراضي 1cm). % \end{itemize} % \subsection{القوائم الحرفية \LR{(nalistalpha)}} % تستخدم هذه البيئة للترقيم باستخدام الحروف بدلاً من الأرقام. % تتكيف هذه البيئة تلقائياً مع لغة المستند: % \begin{itemize} % \item \textbf{في المستندات العربية:} يتم الترقيم أبجدياً (أ، ب، ج...). % \item \textbf{في المستندات اللاتينية:} يتم الترقيم أبجدياً (a, b, c...). % \end{itemize} % % \paragraph{مثال للاستخدام:} % \begin{verbatim} % \begin{nalistalpha}[blue]{circle} % \item العنصر الأول % \item العنصر الثاني % \end{nalistalpha} % \end{verbatim} % \begin{nalistalpha}[blue]{circle} % \item العنصر الأول % \item العنصر الثاني % \end{nalistalpha} % % \paragraph{مثال للاستخدام باللغة اللاتينية:} % \begin{otherlanguage}{english} %\begin{LTR} % \begin{verbatim} %\begin{nalistalpha}[blue]{circle}[label=\protect\drawmylabel{blue}{circle}{\latinfont\Alph*}{\mynodefont}] % \item First item % \item Second item % \end{nalistalpha} % \end{verbatim} % %\begin{nalistalpha}[blue]{circle}[label=\protect\drawmylabel{blue}{circle}{\latinfont\Alph*}{\mynodefont}] % \item First item % \item Second item % \end{nalistalpha} %\end{LTR} % \end{otherlanguage} % \subsection{استمرارية الترقيم \LR{(Series and Resume)}} % للحصول على تحكم كامل في استمرارية الترقيم، خاصة عند تقسيم القائمة إلى أجزاء % منفصلة في المستند، نستخدم نظام الـ \texttt{series}. % % \paragraph{كيفية الاستخدام:} % \begin{enumerate} % \item في البيئة الأولى، قم بتعريف السلسلة باستخدام الخيار \texttt{series=mySeries}. % \item في البيئات اللاحقة، استخدم \texttt{resume*=mySeries} لمتابعة الترقيم. % \end{enumerate} % % \paragraph{مثال توضيحي:} % \begin{verbatim} % \begin{nalist}[blue]{circle}[series=mySeries] % \item العنصر الأول % \item العنصر الثاني % \end{nalist} % % % نص إضافي بين القائمتين % % \begin{nalist}[blue]{circle}[resume*=mySeries] % \item العنصر الثالث (سيبدأ تلقائياً بالرقم 3) % \end{nalist} % \end{verbatim} % \begin{nalist}[blue]{circle}[series=mySeries] % \item العنصر الأول % \item العنصر الثاني % \end{nalist} % % % نص إضافي بين القائمتين % % \begin{nalist}[blue]{circle}[resume*=mySeries] % \item العنصر الثالث (سيبدأ تلقائياً بالرقم 3) % \end{nalist} % % \noindent \textbf{ملاحظة:} هذا النظام يضمن ربط عدادات القائمة بشكل دقيق، ويعمل بكفاءة مع \texttt{nalist} و \texttt{nalistalpha}. % \subsection{الترقيم الروماني \LR{(Roman Numerals)}} % لدعم الترقيم الروماني (سواءً بالأحرف الصغيرة \texttt{i, ii, iii} أو الأحرف الكبيرة \texttt{I, II, III})، % لا نحتاج لتعريف بيئة جديدة، بل نكتفي بتمرير "نمط العداد" إلى خيار \texttt{label} داخل الوسيط الثالث للبيئة. % % \paragraph{مثال للترقيم الروماني الصغير:} % \begin{verbatim} % \begin{nalist}[blue]{circle}[label=\protect\drawmylabel{blue}{circle}{\roman*}{\mynodefont}] % \item First item % \item Second item % \end{nalist} % \end{verbatim} % \begin{otherlanguage}{english} % \begin{nalist}[blue]{circle}[label=\protect\drawmylabel{blue}{circle}{\roman*}{\mynodefont}] % \item First item % \item Second item % \end{nalist} % \end{otherlanguage} % % \paragraph{مثال للترقيم الروماني الكبير:} % \begin{verbatim} % \begin{nalist}[blue]{circle}[label=\protect\drawmylabel{blue}{circle}{\Roman*}{\mynodefont}] % \item First item % \item Second item % \end{nalist} % \end{verbatim} % \begin{otherlanguage}{english} % \begin{nalist}[blue]{circle}[label=\protect\drawmylabel{blue}{circle}{\Roman*}{\mynodefont}] % \item First item % \item Second item % \end{nalist} % \end{otherlanguage} % \section{استعراض الأشكال المتاحة} % يوضح الجدول التالي الأشكال الهندسية التي تدعمها حزمة \texttt{na-list} وكيفية استدعائها. % % \begin{center} % \begin{tabular}{|l|l|l|} % \hline % \textbf{اسم الشكل} & \textbf{كود الاستدعاء} & \textbf{الوصف البصري} \\ \hline % Circle & \texttt{\{circle\}} & دائرة متناظرة \\ \hline % Rectangle & \texttt{\{rectangle\}} & مستطيل بزوايا قائمة \\ \hline % Star & \texttt{\{star\}} & نجمة خماسية \\ \hline % Diamond & \texttt{\{diamond\}} & شكل معين \\ \hline % Polygon & \texttt{\{polygon\}} & مضلع خماسي \\ \hline % Arrow & \texttt{\{arrow\}} & سهم (يتبع اتجاه النص) \\ \hline % Arrow Reversed & \texttt{\{arrowar\}} & سهم موجه دائماً لليسار \\ \hline % Signal Right & \texttt{\{signalright\}} & إشارة تتجه لليمين \\ \hline % Signal Left & \texttt{\{signalleft\}} & إشارة تتجه لليسار \\ \hline % Signal E-W & \texttt{\{signalle\}} & إشارة من الغرب للشرق \\ \hline % Signal W-E & \texttt{\{signaldual\}} & إشارة من الشرق للغرب \\ \hline % \end{tabular} % \end{center} % % \section{أمثلة تفصيلية للأشكال} % % \textbf{الأشكال الهندسية الأساسية:} % \begin{itemize} % \item \texttt{\textbackslash begin\{nalist\}[blue]\{circle\} \item دائرة \textbackslash end\{naList\}} % \item \texttt{\textbackslash begin\{naList\}[red]\{rectangle\} \item مستطيل \textbackslash end\{nalist\}} % \item \texttt{\textbackslash begin\{nalist\}[orange]\{star\} \item نجمة \textbackslash end\{nalist\}} % \item \texttt{\textbackslash begin\{nalist\}[purple]\{diamond\} \item معين \textbackslash end\{nalist\}} % \item \texttt{\textbackslash begin\{nalist\}[teal]\{polygon\} \item مضلع \textbackslash end\{nalist\}} % \end{itemize} % % \textbf{الأسهم:} % \begin{itemize} % \item \texttt{\textbackslash begin\{nalist\}[gray]\{arrow\} \item سهم تلقائي \textbackslash end\{nalist\}} % \item \texttt{\textbackslash begin\{nalist\}[gray]\{arrowar\} \item سهم ثابت \textbackslash end\{nalist\}} % \end{itemize} % % \textbf{إشارات الاتجاه (Signals):} % \begin{itemize} % \item \texttt{\textbackslash begin\{nalist\}[blue]\{signalright\} \item يمين \textbackslash end\{nalist\}} % \item \texttt{\textbackslash begin\{nalist\}[red]\{signalleft\} \item يسار \textbackslash end\{nalist\}} % \item \texttt{\textbackslash begin\{nalist\}[green]\{signalle\} \item شرق \textbackslash end\{nalist\}} % \item \texttt{\textbackslash begin\{nalist\}[orange]\{signaldual\} \item غرب \textbackslash end\{nalist\}} % \end{itemize} % % \begin{quote} % \textbf{ملاحظة:} أشكال الإشارات (Signal) مثالية للنصوص العربية؛ حيث تظل الأرقام بداخلها ثابتة. % \end{quote} % \section{تخصيص القوائم \texttt{(Customization Commands)}} % توفر الحزمة مجموعة من أوامر التحكم التي تسمح للمستخدم بتغيير مظهر القوائم وتعديل سلوكها البرمجي. % يمكن وضع هذه الأوامر في أي مكان قبل استدعاء البيئة (\texttt{nalist}) لتؤثر على القائمة التالية فقط، أو في ديباجة المستند (\texttt{Preamble}) لتؤثر على كافة قوائم المستند. % % \subsection{قائمة أوامر التخصيص} % \begin{description} % \item[\texttt{\textbackslash nascale{قيمة}}:] للتحكم في مقياس الشكل الهندسي. القيمة الافتراضية هي \texttt{1.0}. يمكنك استخدام قيم مثل \texttt{0.8} للتصغير أو \texttt{1.2} للتكبير. % \item[\texttt{\textbackslash nasize{حجم_الخط}}:] لتغيير حجم النص داخل الشكل. تقبل أوامر لاتيك القياسية مثل \texttt{\textbackslash small}, \texttt{\textbackslash Large}, \texttt{\textbackslash footnotesize}. % \item[\texttt{\textbackslash nanumbercolor{اللون}}:] لتغيير لون الرقم أو الرمز داخل الشكل (مثلاً: \texttt{red}, \texttt{blue!50!black}). % \item[\texttt{\textbackslash nastartat{رقم}}:] لضبط القيمة الأولية للعداد. مفيد جداً إذا كنت ترغب في استكمال ترقيم قائمة تم قطعها بنص أو صورة. % \item[\texttt{\textbackslash nafont{الخط}}:] لتحديد نوع الخط المستخدم داخل الشكل (مثل \texttt{\textbackslash bfseries} للخط العريض). % \item[\texttt{\textbackslash nashadow{yes/no}}:] تفعيل أو تعطيل تأثير الظل خلف الشكل الهندسي. % \end{description} % % \subsection{مثال تطبيقي على التخصيص} % يمكنك تخصيص القائمة باستخدام الأوامر التالية قبل استدعاء البيئة: % % \begin{tabular}{ll} % \texttt{\textbackslash nashadow\{no\}} & إلغاء الظل خلف الشكل \\ % \texttt{\textbackslash nascale\{1.2\}} & تكبير حجم الشكل \\ % \texttt{\textbackslash nasize\{\textbackslash Large\}} & تكبير حجم الخط داخل الشكل \\ % \texttt{\textbackslash nanumbercolor\{red\}} & تغيير لون الرقم إلى الأحمر \\ % \texttt{\textbackslash nastartat\{5\}} & البدء من الرقم 5 \\ % \end{tabular} % مثال %\nashadow{no} % إلغاء تفعيل الظل لهذه القائمة %\begin{nalist[blue]{circle} % \item هذا العنصر سيظهر بدون ظل خلف الدائرة. % \item الظل تم تعطيله محلياً. %\end{nalist} % \section{شرح بيئة التعداد الرمزي \texttt{nalistding} تقنياً} % % تختلف بيئة \texttt{nalistding} عن بيئة \texttt{nalist} في أنها لا ترسم أشكالاً هندسية، بل تستخدم نظام تصفيف الرموز المستند إلى خطوط \texttt{ZapfDingbats} (Pifont). % % \subsection{آلية الترقيم الرياضي \texttt{(Symbol Mapping)}} % بدلاً من الاعتماد على عدادات الأرقام التقليدية فقط، تستخدم الحزمة عمليات حسابية على قيم الـ (\texttt{slot}) الخاصة بالخط: % \begin{enumerate} % \item \textbf{تحديد البداية:} يستقبل الأمر الوسيط الثاني (كود الرمز)، حيث يتم تخزينه كقيمة مرجعية. % \item \textbf{الحساب الديناميكي:} عند كل عنصر (\texttt{\textbackslash item})، تقوم الحزمة بتنفيذ عملية حسابية باستخدام \texttt{\textbackslash numexpr}: % \[ \text{الرمز الحالي} = \text{كود البداية} + (\text{رقم العداد} - 1) \] % هذا يسمح للحزمة بالانتقال التلقائي للرمز التالي في الخط المختار بناءً على ترتيب الـ (\texttt{slot}) الخاص به. % \end{enumerate} % % \subsection{إدارة الرموز (Pifont Integration)} % \begin{itemize} % \item \textbf{الارتباط بالخط:} يتم استدعاء حزمة \texttt{pifont} داخلياً لضمان توفر الجداول الرمزية. % \item \textbf{تحويل المدخلات:} يتم تمرير الرقم المحسوب إلى أمر \texttt{\textbackslash ding\{...\}} الذي يقوم بتحويل القيمة الرقمية إلى الرمز البصري المقابل في خط \texttt{ZapfDingbats}. % \end{itemize} % % \subsection{الفائدة التقنية للبيئة} % توفر هذه البيئة دقة عالية للمستخدمين الذين يحتاجون لترقيم يعتمد على رموز خاصة (مثل الدوائر المصمتة، الأسهم المحددة، أو الأرقام داخل أشكال مسبقة الصنع في الخطوط)، وتتميز بـ: % \begin{itemize} % \item \textbf{الخفة:} لا تستخدم محرك الرسم الثقيل \texttt{TikZ}، مما يجعل تجميع الملف (Compilation) أسرع بكثير. % \item \textbf{التوافق:} تضمن الحفاظ على محاذاة الرمز مع بداية النص (Baseline) دون أي إزاحة إضافية. % \end{itemize} % \section{أمثلة تفصيلية لبيئة \texttt{nalistding}} % % تستخدم هذه البيئة رموز الخطوط (Dingbats) للترقيم. يوضح الجدول التالي أنماطاً شائعة للترقيم الرمزي. % % \begin{center} % \begin{minipage}{0.48\textwidth} % \textbf{الكود:} \\ % \begin{verbatim} % \begin{nalistding}[blue][182] % \item دوائر مصمتة % \item رقم 2 في دائرة % \end{nalistding} % \end{verbatim} % \end{minipage} % \hfill % \begin{minipage}{0.48\textwidth} % \textbf{الناتج:} \\ % \ding{182} دوائر مصمتة \\ % \ding{183} رقم 2 في دائرة % \end{minipage} % \end{center} % % \begin{center} % \begin{minipage}{0.48\textwidth} % \textbf{الكود:} \\ % \begin{verbatim} % \begin{nalistding}[red][202] % \item أرقام بيضاء داخل مربعات % \item الرمز التالي تلقائياً % \end{nalistding} % \end{verbatim} % \end{minipage} % \hfill % \begin{minipage}{0.48\textwidth} % \textbf{الناتج:} \\ % \ding{202} أرقام بيضاء \\ % \ding{203} الرمز التالي % \end{minipage} % \end{center} % % \begin{center} % \begin{minipage}{0.48\textwidth} % \textbf{الكود:} \\ % \begin{verbatim} % \begin{nalistding}[green][42] % \item رمز النجمة (سفلي) % \item رمز النجمة (علوي) % \end{nalistding} % \end{verbatim} % \end{minipage} % \hfill % \begin{minipage}{0.48\textwidth} % \textbf{الناتج:} \\ % \ding{42} رمز النجمة \\ % \ding{43} رمز النجمة % \end{minipage} % \end{center} % \section{دليل الرموز الرقمية \texttt{(Symbol Codes)}} % توفر بيئة \texttt{nalistding} وصولاً مباشراً إلى رموز الترقيم الاحترافية. % الأرقام المدخلة في الوسيط الثاني تمثل كود الرمز (Slot) في جدول الرموز، وإليك أهم المجموعات: % % \begin{table}[h] % \centering % \begin{tabular}{|c|c|l|} % \hline % \textbf{كود البداية} & \textbf{النمط البصري} & \textbf{الوصف} \\ \hline % 172 & \ding{172} & أرقام داخل دوائر (بداية من 1) \\ \hline % 182 & \ding{182} & أرقام داخل دوائر سوداء \\ \hline % 192 & \ding{192} & أرقام داخل مربعات \\ \hline % 202 & \ding{202} & أرقام داخل مربعات سوداء \\ \hline % \end{tabular} % \end{table} % % \subsection{ملاحظة تقنية حول الترقيم التلقائي} % عند اختيارك لأحد هذه الأكواد، تقوم البيئة تلقائياً بحساب الرموز اللاحقة: % \begin{itemize} % \item إذا اخترت \texttt{172}، فإن العنصر الأول سيكون \ding{172}، والثاني \ding{173}، والثالث \ding{174} وهكذا. % \item هذا يعني أنك لست بحاجة لتغيير الرقم لكل سطر؛ الحزمة تتكفل بالانتقال إلى الرمز التالي في الجدول. % \end{itemize} % \section{التوافقية والمرونة \texttt{(Compatibility)}} % تم تصميم حزمة \texttt{na-list} لتكون مرنة ومتوافقة تماماً مع أدوات \LaTeX القياسية. % % \subsection{الاستخدام مع حزمة \texttt{enumitem}} % لا تفرض حزمتنا قيوداً على هيكلية القوائم التقليدية. يمكنك استخدام حزمة \texttt{enumitem} % جنباً إلى جنب مع \texttt{na-list} دون أي تعارض برمجياً. % % \subsection{استخدام الترقيم العادي \texttt{(Standard Numbering)}} % إذا كنت ترغب في العودة إلى الترقيم العادي أو الدمج بين الأشكال الرسومية والترقيم الرقمي % التقليدي داخل نفس المستند، يمكنك ذلك بكل سهولة. % % \begin{quote} % \textbf{ملاحظة:} الحزمة تحترم إعدادات \texttt{enumitem}؛ لذا يمكنك استدعاء القوائم التقليدية % (\texttt{enumerate}) في أي جزء من المستند وسوف تعمل بشكلها الافتراضي دون أي تداخل مع % الأنماط الرسومية الخاصة بـ \texttt{na-list}. % \end{quote} % % \textbf{مثال للدمج:} % \begin{verbatim} % % هنا استخدام حزمتنا % \begin{nalist}[blue]{circle} % \item شكل رسومي مخصص % \end{nalist} % % % هنا استخدام الترقيم العادي (Standard) % \begin{enumerate} % \item ترقيم رقمي عادي (1, 2, 3) % \item يبقى يعمل بكامل كفاءته % \end{enumerate} % \end{verbatim} % \section{إعادة تعريف اللون الافتراضي} % لتسهيل العمل وتوحيد مظهر المستند، يمكنك تغيير اللون الافتراضي للأرقام أو الرموز % بحيث لا تضطر لتحديده في كل بيئة على حدة. % % \subsection{تغيير اللون الافتراضي عالمياً} % يمكنك إعادة تعريف الأمر \texttt{\textbackslash nanumbercolor} في ديباجة المستند (Preamble) % أو في أي مكان تريده، وسوف تعتمد الحزمة هذا اللون كقيمة افتراضية جديدة. % % \begin{quote} % \textbf{الكود:} \\ % \texttt{\textbackslash nanumbercolor\{red!80!black\}} \\ % \textit{بعد هذا الأمر، ستظهر جميع القوائم التالية باللون الأحمر الغامق تلقائياً.} % \end{quote} % % \subsection{الاستثناء المحلي} % إذا قمت بتغيير اللون عالمياً ولكنك أردت تغيير لون قائمة واحدة فقط (مثلاً قائمة باللون الأزرق % وسط مستند أحمر)، يمكنك ببساطة استدعاء الأمر مرة أخرى قبل البيئة المطلوبة: % % \begin{verbatim} % \nanumbercolor{red!80!black} % اللون الافتراضي للمستند % % \begin{nalist}{circle} \item عنصر أحمر \end{nalist} % % \nanumbercolor{blue} % تغيير مؤقت % \begin{nalist}{circle} \item عنصر أزرق \end{nalist} % \end{verbatim} % % \textbf{نصيحة للمحترفين:} للحصول على نتائج احترافية، نوصي بتعريف اللون في ديباجة المستند % (Preamble) باستخدام \texttt{\textbackslash definecolor} من حزمة \texttt{xcolor} % لاستخدام درجات ألوان خاصة بك، ثم تمريرها إلى الأمر \texttt{\textbackslash nanumbercolor}. % \section{أمثلة متقدمة للدمج بين الأنماط} % تُظهر الأمثلة التالية كيف يمكنك استخدام \texttt{na-list} جنباً إلى جنب مع % قوائم \texttt{enumerate} القياسية، مع تخصيص الألوان والأنماط بشكل مستقل. % % \subsection{المثال الأول: هيكلية تعليمية متنوعة} % \begin{minipage}{0.48\textwidth} % \textbf{الكود:} % \begin{verbatim} % \begin{nalist}[teal]{polygon} % \item خطوة 1: تهيئة البيئة % \item خطوة 2: تحديد الشكل % \end{nalist} % % \begin{enumerate} % \item شرح تقني للخطوات % \item ملاحظات إضافية % \end{enumerate} % \end{verbatim} % \end{minipage} % \hfill % \begin{minipage}{0.48\textwidth} % \textbf{الناتج:} \\ % \begin{nalist}[teal]{polygon} \item خطوة 1: تهيئة البيئة \item خطوة 2: تحديد الشكل \end{nalist} % \begin{enumerate} \item شرح تقني للخطوات \item ملاحظات إضافية \end{enumerate} % \end{minipage} % % \hrulefill % % \subsection{المثال الثاني: قائمة متداخلة احترافية} % \begin{minipage}{0.48\textwidth} % \textbf{الكود:} % \begin{verbatim} % \begin{nalist}[orange]{star} % \item العنوان الرئيسي % \begin{enumerate} % \item تفاصيل فرعية 1 % \item تفاصيل فرعية 2 % \end{enumerate} % \end{nalist} % \end{verbatim} % \end{minipage} % \hfill % \begin{minipage}{0.48\textwidth} % \textbf{الناتج:} \\ % \begin{nalist}[orange]{star} % \item العنوان الرئيسي % \begin{enumerate} \item تفاصيل فرعية 1 \item تفاصيل فرعية 2 \end{enumerate} % \end{nalist} % \end{minipage} % \section{مثال شامل (تمرين رياضيات)} % يوضح هذا المثال كيفية الدمج بين بيئات الترقيم الثلاث في تمرين واحد % باستخدام شكل الدائرة (\texttt{circle}) كنمط موحد. % % \begin{verbatim} % \section*{مثال تطبيقي للحزمة عبارة عن تمرين} % % \begin{nalist}[blue]{circle} % \item أوجد قيمة $\sin(30^\circ)$. % \item أوجد قيمة $\cos(60^\circ)$. % \end{nalist} % % \begin{nalistalpha}[blue]{circle} % \item القيمة هي $0.5$. % \item القيمة هي $1$. % \end{nalistalpha} % % \begin{nalistding}[blue][172] % \item تذكر دائماً وحدة القياس. % \end{nalistding} % \end{verbatim} % % \paragraph{الناتج بعد المعالجة:} % عند تجميع الكود أعلاه، سيظهر التمرين كالتالي: % % \section*{تمرين: الدوال المثلثية} % \begin{nalist}[blue]{circle} % \item أوجد قيمة $\sin(30^\circ)$. % \item أوجد قيمة $\cos(60^\circ)$. % \end{nalist} % % \begin{nalistalpha}[blue]{circle} % \item القيمة هي $0.5$. % \item القيمة هي $1$. % \end{nalistalpha} % % \begin{nalistding}[blue][172] % \item تذكر دائماً وحدة القياس. % \end{nalistding} % \section{إعدادات إضافية (مهم جداً)} % لضمان عمل الأشكال الهندسية (خاصة الأسهم والإشارات) بشكل صحيح ومتناسق مع قياسات الخط % والتدوير، يُرجى إضافة السطر التالي في ديباجة المستند \LR{(Preamble)}: % % \begin{verbatim} % \tikzset{every node/.append style={transform shape}} % \end{verbatim} % % \noindent \textbf{لماذا هذا الأمر ضروري؟} % يعمل هذا الأمر على تفعيل تأثير القياس والتدوير على عقد (\texttt{nodes}) حزمة \texttt{TikZ}، % مما يضمن أن الأسهم والإشارات تظهر بالشكل الصحيح عند تطبيق أوامر التكبير % (\texttt{\textbackslash nascale}) أو عند تغيير اتجاه النص. % % \StopEventually{\PrintIndex \PrintChanges} % % \iffalse %<*package> % \fi % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{na-list}[2026/05/24 v1.0 Final Edition] \RequirePackage{tikz} \usetikzlibrary{shapes.geometric, shapes.arrows, shadows,shapes.symbols} \RequirePackage{xparse} \RequirePackage{enumitem} \RequirePackage{graphicx} \RequirePackage{pifont} \RequirePackage{xcolor} \newif\ifnashadow \nashadowtrue \newcommand{\nashadow}[1]{\ifnum\pdfstrcmp{#1}{yes}=0 \nashadowtrue \else \nashadowfalse \fi} \def\myscalevalue{1.0} \newcommand{\nascale}[1]{\def\myscalevalue{#1}} \def\mynodesize{\normalsize} \newcommand{\nasize}[1]{\def\mynodesize{#1}} \def\mynodefont{} \newcommand{\nafont}[1]{\def\mynodefont{#1}} \def\mynodestart{1} \newcommand{\nastartat}[1]{\def\mynodestart{#1}} \def\mynumbercolor{black} \newcommand{\nanumbercolor}[1]{\def\mynumbercolor{#1}} \def\mynodelistmargin{1cm} \newcommand{\nalistmargin}[1]{\def\mynodelistmargin{#1}} \newif\ifisltr \isltrtrue \AtBeginDocument{ \@ifpackageloaded{bidi}{\if@RTL\isltrfalse\fi}{} \@ifpackageloaded{polyglossia}{\if@rl\isltrfalse\fi}{} } % إضافة لربط الأبجد بـ enumitem \AddEnumerateCounter{\abjad}{\@abjad}{أ} \newcommand{\myshadow}{\ifnashadow drop shadow\fi} \newcommand{\drawmylabel}[4]{% \ifisltr \def\myrot{0} \else \def\myrot{180} \fi \tikz[baseline=-0.6ex, scale=\myscalevalue]{ \ifnum\pdfstrcmp{#2}{circle}=0 \node[draw=#1, fill=#1!10, circle, \myshadow, inner sep=2pt, minimum size=0.5cm, font=\mynodefont \mynodesize, text=\mynumbercolor] {#3}; \else\ifnum\pdfstrcmp{#2}{rectangle}=0 \node[draw=#1, fill=#1!10, rectangle, \myshadow, inner sep=2pt, minimum size=0.5cm, font=\mynodefont \mynodesize, text=\mynumbercolor] {#3}; \else\ifnum\pdfstrcmp{#2}{star}=0 \node[draw=#1, fill=#1!10, star, star points=5, \myshadow, inner sep=1pt, minimum size=0.6cm, font=\mynodefont \mynodesize, text=\mynumbercolor] {#3}; \else\ifnum\pdfstrcmp{#2}{diamond}=0 \node[draw=#1, fill=#1!10, diamond, \myshadow, inner sep=2pt, minimum size=0.5cm, font=\mynodefont \mynodesize, text=\mynumbercolor] {#3}; \else\ifnum\pdfstrcmp{#2}{polygon}=0 \node[draw=#1, fill=#1!10, regular polygon, regular polygon sides=5, \myshadow, inner sep=2pt, minimum size=0.5cm, font=\mynodefont \mynodesize, text=\mynumbercolor] {#3}; \else\ifnum\pdfstrcmp{#2}{arrow}=0 \node[draw=#1, fill=#1!10, single arrow, rotate=\myrot, \myshadow, minimum height=0.6cm, inner sep=2pt, font=\mynodefont \mynodesize, text=\mynumbercolor] {\ifnum\pdfstrcmp{\myrot}{180}=0 \rotatebox{180}{#3} \else #3 \fi}; \else\ifnum\pdfstrcmp{#2}{arrowar}=0 \node[draw=#1, fill=#1!10, single arrow, rotate=180, \myshadow, minimum height=0.6cm, inner sep=2pt, font=\mynodefont \mynodesize, text=\mynumbercolor] {\rotatebox{180}{#3}}; \else\ifnum\pdfstrcmp{#2}{signalright}=0 \node[draw=#1, fill=#1!10, signal, signal to=right, \myshadow, inner sep=2pt, minimum height=0.5cm, font=\mynodefont \mynodesize, text=\mynumbercolor] {#3}; \else\ifnum\pdfstrcmp{#2}{signalleft}=0 \node[draw=#1, fill=#1!10, signal, signal to=left, \myshadow, inner sep=2pt, minimum height=0.5cm, font=\mynodefont \mynodesize, text=\mynumbercolor] {#3}; \else\ifnum\pdfstrcmp{#2}{signalle}=0 \node[draw=#1, fill=#1!10, signal, signal from=west, signal to=east, \myshadow, inner sep=2pt, minimum height=0.5cm, font=\mynodefont \mynodesize, text=\mynumbercolor] {#3}; \else\ifnum\pdfstrcmp{#2}{signaldual}=0 \node[draw=#1, fill=#1!10, signal, signal from=east, signal to=west, \myshadow, inner sep=2pt, minimum height=0.5cm, font=\mynodefont \mynodesize, text=\mynumbercolor] {#3}; \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}} \newlist{customlist}{enumerate}{3} \newlist{dinglistsimple}{enumerate}{3} \NewDocumentEnvironment{nalist}{O{blue} g O{}}{% \IfNoValueTF{#2} {\setlist[customlist]{label=\protect\drawmylabel{#1}{circle}{\arabic*}{\mynodefont}, leftmargin=\mynodelistmargin, start=\mynodestart}} {\setlist[customlist]{label=\protect\drawmylabel{#1}{#2}{\arabic*}{\mynodefont}, leftmargin=\mynodelistmargin, start=\mynodestart}}% \begin{customlist}[#3] }{\end{customlist}} \newlist{alphalist}{enumerate}{3} \NewDocumentEnvironment{nalistalpha}{O{blue} g O{}}{% \IfNoValueTF{#2}{\def\myType{circle}}{\def\myType{#2}} % استخدام الشرط الديناميكي للغة الحالية \ifisltr \setlist[alphalist]{label=\protect\drawmylabel{#1}{\myType}{\alph*}{\mynodefont}, leftmargin=\mynodelistmargin, start=\mynodestart, #3} \else \setlist[alphalist]{label=\protect\drawmylabel{#1}{\myType}{\abjad*}{\mynodefont}, leftmargin=\mynodelistmargin, start=\mynodestart, #3} \fi \begin{alphalist} }{\end{alphalist}} \NewDocumentEnvironment{nalistding}{O{blue} O{171}}{% \setlist[dinglistsimple]{% label=\textcolor{#1}{\mynodesize\mynodefont\protect\ding{\numexpr\value{dinglistsimplei}+#2-\mynodestart}}, leftmargin=\mynodelistmargin% }% \begin{dinglistsimple} \setcounter{dinglistsimplei}{\numexpr\mynodestart-1\relax} }{\end{dinglistsimple}} % \end{macrocode} % \iffalse % % \fi % \Finale \endinput