我们很多人都遇到过这种情况:您正在撰写一篇较长的论文/提案/书籍,可能与多位写作风格或英语风格不同的作者合作,最终导致出现不一致的混乱或大量手动一致性检查。更糟糕的是:在您或其他人忘记您同意某些拼写后,您会一遍又一遍地重复这些操作...
在 latex/tex 中是否存在一种(足够简单的)方法可以让我定义几个常见的错误并搜索文档的整个“内容”,以便在发现时发出警告,甚至只是替换它们?
例如,我可以以某种方式在序言中放入类似的内容吗?
\warn{dataset} % data set
\warn{pretrained} % pre-trained
\warn{neighborhood} % neighbourhood
\warn{home page} % homepage
\warn{Fig.} % Figure
% or even
\replace{dataset}{data set}
\replace{pretrained}{pre-trained}
\replace{neighborhood}{neighbourhood}
\replace{home page}{homepage}
\replace{Fig.}{Figure}
我知道我可以编写一个包含一些grep
或的简单构建脚本sed
(当我足够恼火的时候我已经这样做过了),但是现在我更喜欢一些可以在 sharelatex/overleaf 类似平台上运行的解决方案,所以从 latex 内部开始。
答案1
在 中pdfcsplain
,有\mubyte
\endmubyte
一个已初始化的对,因此您的任务的解决方案非常简单:
\def\replace#1#2{\expandafter \mubyte \csname repl:#1\endcsname #1\endmubyte
\expandafter\def \csname repl:#1\endcsname{#2}}
\replace{dataset}{data set}
\replace{pretrained}{pre-trained}
\replace{neighborhood}{neighbourhood}
\replace{home page}{homepage}
\replace{Fig.}{Figure}
Try dataset or home page. % result: Try data set or homepage.
\bye
pdfcsplain
请注意,当存在名为的文件latexmkrc
且其内容为以下内容时,你可以在 Overleaf 中使用:
$pdflatex = 'pdfcsplain %O %S';
编辑如果你明确需要 LaTeX 解决方案(问题不清楚),那么你可以pdflatex
通过以下方式初始化格式
pdftex -ini -etex -enc pdflatex.ini
然后使用它:如果生成的文件pdflatex.fmt
在当前目录中,那么您可以运行pdftex -fmt pdflatex document
或简单地latex document
。请注意生成格式时的选项:它使用提到的原语和-enc
激活 pdfTeX 的 encTeX 扩展。您的问题的 LaTeX 示例可以是:\mubyte
\endmubyte
\documentclass{article}
\def\replace#1#2{\expandafter \mubyte \csname repl:#1\endcsname #1\endmubyte
\expandafter\def \csname repl:#1\endcsname{#2}}
\replace{dataset}{data set}
\replace{pretrained}{pre-trained}
\replace{neighborhood}{neighbourhood}
\replace{home page}{homepage}
\replace{Fig.}{Figure}
\mubytein=1
\begin{document}
Try dataset or home page. % result: Try data set or homepage.
\end{document}