我知道以下情况:
探索研究- 允许文本和命令替换。仅适用于 XeLaTeX
简单示例:
\usepackage{xesearch}
\SearchList{list1}{Hello}}{hlw}
任何时候,只要 XeLaTex 文档中出现“hlw”,它就会扩展为“Hello”。可以使用命令代替“Hello”,并且在大多数情况下都有效。
缩写- 允许文本替换。我认为它不会进行命令替换。据我所知,LaTeX 和 LuaLaTeX
简单示例:
\usepackage{abbrevs)
\newabbrev\hlw{Hello}
只要“hlw”出现在 LaTeX 或 LuaLaTeX 文档中,它就会扩展为“Hello”。
鸡化- 通过其“substitutewords”功能。不确定命令替换。文档将其标识为仅 LuaTeX/LuaLaTeX 解决方案。如果您希望“chickenize”您的文档,它还会将文档中的每个单词替换为“chicken”。
字符串-?
字符串-?
lua代码- 允许文本和命令替换。它提供宏(例如 \luaexec 和 \luastring)和环境(例如 luacode 和 luacode*),允许程序员创建可以完全访问 Lua 强大的字符串库的 Lua 函数。当然只有 LuaLaTeX。感谢 Mico 提供的以下答案以及文本和命令替换的示例。
还有哪些替代包?
对于每一个,它只是文本,还是可以用命令替代?
该包可以在哪个 TeX 变体中使用?
每个包中的简单示例是什么样的?
有关的:有没有办法让 xesearch 搜索和替换一个术语,并将替换内容编译为 LaTeX 命令?
有关的:自动格式化 PDFLaTeX 文档中关键字列表中的单词
有关的:乳胶命令后的空格
答案1
LuaLaTeX 嵌入了 Lua 脚本语言,提供了一组强大而灵活的字符串操作函数。通过宏\directlua
和lua代码包,LuaLaTeX 提供了对这些字符串函数的轻松访问。通过使用 LuaLaTeX,可以轻松滚动自己的文本和宏替换例程。
根据 OP 的后续请求,这里有一个 Lua 代码示例,它在整个文档中执行文本和命令替换。(附言:Lua 函数string.gsub
非常强大;此处显示的示例当然不是为了展示 的全部功能和多功能性string.gsub
!)
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function replace_dark_with_bright ( s )
s = string.gsub ( s, "dark" , "bright" )
return s
end
function replace_bf_with_em ( s )
s = string.gsub ( s, "\\textbf" , "\\emph" )
return s
end
\end{luacode}
\AtBeginDocument{%
\directlua{luatexbase.add_to_callback (
"process_input_buffer", replace_dark_with_bright, "replace_dark_with_bright" )}
\directlua{luatexbase.add_to_callback (
"process_input_buffer", replace_bf_with_em , "replace_bf_with_em" )}}
\begin{document}
Always look on the dark side of life.
To \textbf{emphasize} a word.
\end{document}