以下 MCE 的编译是非常慢:在我的“普通”电脑上大约需要 14 秒。(当然,我实际的用例确实加载了不同的方言,而不是多次加载同一种方言。)
\documentclass{article}
\usepackage{tcolorbox}
\usepackage{biolinum}
\tcbuselibrary{listings}
\newtcblisting{mytcblisting}{%
listing options={%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
alsolanguage={[LaTeX]TeX},%
}%
}
\begin{document}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\end{document}
有趣的是,编译速度没那么慢:
如果
biolinum
没有加载(大约 8 秒),如果方言与
LaTeX
另一种方言不同,不是基于基础方言(LaTeX
是TeX
基于TeX
的基础方言 的方言common
,如 1454 行所示lstlang3.sty
)。以下 MCE 显示了这一点:- 编译时间大约为 11 秒,
- 如果
\lstdefinelanguage[foo]{TeX}[LaTeX]{TeX}
替换为\lstdefinelanguage[foo]{TeX}
,编译时间约为4秒, - 如果另外
biolinum
没有加载,编译时间大约为 2 秒。
这是怎么回事?
\documentclass{article}
\usepackage{tcolorbox}
\usepackage{biolinum}
\tcbuselibrary{listings}
\lstdefinelanguage[foo]{TeX}[LaTeX]{TeX}%
{%
morekeywords={%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
},%
morekeywords=[2]{%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
},%
morekeywords=[3]{%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
},%
morekeywords=[4]{%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,foo,%
},%
sensitive,%
}[keywords,tex,comments]%
\newtcblisting{mytcblisting}{%
listing options={
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
alsolanguage={[foo]TeX},%
}
}
\begin{document}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\begin{mytcblisting}
Foo
\end{mytcblisting}
\end{document}