Xepersian 中的词汇表和缩写显示问题(显示为空白页)

Xepersian 中的词汇表和缩写显示问题(显示为空白页)

我对用 xepersian 制作词汇表有两个问题。

下面的代码实际上存在 2 个问题。

  1. 我的输出中不显示词汇表和缩写部分。在输出中,我只得到 2 个单独的空白页。我该如何解决这个问题?

  2. 为什么有些指数以英文显示,而有些则以波斯语显示?实际上,我们如何才能解决这个问题,使所有指数都以波斯语显示并从右到左显示?(我用过,\RTLfootnote但它显示所有指数都为英文)

提前感谢您提供的任何帮助:)

这是我的代码:

\documentclass{report}

%%% وارد کردن بسته‌های مورد نیاز
% بسته ای برای رنگی کردن لینک ها و فعال سازی لینک ها در یک نوشتار، بسته hyperref باید جزو آخرین بسته‌هایی باشد که فراخوانی می‌شود. 
\usepackage{hyperref}

% بسته‌ای برای وارد کردن واژه نامه در متن، این بسته باید بعد از hyperref حتما صدا زده شود. 
\usepackage[xindy,acronym,nonumberlist=true]{glossaries}

% در مورد تقدم و تاخر وارد کردن بسته ها تنها باید به چند نکته دقت کرد:
% الف) بسته xepersian حتما حتما باید آخرین بسته ای باشد که فراخوانی می شود
% ب) بسته hyperref جزو آخرین بسته هایی باید باشد که فراخوانی می شود.
% ج) بسته glossaries حتما باید بعد از hyperref فراخوانی شود. 
\usepackage{xepersian}

\settextfont{XB Niloofar}

%%%%%% ============================================================================================================

%%% تنظیمات مربوط به بسته  glossaries
%%% تعریف استایل برای واژه نامه فارسی به انگلیسی، در این استایل واژه‌های فارسی در سمت راست و واژه‌های انگلیسی در سمت چپ خواهند آمد. از حالت گروه ‌بندی استفاده می‌کنیم، 
%%% یعنی واژه‌ها در گروه‌هایی به ترتیب حروف الفبا مرتب می‌شوند، مثلا:
%%% الف
%%% افتصاد ................................... Economy
%%% اشکال ........................................ Failure
%%% ش
%%% شبکه ...................................... Network
\newglossarystyle{myFaToEn}{%
    \renewenvironment{theglossary}{}{}
    \renewcommand*{\glsgroupskip}{\vskip 10mm}
    \renewcommand*{\glsgroupheading}[1]{\subsection*{\glsgetgrouptitle{##1}}}
    \renewcommand*{\glossentry}[2]{\noindent\glsentryname{##1}\dotfill\space \glsentrytext{##1}

    }
}

%% % تعریف استایل برای واژه نامه انگلیسی به فارسی، در این استایل واژه‌های فارسی در سمت راست و واژه‌های انگلیسی در سمت چپ خواهند آمد. از حالت گروه ‌بندی استفاده می‌کنیم، 
%% % یعنی واژه‌ها در گروه‌هایی به ترتیب حروف الفبا مرتب می‌شوند، مثلا:
%% % E
%%% Economy ............................... اقتصاد
%% % F
%% % Failure................................... اشکال
%% %N
%% % Network ................................. شبکه

\newglossarystyle{myEntoFa}{%
    %%% این دستور در حقیقت عملیات گروه‌بندی را انجام می‌دهد. بدین صورت که واژه‌ها در بخش‌های جداگانه گروه‌بندی می‌شوند، 
    %%% عنوان بخش همان نام حرفی است که هر واژه در آن گروه با آن شروع شده است. 
    \renewenvironment{theglossary}{}{}
    \renewcommand*{\glsgroupskip}{\vskip 10mm}
    \renewcommand*{\glsgroupheading}[1]{\begin{LTR} \subsection*{\glsgetgrouptitle{##1}} \end{LTR}}
    %%% در این دستور نحوه نمایش واژه‌ها می‌آید. در این جا واژه فارسی در سمت راست و واژه انگلیسی در سمت چپ قرار داده شده است، و بین آن با نقطه پر می‌شود. 
    \renewcommand*{\glossentry}[2]{\noindent\glsentrytext{##1}\dotfill\space \glsentryname{##1}

    }
}

%%% تعیین استایل برای فهرست اختصارات
\newglossarystyle{myAbbrlist}{%
    %%% این دستور در حقیقت عملیات گروه‌بندی را انجام می‌دهد. بدین صورت که اختصارات‌ در بخش‌های جداگانه گروه‌بندی می‌شوند، 
    %%% عنوان بخش همان نام حرفی است که هر اختصار در آن گروه با آن شروع شده است. 
    \renewenvironment{theglossary}{}{}
    \renewcommand*{\glsgroupskip}{\vskip 10mm}
    \renewcommand*{\glsgroupheading}[1]{\begin{LTR} \subsection*{\glsgetgrouptitle{##1}} \end{LTR}}
    %%% در این دستور نحوه نمایش اختصارات می‌آید. در این جا حالت کوچک اختصار در سمت چپ و حالت بزرگ در سمت راست قرار داده شده است، و بین آن با نقطه پر می‌شود. 
    \renewcommand*{\glossentry}[2]{\noindent\glsentrytext{##1}\dotfill\space \Glsentrylong{##1}

    }
    %%% تغییر نام محیط abbreviation به فهرست اختصارات
    \renewcommand*{\acronymname}{\rl{فهرست اختصارات}}
}

%%% برای اجرا xindy بر روی فایل .tex و تولید واژه‌نامه‌ها و فهرست اختصارات و فهرست نمادها یکسری  فایل تعریف شده است.‌ Latex داده های مربوط به واژه نامه و .. را در این 
%%%  فایل‌ها نگهداری می‌کند. مهم‌ترین option‌ این قسمت این است که 
%%% عنوان واژه‌نامه‌ها و یا فهرست اختصارات و یا فهرست نمادها را می‌توانید در این‌جا مشخص کنید. 
%%% در این جا عباراتی مثل glg، gls، glo و ... پسوند فایل‌هایی است که برای xindy بکار می‌روند. 
\newglossary[glg]{english}{gls}{glo}{واژه‌نامه انگلیسی به فارسی}
\newglossary[blg]{persian}{bls}{blo}{واژه‌نامه فارسی به انگلیسی}
\makeglossaries
\glsdisablehyper
%%% تعاریف مربوط به تولید واژه نامه و فهرست اختصارات و فهرست نمادها
%%%  در این فایل یکسری دستورات عمومی برای وارد کردن واژه‌نامه آمده است.
%%%  به دلیل این‌که قرار است این دستورات پایه‌ای را بازنویسی کنیم در این‌جا تعریف می‌کنیم. 
\let\oldgls\gls
\let\oldglspl\glspl

\makeatletter

\renewrobustcmd*{\gls}{\@ifstar\@msgls\@mgls}
\newcommand*{\@mgls}[1] {\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\oldgls{#1}\glsuseri{f-#1}}{\lr{\oldgls{#1}}}}
\newcommand*{\@msgls}[1]{\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\glstext{#1}\glsuseri{f-#1}}{\lr{\glsentryname{#1}}}}

\renewrobustcmd*{\glspl}{\@ifstar\@msglspl\@mglspl}
\newcommand*{\@mglspl}[1] {\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\oldglspl{#1}\glsuseri{f-#1}}{\oldglspl{#1}}}
\newcommand*{\@msglspl}[1]{\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\glsplural{#1}\glsuseri{f-#1}}{\glsentryplural{#1}}}

\makeatother

\newcommand{\newword}[4]{
    \newglossaryentry{#1}     {type={english},name={\lr{#2}},plural={#4},text={#3},description={}}
    \newglossaryentry{f-#1} {type={persian},name={#3},text={\lr{#2}},description={}}
}

%%% بر طبق این دستور، در اولین باری که واژه مورد نظر از واژه‌نامه وارد شود، پاورقی زده می‌شود. 
\defglsentryfmt[english]{\glsgenentryfmt\ifglsused{\glslabel}{}{\LTRfootnote{\glsentryname{\glslabel}}}}

%%% بر طبق این دستور، در اولین باری که واژه مورد نظر از فهرست اختصارات وارد شود، پاورقی زده می‌شود. 
\defglsentryfmt[acronym]{\glsentryname{\glslabel}\ifglsused{\glslabel}{}{\LTRfootnote{\glsentrydesc{\glslabel}}}}


%%%%%% ============================================================================================================

%%============================ دستور برای قرار دادن فهرست اختصارات 
\newcommand{\printabbreviation}{
    \cleardoublepage
    \phantomsection
    \baselineskip=.75cm
    %% با این دستور عنوان فهرست اختصارات به فهرست مطالب اضافه می‌شود. 
    \addcontentsline{toc}{chapter}{فهرست اختصارات}
    \setglossarystyle{myAbbrlist}
    \begin{LTR}
        \Oldprintglossary[type=acronym] 
    \end{LTR}
    \clearpage
}%

\newcommand{\printacronyms}{\printabbreviation}
%%% در این جا محیط هر دو واژه نامه را باز تعریف کرده ایم، تا اولا مشکل قرار دادن صفحه اضافی را حل کنیم، ثانیا عنوان واژه نامه ها را با دستور addcontentlist وارد فهرست مطالب کرده ایم.
\let\Oldprintglossary\printglossary
\renewcommand{\printglossary}{
    \let\appendix\relax
    %% تنظیم کننده فاصله بین خطوط در این قسمت
    \clearpage
    \phantomsection
    %% این دستور موجب این می‌شود که واژه‌نامه‌ها در  حالت دو ستونی نوشته شود. 
    \twocolumn{}
    %% با این دستور عنوان واژه‌نامه به فهرست مطالب اضافه می‌شود. 
    \addcontentsline{toc}{chapter}{واژه نامه انگلیسی به فارسی}
    \setglossarystyle{myEntoFa}
    \Oldprintglossary[type=english]

    \clearpage
    \phantomsection
    %% با این دستور عنوان واژه‌نامه به فهرست مطالب اضافه می‌شود. 
    \addcontentsline{toc}{chapter}{واژه نامه فارسی به انگلیسی}
    \setglossarystyle{myFaToEn}
    \Oldprintglossary[type=persian]
    \onecolumn{}
}%
%%%%%% ============================================================================================================
%%%%%% ============================================================================================================
%%% نحوه تعریف واژگان 

\newword{RandomVariable}{Random Variable}
{متغیر تصادفی}{متغیرهای تصادفی}

\newword{Action}{Action}
{کنش}{کنش‌ها}

\newword{Optimization}{Optimization}{بهینه‌سازی}{}
\newword{FMRI}{FMRI}{تصویرسازی تشدید مغناطیسی کارکردی‌}{تصویرسازی تشدید مغناطیسی کارکردی}

%%%%%% ============================================================================================================

%%% نحوه تعریف اختصارات
\newacronym{DFT}{DFT}{Discrete Fourier Transform}

\newacronym{CDMA}{CDMA}{Code Division Multiplexing Access}

\newacronym{BAN}{BAN}{Body Area Network}



%%%%%% ============================================================================================================
%\loadglsentries{wordlist}
\begin{document}







    \chapter{مقدمه }
    در این نوشتار سعی و هدفمان بر این بوده است که  ارتباط هر یک از ده مقاله ای که در ادامه می آیند را با موضوع اصلی روشن نماییم.
    با توجه به اینکه حوزه پردازش گراف سیگنال حوزه بسیار نو و جدیدی می باشد و در سال های اخیر مورد توجه قرار گرفته است، ما در ابتدا برای روش شدن موضوع، مقدمه ای بر پردازش گراف سیگنال را ارائه خواهیم کرد و سپس به بررسی کار اصلی هر یک از مقالات و رابطه آنها با موضوع سمینار خواهیم پرداخت. همچنین در نهایت به جمع بندی و چشم اندار ها و مسائل پیش رو هر یک از مقالات خواهیم پرداخت.
    با توجه به اینکه رویکرد هر یک از این مقالات و نگاه آنها به حوزه علوم داده متفاوت می باشد. ما در مورد هر یک به صورت جداگانه بحث خواهیم کرد. در واقع مقالات ..... به بررسی پایه موضوع گراف سیگنال پرداخته اند و بقیه مقالات هر یک با توجه به حوزه مرتبط با خودشان از ابزار گراف سیگنال بهره گرفته اند تا مسئله مورد نظر خود را حل کنند. اغلب داده هایی که در این مقالات به کار گرفته شده است از منابع متفاوتی تولید شده است به عنوان مثال داده هایی که در این مقالات با آنها رو برو خواهیم شد عبارت اند از : داده ها و \glspl{FMRI} ، داده های دما، داده های تولید شده به صورت مصنوعی در کامپیوتر و ... که هر یک با توجه به اینکه داده به حساب می آیند مرتبط به \textbf{علوم داده }می باشند که مورد بررسی قرار گرفته اند. در ادامه برای هر مقاله یک فصل در نظر گرفته ایم و سپس کار هر یک را نسبت به موضوع اصلی تحلیل نموده ایم.     


    برای وارد کردن یک واژه از دستور \lr{glspl} باید استفاده نمود. مثل واژه \glspl{RandomVariable} که اگر در فایل \lr{\TeX}  آن نگاه کنید، مشاهده می‌کنید که برای وارد کردن واژه  \glspl{RandomVariable} از دستور \lr{glspl} استفاده شده است. در ضمن  در اولین استفاده از این واژه، معادل انگلیسی آن نیز پاورقی خورده است.  و اکنون واژه را تعریف می‌کنیم. 

    از اختصارات، اختصارات \gls*{BAN} و \gls{CDMA} را وارد می‌کنیم. برای بار اول پاورقی می‌خورد. اما برای بار دوم پاورقی زده نمی‌شود. دقت کنید که کلمه اول یعنی چون از \lr{gls*} استفاده شده است، بار اول به حساب نمی آید. 

    از اختصارات، اختصارات \gls{BAN} و \gls{CDMA} را وارد می‌کنیم. 
    از اختصارات، اختصارات \gls{BAN} و \gls{CDMA} را وارد می‌کنیم. 
    از اختصارات، اختصارات \gls{BAN} و \gls{CDMA} را وارد می‌کنیم. 


    تا واژه و یا اختصاری را در متن با دستورات \lr{gls}‌ و \lr{glspl} وارد نکنید، واژه نه در متن ظاهر شده و نه در واژه‌نامه‌ها وارد می‌شود.




\printglossary
\printabbreviation


\end{document}

答案1

First您应该Set up按照下面的方法编辑:(TeXstudio


在此处输入图片描述


在此处输入图片描述

step 5必须copy输入paste以下代码:

xindy -L persian-variant1 -C utf8 -I xindy -M %.xdy -t %.glg -o %.gls %.glo | 
xindy -L persian-variant1 -C utf8 -I xindy -M %.xdy -t %.blg -o %.bls %.blo |
xindy -L english -C utf8 -I xindy -M %.xdy -t %.alg -o %.acr %.acn

然后你必须具有以下结构:


\documentclass{report}
\usepackage{hyperref} 
\usepackage[xindy,acronym,nonumberlist=true]{glossaries}
\usepackage{xepersian}

\settextfont{XB Niloofar}
\newglossarystyle{myFaToEn}{%
    \renewenvironment{theglossary}{}{}
    \renewcommand*{\glsgroupskip}{\vskip 10mm}
    \renewcommand*{\glsgroupheading}[1]{\subsection*{\glsgetgrouptitle{##1}}}
    \renewcommand*{\glossentry}[2]{\noindent\glsentryname{##1}\dotfill\space \glsentrytext{##1}
        
    }
}
\newglossarystyle{myEntoFa}{% 
    \renewenvironment{theglossary}{}{}
    \renewcommand*{\glsgroupskip}{\vskip 10mm}
    \renewcommand*{\glsgroupheading}[1]{\begin{LTR} \subsection*{\glsgetgrouptitle{##1}} \end{LTR}} 
    \renewcommand*{\glossentry}[2]{\noindent\glsentrytext{##1}\dotfill\space \glsentryname{##1}     
    }
}
\newglossarystyle{myAbbrlist}{%
    \renewenvironment{theglossary}{}{}
    \renewcommand*{\glsgroupskip}{\vskip 10mm}
    \renewcommand*{\glsgroupheading}[1]{\begin{LTR} \subsection*{\glsgetgrouptitle{##1}} \end{LTR}}
    \renewcommand*{\glossentry}[2]{\noindent\glsentrytext{##1}\dotfill\space \Glsentrylong{##1}
        
    }
    \renewcommand*{\acronymname}{\rl{فهرست اختصارات
    }}
} 
\newglossary[glg]{english}{gls}{glo}{واژه‌نامه انگلیسی به فارسی}
\newglossary[blg]{persian}{bls}{blo}{واژه‌نامه فارسی به انگلیسی}
\makeglossaries
\glsdisablehyper
\let\oldgls\gls
\let\oldglspl\glspl
\makeatletter
\renewrobustcmd*{\gls}{\@ifstar\@msgls\@mgls}
\newcommand*{\@mgls}[1] {\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\oldgls{#1}\glsuseri{f-#1}}{\oldgls{#1}}}
\newcommand*{\@msgls}[1]{\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\glstext{#1}\glsuseri{f-#1}}{\oldgls{#1}}}

\renewrobustcmd*{\glspl}{\@ifstar\@msglspl\@mglspl}
\newcommand*{\@mglspl}[1] {\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\oldglspl{#1}\glsuseri{f-#1}}{\oldglspl{#1}}}
\newcommand*{\@msglspl}[1]{\ifthenelse{\equal{\glsentrytype{#1}}{english}}{\glsplural{#1}\glsuseri{f-#1}}{\oldglspl{#1}}}
\makeatother

\newcommand{\newword}[4]{
    \newglossaryentry{#1}     {type={english},name={\lr{#2}},plural={#4},text={#3},description={}}
    \newglossaryentry{f-#1} {type={persian},name={#3},text={\lr{#2}},description={}}
} 
\defglsentryfmt[english]{\glsgenentryfmt\ifglsused{\glslabel}{}{\LTRfootnote{\glsentryname{\glslabel}}}}
\defglsentryfmt[acronym]{\glsentryname{\glslabel}\ifglsused{\glslabel}{}{\LTRfootnote{\glsentrydesc{\glslabel}}}} 
\newcommand{\printabbreviation}{
    \cleardoublepage
    \phantomsection
    \baselineskip=.75cm
    \addcontentsline{toc}{chapter}{فهرست اختصارات}
    \setglossarystyle{myAbbrlist}
    \begin{RTL}
        \Oldprintglossary[type=acronym] 
    \end{RTL}
    \clearpage
}%

\newcommand{\printacronyms}{\printabbreviation}
\let\Oldprintglossary\printglossary
\renewcommand{\printglossary}{
    \let\appendix\relax
    \clearpage
    \phantomsection 
    \twocolumn{}
    \addcontentsline{toc}{chapter}{واژه نامه انگلیسی به فارسی}
    \setglossarystyle{myEntoFa}
    \Oldprintglossary[type=english]
    \clearpage
    \phantomsection
    \addcontentsline{toc}{chapter}{واژه نامه فارسی به انگلیسی}
    \setglossarystyle{myFaToEn}
    \Oldprintglossary[type=persian]
    \onecolumn{}
}%
%%% نحوه تعریف واژگان 

\newword{RandomVariable}{Random Variable}
{متغیر تصادفی}{متغیرهای تصادفی}

\newword{Action}{Action}
{کنش}{کنش‌ها}

\newword{Optimization}{Optimization}{بهینه‌سازی}{}
\newword{FMRI}{FMRI}{تصویرسازی تشدید مغناطیسی کارکردی‌}{تصویرسازی تشدید مغناطیسی کارکردی}

%%%%%% ============================================================================================================

%%% نحوه تعریف اختصارات
\newacronym{DFT}{DFT}{Discrete Fourier Transform}

\newacronym{CDMA}{CDMA}{Code Division Multiplexing Access}

\newacronym{BAN}{BAN}{Body Area Network}



%%%%%% ============================================================================================================
%\loadglsentries{wordlist}
\begin{document}







    \chapter{مقدمه }
    در این نوشتار سعی و هدفمان بر این بوده است که  ارتباط هر یک از ده مقاله ای که در ادامه می آیند را با موضوع اصلی روشن نماییم.
    با توجه به اینکه حوزه پردازش گراف سیگنال حوزه بسیار نو و جدیدی می باشد و در سال های اخیر مورد توجه قرار گرفته است، ما در ابتدا برای روش شدن موضوع، مقدمه ای بر پردازش گراف سیگنال را ارائه خواهیم کرد و سپس به بررسی کار اصلی هر یک از مقالات و رابطه آنها با موضوع سمینار خواهیم پرداخت. همچنین در نهایت به جمع بندی و چشم اندار ها و مسائل پیش رو هر یک از مقالات خواهیم پرداخت.
    با توجه به اینکه رویکرد هر یک از این مقالات و نگاه آنها به حوزه علوم داده متفاوت می باشد. ما در مورد هر یک به صورت جداگانه بحث خواهیم کرد. در واقع مقالات ..... به بررسی پایه موضوع گراف سیگنال پرداخته اند و بقیه مقالات هر یک با توجه به حوزه مرتبط با خودشان از ابزار گراف سیگنال بهره گرفته اند تا مسئله مورد نظر خود را حل کنند. اغلب داده هایی که در این مقالات به کار گرفته شده است از منابع متفاوتی تولید شده است به عنوان مثال داده هایی که در این مقالات با آنها رو برو خواهیم شد عبارت اند از : داده ها و \glspl{FMRI} ، داده های دما، داده های تولید شده به صورت مصنوعی در کامپیوتر و ... که هر یک با توجه به اینکه داده به حساب می آیند مرتبط به \textbf{علوم داده }می باشند که مورد بررسی قرار گرفته اند. در ادامه برای هر مقاله یک فصل در نظر گرفته ایم و سپس کار هر یک را نسبت به موضوع اصلی تحلیل نموده ایم.     

    برای وارد کردن یک واژه از دستور \lr{glspl} باید استفاده نمود. مثل واژه \glspl{RandomVariable} که اگر در فایل \lr{\TeX}  آن نگاه کنید، مشاهده می‌کنید که برای وارد کردن واژه  \glspl{RandomVariable} از دستور \lr{glspl} استفاده شده است. در ضمن  در اولین استفاده از این واژه، معادل انگلیسی آن نیز پاورقی خورده است.  و اکنون واژه را تعریف می‌کنیم. 
\RTLfootnote{سلام بر شما}
\RTLfootnote{درود بر شما}
\RTLfootnote{سپاس‌گزارم}
    از اختصارات، اختصارات \gls*{BAN} و \gls{CDMA} را وارد می‌کنیم. برای بار اول پاورقی می‌خورد. اما برای بار دوم پاورقی زده نمی‌شود. دقت کنید که کلمه اول یعنی چون از \lr{gls*} استفاده شده است، بار اول به حساب نمی آید. 

    از اختصارات، اختصارات \gls{BAN} و \gls{CDMA} را وارد می‌کنیم. 
    از اختصارات، اختصارات \gls{BAN} و \gls{CDMA} را وارد می‌کنیم. 
    از اختصارات، اختصارات \gls{BAN} و \gls{CDMA} را وارد می‌کنیم. 
\RTLfootnote{سلام بر شما}
\RTLfootnote{درود بر شما}
\RTLfootnote{سپاس‌گزارم}

    تا واژه و یا اختصاری را در متن با دستورات \lr{gls}‌ و \lr{glspl} وارد نکنید، واژه نه در متن ظاهر شده و نه در واژه‌نامه‌ها وارد می‌شود.




\printglossary
\printabbreviation


\end{document}

然后你必须compile你的文件:
第一次编译:f1
第二次编译:(glossary上面user2你做的)
第三次编译:f1


这将是你的输出:


在此处输入图片描述


在此处输入图片描述


在此处输入图片描述

在此处输入图片描述


祝你好运。

相关内容