我已经使用了 xesearch 包https://www.ctan.org/pkg/xesearch?lang=en 探索研究在我的标题中自动替换简写符号:
\usepackage{xesearch}
\SearchList{list1}{Very Long Search Replacement 1}{SRa}
\SearchList{list2}{Very Long Search Replacement 2}{SRb}
将其放入标题栏可进行搜索和替换:
“SRa 和 SRb” 变成
“超长搜索替换 1 和超长搜索替换 2”
在生成的文档中。
太棒了!
但我确实想到,如果我可以让 xesearch 用 LaTeX 命令替换占位符,并在编译时运行它们,那将会很有用,例如:
\usepackage{xesearch}
\SearchList{list1}{\SomeGreatLaTeXCommand[with options]}{SRa}
\SearchList{list2}{\AReallyFantasticLaTeXCommand}{SRb}
因此,将 SRa 放入代码中将导致 \SomeGreatLaTeXCommmand[with options] 被编译,并且 SRb 被编译为 \AReallyFantasticLaTeXCommand
我知道可以用如下方法替代 LaTeX 命令:
\newcommand{\bc}{\begin{center}}
有人知道 xesearch 包的用法吗?如果 xesearch 不能以这种方式工作,是否有其他包可以进行这种类型的自动搜索和替换?有没有办法不用 XeLaTeX 来做到这一点?或者,这是一个非常愚蠢的问题,因为 LaTeX/TEX是一种编程语言?
答案1
是的,可以在替换文本中使用命令。实际上,xesearch
文档中几乎所有示例都使用命令。我还没有尝试查看是否可以使用命令来检查接下来的内容,但诸如此类的事情是\begin{center}
可行的。
更新添加了一个示例,表明并非所有事情都是可能的(至少是开箱即用的):
% compile with xelatex
\documentclass{article}
\usepackage{xesearch}
\usepackage{fontspec}
\usepackage{geometry}
\begin{document}\Huge
\SearchList{bc}{\begin{center}}{bc}
\SearchList{ec}{\end{center}}{ec}
Before
bc
Hello World!
ec
After
\end{document}
% compile with xelatex
\documentclass[varwidth, preview, border=10pt]{standalone}
\usepackage{xesearch}
\usepackage{fontspec}
\usepackage{geometry}
\begin{document}\Huge
\begin{preview}
\SearchList{newlinel}{\\}{nl}
This is some nl nonsensical text.
We may even try nl[30pt] crazy things but it does not\\[30pt] work.
\end{preview}
\end{document}