Wie dem auch sei, wenn sich jemand die Sache genauer ansehen möchte, könnten folgende (mehr oder weniger durch erratisches Probieren und zufälliges Codebetrachten entstandene) Beobachtungen relevant sein.
Ein großer Teil der Laufzeit scheint von Code zu kommen, den mathastext zu \everymath hinzufügt. Jedenfalls geht
\documentclass{scrbook}
\usepackage[no-math]{fontspec}
\setmainfont{Latin Modern Roman}
\usepackage{lipsum}
\usepackage{mathastext}
\usepackage{scrlayer-scrpage}
\usepackage{luacode}
\begin{document}
\makeatletter
\everymath{}
\makeatother
\begin{luacode}
for x=1,9 do
tex.sprint(\luastring{\lipsum[1-150]})
end
\end{luacode}
\end{document}
wieder schneller.
Der problematische Code scheint \mst@fixmathfonts{} zu sein. Denn auch
\documentclass{scrbook}
\usepackage[no-math]{fontspec}
\setmainfont{Latin Modern Roman}
\usepackage{lipsum}
\usepackage{mathastext}
\usepackage{scrlayer-scrpage}
\usepackage{luacode}
\begin{document}
\makeatletter
\def\mst@fixmathfonts{}
\makeatother
\begin{luacode}
for x=1,9 do
tex.sprint(\luastring{\lipsum[1-150]})
end
\end{luacode}
\end{document}
kompiliert bei mir flugs.
\mst@fixmathfonts wird wie folgt definiert und nur bei LuaLaTeX zu \everymath hinzugefügt
\begingroup
\catcode`N 12
\catcode`O 12
\catcode`D 12
\catcode`E 12
\lowercase{\gdef\mst@fixmathfonts@ #1=NODE;#2#3\relax #4\@empty #5}%
{\ifx#2\empty\else\font\mst@mathfont=#1=base;#2#3\relax#5=\mst@mathfont\fi}
\lowercase{\gdef\MTfixmathfonts
{\expandafter\mst@fixmathfonts@
\fontname\textfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
{\textfont\symmtoperatorfont}%
\expandafter\mst@fixmathfonts@
\fontname\scriptfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
{\scriptfont\symmtoperatorfont}%
\expandafter\mst@fixmathfonts@
\fontname\scriptscriptfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
{\scriptscriptfont\symmtoperatorfont}%
\expandafter\mst@fixmathfonts@
\fontname\textfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
{\textfont\symmtletterfont}%
\expandafter\mst@fixmathfonts@
\fontname\scriptfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
{\scriptfont\symmtletterfont}%
\expandafter\mst@fixmathfonts@
\fontname\scriptscriptfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
{\scriptscriptfont\symmtletterfont}%
}%
}%
\endgroup
\ifmst@LuaTeX
\everymath\expandafter{\the\everymath\mst@fixmathfonts}%
\everydisplay\expandafter{\the\everydisplay\mst@fixmathfonts}%
\fi
\newcommand*\MTfixfonts{\let\mst@fixmathfonts\MTfixmathfonts}%
\newcommand*\MTdonotfixfonts{\let\mst@fixmathfonts\empty}%
\MTfixfonts
Es ist per se nicht weiter verwunderlich, dass Code, der in jedem Mathemodus ausgeführt wird, die Übersetzung langsamer macht. Der Unterschied, den es bei MikTeX macht, ist natürlich schon enorm und vielleicht ist da noch etwas zu holen.
A priori ist mir auch nicht klar, warum scrlayer-scrpage für zusätzliche Mathemodus-Aufrufe sorgt, was hier ja letztendlich die Übersetzungszeit beeinflusst. Allerdings werden in TeX ja einige Dinge über den Mathemodus geregelt, von denen man das nicht unbedingt denken würde. Aber vielleicht ist auch hier Potenzial für Einsparungen. (Wobei das vielleicht nur theoretisch ist, da in dem Beispiel hier scrlayer-scrpage nicht großartig zum Einsatz kommt. Ich kann mir vorstellen, dass es weniger Einsparpotenzial gibt, wenn scrlayer-scrpage echt genutzt wird.)
Wie dem auch sei, wenn sich jemand die Sache genauer ansehen möchte, könnten folgende (mehr oder weniger durch erratisches Probieren und zufälliges Codebetrachten entstandene) Beobachtungen relevant sein.
Ein großer Teil der Laufzeit scheint von Code zu kommen, den `mathastext` zu `\everymath` hinzufügt. Jedenfalls geht
```
\documentclass{scrbook}
\usepackage[no-math]{fontspec}
\setmainfont{Latin Modern Roman}
\usepackage{lipsum}
\usepackage{mathastext}
\usepackage{scrlayer-scrpage}
\usepackage{luacode}
\begin{document}
\makeatletter
\everymath{}
\makeatother
\begin{luacode}
for x=1,9 do
tex.sprint(\luastring{\lipsum[1-150]})
end
\end{luacode}
\end{document}
```
wieder schneller.
Der problematische Code scheint `\mst@fixmathfonts{}` zu sein. Denn auch
```
\documentclass{scrbook}
\usepackage[no-math]{fontspec}
\setmainfont{Latin Modern Roman}
\usepackage{lipsum}
\usepackage{mathastext}
\usepackage{scrlayer-scrpage}
\usepackage{luacode}
\begin{document}
\makeatletter
\def\mst@fixmathfonts{}
\makeatother
\begin{luacode}
for x=1,9 do
tex.sprint(\luastring{\lipsum[1-150]})
end
\end{luacode}
\end{document}
```
kompiliert bei mir flugs.
`\mst@fixmathfonts` wird wie folgt definiert und nur bei LuaLaTeX zu `\everymath` hinzugefügt
```
\begingroup
\catcode`N 12
\catcode`O 12
\catcode`D 12
\catcode`E 12
\lowercase{\gdef\mst@fixmathfonts@ #1=NODE;#2#3\relax #4\@empty #5}%
{\ifx#2\empty\else\font\mst@mathfont=#1=base;#2#3\relax#5=\mst@mathfont\fi}
\lowercase{\gdef\MTfixmathfonts
{\expandafter\mst@fixmathfonts@
\fontname\textfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
{\textfont\symmtoperatorfont}%
\expandafter\mst@fixmathfonts@
\fontname\scriptfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
{\scriptfont\symmtoperatorfont}%
\expandafter\mst@fixmathfonts@
\fontname\scriptscriptfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
{\scriptscriptfont\symmtoperatorfont}%
\expandafter\mst@fixmathfonts@
\fontname\textfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
{\textfont\symmtletterfont}%
\expandafter\mst@fixmathfonts@
\fontname\scriptfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
{\scriptfont\symmtletterfont}%
\expandafter\mst@fixmathfonts@
\fontname\scriptscriptfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
{\scriptscriptfont\symmtletterfont}%
}%
}%
\endgroup
\ifmst@LuaTeX
\everymath\expandafter{\the\everymath\mst@fixmathfonts}%
\everydisplay\expandafter{\the\everydisplay\mst@fixmathfonts}%
\fi
\newcommand*\MTfixfonts{\let\mst@fixmathfonts\MTfixmathfonts}%
\newcommand*\MTdonotfixfonts{\let\mst@fixmathfonts\empty}%
\MTfixfonts
```
Es ist per se nicht weiter verwunderlich, dass Code, der in jedem Mathemodus ausgeführt wird, die Übersetzung langsamer macht. Der Unterschied, den es bei MikTeX macht, ist natürlich schon enorm und vielleicht ist da noch etwas zu holen.
A priori ist mir auch nicht klar, warum `scrlayer-scrpage` für zusätzliche Mathemodus-Aufrufe sorgt, was hier ja letztendlich die Übersetzungszeit beeinflusst. Allerdings werden in TeX ja einige Dinge über den Mathemodus geregelt, von denen man das nicht unbedingt denken würde. Aber vielleicht ist auch hier Potenzial für Einsparungen. (Wobei das vielleicht nur theoretisch ist, da in dem Beispiel hier `scrlayer-scrpage` nicht großartig zum Einsatz kommt. Ich kann mir vorstellen, dass es weniger Einsparpotenzial gibt, wenn `scrlayer-scrpage` echt genutzt wird.)