سلام
ماکرویی که معرفی شده برای شمارهگذاری مشکل ندارد اما در ارجاع زمانی که از دستور \SetTaskNumber
استفاده میکنید به محل درست رجوع نمیکند. اگر دستور زیر را برای نمایش شمارهی شمارندهی آن یعنی \ShowTaskNumber
را قبل از دستور \SetTaskNumber
به کار ببریم شمارهی آیتمها را به درستی نمایش میدهد:
\ExplSyntaxOn
\newcommand{\ShowTaskNumber}{
\int_use:N \g__tasks_int
}
\ExplSyntaxOff
اما مشکل ارجاعات را برطرف نمیکند برای رفع این مشکل من یک شمارندهی جدید به صورت زیر تعریف کردم:
\newcounter{madadcount}
سپس به کمک دستور
\refstepcounter
برای افزودن یک مرحله (بعد از هر استفاده) به شمارهی ارجاعات و بر چسبها در ماکروی زیر استفاده کردهام:
\newcommand{\sh}{\refstepcounter{madadcount}\themadadcount-\,}
از امکانات بستهی etoolbox
و به صورت زیر جهت صفر کردن شمارندهی آیتمهای محیط tasks
بعد از هر بار استفاده بهره بردهام:
\AtBeginEnvironment{tasks}{\setcounter{madadcount}{0}}
در نهایت فایل شما به صورت زیر است:
\documentclass[12pt]{article}
\usepackage[pagebackref=false,colorlinks,linkcolor=blue,citecolor=magenta]{hyperref}
\usepackage{xcolor}
\usepackage{tasks}
\usepackage{etoolbox}
\usepackage{ptext}
\usepackage[logo=on,
inlinemathdigits=persian,%
displaymathdigits=persian%
]{xepersian}
\settextfont[Scale=1.2]{IRZar}
\settextdigitfont[Scale=.9]{Yas}
\setmathdigitfont[Scale=.9]{PGaramond}
\settextfont{Yas}
\newcounter{madadcount}
\newcommand{\sh}{\refstepcounter{madadcount}\themadadcount-\,}
\AtBeginEnvironment{tasks}{\setcounter{madadcount}{0}}
\begin{document}
\null\vfill
\ptext[2]
\begin{tasks}[style=enumerate](2)
\task[]\sh\label{1}
مورد اول
\task[]\sh
مورد دوم
\task[]\sh\label{2}
مورد سوم
\task[]\sh\label{3}
مورد چهارم
\setcounter{madadcount}{14}
\task[]\sh
مورد پانزدهم
\task[]\sh\label{4}
مورد شانزدهم
\task[]\sh\label{5}
مورد هفدهم
\end{tasks}
بنا به مورد
(\ref{1})
میتوان بند
(\ref{2})
را اثبات کرد.... و همچنین
(\ref{3})
میتوان بند
(\ref{4})
و همچنین
(\ref{5})
داریم
\begin{tasks}[style=enumerate](2)
\task[]\sh
مورد اول
\task[]\sh
مورد دوم
\task[]\sh\label{6}
مورد سوم
\task[]\sh
مورد چهارم
\setcounter{madadcount}{114}
\task[]\sh\label{115}
مورد یکصدوپانزدهم
\end{tasks}
بنا به مورد
(\ref{6})
میتوان بند
(\ref{115})
را اثبات کرد...
\end{document}
و خروجی شما با تکلایو 2017 به صورت زیر است:
بدون شک از روشهای پیشنهادی دوستان دیگر در این زمینه استفاده خواهم کرد.
موفق باشید.
ویرایش دوم در مورد درخواستتون که در قسمت نظرات فرمودید
همانطور که در بالا خدمتتون عرض کردم شروع محیط رو برای ابتدای محیط روی یک تنظیم کردهام. اگر بخواهید آن را به صورت موضعی تغییر بدید هم سخت نیست. ماکروی \Start{<start number>}
را به صورت زیر میتوانید برای اینکار تنظیم کنید:
\newcommand{\Start}[1]{\AtBeginEnvironment{tasks}{\setcounter{madadcount}{#1}}}
و به صورت زیر برای ایجاد تغییرات در متن استفاده کنید:
\Start{5}
\begin{tasks}[style=enumerate](2)
\task[]\sh\label{1}
مورد اول
\task[] \sh
مورد دوم
\task[]\sh\label{2}
مورد سوم
\task[]\sh\label{3}
مورد چهارم
\setcounter{madadcount}{14}
\task[]\sh
مورد پانزدهم
\task[]\sh\label{4}
مورد شانزدهم
\task[]\sh\label{5}
مورد هفدهم
\end{tasks}\Start{0}
بنا به مورد
(\ref{1})
میتوان بند
(\ref{2})
را اثبات کرد.... و همچنین
(\ref{3})
میتوان بند
(\ref{4})
و همچنین
(\ref{5})
داریم
\begin{tasks}[style=enumerate](2)
\task[]\sh
مورد اول
\task[]\sh
مورد دوم
\task[]\sh\label{6}
مورد سوم
\task[]\sh
مورد چهارم
\setcounter{madadcount}{114}
\task[]\sh\label{115}
مورد یکصدوپانزدهم
\end{tasks}
بنا به مورد
(\ref{6})
میتوان بند
(\ref{115})
را اثبات کرد...
که خروجی زیر را دریافت می کنید: