为了撰写语言学论文,我使用 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
会执行。因此,当尝试重新定义现有缩写时, 的保护机制就会生效。使用此技巧,可以针对我们想要删除的特定条目禁用此机制。\newacronym
glossaries
glossaries
\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
理解结果是否符合预期。