1

I want to write my thesis in my native language (Persian). But people don't agree with each other on the translation of some technical word. I have a set of macros which correctly defines entries in the glossary, which I don't want to interfere with the working of them.

\newglossarystyle{mylistFa}{
\glossarystyle{list}\addcontentsline{toc} 
 {chapter}{واژه‌نامه فارسی به انگلیسی}
 \renewenvironment{theglossary}{}{}
 \renewcommand*{\glossaryheader}{}
 \renewcommand*{\glsgroupheading}[1] 
 {\section*{\glsgetgrouptitle{##1}}}
  \renewcommand*{\glsgroupskip}{\vspace* 
  {-1cm}}
 \renewcommand*{\glossaryentryfield}[5]     
 {\noindent\glstarget{##1}{##2}\dotfill 
 \space ##3 \\}
 \renewcommand*{\glossarysubentryfield}[6] 
  {\glossaryentryfield{##2}{##3}{##4}{##5} 
  {##6}}
  }


  \newglossarystyle{mylistEn}{
  \glossarystyle{list}\addcontentsline{toc} 
  {chapter}{واژه‌نامه انگلیسی به فارسی}
  \renewenvironment{theglossary}{}{}
  \renewcommand*{\glossaryheader}{}
  \renewcommand*{\glsgroupheading}[1] 
  {\begin{LTR} \section* 
  {\lr{\glsgetgrouptitle{##1}}} \end{LTR}}
   \renewcommand*{\glsgroupskip}{\vspace* 
  {-1cm}}
  \renewcommand*{\glossaryentryfield}[5]     
  {\noindent\glstarget{##1}{##3}\dotfill 
  \space ##2 \\}
  \renewcommand*{\glossarysubentryfield}[6] 
   {\glossaryentryfield{##2}{##3}{##4}{##5} 
  {##6}}
  }

  % تعریف دو نمونه واژه نامه
  \newglossary[glg]{english}{gls}{glo} 
  {واژه‌نامه انگلیسی به فارسی}
  \newglossary[blg]{persian}{bls}{blo} 
  {واژه‌نامه فارسی به انگلیسی}

  % توسط این دستور واژه مورد نظر در متن، 
  هر دو واژه نامه و پاورقی می آید.
  \newcommand{\inpdic}[2]{
   \newglossaryentry{fa-#1} 
   {type=persian,name={#1}, sort= 
   {#1},description={\lr{#2}}}\gls{fa- 
    #1}\LTRfootnote{#2}
    \newglossaryentry{en-#1} 
   {type=english,name={\lr{#2}}, sort= 
   {#2},description={#1}}\glsuseri{en-#1}
   \!\!\!\!}

   % توسط این دستور واژه مورد نظر در متن، 
   هر دو واژه نامه  می آید.
  \newcommand{\indic}[2]{
   \newglossaryentry{fa-#1} 
   {type=persian,name={#1}, sort= 
   {#1},description={\lr{#2}}}\gls{fa-#1}
   \newglossaryentry{en-#1} 
   {type=english,name={\lr{#2}}, sort= 
   {#2},description={#1}}\glsuseri{en-#1}
   }

   % توسط این دستور واژه مورد نظر فقط در 
   هر دو واژه نامه  می آید.
   \newcommand{\ingls}[2]{
    \newglossaryentry{fa-#1} 
   {type=persian,name={#1}, sort= 
   {#1},description={\lr{#2}}}\glsuseri{fa- 
   #1}
   \newglossaryentry{en-#1} 
   {type=english,name={\lr{#2}}, sort= 
   {#2},description={#1}}\glsuseri{en-#1}
    }

   \makeglossaries
   \glsdisablehyper

I use these macros like the following

\inpdic{احساس}{emotion}

But I want to define all of the entries in the glossary at the beginning of my thesis and then using this table, I just retrieve from this table the entry I want. In this way, all of the translation of a word in my thesis will be the same and when I want to change an entry, I didn't have to change it in all of my thesis.

How should I do it?

Here is a short compilable code. It compiles, but unfortunately, it doesn't print the glossary. Which I don't know why. \documentclass{minimal}

\usepackage{glossaries}
\newglossarystyle{mylistFa}{
\glossarystyle{list}\addcontentsline{toc}{chapter}{واژه‌نامه فارسی به       
 انگلیسی}
 \renewenvironment{theglossary}{}{}
 \renewcommand*{\glossaryheader}{}
 \renewcommand*{\glsgroupheading}[1]{\section*{\glsgetgrouptitle{##1}}}
 \renewcommand*{\glsgroupskip}{\vspace*{-1cm}}
 \renewcommand*{\glossaryentryfield}[5]     {\noindent\glstarget{##1}    
 {##2}\dotfill \space ##3 \\}
\renewcommand*{\glossarysubentryfield}[6]{\glossaryentryfield{##2}{##3}{##4}    
 {##5}{##6}}
 }


\newglossarystyle{mylistEn}{
\glossarystyle{list}\addcontentsline{toc}{chapter}{واژه‌نامه انگلیسی به 
 فارسی}
\renewenvironment{theglossary}{}{}
\renewcommand*{\glossaryheader}{}
\renewcommand*{\glsgroupheading}[1]{\begin{LTR} \section* 
{\lr{\glsgetgrouptitle{##1}}} \end{LTR}}
\renewcommand*{\glsgroupskip}{\vspace*{-1cm}}
\renewcommand*{\glossaryentryfield}[5]     {\noindent\glstarget{##1} 
{##3}\dotfill \space ##2 \\}
\renewcommand*{\glossarysubentryfield}[6]{\glossaryentryfield{##2}{##3}{##4} 
{##5}{##6}}
}

% تعریف دو نمونه واژه نامه
\newglossary[glg]{english}{gls}{glo}{واژه‌نامه انگلیسی به فارسی}
\newglossary[blg]{persian}{bls}{blo}{واژه‌نامه فارسی به انگلیسی}

% توسط این دستور واژه مورد نظر در متن، هر دو واژه نامه و پاورقی می آید.
\newcommand{\inpdic}[2]{
\newglossaryentry{fa-#1}{type=persian,name={#1}, sort={#1},description= 
 {\lr{#2}}}\gls{fa-#1}\LTRfootnote{#2}
\newglossaryentry{en-#1}{type=english,name={\lr{#2}}, sort={#2},description= 
{#1}}\glsuseri{en-#1}
\!\!\!\!}

% توسط این دستور واژه مورد نظر در متن، هر دو واژه نامه  می آید.
 \newcommand{\indic}[2]{
 \newglossaryentry{fa-#1}{type=persian,name={#1}, sort={#1},description= 
 {\lr{#2}}}\gls{fa-#1}
 \newglossaryentry{en-#1}{type=english,name={\lr{#2}}, sort={#2},description= 
 {#1}}\glsuseri{en-#1}
 }

 % توسط این دستور واژه مورد نظر فقط در هر دو واژه نامه  می آید.
 \newcommand{\ingls}[2]{
 \newglossaryentry{fa-#1}{type=persian,name={#1}, sort={#1},description= 
 {\lr{#2}}}\glsuseri{fa-#1}
 \newglossaryentry{en-#1}{type=english,name={\lr{#2}}, sort={#2},description= 
 {#1}}\glsuseri{en-#1}
 }

 \makeglossaries
 \glsdisablehyper

 \usepackage{enumerate}
 \usepackage{xepersian}
 \settextfont{XB Niloofar}
 \begin{document}

  این فقط یک آزمایش است 

  \ingls{احساس}{emotion}

 \makeatletter

 \indic{دانش}{Knowledge}

 \glossarystyle{mylistFa}
 \printglossary[type=persian]

 \glossarystyle{mylistEn}
 \printglossary[type=english]


 % دقت کنید که این نمایه براساس حروف انگلیسی هم قابل مرتب شدن است، و آن‌ 
 را به عنوان نمایه و واژه‌نامه به طور همزمان نیز می‌توان به کار برد.
 \renewcommand\glossaryname{نمایه}
 \glossarystyle{list}
 \addcontentsline{toc}{chapter}{نمایه}
 \printglossary

 \end{document}
0
1

First of all you should see this page for correctly compiling.
Secondly, you will have the Deprecated command \glossarystyle warning, after the compiling. With the below structure you can remove this warning:

\usepackage{silence}
\WarningFilter{glossaries}{Deprecated command}

So your codes is the same as following:


\documentclass[12pt]{book}
\usepackage[colorlinks,linkcolor=blue,citecolor=magenta]{hyperref}
\usepackage[xindy,acronym]{glossaries}
\usepackage{silence}
\WarningFilter{glossaries}{Deprecated command}
\newglossarystyle{mylistFa}{
    \glossarystyle{list}\addcontentsline{toc}{chapter}{واژه‌نامه فارسی به       
        انگلیسی}
    \renewenvironment{theglossary}{}{}
    \renewcommand*{\glossaryheader}{}
    \renewcommand*{\glsgroupheading}[1]{\section*{\glsgetgrouptitle{##1}}}
    \renewcommand*{\glsgroupskip}{\vspace*{-1cm}}
    \renewcommand*{\glossaryentryfield}[5]     {\noindent\glstarget{##1}    
        {##2}\dotfill \space ##3 \\}
    \renewcommand*{\glossarysubentryfield}[6]{\glossaryentryfield{##2}{##3}{##4}    
        {##5}{##6}}
}


\newglossarystyle{mylistEn}{
    \glossarystyle{list}\addcontentsline{toc}{chapter}{واژه‌نامه انگلیسی به 
        فارسی}
    \renewenvironment{theglossary}{}{}
    \renewcommand*{\glossaryheader}{}
    \renewcommand*{\glsgroupheading}[1]{\begin{LTR} \section* 
            {\lr{\glsgetgrouptitle{##1}}} \end{LTR}}
    \renewcommand*{\glsgroupskip}{\vspace*{-1cm}}
    \renewcommand*{\glossaryentryfield}[5]     {\noindent\glstarget{##1} 
        {##3}\dotfill \space ##2 \\}
    \renewcommand*{\glossarysubentryfield}[6]{\glossaryentryfield{##2}{##3}{##4} 
        {##5}{##6}}
}

% تعریف دو نمونه واژه نامه
\newglossary[glg]{english}{gls}{glo}{واژه‌نامه انگلیسی به فارسی}
\newglossary[blg]{persian}{bls}{blo}{واژه‌نامه فارسی به انگلیسی}

% توسط این دستور واژه مورد نظر در متن، هر دو واژه نامه و پاورقی می آید.
\newcommand{\inpdic}[2]{
\newglossaryentry{fa-#1}{type=persian,name={#1}, sort={#1},description= 
        {\lr{#2}}}\gls{fa-#1}\LTRfootnote{#2}
\newglossaryentry{en-#1}{type=english,name={\lr{#2}}, sort={#2},description= 
{#1}}\glsuseri{en-#1}
\!\!\!\!}

% توسط این دستور واژه مورد نظر در متن، هر دو واژه نامه  می آید.
\newcommand{\indic}[2]{
\newglossaryentry{fa-#1}{type=persian,name={#1}, sort={#1},description= 
{\lr{#2}}}\gls{fa-#1}
\newglossaryentry{en-#1}{type=english,name={\lr{#2}}, sort={#2},description= 
{#1}}\glsuseri{en-#1}
}

% توسط این دستور واژه مورد نظر فقط در هر دو واژه نامه  می آید.
\newcommand{\ingls}[2]{
    \newglossaryentry{fa-#1}{type=persian,name={#1}, sort={#1},description= 
        {\lr{#2}}}\glsuseri{fa-#1}
    \newglossaryentry{en-#1}{type=english,name={\lr{#2}}, sort={#2},description= 
        {#1}}\glsuseri{en-#1}
}

\makeglossaries
\glsdisablehyper
\usepackage{xepersian}
\settextfont{XB Niloofar}
\setdigitfont[Scale=1.3]{PGaramond}
\setlatintextfont[Scale=1.2]{Times New Roman}
\begin{document}
\null\vfill\noindent
این فقط یک آزمایش است

\noindent
\inpdic{قابل اعتماد}{believable}\\
\indic{دانش}{Knowledge}
\ingls{احساس}{emotion}
\glossarystyle{mylistFa}
\printglossary[type=persian]
\glossarystyle{mylistEn}
\printglossary[type=english]


    % دقت کنید که این نمایه براساس حروف انگلیسی هم قابل مرتب شدن است، و آن‌ 
    %را به عنوان نمایه و واژه‌نامه به طور همزمان نیز می‌توان به کار برد.
\renewcommand\glossaryname{نمایه}
\glossarystyle{list}
\addcontentsline{toc}{chapter}{نمایه}
\printglossary
\end{document}

And your outputs is the same as below:


enter image description here

enter image description here

enter image description here

enter image description here

Good luck.

2
  • I have this output. What I want is to have a list of keywords, somewhere in the tex code and then instead of explicitly using the word, use the word from this table. In this, if I want to update the translation of a word, I don't have too go into all of my text. – user85361 Dec 29 '18 at 7:23
  • @user85361 . Unfortunately, I did not understand what you mean. Please attach an image of what you are asking for. – SH.Madadpour Dec 29 '18 at 9:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.