我有一个包含大量 (790) 图表的文档,其中很多都是带有各种标签的小树。我已将图表外部化以缩短编译时间 (25 分钟)。但是,很多 (94) 图表出现了多次 (最多 19 次)。实际上有 199 个唯一图表 (根据 md5 计算):
cat *.md5 | sort | uniq | wc -l
199
因此,我想自动检测相同的图形并确保它们只编译一次。许多图形都是由宏生成的,例如
\newcommand{\op}[1]{
\foreach \letters in {#1} {
\StrLeft{\letters}{1}[\firstletter]
\StrRight{\letters}{1}[\lastletter]
\IfEqCase{\lastletter}{%
{a}{\red}%
{b}{\blue}%
{c}{\green}%
{f}{\bf}%
}%
\hspace{-.1mm}
\IfEqCase{\firstletter}{%
{l}{\prec}%
{m}{\prec\hspace*{-.27cm}\succ}%
{r}{\succ}%
{o}{\odot}%
{*}{\color{gray}\prec}%
{n}{\color{white}\prec}%
} \hspace{-.1mm}
}
}
\newcommand{\compoR}[2]{
\begin{tikzpicture}[baseline=-.5cm, level 1/.style={sibling distance = .8cm, level distance = .6cm}, level 2/.style={sibling distance = .8cm, level distance = .5cm}]
\node [rectangle, draw] {$\op{#1}$}
child {node {}}
child {node [rectangle, draw] {$\op{#2}$}
child {node {}}
child {node {}}
}
;
\end{tikzpicture}
} % right composition
\compoR{r,l}{r,l}
这样就可以像在文本中一样描述它们,从而得到如下方程
\compoR{l,l}{*,*} = \compoR{l,r}{*,l} + \compoR{l,r}{*,r}
这样的方程式有很多,这就是为什么我们有这么多重复的数字。
现在,如果可以根据 MD5 值来命名数字,例如
这可以解决我的问题,但我做不到。由于数字太多,我不想手动进行重复数据删除。我想知道我是否忽略了其他方法?