Compare commits

...

10 Commits

12 changed files with 109 additions and 41 deletions

BIN
Assets/Font/times.ttf Normal file

Binary file not shown.

BIN
Assets/Font/timesbd.ttf Normal file

Binary file not shown.

BIN
Assets/Font/timesbi.ttf Normal file

Binary file not shown.

BIN
Assets/Font/timesi.ttf Normal file

Binary file not shown.

View File

@ -8,10 +8,15 @@
\newcommand{\DocTitle}{عنوان اصلی و کامل برای مستندات پروژه} \newcommand{\DocTitle}{عنوان اصلی و کامل برای مستندات پروژه}
\newcommand{\DocHeaderTitle}{عنوان کوتاه مستند} \newcommand{\DocHeaderTitle}{عنوان کوتاه مستند}
\newcommand{\DocSubtitle}{توضیحات کوتاه یا زیرعنوان مستند} \newcommand{\DocSubtitle}{توضیحات کوتاه یا زیرعنوان مستند}
\newcommand{\DocVersion}{1.0.3} \newcommand{\DocVersion}{2.0.0}
\newcommand{\DocID}{\lr{[DOC-PRJ-01]}} \newcommand{\DocID}{\lr{[DOC-PRJ-01]}}
\newcommand{\DocDate}{\today} % می‌توانید تاریخ دستی بنویسید مثل: 1403/08/02 \newcommand{\DocDate}{\today} % می‌توانید تاریخ دستی بنویسید مثل: 1403/08/02
\renewcommand{\labelitemi}{$\bullet$}
\renewcommand{\labelitemii}{$\circ$}
\renewcommand{\labelitemiii}{$-$}
\renewcommand{\labelitemiv}{$\cdot$}
% ----------------------------------------------------------------- % -----------------------------------------------------------------
% ۲. وضعیت و سطح محرمانگی % ۲. وضعیت و سطح محرمانگی
% ----------------------------------------------------------------- % -----------------------------------------------------------------
@ -35,3 +40,10 @@
% ----------------------------------------------------------------- % -----------------------------------------------------------------
\ModernShapestrue % نمایش شکل‌های هندسی در گوشه صفحات (true یا false) \ModernShapestrue % نمایش شکل‌های هندسی در گوشه صفحات (true یا false)
\SeparateCovertrue % کاور در صفحه مجزا (true) یا چسبیده به متن (false) \SeparateCovertrue % کاور در صفحه مجزا (true) یا چسبیده به متن (false)
% -----------------------------------------------------------------
% ۵. تنظیمات ساختار سند (نمایش یا عدم نمایش بخش‌ها)
% -----------------------------------------------------------------
\newif\ifHasAppendices \HasAppendicestrue % true برای نمایش پیوست‌ها
\newif\ifHasGlossary \HasGlossarytrue % true برای نمایش واژه‌نامه
\newif\ifHasReferences \HasReferencestrue % true برای نمایش مراجع

View File

@ -13,6 +13,10 @@
\newcommand{\MinutesChair}{دکتر سید مسعود قریشی} \newcommand{\MinutesChair}{دکتر سید مسعود قریشی}
\newcommand{\MinutesSecretary}{مهندس علی بدیعی} \newcommand{\MinutesSecretary}{مهندس علی بدیعی}
% تخصیص رئیس و دبیر به لیست حاضرین بر اساس جنسیت
\newcommand{\MinutesExtraMen}{\MinutesChair ؛ \MinutesSecretary}
\newcommand{\MinutesExtraWomen}{-} % در صورت نیاز متغیرهای بالا را به اینجا منتقل کنید
\newcommand{\MinutesPresentMen}{فراس مراد؛ متین توکلی؛ رضا اسفندیاری؛ امیرمهدی کرمی؛ سید محمد سجادی؛ سام قربانی} \newcommand{\MinutesPresentMen}{فراس مراد؛ متین توکلی؛ رضا اسفندیاری؛ امیرمهدی کرمی؛ سید محمد سجادی؛ سام قربانی}
\newcommand{\MinutesPresentWomen}{اعظم باغستانی؛ فاطمه طاهری} % Leave empty or use '-' if no women are present \newcommand{\MinutesPresentWomen}{اعظم باغستانی؛ فاطمه طاهری} % Leave empty or use '-' if no women are present
\newcommand{\MinutesAbsentMen}{-} % Leave empty or use '-' if no men are absent \newcommand{\MinutesAbsentMen}{-} % Leave empty or use '-' if no men are absent
@ -25,7 +29,22 @@
۴. تأمین زیرساخت و رویدادها ۴. تأمین زیرساخت و رویدادها
} }
% =================================================================
% تنظیمات تیم (برای تغییر تیم، خطوط مربوطه را از کامنت خارج کنید)
% =================================================================
% --- 1. تیم باشگاه نوآوری (Club) ---
% \newcommand{\MinutesGroupTitle}{جلسه هفتگی دستیاران نوآوری \\ \textbf{تیم باشگاه نوآوری \lr{(Club)}}}
% \renewcommand{\FirstPageIcon}{\faProjectDiagram}
% --- 2. تیم فنی (T&T) ---
\newcommand{\MinutesGroupTitle}{جلسه هفتگی دستیاران نوآوری \\ \textbf{تیم فنی \lr{(T\&T)}}} \newcommand{\MinutesGroupTitle}{جلسه هفتگی دستیاران نوآوری \\ \textbf{تیم فنی \lr{(T\&T)}}}
\renewcommand{\FirstPageIcon}{\faCogs}
% --- 3. تیم تحقیق و توسعه (R&D) ---
% \newcommand{\MinutesGroupTitle}{جلسه هفتگی دستیاران نوآوری \\ \textbf{تیم تحقیق و توسعه \lr{(R\&D)}}}
% \renewcommand{\FirstPageIcon}{\faSearch}
\newcommand{\MinutesTeamLogo}{team_logo.png} \newcommand{\MinutesTeamLogo}{team_logo.png}
% --- تنظیمات ظاهری --- % --- تنظیمات ظاهری ---

View File

@ -1,4 +1,5 @@
\section*{مقدمه و هدف} \section*{مقدمه و هدف}
\phantomsection
\addcontentsline{toc}{section}{مقدمه و هدف} \addcontentsline{toc}{section}{مقدمه و هدف}
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
@ -6,13 +7,16 @@
کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد \cite{smith2023, test_persian}. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد \cite{smith2023, test_persian}.
\subsection*{پیش‌نیازهای سیستم} \subsection*{پیش‌نیازهای سیستم}
\phantomsection
\addcontentsline{toc}{subsection}{پیش‌نیازهای سیستم} \addcontentsline{toc}{subsection}{پیش‌نیازهای سیستم}
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است. این بخش برای تست طولانی‌تر شدن محتوا و نمایش زیربخش‌ها در فهرست مطالب ایجاد شده است. لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است. این بخش برای تست طولانی‌تر شدن محتوا و نمایش زیربخش‌ها در فهرست مطالب ایجاد شده است.
\section*{معماری و ساختار فنی} \section*{معماری و ساختار فنی}
\phantomsection
\addcontentsline{toc}{section}{معماری و ساختار فنی} \addcontentsline{toc}{section}{معماری و ساختار فنی}
\subsection*{ساختار کلی سیستم} \subsection*{ساختار کلی سیستم}
\phantomsection
\addcontentsline{toc}{subsection}{ساختار کلی سیستم} \addcontentsline{toc}{subsection}{ساختار کلی سیستم}
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ است. در این بخش، معماری کلی به شکل زیر تقسیم‌بندی می‌شود: لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ است. در این بخش، معماری کلی به شکل زیر تقسیم‌بندی می‌شود:
\begin{itemize} \begin{itemize}

View File

@ -1,5 +1,6 @@
\newpage \newpage
\section*{پیوست ۱: جداول نمونه (ساختار داده‌ها و تسک‌ها)} \section*{پیوست ۱: جداول نمونه (ساختار داده‌ها و تسک‌ها)}
\phantomsection
\addcontentsline{toc}{section}{پیوست ۱: جداول نمونه (ساختار داده‌ها و تسک‌ها)} \addcontentsline{toc}{section}{پیوست ۱: جداول نمونه (ساختار داده‌ها و تسک‌ها)}
جدول زیر به عنوان یک نمونه استاندارد برای نمایش اطلاعات، تسک‌ها یا ساختار داده در مستندات تیم تدوین شده است. این جدول در فهرست جداول نیز نمایش داده خواهد شد. جدول زیر به عنوان یک نمونه استاندارد برای نمایش اطلاعات، تسک‌ها یا ساختار داده در مستندات تیم تدوین شده است. این جدول در فهرست جداول نیز نمایش داده خواهد شد.
@ -45,9 +46,11 @@
\newpage \newpage
\section*{پیوست ۲: دستورالعمل‌های فنی و ابزارهای توسعه} \section*{پیوست ۲: دستورالعمل‌های فنی و ابزارهای توسعه}
\phantomsection
\addcontentsline{toc}{section}{پیوست ۲: دستورالعمل‌های فنی و ابزارهای توسعه} \addcontentsline{toc}{section}{پیوست ۲: دستورالعمل‌های فنی و ابزارهای توسعه}
\subsection*{نمونه درج بلوک کد \lr{(Code Snippet)}} \subsection*{نمونه درج بلوک کد \lr{(Code Snippet)}}
\phantomsection
\addcontentsline{toc}{subsection}{نمونه درج بلوک کد \lr{(Code Snippet)}} \addcontentsline{toc}{subsection}{نمونه درج بلوک کد \lr{(Code Snippet)}}
برای قرار دادن کدهای برنامه‌نویسی (مانند متدهای بک‌آند یا استایل‌های فرانت‌آند)، اعضای تیم باید از ساختار زیر استفاده کنند. توجه شود که توضیحات داخل کد حتماً به زبان انگلیسی نوشته شود تا ساختار چپ‌به‌راست کد خراب نشود. برای قرار دادن کدهای برنامه‌نویسی (مانند متدهای بک‌آند یا استایل‌های فرانت‌آند)، اعضای تیم باید از ساختار زیر استفاده کنند. توجه شود که توضیحات داخل کد حتماً به زبان انگلیسی نوشته شود تا ساختار چپ‌به‌راست کد خراب نشود.
@ -68,6 +71,7 @@ def check_user_permission(user_id, role):
\end{LTR} \end{LTR}
\subsection*{نمونه درج تصویر و نمودارهای سیستم} \subsection*{نمونه درج تصویر و نمودارهای سیستم}
\phantomsection
\addcontentsline{toc}{subsection}{نمونه درج تصویر و نمودارهای سیستم} \addcontentsline{toc}{subsection}{نمونه درج تصویر و نمودارهای سیستم}
شما می‌توانید معماری سیستم، خروجی تسک‌ها یا نمودارهای پایگاه داده را با ساختار استاندارد زیر اضافه کنید. برای اینکه تصویر در جای دقیق خود قرار گیرد، از پارامتر \lr{[h!]} استفاده شده است. شما می‌توانید معماری سیستم، خروجی تسک‌ها یا نمودارهای پایگاه داده را با ساختار استاندارد زیر اضافه کنید. برای اینکه تصویر در جای دقیق خود قرار گیرد، از پارامتر \lr{[h!]} استفاده شده است.

View File

@ -1,5 +1,6 @@
\clearpage % این دستور باعث می‌شود اگر عکس‌ها جا مانده‌اند، حتماً قبل از ایجاد صفحه جدید چاپ شوند. \clearpage % این دستور باعث می‌شود اگر عکس‌ها جا مانده‌اند، حتماً قبل از ایجاد صفحه جدید چاپ شوند.
\section*{واژه‌نامه تخصصی} \section*{واژه‌نامه تخصصی}
\phantomsection
\addcontentsline{toc}{section}{واژه‌نامه تخصصی} \addcontentsline{toc}{section}{واژه‌نامه تخصصی}
در این بخش کلمات کلیدی فنی و اختصارات به کار رفته در متن گزارش برای درک بهتر ثبت می‌شوند: در این بخش کلمات کلیدی فنی و اختصارات به کار رفته در متن گزارش برای درک بهتر ثبت می‌شوند:

View File

@ -67,28 +67,31 @@
} }
\ExplSyntaxOff \ExplSyntaxOff
\newcommand{\PrintGroup}[4]{% \newcommand{\PrintGroup}[5]{%
\def\emptyval{} \def\dashval{-} \def\emptyval{} \def\dashval{-}
\hasmenfalse \haswomenfalse \hasmenfalse \haswomenfalse
\expandafter\def\expandafter\menlist\expandafter{#3} \expandafter\def\expandafter\menlist\expandafter{#4}
\ifx\menlist\emptyval\else\ifx\menlist\dashval\else\hasmentrue\fi\fi \ifx\menlist\emptyval\else\ifx\menlist\dashval\else\hasmentrue\fi\fi
\expandafter\def\expandafter\womenlist\expandafter{#4} \expandafter\def\expandafter\extramen\expandafter{#2}
\ifx\extramen\emptyval\else\ifx\extramen\dashval\else\hasmentrue\fi\fi
\expandafter\def\expandafter\womenlist\expandafter{#5}
\ifx\womenlist\emptyval\else\ifx\womenlist\dashval\else\haswomentrue\fi\fi \ifx\womenlist\emptyval\else\ifx\womenlist\dashval\else\haswomentrue\fi\fi
\expandafter\def\expandafter\extralist\expandafter{#2} \expandafter\def\expandafter\extrawomen\expandafter{#3}
\ifx\extralist\emptyval\else\hasmentrue\fi \ifx\extrawomen\emptyval\else\ifx\extrawomen\dashval\else\haswomentrue\fi\fi
\ifhasmen \ifhasmen
\ifhaswomen \ifhaswomen
\textbf{#1}\par\vspace{0.1cm} \textbf{#1}\par\vspace{0.1cm}
\textbf{آقایان / دکتر / مهندس:} \SortAndCleanList{#2}{#3} \par\vspace{0.1cm} \textbf{آقایان / دکتر / مهندس:} \SortAndCleanList{#2}{#4} \par\vspace{0.1cm}
\textbf{خانم‌ها / دکتر / مهندس:} \SortAndCleanList{}{#4} \textbf{خانم‌ها / دکتر / مهندس:} \SortAndCleanList{#3}{#5}
\else \else
\textbf{#1 آقایان / دکتر / مهندس:} \SortAndCleanList{#2}{#3} \textbf{#1 آقایان / دکتر / مهندس:} \SortAndCleanList{#2}{#4}
\fi \fi
\else \else
\ifhaswomen \ifhaswomen
\textbf{#1 خانم‌ها / دکتر / مهندس:} \SortAndCleanList{#2}{#4} \textbf{#1 خانم‌ها / دکتر / مهندس:} \SortAndCleanList{#3}{#5}
\else \else
\textbf{#1} - \textbf{#1} -
\fi \fi
@ -134,8 +137,8 @@
\noindent\makebox[\linewidth]{% \noindent\makebox[\linewidth]{%
\begin{minipage}{\dimexpr \linewidth - 0.8cm \relax} \begin{minipage}{\dimexpr \linewidth - 0.8cm \relax}
\vspace{0.2cm} \vspace{0.2cm}
\PrintGroup{حاضرین:}{\MinutesChair ؛ \MinutesSecretary}{\MinutesPresentMen}{\MinutesPresentWomen} \par\vspace{0.2cm} \PrintGroup{حاضرین:}{\MinutesExtraMen}{\MinutesExtraWomen}{\MinutesPresentMen}{\MinutesPresentWomen} \par\vspace{0.2cm}
\PrintGroup{غائبین:}{}{\MinutesAbsentMen}{\MinutesAbsentWomen} \PrintGroup{غائبین:}{-}{-}{\MinutesAbsentMen}{\MinutesAbsentWomen}
\vspace{0.2cm} \vspace{0.2cm}
\end{minipage}% \end{minipage}%
}\par }\par

View File

@ -54,8 +54,8 @@
% --- Main Text Font --- % --- Main Text Font ---
\settextfont[Path=Assets/Font/, Extension=.ttf, BoldFont=BNazanin-Bold]{BNazanin} \settextfont[Path=Assets/Font/, Extension=.ttf, BoldFont=BNazanin-Bold]{BNazanin}
% --- Fix English Text --- % --- Fix English Text (Local Font Bypass) ---
\setlatintextfont{Times New Roman} % You can also use Arial or Calibri \setlatintextfont[Path=Assets/Font/, Extension=.ttf, BoldFont=timesbd, ItalicFont=timesi, BoldItalicFont=timesbi]{times}
% --- Custom Font Definitions --- % --- Custom Font Definitions ---
\defpersianfont\vazirfont[Path=Assets/Font/, Extension=.ttf, BoldFont=Vazirmatn-Bold]{Vazirmatn-Regular} \defpersianfont\vazirfont[Path=Assets/Font/, Extension=.ttf, BoldFont=Vazirmatn-Bold]{Vazirmatn-Regular}
@ -129,12 +129,14 @@
% ========================================== % ==========================================
% 6. Page Geometry, Shapes, and Headers % 6. Page Geometry, Shapes, and Headers
% ========================================== % ==========================================
\newcommand{\FirstPageIcon}{\faCogs} % Default icon for main documents
\newcommand{\OddPageShapesA}{% \newcommand{\OddPageShapesA}{%
\begin{tikzpicture}[remember picture, overlay] \begin{tikzpicture}[remember picture, overlay]
\fill[primary!10] (current page.north east) rectangle ++(-0.2, -\paperheight); \fill[primary!10] (current page.north east) rectangle ++(-0.2, -\paperheight);
\fill[primary] (current page.north east) -- ++(0, -4.5) -- ++(-3.5, 4.5) -- cycle; \fill[primary] (current page.north east) -- ++(0, -4.5) -- ++(-3.5, 4.5) -- cycle;
\fill[accentYellow] (current page.north east) ++(0, -4.5) -- ++(0, -0.4) -- ++(-3.81, 4.9) -- ++(0.4, 0) -- cycle; \fill[accentYellow] (current page.north east) ++(0, -4.5) -- ++(0, -0.4) -- ++(-3.81, 4.9) -- ++(0.4, 0) -- cycle;
\path (current page.north east) ++(-1.0, -1.5) node {\textcolor{primary!10}{\lr{\Large \faCogs}}}; \path (current page.north east) ++(-1.0, -1.5) node {\textcolor{primary!10}{\lr{\Large \FirstPageIcon}}};
\end{tikzpicture}% \end{tikzpicture}%
} }
@ -188,21 +190,16 @@
% Using \AtBeginDocument ensures these headers can read variables (like \DocVersion) defined in main.tex % Using \AtBeginDocument ensures these headers can read variables (like \DocVersion) defined in main.tex
\AtBeginDocument{ \AtBeginDocument{
\fancyhead[LO]{% % Clear all default headers to prevent ghosting
\hspace{1.8cm}% \fancyhead[LO]{}
\llap{\smash{\raisebox{-0.75cm}{\includegraphics[height=1.2cm]{logo.png}}}\hspace{0.3cm}} \fancyhead[RE]{}
\textcolor{primary}{\nazaninfont\textbf{\DocHeaderTitle}} \fancyhead[RO]{}
} \fancyhead[LE]{}
\fancyhead[RE]{%
\textcolor{primary}{\nazaninfont\textbf{\DocHeaderTitle}}
\rlap{\hspace{0.3cm}\smash{\raisebox{-0.75cm}{\includegraphics[height=1.2cm]{logo.png}}}}
\hspace{1.8cm}%
}
\fancyhead[RO]{\textcolor{gray}{نسخه \lr{\DocVersion}}}
\fancyhead[LE]{\textcolor{gray}{نسخه \lr{\DocVersion}}}
\fancyfoot[C]{\textcolor{gray}{صفحه \thepage}} \fancyfoot[C]{\textcolor{gray}{صفحه \thepage}}
\fancyhead[C]{% \fancyhead[C]{%
% 1. Draw the Background Shapes
\ifModernShapes \ifModernShapes
\pgfmathtruncatemacro{\pagecycle}{mod(int((\value{page}-1)/2), 2)} \pgfmathtruncatemacro{\pagecycle}{mod(int((\value{page}-1)/2), 2)}
\ifnum\pagecycle=0 \ifnum\pagecycle=0
@ -211,6 +208,25 @@
\ifodd\value{page} \OddPageShapesB \else \EvenPageShapesB \fi \ifodd\value{page} \OddPageShapesB \else \EvenPageShapesB \fi
\fi \fi
\fi \fi
% 2. Draw the Text and Logo securely tied to the physical margins
\ifodd\value{page}%
% ODD PAGE: Shapes are on the RIGHT. Gap is on the RIGHT (1.8cm).
\makebox[\headwidth][s]{%
{\makebox[1.8cm][c]{\smash{\raisebox{-0.75cm}{\includegraphics[height=1.2cm]{logo.png}}}}%
\textcolor{primary}{\nazaninfont\textbf{\DocHeaderTitle}}}%
\hfill
{\textcolor{gray}{نسخه \lr{\DocVersion}}}%
}%
\else
% EVEN PAGE: Shapes are on the LEFT. Gap is on the LEFT (1.8cm).
\makebox[\headwidth][s]{%
{\textcolor{gray}{نسخه \lr{\DocVersion}}}%
\hfill
{\textcolor{primary}{\nazaninfont\textbf{\DocHeaderTitle}}%
\makebox[1.8cm][c]{\smash{\raisebox{-0.75cm}{\includegraphics[height=1.2cm]{logo.png}}}}}%
}%
\fi
} }
} }

View File

@ -101,24 +101,33 @@
% فراخوانی فایل‌های محتوای پروژه % فراخوانی فایل‌های محتوای پروژه
% ========================================== % ==========================================
\input{Content/01_project_content.tex} % متن اصلی \input{Content/01_project_content.tex} % متن اصلی
\input{Content/02_appendices.tex} % پیوست‌ها
\input{Content/03_glossary.tex} % واژه‌نامه تخصصی \ifHasAppendices
\input{Content/02_appendices.tex} % پیوست‌ها
\fi
\ifHasGlossary
\input{Content/03_glossary.tex} % واژه‌نامه تخصصی
\fi
% --- بخش مراجع خودکار --- % --- بخش مراجع خودکار ---
\newpage
\phantomsection
\addcontentsline{toc}{section}{مراجع و منابع}
\nocite{*} \ifHasReferences
\newpage
\phantomsection
\addcontentsline{toc}{section}{مراجع و منابع}
% چاپ منابع فارسی (راست‌چین) \nocite{*}
\printbibliography[keyword=persian, title={منابع فارسی}]
\vspace{1cm}
% چاپ منابع انگلیسی (چپ‌چین) % چاپ منابع فارسی (راست‌چین)
\begin{latin} \printbibliography[keyword=persian, title={منابع فارسی}]
\printbibliography[keyword=english, title={\lr{English References}}, resetnumbers=true] \vspace{1cm}
\end{latin}
% چاپ منابع انگلیسی (چپ‌چین)
\begin{latin}
\printbibliography[keyword=english, title={\lr{English References}}, resetnumbers=true]
\end{latin}
\fi
\clearpage \clearpage