我必须合并两个存储库,每个存储库都包含大量 LaTeX 文件。每个存储库都包含大量宏文件。一些宏在存储库之间共享。
但是,在这些共享宏中,有些显示的内容不一样。由于文件很多,我想知道是否有一种简单的方法可以重命名冲突的宏,而无需进行一些难看的搜索替换。
出于同样的原因,列出的解决方案这里这将非常耗时,所以我想避免这种情况。
答案1
我会执行以下操作。
假设第一个项目有f1.tex
,f2.tex
等等,第二个项目有s1.tex
,s2.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 表示“使用第二个定义”,但这超出了我的知识范围。