左对齐双栏英语词汇表

左对齐双栏英语词汇表

我已经使用glossaries包来制作英语-波斯语和波斯语-英语词典,其风格我发现这里。但遗憾的是,如下图所示,英文单词没有左对齐,而我确实需要词汇表是双列的。有没有办法让英文短语左对齐? 在此处输入图片描述

以下是我对 MWE 的看法:

\documentclass[11pt]{book}
\usepackage{amsthm,amssymb}
\usepackage{unicode-math}
\usepackage[a4paper,textwidth=6in]{geometry}
\usepackage{float}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage[square,comma,sort&compress,numbers]{natbib} 
\usepackage{multirow}
\usepackage{multicol}
\usepackage[hyperindex=true,pagebackref=false,colorlinks,linkcolor=red,citecolor=blue]{hyperref}
\usepackage[xindy,acronym,nonumberlist=true]{glossaries}
\usepackage[perpagefootnote=on]{bidi}
\usepackage[extrafootnotefeatures]{xepersian}
\settextfont[Scale=1]{Tahoma}
\setlatintextfont[Scale=1]{Times New Roman}
\setdigitfont[Scale=1]{Tahoma}
%%%%%% ============================================================================================================

\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}}{\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={}}
}
%%%%%% ============================================================================================================
%%============================ 
\newcommand{\printabbreviation}{
    \cleardoublepage
    \phantomsection
    \baselineskip=.75cm

    \addcontentsline{toc}{chapter}{فهرست اختصارات}
    \setglossarystyle{myAbbrlist}
    \begin{LTR}
        \Oldprintglossary[type=acronym] 
    \end{LTR}
    \clearpage
}%

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

    \clearpage
    \phantomsection
    
    \addcontentsline{toc}{chapter}{واژه نامه فارسی به انگلیسی}
    \setglossarystyle{myFaToEn}
    \RTLdblcol
    
    \Oldprintglossary[type=persian]
    \onecolumn{}
}%
%%%%%%
\input{testgloss}
\begin{document}
    \chapter{فصل ۱}
    از فرایندهای BALAS و GOMORY در بخش ۲-۲-۴ نام برده شده اما طرح آن‌ها در فصل ۱ انجام گرفته. احتمالاً باید در بخش  طرح شود.
    هایپرلینک مسائل ۴-۸۶ و ۴-۸۷ در بخش اول توضیحات فصل دوم اضافه شود.
    \glsaddall
    \printglossary
\end{document}

此外,xindy在打印任何词汇表之前需要执行三个命令:

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

testgloss.tex编辑:这是我忘记包含的文件内容:

\newword{Knapsackproblem}{Knapsack problem}{مسئلهٔ کوله‌پشتی}{}
\newword{ZerooneLP}{Zero-one integer programming}{برنامه‌ریزی عدد صحیحِ صفر-یک}{}
\newword{w1}{Covering problem}{مسئلهٔ پوشش}{}
\newword{w2}{Packing problem}{مسئلهٔ بسته‌بندی}{}
\newword{w3}{Polynomial time}{زمان چندجمله‌ای}{}
\newword{w4}{Special-purpose method}{روش تک‌منظوره}{}
\newword{w5}{Size}{اندازه}{}
\newword{w6}{Approximation algorithm}{الگوریتم تقریبی}{}
\newword{w7}{Cutting stock problem}{مسئلهٔ برش چوب}{}
\newword{w8}{Loading problem}{مسئلهٔ بارگیری}{}
\newword{w9}{Bin-packing problem}{مسئلهٔ بسته‌بندی با جعبه}{}
\newword{w10}{Scheduling problem}{مسئلهٔ زمان‌بندی}{}
\newword{w11}{Feasible}{شدنی}{}
\newword{w12}{Assignment}{تخصیص}{}
\newword{w13}{Weight}{وزن}{}
\newword{w14}{Bounded Knapsack Problem (BKP)}{مسئلهٔ کوله‌پشتی کران‌دار}{}
\newword{w15}{General Knapsack Problem (GKP)}{مسئلهٔ کوله‌پشتی کلی}{}
\newword{w16}{Unbounded Knapsack Problem}{مسئلهٔ کوله‌پشتی بی‌کران}{}
\newword{w17}{Unbounded change-making problem}{مسئلهٔ پول-خردْکردن بی‌کران}{}

答案1

您的 MWE 缺少您用来定义词汇表单词的其他文件 ( testgloss.tex)。不过,我重现了您的问题,下面是您可以修复它的方法。

首先,我重新排列了内容,这样第一行总是包含英文文本,因为这是 En2Fa 词典,所以第一个被读取的元素是英文术语。然后是波斯​​语文本,如果一行放不下,那么剩余部分将与右侧对齐。

\newglossarystyle{myEntoFa}{%
  \renewenvironment{theglossary}{}{}
  \renewcommand*{\glsgroupskip}{\vskip 10mm}
  \renewcommand*{\glsgroupheading}[1]{\begin{latin} \subsection*{\glsgetgrouptitle{##1}} \end{latin}}
  \renewcommand*{\glossentry}[2]{\begin{latin}\noindent\glsentryname{##1}\dotfill\space \noindent\raggedleft{\rl{\glsentrytext{##1}}} \end{latin}}
}

在此处输入图片描述

如果您确实希望将英文文本分成多行而不是波斯文文本,那么您可以执行以下操作:

\newglossarystyle{myEntoFa}{%
  \renewenvironment{theglossary}{}{}
  \renewcommand*{\glsgroupskip}{\vskip 10mm}
  \renewcommand*{\glsgroupheading}[1]{\begin{latin} \subsection*{\glsgetgrouptitle{##1}} \end{latin}}
  \renewcommand*{\glossentry}[2]{\noindent\raggedright{\rl{\glsentrytext{##1}}}\dotfill\space \noindent\lr{\glsentryname{##1}} \\}
}

在此处输入图片描述

相关内容