不使用文本编辑器,在编译之前使用正则表达式替换文本

不使用文本编辑器,在编译之前使用正则表达式替换文本

我想用某些特定字符串替换我的 tex 文件中的某些文本(无命令)。这将在不修改实际源文件的情况下发生(如果可能)。因此,我不想使用某些 bash/shell 脚本或文本编辑器替换功能。

是否有任何命令/工具箱可以执行此操作?我看到有一个名为的包l3regex,不幸的是我不知道如何使用 tex 命令,甚至不知道这是否是一个适合此目的的包。

抱歉,我说得不够准确。下面是一个例子。

\documentclass{article}  
\theUltraCoolRegExpTool{oldRegexp}{newRegexp}
\begin{document}  

\include{file1.tex}
\include{file2.tex}

This here is very long text which also has some formulas $a_{ij} = b*x^2$.

\end{document}  

在这里,我想使用正则表达式替换a_{ij}X^{ij}或者可能是包含的文件中的其他文本。

答案1

l3regex可以将正则表达式应用于提供的标记列表,但更难的部分是可靠地应用任何对文档中自由出现的文本而不是作为某些命令的参数的文本进行操作。

在简单的情况下这是可能的,但可能与实际文档中使用的包不兼容。

因此,尽管你说你不想要 bash 脚本,但我提供这个 bash 脚本,它确实不是编辑(甚至保存)修改后的文档,只需将其导入到乳胶中即可。

给定

\documentclass{article}  
%\theUltraCoolRegExpTool{oldRegexp}{newRegexp}
\begin{document}  

%\include{file1.tex}
%\include{file2.tex}

This here is very long text which also has some formulas $a_{ij} = b*x^2$.


second para.

\end{document} 

命令行

 sed -e "s/a_{ij}/x^{ij}/g" regex.tex  | pdflatex  --jobname=regex \\relax

生产

在此处输入图片描述

相关内容