دستوری به اسم \@ifpackageloaded
به صورت
\@ifpackageloaded{<name>}{<true>}{<false>}
وجود داره که برای این کار میتونین ازش استفاده کنین. کد زیر رو ببینین:
\documentclass{article}
\usepackage{ptext}
\usepackage{geometry}
\usepackage{xepersian}
\settextfont{Yas}
\makeatletter
\AtBeginDocument{\@ifpackageloaded{geometry}
{\baselineskip=3cm}%true
{\baselineskip=1.5cm}%false
}
\makeatother
\begin{document}
\ptext
\end{document}
حالا بسته geometry
رو با گذاشتن علامت %
در پشتش غیرفعال کنین تا تفاوت خروجیها رو ببینین.
توی این کد گفتیم اگه بسته geometry
توی سند فراخوانی شده، فاصله بین خطوط رو ۳ سانت و در غیر این صورت، ۱٫۵ سانت در نظر بگیر.
دلیل استفاده از دستور \AtBeginDocument
هم اینه که که دستور \@ifpackageloaded
فقط در قسمت سرآیند یا همون preamble سند میتونه استفاده بشه؛ پس از دستور \AtBeginDocument
استفاده کردیم تا این عمل شرطی رو دقیقاً بعد از دستور \begin{document}
چک کنه.
یکی دیگه از خوبیهای دستور \AtBeginDocument
اینه که بدنه اصلی سند شلوغ نشه. در واقع این دستور موقع نوشتن قالبهای پیچیده، خیلی کاربردیه.
ویرایش
اگه نیاز دارین در بدنه سند، به دفعات این عمل شرطی رو انجام بدین، میتونین از بسته ltxcmds
استفاده بکنین. کد زیر رو ببینین:
\documentclass{article}
\usepackage{ptext}
\usepackage{ltxcmds}
\usepackage{geometry}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
\makeatletter
\ltx@ifpackageloaded{geometry}{\baselineskip=3cm}{\baselineskip=1cm}
\makeatother
\ptext
\makeatletter
\ltx@ifpackageloaded{geometry}{\baselineskip=5cm}{\baselineskip=1cm}
\makeatother
\ptext
\end{document}