重命名现有的 Latex 命令

重命名现有的 Latex 命令

我必须合并两个存储库,每个存储库都包含大量 LaTeX 文件。每个存储库都包含大量宏文件。一些宏在存储库之间共享。

但是,在这些共享宏中,有些显示的内容不一样。由于文件很多,我想知道是否有一种简单的方法可以重命名冲突的宏,而无需进行一些难看的搜索替换。

出于同样的原因,列出的解决方案这里这将非常耗时,所以我想避免这种情况。

答案1

我会执行以下操作。

假设第一个项目有f1.texf2.tex等等,第二个项目有s1.texs2.tex等等。我们希望能够以任意顺序包含它们。假设两个项目中定义不同的冲突宏称为\foo\bar

\documentclass[...]{...}
% packages...
\newcommand{\firstfoo}{<first definition of \foo>}
\newcommand{\secondfoo}{<second definition of \foo>}
\newcommand{\firstbar}{<first definition of \bar>}
\newcommand{\secondbar}{<second definition of \bar>}
\newcommand{\firstinput}[1]{%
    \let\foo\firstfoo%
    \let\bar\firstbar%
    \input{#1}}
\newcommand{\secondinput}[1]{%
    \let\foo\secondfoo%
    \let\bar\secondbar%
    \input{#1}}

\begin{document}
\firstinput{f1.tex}
\secondinput{s1.tex}
\firstinput{f2.tex}
% etc. ...
\end{document}

这只是一个框架,我还没有测试过,可能会有错误。

具有更多 TeX 知识的人可以提出通用解决方案n你可以做类似这样的项目

\multipledef{\foo}{3}{<first def>}{<second def>}{<third def>}

其中 3 是定义的数量,

\multipleinput{2}{s3.tex}

其中 2 表示“使用第二个定义”,但这超出了我的知识范围。

相关内容