دستوری به اسم \@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}