删除大量 tikz 图形的重复项

删除大量 tikz 图形的重复项

我有一个包含大量 (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 值来命名数字,例如

通过 MD5 和命名外部图像

这可以解决我的问题,但我做不到。由于数字太多,我不想手动进行重复数据删除。我想知道我是否忽略了其他方法?

相关内容