باسلام
جمع شدن نکته یک و دو برای کاربران دیگر می تواند مفید باشد. من خودم تاکنون به این نکات رسیدم:
۱. بسته xepersian حتما حتما باید آخرین بسته ای باشد که فراخوانی می شود.
۲. بسته hyperref جزو آخرین بسته هایی باید باشد که فراخوانی می شود، البته قبل از xepersian
۳. بسته glossaries (برای وارد کردن واژهنامه) حتما باید بعد از hyperref فراخوانی شود.
۴. بسته listings (برای وارد کردن کد در متن) باید حتما قبل از hyperref فراخوانی شود.
در مورد بسته های مورد نیاز و توضیح ان ها بسته های مورد نیاز من معمولا به صورت زیر است:
%%% تمام بسته های مورد نیاز برای کارهای ریاضیاتی به صورت کامل اینجا آورده شده است در صورتی که بخواهید از بسته های دیگر استفاده کنید بهتر است که آنها را به گونه ای انتخاب کنید که با این بسته ها تداخل نداشته باشد. به نظر من استفاده از همین بسته ها کافی است.
%%% amsthm: It introduces the proof environment and the \theoremstyle command.
%%% amssymb: It adds new symbols in to be used in math mode.
%%% amsmath: It contains the advanced math extensions for LaTeX. The complete documentation should be in your LaTeX distribution; the file is called amsdoc, and can be dvi or pdf.
\usepackage{amsthm,amssymb,amsmath}
%\usepackage{thmtools}
%\usepackage{dsfont}
% بستههای برای یک سری نمادهای خاص
%\usepackage{wasysym}
%\usepackage{marvosym}
%%% بستهای برای فعالسازی پارامتر H در وارد کردن شکل. این پارامتر شکل را در همانجایی که دقیقا فراخوانی کردهایم، وارد میکند.
\usepackage{float}
%%% برای تنظیم حاشیه صفحات
\usepackage{geometry}
%%% بسته ای برای تنظیمات مربوط به محیطهای enumerate و itemize
\usepackage{enumitem}
% بسته ای برای تنظیم فونت، اندازه و نحوه نمایش caption
\usepackage{caption}
\usepackage{subcaption}
%%% بستهای برای تنظیم حاشیه و کادر دور فرمول و ...
\usepackage{empheq,fancybox}
%%% برای رنگی کردن متن و استفاده از رنگ در متن این دو بسته مورد نیاز است.
\usepackage[usenames,dvipsnames]{color,xcolor}
%%% بسته ای برای وارد کردن Watermarking
\usepackage{draftwatermark}
%%% It extends the possibility of LaTeX to handle tables, fixing some bugs and adding new features. Using it, you can create very complicated and customized tables. For more information, see the Tables section.
\usepackage{array}
%%% بسته ای برای استفاده از اشکال برای آیتمها
\usepackage{pifont}
%%% بسته ای برای این که در جدول یک متن را در چند سطر بیاوریم.
\usepackage{multirow}
%%% بستهای برای رسم اشکال و تصاویر با Latex
\usepackage{tikz}
%% Line spacing
%%To change line spacing in the whole document use the command \linespread covered in Text Formatting.
% %To change line spacing in specific environments use setspace
\usepackage{setspace}
%%% بسته ای برای وارد کردن الگوریتم در متن
%\usepackage{algorithm}
%\usepackage{algorithmicx}
%\usepackage{algpseudocode}
%%% در این قالب از بسته graphx برای انجام کارهای گرافیکی استفاده میشود. این بسته برای اضافه کردن تصویرها به متن استفاده شده است.
\usepackage{graphicx}
%%% بستهای است که توسط آن میتوان شماره صفحه و آخرین صفحه را استخراج نمود.
%\usepackage{lastpage}
%%% بستهای برای قرار گرفتن caption در کنار تصویر در سمت راست تصویر
%\usepackage{sidecap}
%%% بستهای برای وارد کردن صفحات pdf در متن
\usepackage{pdfpages}
%% برای ترسیم گانت چارت در گزارش و پیشنهاد پروژه
%\usepackage{pgfgantt}
%%% بستهای برای قراردادن متن در کنار عکس.
%\usepackage{wrapfig}
%%% بسته ای برای وارد کردن کدهای برنامه نویسی (MATLAB، JAVA و ...) در متن. بسته listings باید قبل از hyperref باشد و گرنه با خطا مواجه خواهیم شد. برای مطالب بیشتر در مورد نحوه کارکرد این بسته سایت زیر را مشاهده کنید.
%%% http://www.parsilatex.com/mediawiki/index.php?title=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_%D9%88%D8%A7%D8%B1%D8%AF_%DA%A9%D8%B1%D8%AF%D9%86_%DA%A9%D8%AF_%D8%AF%D8%B1_%D9%85%D8%AA%D9%86
\usepackage{listings}
\usepackage{makeidx}
\makeindex
%%% بستهای برای اینکه در هر صفحه شماره پاورقی دوباره از یک شروع شود.
%\usepackage{perpage}
%%% بسته ای برای رنگی کردن لینک ها و فعال سازی لینک ها در یک نوشتار، بسته hyperref باید جزو آخرین بستههایی باشد که فراخوانی میشود.
\usepackage{hyperref}
%%% بستهای برای وارد کردن واژه نامه در متن، این بسته باید بعد از hyperref حتما صدا زده شود.
\usepackage[xindy,acronym,nonumberlist=true]{glossaries}
%%%زیپرشین (به انگلیسی: XePersian) یک بسته حروفچینی رایگان و متنباز برای نگارش مستندات پارسی/انگلیسی با زیلاتک است.
%%% در واقع، زیپرشین، کمک میکند تا به آسانی، مستندات را به پارسی، حروفچینی کرد. این بسته را وفا خلیقی نوشته است،
%%% و به طور منظم، آن را بروزرسانی کرده و باگهای آن را رفع میکند.
%%% نکته مهم این جا است که بسته Xepersian برای پشتیبانی از زبان فارسی آورده شده است، و
%%% می بایست آخرین بسته ای باشد که شما وارد می کنید، دقت کنید: آخرین بسته
\usepackage[extrafootnotefeatures]{xepersian}