优化同一 .svg 文件的多个副本的渲染

优化同一 .svg 文件的多个副本的渲染

我正在使用svg包将旗帜表情符号作为 .svg 文件包含到我的文本中\includesvg{}。但是,由于我需要渲染许多相同的旗帜,并且每个旗帜都需要花费大量时间,因此它会达到 Overleaf 编译时间限制。有没有办法优化相同 .svg 文件的重复渲染,以便它不会超时?不幸的是,我无法使用,因为\emoji我正在使用的类文件需要 pdflatex 作为编译器。

\documentclass{article}

% SVG figures
\usepackage{svg}
\def\sweflag{\includesvg[width=1.5em]{flags/se}}

\begin{document}

Sweden is great! \sweflag\sweflag\sweflag\sweflag\sweflag\sweflag\sweflag\sweflag\sweflag

\end{document}

下载瑞典国旗 .svg。

答案1

Pkgxsavebox可能会有帮助:

time pdflatex --shell-escape swedenXsbox.tex
...
real    0m0.551s
user    0m0.510s
sys 0m0.039s

swedenXsbox.tex

\documentclass{article}

\usepackage{pgffor}

% SVG figures
\usepackage{svg}

\usepackage{xsavebox}
\xsbox{sweflag}{\includesvg[width=1.5em]{flags/se}}

\begin{document}

Sweden is great!
\foreach \i in {1,...,600} {\thesweflag\space}

\end{document}

然而

time pdflatex --shell-escape swedenDef.tex
...
real    0m2.733s
user    0m2.598s
sys 0m0.119s

swedenDef.tex

\documentclass{article}

\usepackage{pgffor}

% SVG figures
\usepackage{svg}
\def\sweflag{\includesvg[width=1.5em]{flags/se}}

\begin{document}

Sweden is great!
\foreach \i in {1,...,600} {\sweflag\space}

\end{document}

相关内容