使用 bib2gls 创建词汇表时处理 luatex 回调函数

使用 bib2gls 创建词汇表时处理 luatex 回调函数

在我的项目中,我正在寻找简单但自动化的字符串替换。为此,我遇到了这个问题及其答案:

哪些软件包为 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}

在此处输入图片描述

相关内容