方框中的脚注和词汇表条目

方框中的脚注和词汇表条目

我在一本用阿拉伯语(一种从右到左的语言)编写的书的末尾制作了两本技术术语词典及其英文版,使用词汇表包,一本词典按阿拉伯语(编号)条目排序,另一本按英文条目排序。

我想将由\gls定义的命令的输出设置\defglsentryfmt为词汇表中的编号(如果之前使用过)和脚注中的英文翻译(如果第一次使用)。如果条目位于框中(例如 tcolorbox 生成的框中,则不会生成脚注),则这些命令在其他情况下都有效...

我找到了解决这个问题的方法(似乎是!),通过使用命令\ifglsused,在一个特殊的用法中...在每个框之前,我设置一个测试编号,\TestGlossNumber为 1,以表明词汇表条目将在框中使用,我在框之后立即调用它,然后我将\gls条件下条目的输出放在命令{\TestGlossNumber=1}\ifglsused,然后在框之后,我将 \TestGlossNumber 调用为 0,以保持正常条件。

以下是使用的 .tex 文件:

\documentclass{article}

\usepackage{multicol} % Multi-columning
\usepackage[most]{tcolorbox} %So called package for boxing and so...
\newtcolorbox{mybox}[1][]{enhanced,left=5pt,right=5pt,oversize,colframe=black,colback=white,boxrule=.5pt,breakable,
before=\par\smallskip\centering,width=\textwidth,arc=0pt,outer arc=0pt,#1}% 

\usepackage[entrycounter,nomain,nonumberlist,toc,section=section]{glossaries}
\usepackage{glossary-mcols}

%%%%%%%%%%%%%%  Arabic Commands and fonts
\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}
\setmainfont[Script=Arabic,Scale=1.2]{Arial}
\newfontfamily\englishfont[Scale=1]{Times New Roman}
\setmonofont{Courier New}
\let\arabicfonttt\ttfamily
\setsansfont[Script=Arabic,Scale=1.5]{Arial}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%  Horizontal english LTR footnotes with the manyfoot package    
\usepackage[perpage,para*]{manyfoot}
\textwidthfootnoterule
%%%%%%%%%%%%  ENGLISH LTR
\SetFootnoteHook{\setLTR}
\DeclareNewFootnote[para]{C}
\makeatletter
\let\c@footnoteC\c@footnote
\makeatother
\def\Footnotetextbox#1#2{\footnotetextC[#1]{\hspace*{2pt}\LR{#2}}\stepcounter{footnoteC}}
\renewcommand{\thefootnoteC}{\textcolor{green}{\fnsymbol{footnoteC}}}

%%% The glossaries 
\newglossary[aoc]{ARDico}{aox}{aoo}{\LR{The entries in arabic order}}
\newglossary[eoc]{ENDico}{eox}{eoo}{\LR{The entries in english order}}

\makeglossaries

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  ORGANIZE ENTRIES AND GLOSSARIES OF FOOTNOTES
\newcommand*{\entrydico}[2]
{%
        \newglossaryentry{edic-#1}
    {type=ENDico,name={},sort={#2},
    description={\LR{
        \LR{#2}  \hfill\glsrefentry{adic-#1}
        \vspace*{1pt}\hrule\vspace*{1pt}}}
    }
    \newglossaryentry{adic-#1}
    {type=ARDico,name={},text={#2},sort={#1},
    description={#1  \hfill \LR{#2} \vspace*{2pt}\hrule\vspace*{2pt}}
    }
}

%%%%%%% The format of the output link   
\defglsentryfmt[ENDico]{}
\defglsentryfmt[ARDico]{
\ifglsused{\glslabel}%% For the used gls entries
{\ifthenelse{\equal{\TestGlossNumber}{1}}%% For use in a box
{\Footnotetextbox{\value{footnoteC}}{\glsentrytext{\glslabel}}} %% gls Entries in a box.. ifthenelse TRUE
{$^{\textcolor{red}{\glsrefentry{\glslabel}}}$} %% Usual gls entries...  ifthenelse FALSE
}
{%% For the unused gls entries
 \footnoteC{\glsentrytext{\glslabel}}$^{\textcolor{red}{\glsrefentry{\glslabel}}}$
}%
                    }

\newcommand{\putgls}[1]{\gls{adic-#1}\gls{edic-#1}} %% For calling the gls entries

%%% My glossary own style for writing 2-columns index in left-to-right mode
\newglossarystyle{LTRmcolindex}{%
\setglossarystyle{index}%
\renewenvironment{theglossary}%
{%
 \LTRmulticolcolumns
 \begin{multicols}{\glsmcols}
 \setlength{\parindent}{0pt}%
 \setlength{\parskip}{0pt plus 0.3pt}%
 \let\item\@idxitem}%
{\end{multicols}}%
                                }

\newcommand{\printARglossary}{\glsaddall%
\printglossary[type=ARDico,style=mcolindex]}
\newcommand{\printENglossary}{\glsaddall%
\printglossary[type=ENDico,style=LTRmcolindex,entrycounter=false]}

%% Some glossary entries
\entrydico{Aword1}{Eword1}\entrydico{Aword2}{Eword2}\entrydico{Aword3}{Eword3}\entrydico{Aword4}{Eword4}
\entrydico{Aword5}{Eword5}\entrydico{Aword6}{Eword6}
\begin{document}
\edef\TestGlossNumber{0}

\raggedright\LR{
A first entry\putgls{Aword1}. A second entry\putgls{Aword4}

A first repeated entry\putgls{Aword1}. A second repeated entry\putgls{Aword4}
}

\edef\SaveFootnoteNumber{\number\value{footnoteC}}
\edef\TestGlossNumber{1}
\begin{mybox}
\raggedright\LR{
Another entry\putgls{Aword3}. And another\putgls{Aword2}. 
}
\end{mybox}
\setcounter{footnoteC}{\SaveFootnoteNumber}
\stepcounter{footnoteC}
\putgls{Aword3}\putgls{Aword2}
\addtocounter{footnoteC}{-1}
\edef\Testglossnumber{0}
\vspace*{-\baselineskip} %%% To avoid the vertical space produced by \putgls commands..

\edef\TestGlossNumber{0}

\raggedright\LR{
And another\putgls{Aword5}. And another\putgls{Aword6}
}

%%%%        DICTIONARIES
\glsresetentrycounter
\printARglossary
\glsresetentrycounter
\printENglossary
\end{document}

并在生成词汇表后,在命令提示符下使用常用命令进行编译...... 在此处输入图片描述

我的问题是:

1/ 我的目的有问题吗?如果没有,这是完成工作的好方法吗?更准确地说,是否有一个宏可以更优雅地使用 Latex 编程的强大功能来做到这一点?

2/ 我不明白这些命令从何而来 \stepcounter{footnoteC},以及之后 \addtocounter{footnoteC}{-1}我通过“摸索”发现了什么……

3/ 其他问题。为什么英文词汇表以“idxitem”开头?我该如何消除它?

相关内容