با سلام و احترام
و ضمن تشکر از جناب دکتر خان میرزا که کد زیر را به بنده دادند.
این کد با تعریف دستورهایی تحت عنوان \darj
و \invazh
عملات فوق الذکر را به راحتی انجام میدهد.
لازم به ذکر است که تا 6 مشتق را میتوان به آن اضافه نمود.
\renewcommand*{\glsdisplayfirst}[4]{\takid{#1#4}}
\renewcommand*{\glsdisplay}[4]{\takidi{#1#4}}
\newglossary[glg]{english}{gls}{glo}{واژهنامه انگلیسی به فارسی}
\newglossary[blg]{persian}{bls}{blo}{واژهنامه فارسی به انگلیسی}
%دستور وارد کردن یک لغت به واژه نامه
%\newcommand{\invazh}[4]{
% \newglossaryentry{فا-#1}{type=persian,name={#2}, sort={#2},description={\lr{#3}},plural={#4}}
% \newglossaryentry{لا-#1}{type=english,name={\lr{#3}}, sort={#3},description={#2}}
%}
\NewDocumentCommand \invazh {m m m m g g g} {
\IfNoValueTF{#7}
{\IfNoValueTF{#6}
{\IfNoValueTF{#5}
{\newglossaryentry{la-#1}{type=persian,name={#2}, sort={#2},description={\rl{#3}},plural={#4},user6={#3}}
\newglossaryentry{fa-#1}{type=english,name={\rl{#3}}, sort={#3},description={#2},plural={#4},user6={#3}}
}
{\newglossaryentry{la-#1}{type=persian,name={#2}, sort={#2},description={\rl{#3}},plural={#4},user1={#5},user6={#3}}
\newglossaryentry{fa-#1}{type=english,name={\rl{#3}}, sort={#3},description={#2},plural={#4},user1={#5},user6={#3}}
}
}
{\newglossaryentry{la-#1}{type=persian,name={#2}, sort={#2},description={\rl{#3}},plural={#4},user1={#5},user2={#6},user6={#3}}
\newglossaryentry{fa-#1}{type=english,name={\rl{#3}}, sort={#3},description={#2},plural={#4},user1={#5},user2={#6},user6={#3}}
}
}
{\newglossaryentry{la-#1}{type=persian,name={#2}, sort={#2}, description={\rl{#3}}, plural={#4}, user1={#5}, user2={#6}, user3={#7}, user6={#3}}
\newglossaryentry{fa-#1}{type=english,name={\rl{#3}}, sort={#3},description={#2},plural={#4},user1={#5},user2={#6},user3={#7},user6={#3}}
}
}
% توسط این دستور واژه مورد نظر در واژه نامه، در بار اول به صورت زیر نویس و در بارهای بعد بدون زیر نویس میآید.
\NewDocumentCommand \darj {o m m g} {\IfNoValueTF{#4}
{\IfNoValueTF{#1}
{\ifglsused{#2-#3}{\gls{#2-#3}}{\gls{#2-#3}\ifstrequal{#2}{la}{\footnote{\rl{\glsuservi{#2-#3}}}\glsadd{fa-#3}\glsunset{fa-#3}}{\LTRfootnote{\glsdesc{#2-#3}}\glsadd{la-#3}\glsunset{la-#3}}}}
{}}
{\IfNoValueTF{#1}
{\ifglsused{#2-#3}{\gls{#2-#3}[#4]}{\gls{#2-#3}[#4]\ifstrequal{#2}{la}{\footnote{\rl{\glsuservi{#2-#3}}}\glsadd{fa-#3}\glsunset{fa-#3}}{\LTRfootnote{\glsdesc{#2-#3}}\glsadd{la-#3}\glsunset{la-#3}}}}
{}}}
\NewDocumentCommand \darji {m m g} {\IfNoValueTF{#3}
{\ifglsused{#1-#2}{\takidi{\glsuseri{#1-#2}}}{\takidi{\glsuseri{#1-#2}}\ifstrequal{#1}{la}{\footnote{\rl{\glsuservi{#1-#2}}}\glsadd{fa-#2}\glsunset{fa-#2}}{\footnote{\glsdesc{#1-#2}}\glsadd{la-#2}\glsunset{la-#2}}}}
{\ifglsused{#1-#2}{\takidi{\glsuseri{#1-#2}[#3]}}{\takidi{\glsuseri{#1-#2}[#3]}\ifstrequal{#1}{la}{\footnote{\rl{\glsuservi{#1-#2}}}\glsadd{fa-#2}\glsunset{fa-#2}}{\footnote{\glsdesc{#1-#2}}\glsadd{la-#2}\glsunset{la-#2}}}}}
\NewDocumentCommand \darjii {m m g} {\IfNoValueTF{#3}
{\ifglsused{#1-#2}{\takidi{\glsuserii{#1-#2}}}{\takidi{\glsuserii{#1-#2}}\ifstrequal{#1}{la}{\footnote{\rl{\glsuservi{#1-#2}}}\glsadd{fa-#2}\glsunset{fa-#2}}{\footnote{\glsdesc{#1-#2}}\glsadd{la-#2}\glsunset{la-#2}}}}
{\ifglsused{#1-#2}{\takidi{\glsuserii{#1-#2}[#3]}}{\takidi{\glsuserii{#1-#2}[#3]}\ifstrequal{#1}{la}{\footnote{\rl{\glsuservi{#1-#2}}}\glsadd{fa-#2}\glsunset{fa-#2}}{\footnote{\glsdesc{#1-#2}}\glsadd{la-#2}\glsunset{la-#2}}}}}
\NewDocumentCommand \darjiii {m m g} {\IfNoValueTF{#3}
{\ifglsused{#1-#2}{\takidi{\glsuseriii{#1-#2}}}{\takidi{\glsuseriii{#1-#2}}\ifstrequal{#1}{la}{\footnote{\rl{\glsuservi{#1-#2}}}\glsadd{fa-#2}\glsunset{fa-#2}}{\footnote{\glsdesc{#1-#2}}\glsadd{la-#2}\glsunset{la-#2}}}}
{\ifglsused{#1-#2}{\takidi{\glsuseriii{#1-#2}[#3]}}{\takidi{\glsuseriii{#1-#2}[#3]}\ifstrequal{#1}{la}{\footnote{\rl{\glsuservi{#1-#2}}}\glsadd{fa-#2}\glsunset{fa-#2}}{\footnote{\glsdesc{#1-#2}}\glsadd{la-#2}\glsunset{la-#2}}}}}
\NewDocumentCommand \darjj {m m g} {\IfNoValueTF{#3}
{\ifglsused{#1-#2}{\glspl{#1-#2}}{\glspl{#1-#2}\ifstrequal{#1}{la}{\footnote{\rl{\glsuservi{#1-#2}}}\glsadd{fa-#2}\glsunset{fa-#2}}{\footnote{\glsdesc{#1-#2}}\glsadd{la-#2}}}}
{\ifglsused{#1-#2}{\glspl{#1-#2}[#3]}{\glspl{#1-#2}[#3]\ifstrequal{#1}{la}{\footnote{\rl{\glsuservi{#1-#2}}}\glsadd{fa-#2}\glsunset{fa-#2}}{\footnote{\glsdesc{#1-#2}}\glsadd{la-#2}}}}}
\NewDocumentCommand \darjen {m m}{\ifstrequal{#1}{la}{\glsentryname{#1-#2}}{\glsentryname{fa-#2}}}
\NewDocumentCommand \darjien {m m}{\ifstrequal{#1}{la}{\glsentryuseri{#1-#2}}{\glsentryuseri{fa-#2}}}
\NewDocumentCommand \darjiien {m m}{\ifstrequal{#1}{la}{\glsentryuserii{#1-#2}}{\glsentryuserii{fa-#2}}}
\NewDocumentCommand \darjiiien {m m}{\ifstrequal{#1}{la}{\glsentryuseriii{#1-#2}}{\glsentryuseriii{fa-#2}}}
\NewDocumentCommand \darjjen {m m}{\ifstrequal{#1}{la}{\glsentryplural{#1-#2}}{\glsentryplural{fa-#2}}}
\makeglossaries
توسط دستور \darj{fa}{Label}
میتوان نام لاتین واژه را وارد نمود.
توسط دستور \darj{la}{Labe}
میتوان نام فارسی واژه را وارد نمود.
در حقیقت آرگومان اول بیان میکند که فوت نوت فارسی باشد یا انگلیسی
ضمنا اگر چند مشتق دیگر نیز استفاده شده باشد، توسط دستورات \darji
و \darjii
و... میتوان آنها را نیز وارد نمود.
با توجه به محدودیت حجم کد نتوانستم یک کد کمینه قابل اجرا قرار دهم اما دستورات مربوط به تعریف را گذاشتم اما در قسمت پیوست متن اصلی سوال، فایل کمینه را ذخیره کردم