在我的项目中,我正在寻找简单但自动化的字符串替换。为此,我遇到了这个问题及其答案:
哪些软件包为 LaTeX、XeTeX 和 LuaLaTeX 提供文本/命令替换?
它适用于任何文本,除了使用 bib2gls 写入 pdf 文件的文本。
为了表明这一点,我创建了这样的 MWE:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{glossary.bib}
% Encoding: UTF-8
@entry{replacement,
name = {Replacement of dark in name field},
description = {Replacement of dark in description field.}}
\end{filecontents}
\usepackage{luacode}
\begin{luacode}
function replace_dark_with_bright ( s )
s = string.gsub ( s, "dark" , "bright" )
return s
end
\end{luacode}
\AtBeginDocument{%
\directlua{luatexbase.add_to_callback (
"process_input_buffer", replace_dark_with_bright, "replace_dark_with_bright" )}
}
\usepackage[record, nopostdot,%
nostyles, stylemods={all},% do the adjustments for the longbooktabs styles
]{glossaries-extra}
\GlsXtrLoadResources[selection={all},%
src={glossary},%
sort={en},
sort-field={name},
charset=UTF-8,%
]
\begin{document}
Always look on the dark side of life.
\gls{replacement}.
\setglossarystyle{altlistgroup}
\printunsrtglossary[type={main}]
\end{document}
是否有一个回调函数,我可以用它来实现像在标准 TeX 文本中那样的替换?
我甚至创建了词汇表条目数据库,因此需要使用 bib2gls。名称字段的替换是理想的,但关键是描述字段的替换。
就这个问题的高度局部性而言,我很乐意提供任何形式的帮助:解决方案(是的,这始终是最好的)或至少是解决问题的指导。
谢谢你的帮助,托马斯
答案1
稍后加载词汇表,以便回调有机会:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{glossary.bib}
% Encoding: UTF-8
@entry{replacement,
name = {Replacement of dark in name field},
description = {Replacement of dark in description field.}}
\end{filecontents}
\usepackage{luacode}
\begin{luacode}
function replace_dark_with_bright ( s )
s = string.gsub ( s, "dark" , "bright" )
return s
end
\end{luacode}
\AtBeginDocument{%
\directlua{luatexbase.add_to_callback (
"process_input_buffer", replace_dark_with_bright, "replace_dark_with_bright" )}
}
\usepackage[record, nopostdot,%
nostyles, stylemods={all},% do the adjustments for the longbooktabs styles
]{glossaries-extra}
\AtBeginDocument{%
\GlsXtrLoadResources[selection={all},%
src={glossary},%
sort={en},
sort-field={name},
charset=UTF-8,%
]}
\begin{document}
Always look on the dark side of life.
\gls{replacement}.
\setglossarystyle{altlistgroup}
\printunsrtglossary[type={main}]
\end{document}