使用词汇表术语后不需要空格

使用词汇表术语后不需要空格

我在使用词汇表包时遇到了问题。我使用 sharelatex。

当我使用词汇表术语(第一个和其他)时,输出文档中会出现不需要的空格。

这是我使用的代码:

主要的

\usepackage[acronym, translate=babel, nopostdot]{glossaries}
\makeglossaries

% External files
\loadglsentries{Z_glossary}
\loadglsentries{Z_afkortingen}

% Not in table of contents
\glstocfalse

% First appearance in italic
\defglsdisplayfirst[\glsdefaulttype]{\textit{#1}}

词汇表

\newglossaryentry{workflowpattern}%
{%
    name={Workflowpattern}, 
    description={Blablabla}, 
    text={workflowpattern}, 
    plural={workflowpatterns}, 
    first={workflowpattern},            
    firstplural={workflowpatterns},
}

文本

zijn de \glspl{workflowpattern} en beschrijven

结果如下:

输出

答案1

不需要的空间来自\defglsdisplayfirstglossaries.sty 2014/01/20 v4.03,请参阅标有以下内容的行% <==

\newcommand*{\defglsdisplayfirst}[2][\glsdefaulttype]{%
  \GlossariesWarning{\string\defglsdisplayfirst\space is now obsolete.^^J
  Use \string\defglsentryfmt\space instead}%
  \expandafter\def\csname gls@#1@displayfirst\endcsname##1##2##3##4{#2}%
  \edef\@gls@doentrydef{%
    \noexpand\defglsentryfmt[#1]{%
      \noexpand\ifcsdef{gls@#1@display}%
      {%
        \noexpand\@@gls@default@entryfmt
          {\noexpand\csuse{gls@#1@displayfirst}}
          {\noexpand\csuse{gls@#1@display}}%
      }%
      {%
        \noexpand\@@gls@default@entryfmt
          {\noexpand\csuse{gls@#1@displayfirst}}%
          {\noexpand\glsdisplay} % <==
      }%
    }%  
  }%
  \@gls@doentrydef
}

作为解决方法,定义不包含不需要的空间:

\usepackage[...]{glossaries}
\makeatletter
\renewcommand*{\defglsdisplayfirst}[2][\glsdefaulttype]{%
  \GlossariesWarning{\string\defglsdisplayfirst\space is now obsolete.^^J
  Use \string\defglsentryfmt\space instead}%
  \expandafter\def\csname gls@#1@displayfirst\endcsname##1##2##3##4{#2}%
  \edef\@gls@doentrydef{%
    \noexpand\defglsentryfmt[#1]{%
      \noexpand\ifcsdef{gls@#1@display}%
      {%
        \noexpand\@@gls@default@entryfmt
          {\noexpand\csuse{gls@#1@displayfirst}}
          {\noexpand\csuse{gls@#1@display}}%
      }%
      {%
        \noexpand\@@gls@default@entryfmt
          {\noexpand\csuse{gls@#1@displayfirst}}%
          {\noexpand\glsdisplay}% without unwanted space
      }%
    }%  
  }%
  \@gls@doentrydef
}
\makeatother

答案2

使用

\defglsdisplayfirst[\glsdefaulttype]{\textit{#1}\ignorespaces}

相关内容