\overline 命令栏上的词汇表

\overline 命令栏上的词汇表

我想制作一个文本词汇表,其中有时会描述一些操作。其中之一就是“上划线”操作。

在文中我想这样写道:

\gls{Overline}[u]

这样,只有该命令创建的栏\overline才会链接到词汇表,而不是其下的参数(此处u)。

下面的图片显示了我想要的结果(红色链接):

想要的结果

以下代码主要受到以下启发使用 \newglossary 在词汇表中使用可选参数的符号问题:

\documentclass{article}
\usepackage[hidelinks, colorlinks=true]{hyperref}

\usepackage[abbreviations]{glossaries-extra}

\makeglossaries
\glsnoexpandfields

\newcommand*{\glsdefaultarg}{i}
\newcommand*{\glsarg}{\glsdefaultarg}

\newglossaryentry{Overline}{
    category=arg,% requires an argument
    name=\ensuremath{\overline{\glsdefaultarg}},
    text=\ensuremath{\overline{\glsarg}},
    description={Overline description}
}
% modify the entry's format

\preto\glsentryfmt{%
  \glsifcategory{\glslabel}{arg}% if category set to "arg"
  {%
    \ifdefempty\glsinsert
    {\let\glsarg\glsdefaultarg}%
    {%
      \let\glsarg\glsinsert
      \let\glsinsert\empty
    }%
  }%
  {}%
}

\begin{document}

\(\gls{Overline}\)

\phantom{}

\(\gls{Overline}[a]\)

\phantom{}

\(\gls{Overline}[(u, v)]\)

\phantom{}

\(\gls{Overline}[f]\)

\phantom{}

\(\gls{Overline}\)

\printglossaries
\end{document}

它输出的是:

LaTeX 输出

如您所见,由其生成的栏\overline和其下方的文本均链接到词汇表(由于hyperref包的原因,以红色显示)。

请注意,打印的词汇表是正确的。

关键思想可能是创建一个模拟\overline结果的宏(参见此处的 tikz:更粗的 \overline),并自定义文本中的词汇表格式。但我真的不知道该怎么做。

感谢您阅读我的文章,祝您有美好的一天

答案1

我找到了一种模拟\overline行为并使线条可点击和着色的方法。

虽然它很丑陋,但它确实有效,所以我标记了问题的答案。但如果有人能用更简洁的方法来做这件事,我会非常高兴。

代码(请注意,我创建了一个更简单的 MWE,没有词汇表arg类别)。此外,此处词汇表文本条目的颜色与其他链接的颜色不同(词汇表部分的页码)。

% ============================================================================ %
%                                    CONFIG                                    %
% ============================================================================ %
\documentclass{article}
\usepackage[hidelinks, colorlinks=true]{hyperref}

\usepackage[abbreviations]{glossaries-extra}
\usepackage{tikz}
\usetikzlibrary{calc} % because of 'let' in tikzpicture env.

% ============================================================================ %
%                                   HYPERREF                                   %
% ============================================================================ %
\newcommand{\customglshrefcol}{blue} % Cleaner bc we will reuse this command

% ============================================================================ %
%                                  GLOSSARIES                                  %
% ============================================================================ %
\makeglossaries%

% ---------------------------------------------------------------------------- %
%                                  Link Color                                  %
% ---------------------------------------------------------------------------- %
\renewcommand*{\glstextformat}[1]{\textcolor{\customglshrefcol}{#1}}

% ---------------------------------------------------------------------------- %
%                                     Entry                                    %
% ---------------------------------------------------------------------------- %
\newcommand{\overbardefault}{\ensuremath{\,\cdot\,}}
\newglossaryentry{overbar}{
    name=\ensuremath{\overline{\overbardefault}},% for the printglossaries
    text={},% because \Overline command will replace \gls behaviour
    description={Overline description}
}

% ---------------------------------------------------------------------------- %
%                               Simulate Overline                              %
% ---------------------------------------------------------------------------- %
\newcommand\Overline[2][0.5pt]{%
    \begin{tikzpicture}[baseline=(a.base)]
        %
        % The text under the line
        %
        \node[inner xsep=0pt,inner ysep=1.5pt] (a) {$#2$};
        %
        % Write link on the overline
        %
        \path let
        \p1=(a.north west),
        \p2=(a.north east),
        \n1={veclen(\x2-\x1,\y2-\y1)} in
        node[outer sep=0pt,inner xsep=0pt,align=left,anchor=west,minimum width=\n1,minimum height=1ex]
        at (a.north west) (link) {% \glshyperlink[<text>]{<label>}
                \glshyperlink[%
                    \gls{overbar}\hphantom{\hspace*{\n1}}% we use \gls to add page number in Glossary section
                ]{overbar}%
            };
        %
        % Draw overline
        %
        \draw[line width= #1, color=\customglshrefcol] (a.north west) -- (a.north east);
    \end{tikzpicture}%
}

% ============================================================================ %
%                                     BODY                                     %
% ============================================================================ %
\begin{document}

\(\Overline{\overbardefault} \quad \overline{\overbardefault}\)

\phantom{}

\(\Overline{a} \quad \overline{a}\)

\phantom{}

\(\Overline{(u, v)} \quad \overline{(u, v)}\)

\phantom{}

\(\Overline{f} \quad \overline{f}\)

\printglossaries

\end{document}

它输出:

在此处输入图片描述

代码受到以下方面的启发:https://tex.stackexchange.com/a/526333/232319

相关内容