重新定义 leipzig.sty 的现有缩写

重新定义 leipzig.sty 的现有缩写

为了撰写语言学论文,我使用 leipzig.sty 来制作注释中使用的缩写列表。在其文档中,有“4.3 重新定义现有缩写”一节;但是,它留空了。这正是我想要做的,用其他东西重新定义现有的缩写(特别是对于用英语以外的语言撰写的论文)。

非常感谢您提供有关如何操作的说明!谢谢。

下面添加的是 mwe:

\documentclass{article}

\usepackage[nomain,nostyles]{glossaries}
\usepackage{glossary-inline}
\usepackage{leipzig}

\makeglossaries

\newleipzig{erg}{erg}{nokaku}

\begin{document}

test\footnote{\printglossary[style=inline]}

{\Erg}

\end{document}

答案1

我可以为您提供一个,\undefleipzig以便您可以使用以下方式重置缩写\newleipzig

\documentclass{article}

\usepackage[nomain,nostyles]{glossaries}
\usepackage{glossary-inline}
\usepackage{leipzig}

\newcommand{\undefleipzig}[1]{\csundef{glo@\glsdetoklabel{#1}@name}}

\undefleipzig{erg}
\newleipzig{erg}{erg}{nokaku}

\makeglossaries

\begin{document}

test

{\Erg}

\printglossary[style=inline]

\end{document}

问题是,当被加载时,\newleipzig会执行。因此,当尝试重新定义现有缩写时, 的保护机制就会生效。使用此技巧,可以针对我们想要删除的特定条目禁用此机制。\newacronymglossariesglossaries\undefleipzig

\renewleipzig为了补充现有的定义\newleipzig,可以将其定义为

\documentclass{article}

\usepackage[nomain,nostyles]{glossaries}
%\usepackage{glossary-inline}
\usepackage{leipzig}

\makeatletter
\newcommand{\renewleipzig}[2][]{%
  \if@leipzig@defined{#2}
    {%
     \renew@leipzig{#1}{#2}%
    }%
    {%
     \PackageError{leipzig}
       {Abbreviation `#2' undefined}
       {No `#2` abbreviation is defined, use \string\newleipzig}%
     \@gobbletwo
    }%
}
\def\if@leipzig@defined#1{%
  \uppercase\expandafter{\expandafter\ifcsname\@car#1\@nil}\@cdr#1\@nil\endcsname
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\def\renew@leipzig#1#2{%
  \ifcsname glo@\glsdetoklabel{#2}@name\endcsname
    \csundef{glo@\glsdetoklabel{#2}@name}
  \fi
  \if\relax\detokenize{#2}\relax
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  {\newleipzig{#2}}{\newleipzig[#1]{#2}}%
}
\makeatother

\renewleipzig{erg}{erg}{nokaku}
\newleipzig{aaa}{bbb}{ccc}
\renewleipzig[first=UUU]{aaa}{bbb}{ccc}

\makeglossaries

\begin{document}

test

\Erg{}

\Aaa

\Aaa

\printglossary

\end{document}

我不够专业,无法leipzig理解结果是否符合预期。

相关内容