如图所示莱比锡和词汇表一起使用的问题,由于该包依赖于 中已弃用的命令,因此在将该包leipzig
与该glossaries
包一起使用时会出现问题。leipzig
glossaries
问题的答案解决了这个问题,但是答案建议修改文件.sty
,而我宁愿不这样做。
我尝试修补该\SetLeipzigDisplayStyle
命令,但没有成功。根据egreg 的回答到请指导一下patchcmd和xpatch的使用xpatch
,在尝试使用可选参数修补命令时应该使用。\SetLeipzigDisplayStyle
就是这样的命令,但尝试用它修补\xpatchcmd
对我来说不起作用。我该如何修复此问题而不诉诸(复制和)修改文件.sty
?
平均能量损失
% !TEX TS-program = arara
% arara: pdflatex
% arara: makeglossaries
% arara: pdflatex
% arara: pdflatex
\documentclass{article}
\usepackage{expex}
\usepackage[nomain,nostyles]{glossaries}
\usepackage{glossary-inline}
\usepackage{leipzig}
\makeglossaries
\usepackage{xpatch}
\xpatchcmd{\SetLeipzigDisplayStyle}{%
\defglsdisplay[#1]{\leipzigfont{##1}##4}%
\defglsdisplayfirst[#1]{\firstleipzigfont{##1}##4}%
}{%
\renewcommand*{\glstextformat}[1]{\leipzigfont{#1}}%
}{}{}
\begin{document}
\ex
\begingl
\gla mulle//
\glb \First\Sg:\Dat{}//
\endgl
\xe
go.\Pst{}
\printglossary[style=inline,type=\leipzigtype]
\end{document}
您可以看到它仍然会产生莱比锡和词汇表一起使用的问题。
答案1
etoolbox
我认为当搜索文本包含##
(请注意,xpatch
是基于)时不可能进行修补etoolbox
。
此外,请求的补丁相当于
\renewcommand*{\SetLeipzigDisplayStyle}[1]{%
\renewcommand*{\glstextformat}[1]{\leipzigfont{#1}}%
}
所以不清楚你为什么要寻找补丁。
顺便说一句,xpatch
对于特定目的来说并不是严格需要的,因为\SetLeipzigDisplayStyle
没有用可选参数定义。
如果你坚持要打补丁,
\usepackage{regexpatch}
\xpatchcmd{\SetLeipzigDisplayStyle}
{\defglsdisplay[#1]{\leipzigfont{##1}##4}%
\defglsdisplayfirst[#1]{\firstleipzigfont{##1}##4}}
{\renewcommand*{\glstextformat}[1]{\leipzigfont{#1}}}
{}{}
完成工作。
但如果我随后添加
\newcommand*{\test}[1]{\renewcommand*{\glstextformat}[1]{\leipzigfont{#1}}}
\ifx\test\SetLeipzigDisplayStyle\message{EQUAL}\fi
我EQUAL
在日志文件中发现,修补确实没有必要,应该使用重新定义。
大概