texlive[60150] Master: graphicscache (3aug21)
commits+karl at tug.org
commits+karl at tug.org
Tue Aug 3 22:44:46 CEST 2021
Revision: 60150
http://tug.org/svn/texlive?view=revision&revision=60150
Author: karl
Date: 2021-08-03 22:44:46 +0200 (Tue, 03 Aug 2021)
Log Message:
-----------
graphicscache (3aug21)
Modified Paths:
--------------
trunk/Master/tlpkg/bin/tlpkg-ctan-check
trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/graphicscache/
trunk/Master/texmf-dist/doc/latex/graphicscache/LICENSE
trunk/Master/texmf-dist/doc/latex/graphicscache/README.md
trunk/Master/texmf-dist/doc/latex/graphicscache/graphicscache.pdf
trunk/Master/texmf-dist/source/latex/graphicscache/
trunk/Master/texmf-dist/source/latex/graphicscache/graphicscache.dtx
trunk/Master/texmf-dist/source/latex/graphicscache/graphicscache.ins
trunk/Master/texmf-dist/tex/latex/graphicscache/
trunk/Master/texmf-dist/tex/latex/graphicscache/graphicscache.sty
trunk/Master/tlpkg/tlpsrc/graphicscache.tlpsrc
Added: trunk/Master/texmf-dist/doc/latex/graphicscache/LICENSE
===================================================================
--- trunk/Master/texmf-dist/doc/latex/graphicscache/LICENSE (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/graphicscache/LICENSE 2021-08-03 20:44:46 UTC (rev 60150)
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2018, Max Schwarz
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Added: trunk/Master/texmf-dist/doc/latex/graphicscache/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/graphicscache/README.md (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/graphicscache/README.md 2021-08-03 20:44:46 UTC (rev 60150)
@@ -0,0 +1,72 @@
+# graphicscache
+
+This LaTeX package provides caching of `\includegraphics` calls, with several
+useful effects:
+
+* Recompilations are much faster (10x speedup observed)
+* Images can be postprocessed with `ghostscript` before inclusion, thus:
+ * Automatic downscaling to specified DPI
+ * Automatic JPEG compression with configurable quality
+ * Much smaller files (e.g. 10MB instead of 150MB)!
+
+Note: Due to the one-by-one invocation of `pdflatex` and `ghostscript` for
+each graphics element, the first compilation is typically slower than usual.
+
+Note: graphicscache needs the `\write18` call (also called shell escape). This
+is a security risk if you have untrusted TeX sources.
+
+graphicscache supports **PDFLaTeX** and **LuaLaTeX**, **XeLaTeX** is not supported.
+
+## Quickstart
+
+Compile the package using
+
+ latex graphicscache.ins
+
+to generate the file `graphicscache.sty`, which you should place in your TeX
+input path. On Unix systems, this can be done by:
+
+ mkdir -p ~/texmf/tex/latex/graphicscache
+ cp graphicscache.sty ~/texmf/tex/latex/graphicscache/
+ texhash
+
+Or just drop the graphicscache.sty next to your TeX document.
+
+Activate caching with
+
+ \usepackage{graphicscache}
+
+and you are finished. Remember to compile your document with `-shell-escape`,
+like
+
+ pdflatex -shell-escape paper.tex
+
+Most LaTeX editors allow you to enable shell escape in their settings.
+
+Your PDF should now re-compile faster and be significantly smaller!
+
+## Releasing
+
+Another feature is creating a "release" tarball containing your TeX sources
+and the downscaled images. **NOTE**: This is not required for using the caching
+& compression features of graphicscache!
+
+Just use the `release.sh` shell script in your source
+directory. In this case it is recommended to place the `graphicscache.sty` file
+in your source tree, since your release target will probably not have it.
+
+ # first copy graphicscache.sty and release.sh into your paper directory
+ cp ...
+
+ # then release!
+ bash release.sh paper.tex
+
+After checking `test_release/submission.pdf`, the file `release.tar` can be uploaded
+to arXiv (they will extract it automatically).
+
+## Documentation
+
+For more information, check the package documentation, which you can generate
+with:
+
+ pdflatex graphicscache.dtx
Property changes on: trunk/Master/texmf-dist/doc/latex/graphicscache/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/graphicscache/graphicscache.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/graphicscache/graphicscache.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/graphicscache/graphicscache.pdf 2021-08-02 23:48:45 UTC (rev 60149)
+++ trunk/Master/texmf-dist/doc/latex/graphicscache/graphicscache.pdf 2021-08-03 20:44:46 UTC (rev 60150)
Property changes on: trunk/Master/texmf-dist/doc/latex/graphicscache/graphicscache.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/graphicscache/graphicscache.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/graphicscache/graphicscache.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/graphicscache/graphicscache.dtx 2021-08-03 20:44:46 UTC (rev 60150)
@@ -0,0 +1,596 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021 by Max Schwarz <max.schwarz at online.de>
+% ---------------------------------------------------------------------------
+% This work may be distributed and/or modified under the
+% conditions of the BSD 3-clause license. See LICENSE for details.
+%
+% The Current Maintainer of this work is Max Schwarz.
+%
+% This work consists of the files graphicscache.dtx and graphicscache.ins
+% and the derived filebase graphicscache.sty.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{graphicscache.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{graphicscache}
+%<*package>
+ [2021/08/02 v0.3 Cache includegraphics calls]
+%</package>
+%
+%<*driver>
+\documentclass[a4paper,11pt]{ydoc}
+\usepackage{ydoc-expl}
+% \usepackage{graphicscache}
+\usepackage[capitalize]{cleveref}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{graphicscache.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v0.1}{2018/10/03}{Initial version}
+% \changes{v0.2}{2021/04/08}{Better compatibility with different graphicx versions}
+% \changes{v0.3}{2021/08/02}{Added cachedir option}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+%
+% \providecommand*{\url}{\texttt}
+% \GetFileInfo{graphicscache.dtx}
+% \title{The \textsf{graphicscache} package}
+% \author{Max Schwarz \\ \url{max.schwarz at online.de}}
+% \date{\fileversion~from \filedate}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% The \texttt{graphicx} package offers the versatile |\includegraphics| command,
+% which offers image transformations like scaling, cropping, rotation, etc.
+% However, these transformations have to be performed on every compilation of
+% the document. Users can avoid this with the |draft| option at the cost of
+% not seeing the images.
+%
+% Furthermore, images are always included as-is with full resolution, even if
+% they are shown at a very small actual size. This increases compilation time
+% again and leads to large output files. A typical solution is to resize the
+% input images to a lower resolution---but here, the user has to manually
+% calculate or guess the required resolution. What we really want is to specify
+% a \textit{document DPI}, which automatically leads to the correct image
+% resolution. This is possible using post-processing tools like ghostscript,
+% but these do not help with compilation times and are typically not applicable
+% for preprint servers or journals which require LaTeX sources.
+%
+% |graphicscache| aims to solve these problems by decoupling the rendering
+% of images from the actual inclusion. Images are rendered to the correct size
+% using a separate |pdflatex| call, post-processed with ghostscript, and then
+% included as PDF. As a bonus, the resulting PDF is cached, resulting in very
+% fast recompilation times.
+%
+% \section{Usage}
+%
+% |graphicscache| requires the usage of the |\write18| call (also called shell
+% escape). For |pdflatex|, you have to specify the |-shell-escape| argument
+% during compilation. After enabling shell-escape, simply call
+%
+% \begin{example}
+% |\usepackage{graphicscache}|
+% \end{example}
+%
+% to enable caching.
+%
+% |graphicscache| overrides the |\includegraphics| command so that you can use
+% it as usual. Internally, it calculates a hash from the |includegraphics|
+% arguments and the package options to generate a cache key.
+% If you change the input image file or the options, the file will be
+% automatically rendered again.
+%
+% \textbf{Note:} The first compilation process might take a while, since the
+% cached PDFs are generated one-by-one.
+%
+% \subsection{Generated files}
+%
+% |graphicscache| will create a folder called |graphicscache| in the compilation
+% directory. Additionally, latex output files under the jobname
+% |graphicscacheout| will be created. All of these files and folders are
+% temporary and can be deleted safely (at the cost of re-creating the cache).
+%
+% \subsection{Package options}
+%
+% \DescribeKey{compress}'=false|flat|jpeg'
+% Specifies the image compression algorithm. If |false|, the ghostscript call
+% is skipped, thus embedding the image at its original resolution and format.
+% If |flat|, the lossless |FlatEncode| algorithm is chosen. Finally, |jpeg|
+% indicates that JPEG encoding using |DCTEncode| is to be performed.
+%
+% \textbf{Note:} In the |flat| case, the images are still downsampled to match
+% the DPI specified using the |dpi| key.
+%
+% \DescribeKey{dpi}'='<number>
+% Controls the image resolution in dots per inch. The default value is 300.
+% This option only takes effect if |compress| is not |false|.
+%
+% \DescribeKey{qfactor}'='<number>
+% This controls the quality parameter of the JPEG encoder (see |compress|).
+% Smaller values give higher quality. The default value is 0.15, which
+% corresponds to the ``Maximum'' setting mentioned by Adobe.
+%
+% \DescribeKey{listing}'=true|false'
+% If enabled, |graphicscache| will write an extra |.graphicscache| file with
+% mappings from |includegraphics| arguments to cache files. This can be used
+% to produce a version of the TeX source code that directly references the
+% PDF files instead of the original sources.
+%
+% \DescribeKey{render}'=true|false'
+% Controls whether rendering is allowed. The default is |true|. If |false|,
+% |graphicscache| is not allowed to create new cache files. Instead, it will
+% attempt to use the appropriate cache file. If it does not exist,
+% |graphicscache| will fall back to |graphicx| in-place rendering.
+% This can be used to perform a final release (see \cref{sec:release}).
+%
+% \DescribeKey{cachedir}'='<dir>
+% This key can be used to move the cache directory to another location.
+% The default value is |graphicscache|.
+%
+% \subsection{Macros}
+%
+% \DescribeMacro{\includegraphics}[args]{path}
+% This behaves exactly like the original |graphicx| |\includegraphics|.
+% However, only a limited number of keys in |args| is supported at the moment:
+% |width|, |height|, |trim|, |clip|, |angle|, |origin|, |keepaspectratio|,
+% |scale|. In addition, you can specify any of the package options above
+% here as well. For example, you might want to disable compression for
+% a particular image with
+%
+% \begin{example}
+% |\includegraphics[width=...,compress=false]{...}|.
+% \end{example}
+%
+% \StopEventually{}
+%
+% \section{Tips \& Tricks}
+% \subsection{Releasing your manuscript}
+% \label{sec:release}
+%
+% In case you want to upload your manuscript to a journal or preprint server,
+% you can use |graphicscache| to make your work easier:
+% \begin{enumerate}
+% \item Use |latexpand| to strip comments and flatten your tex sources into
+% one file (optional).
+% \item Compile the file as usual to generate the cache files.
+% \item Compile the file again with the |-recorder| command line option.
+% Here, we want to hide accesses of the original image files
+% (|render=false|), but changing the package options will change the
+% cache hash. For this purpose, |graphicspath| also reacts to a global
+% definition of |\graphicscache at inhibit|, which has the same effect as
+% |render=false|.
+% \item The generated |.fls| file will contain all cache files that are needed
+% to compile your manuscript. Package them and your |.tex| file.
+% \end{enumerate}
+%
+% This process is automated in the |release.sh| script included in the
+% distribution.
+%
+% \section{Implementation}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+\ProvidesPackage{graphicscache}[2018/10/02 Graphics Cache]
+\RequirePackage{graphicx}
+\RequirePackage{xstring}
+\RequirePackage{filemod}
+\RequirePackage{letltxmacro}
+\RequirePackage{pgfopts}
+\RequirePackage{ifplatform}
+\RequirePackage{pdftexcmds}
+\RequirePackage{ltxcmds}
+\newif\ifgraphicscache at render
+\newif\ifgraphicscache at compress
+\newif\ifgraphicscache at listing
+\newif\ifgraphicscache at hashshortnames
+\def\graphicscache at graphicsargs{}
+\newlength\graphicscache at tmplen
+\newcommand{\graphicscache at addarg}[1]{%
+ \ifx\graphicscache at graphicsargs\empty
+ \edef\graphicscache at graphicsargs{#1}%
+ \else
+ \edef\graphicscache at graphicsargs{\graphicscache at graphicsargs,#1}%
+ \fi
+}
+\pgfkeys{
+ /graphicscache/.cd,
+ render/.is if=graphicscache at render,
+ render=true,
+% \end{macrocode}
+% \begin{macrocode}
+ cachedir/.store in=\graphicscache at cachedir,
+ cachedir={graphicscache},
+% \end{macrocode}
+% \begin{macrocode}
+ compress/.is choice,
+ compress/false/.code={\graphicscache at compressfalse},
+ compress/jpeg/.code={\graphicscache at compresstrue \def\graphicscache at compress@mode{DCTEncode}},
+ compress/flat/.code={\graphicscache at compresstrue \def\graphicscache at compress@mode{FlatEncode}},
+ compress=jpeg,
+% \end{macrocode}
+% \begin{macrocode}
+ dpi/.store in=\graphicscache at dpi,
+ dpi=300,
+% \end{macrocode}
+% \begin{macrocode}
+ qfactor/.store in=\graphicscache at qfactor,
+ qfactor={0.15},
+% \end{macrocode}
+% \begin{macrocode}
+ hashshortnames/.is if=graphicscache at hashshortnames,
+ hashshortnames=false,
+% \end{macrocode}
+% We now define the list of supported graphicx arguments:
+% \begin{macrocode}
+ width/.code={%
+ \setlength\graphicscache at tmplen{#1}%
+ \graphicscache at addarg{width=\the\graphicscache at tmplen}%
+ },
+ height/.code={%
+ \setlength\graphicscache at tmplen{#1}%
+ \graphicscache at addarg{height=\the\graphicscache at tmplen}%
+ },
+ trim/.code={\graphicscache at addarg{trim=#1}},
+ clip/.code={\graphicscache at addarg{clip}},
+ angle/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{angle=\graphicscache at tmp}%
+ },
+ origin/.code={\graphicscache at addarg{origin=#1}},
+ keepaspectratio/.code={\graphicscache at addarg{keepaspectratio}},
+ scale/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{scale=\graphicscache at tmp}%
+ },
+ page/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{page=\graphicscache at tmp}%
+ },
+ listing/.is if=graphicscache at listing,
+ listing=false,
+%
+% adjustbox package
+%
+ frame/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{frame=\graphicscache at tmp}%
+ },
+ valign/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{valign=\graphicscache at tmp}%
+ },
+ raise/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{raise=\graphicscache at tmp}%
+ },
+}
+\ProcessPgfOptions{/graphicscache}\relax
+\ifdefined\graphicscache at inhibit
+ \pgfkeys{/graphicscache/render=false}%
+\fi
+\ifgraphicscache at listing
+ \newwrite\graphicscache at listout
+ \immediate\openout\graphicscache at listout=\jobname.graphicscache
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\graphicscache at dorender}
+% Here, we actually perform the rendering. Sadly, this is quite complex due
+% to cross-platform support.
+% \begin{macrocode}
+\newcommand{\graphicscache at dorender}{%
+ \message{Rendering \graphicscache at outputhash: \graphicscache at fname\space with args: \graphicscache at graphicsargs\space (master file)}%
+ \ifwindows
+ \immediate\write18{md "\graphicscache at cachedir" 2>NUL}%
+ \else
+ \immediate\write18{mkdir -p "\graphicscache at cachedir"}%
+ \fi
+% \end{macrocode}
+% First, render the graphics.
+% \begin{macrocode}
+ \ifwindows
+ \immediate\write18{del /q \graphicscache at cachedir\string\graphicscacheout.pdf}
+ \immediate\write18{pdflatex
+ -jobname graphicscacheout
+ -interaction nonstopmode
+ -output-directory "\graphicscache at cachedir"
+ "\string\documentclass{standalone}
+ \string\usepackage{graphicx}
+ \string\usepackage[export]{adjustbox}
+ \string\begin{document}\string\includegraphics[\graphicscache at graphicsargs]{\graphicscache at fname}\string\end{document}"
+ }%
+ \IfFileExists{\graphicscache at cachedir/graphicscacheout.pdf}{}{%
+ \PackageError{graphicscache}{External pdflatex call failed (see above)}{}%
+ \def\graphicscache at output{}%
+ }
+ \else
+ \immediate\write18{pdflatex
+ -jobname graphicscacheout
+ -interaction nonstopmode
+ -output-directory "\graphicscache at cachedir"
+ '\string\documentclass{standalone}
+ \string\usepackage{graphicx}
+ \string\usepackage[export]{adjustbox}
+ \string\begin{document}\string\includegraphics[\graphicscache at graphicsargs]{\graphicscache at fname}\string\end{document}'
+ > /dev/null || rm "\graphicscache at cachedir/graphicscacheout.pdf"
+ }%
+ \fi
+% \end{macrocode}
+% Now, call ghostscript for compression---if required, otherwise just copy the
+% file.
+% \begin{macrocode}
+ \ifgraphicscache at compress
+ \message{With compression: \graphicscache at compress@mode}%
+ \ifwindows
+ \immediate\write18{mgs
+ -sOutputFile=\graphicscache at output\space
+ -sDEVICE=pdfwrite
+ -dCompatibilityLevel=1.4
+ -dPDFSETTINGS=/prepress
+ -dNOPAUSE -dQUIET -dBATCH
+ -c ".setpdfwrite <<
+ /AutoFilterColorImages false
+ /EncodeColorImages true
+ /ColorImageFilter /\graphicscache at compress@mode\space
+ /ColorImageDict << /ColorTransform 1 /QFactor \graphicscache at qfactor\space /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >>
+ /ColorImageResolution \graphicscache at dpi\space
+ /AutoFilterGrayImages false
+ /EncodeGrayImages true
+ /GrayImageFilter /\graphicscache at compress@mode\space
+ /GrayImageDict << /ColorTransform 1 /QFactor \graphicscache at qfactor\space /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >>
+ /GrayImageResolution \graphicscache at dpi\space
+ >> setdistillerparams"
+ -f \graphicscache at cachedir\string\graphicscacheout.pdf
+ }%
+ \else
+ \immediate\write18{gs
+ -sOutputFile=\graphicscache at output\space
+ -sDEVICE=pdfwrite
+ -dCompatibilityLevel=1.4
+ -dPDFSETTINGS=/prepress
+ -dNOPAUSE -dQUIET -dBATCH
+ -c '.setpdfwrite <<
+ /AutoFilterColorImages false
+ /EncodeColorImages true
+ /ColorImageFilter /\graphicscache at compress@mode\space
+ /ColorImageDict << /ColorTransform 1 /QFactor \graphicscache at qfactor\space /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >>
+ /ColorImageResolution \graphicscache at dpi\space
+ /AutoFilterGrayImages false
+ /EncodeGrayImages true
+ /GrayImageFilter /\graphicscache at compress@mode\space
+ /GrayImageDict << /ColorTransform 1 /QFactor \graphicscache at qfactor\space /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >>
+ /GrayImageResolution \graphicscache at dpi\space
+ >> setdistillerparams'
+ -f \graphicscache at cachedir/graphicscacheout.pdf || rm \graphicscache at output
+ }%
+ \fi
+ \else
+ \message{Direct}%
+ \ifwindows
+ \immediate\write18{
+ copy \graphicscache at cachedir\string\graphicscacheout.pdf \graphicscache at output
+ }%
+ \else
+ \immediate\write18{
+ cp \graphicscache at cachedir/graphicscacheout.pdf \graphicscache at output
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% save original |\includegraphics|
+% \begin{macrocode}
+\LetLtxMacro\graphicscache at includegraphics\includegraphics%
+\newcommand\graphicscache at native{%
+ \expandafter\graphicscache at includegraphics\expandafter[\graphicscache at graphicsargs]{\graphicscache at fname}%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\graphicscache at work}
+% This macro performs the update check: Do we need to render the file again
+% or can we just include the cached version?
+% \begin{macrocode}
+\newcommand{\graphicscache at work}{%
+ \ifgraphicscache at render
+% \end{macrocode}
+% Check if output file exists and is newer than input
+% \begin{macrocode}
+ \filemodcmp{\graphicscache at fname}{\graphicscache at output}{% input is newer
+ \graphicscache at dorender%
+ }{% Output is newer
+ \message{Already have \graphicscache at outputhash: \graphicscache at fname}%
+ }%
+% \end{macrocode}
+% If it still does not exist, we are likely in a strange environment
+% (e.g. tabu). In that case, fall back to original includegraphics.
+% \begin{macrocode}
+ \filemodcmp{\graphicscache at fname}{\graphicscache at output}{% input is newer/output does not exist
+ \graphicscache at native
+ }{% otherwise, use the generated file!
+ \graphicscache at includegraphics{\graphicscache at output}%
+ }%
+ \else
+% \end{macrocode}
+% Here, we just look if the output file exists. If not, fall back to
+% original includegraphics.
+% \begin{macrocode}
+ \IfFileExists{\graphicscache at output}{%
+ \graphicscache at includegraphics{\graphicscache at output}%
+ }{%
+ \PackageWarning{graphicscache}{Could not find cache file \graphicscache at output, for \graphicscache at fname, falling back to native...}{}%
+ \graphicscache at native
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\graphicscache at getfname}
+% This macro resolves base names (i.e. includegraphics arguments with or
+% without extensions) to relative paths.
+% \begin{macrocode}
+\catcode`\*=11
+\newif\ifgraphicscache at exists
+\newcommand{\graphicscache at getfname}[1]{%
+ \ifx\detokenize\@undefined\else
+ \edef\Gin at extensions{\detokenize\expandafter{\Gin at extensions}}%
+ \fi
+ \begingroup
+ \global\graphicscache at existstrue
+ \let\input at path\Ginput at path
+ \ltx at ifpackagelater{graphics}{2017/06/26}{%
+ \set at curr@file{#1}%
+ \expandafter\filename at parse\expandafter{\@curr at file}%
+ \ifx\filename at ext\Gin at gzext
+ \expandafter\filename at parse\expandafter{\filename at base}%
+ \ifx\filename at ext\relax
+ \let\filename at ext\Gin at gzext
+ \else
+ \edef\Gin at ext{\Gin at ext\Gin at sepdefault\Gin at gzext}%
+ \fi
+ \fi
+ }{%
+ \filename at parse{#1}%
+ }%
+ \ifx\filename at ext\relax
+ \@for\Gin at temp:=\Gin at extensions\do{%
+ \ifx\Gin at ext\relax
+ \Gin at getbase\Gin at temp
+ \fi}%
+ \else
+ \Gin at getbase{\Gin at sepdefault\filename at ext}%
+ \ltx at ifpackagelater{graphics}{2017/06/26}{%
+ \ifx\Gin at ext\relax
+ \let\Gin at savedbase\filename at base
+ \let\Gin at savedext\filename at ext
+ \edef\filename at base{\filename at base\Gin at sepdefault\filename at ext}%
+ \let\filename at ext\relax
+ \@for\Gin at temp:=\Gin at extensions\do{%
+ \ifx\Gin at ext\relax
+ \Gin at getbase\Gin at temp
+ \fi}%
+ \ifx\Gin at ext\relax
+ \let\filename at base\Gin at savedbase
+ \let\filename at ext\Gin at savedext
+ \fi
+ \fi
+ }{}%
+ \fi
+ \ifx\Gin at ext\relax
+ \global\graphicscache at existsfalse
+ \else
+ \@ifundefined{Gin at rule@\Gin at ext}%
+ {\global\graphicscache at existsfalse}%
+ {}%
+ \fi
+ \ifgraphicscache at exists
+ \xdef\graphicscache at fname{\Gin at base\Gin at ext}%
+ \fi
+ \endgroup
+}
+\catcode`\*=12
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\includegraphics}
+% Main entry point.
+% \begin{macrocode}
+\renewcommand{\includegraphics}[2][]{%
+ \begingroup
+ \expandarg
+% \end{macrocode}
+% Hash everything!
+% \begin{macrocode}
+ \edef\graphicscache at options{\@nameuse{opt at graphicscache.sty}}%
+ \pgfkeys{/graphicscache/.cd,#1}%
+% \end{macrocode}
+% If we are rendering, we need the actual filename, so that we can check
+% modification times. Otherwise, just assume the file exists, |\includegraphics|
+% will throw an error itself otherwise.
+% \begin{macrocode}
+ \ifgraphicscache at render
+ \graphicscache at getfname{#2}%
+ \else
+ \edef\graphicscache at fname{#2}%
+ \graphicscache at existstrue
+ \fi
+ \ifgraphicscache at exists
+ \ifgraphicscache at hashshortnames
+ \edef\graphicscache at hashedname{#2}%
+ \else
+ \edef\graphicscache at hashedname{\graphicscache at fname}%
+ \fi
+ \edef\graphicscache at outputhash{\pdf at mdfivesum{\graphicscache at options\graphicscache at graphicsargs\graphicscache at hashedname}}%
+ \edef\graphicscache at output{\graphicscache at cachedir/\graphicscache at outputhash.pdf}%
+ \ifgraphicscache at listing
+ \message{graphicscache: includegraphics\{#2\} => \graphicscache at output}%
+ \immediate\write\graphicscache at listout{#2 \graphicscache at fname\space \graphicscache at output}%
+ \fi
+ \graphicscache at work
+ \else
+ \PackageError{graphicscache}{Could not find file #2}{}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\includegraphicscache}
+% \begin{macrocode}
+\newcommand{\includegraphicscache}[3][]{%
+ \begingroup
+ \expandarg
+ \pgfkeys{/graphicscache/.cd,#2}%
+ \includegraphics[#1]{#3}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\endinput
+% \end{macrocode}
+
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+\endinput
Property changes on: trunk/Master/texmf-dist/source/latex/graphicscache/graphicscache.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/graphicscache/graphicscache.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/graphicscache/graphicscache.ins (rev 0)
+++ trunk/Master/texmf-dist/source/latex/graphicscache/graphicscache.ins 2021-08-03 20:44:46 UTC (rev 60150)
@@ -0,0 +1,35 @@
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/graphicscache}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2021 by Max Schwarz <max.schwarz at online.de>
+based on the sty2dtx template by Scott Pakin <scott+dtx at pakin.org>.
+
+This file may be distributed and/or modified under the conditions of
+the BSD 3-clause license (see LICENSE).
+
+\endpreamble
+
+\generate{\file{graphicscache.sty}{\from{graphicscache.dtx}{package}}}
+
+\obeyspaces
+\Msg{***************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* graphicscache.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file graphicscache.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{***************************************************************}
+
+\endbatchfile
Added: trunk/Master/texmf-dist/tex/latex/graphicscache/graphicscache.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/graphicscache/graphicscache.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/graphicscache/graphicscache.sty 2021-08-03 20:44:46 UTC (rev 60150)
@@ -0,0 +1,322 @@
+%%
+%% This is file `graphicscache.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% graphicscache.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2021 by Max Schwarz <max.schwarz at online.de>
+%% based on the sty2dtx template by Scott Pakin <scott+dtx at pakin.org>.
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the BSD 3-clause license (see LICENSE).
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{graphicscache}
+ [2021/08/02 v0.3 Cache includegraphics calls]
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+\ProvidesPackage{graphicscache}[2018/10/02 Graphics Cache]
+\RequirePackage{graphicx}
+\RequirePackage{xstring}
+\RequirePackage{filemod}
+\RequirePackage{letltxmacro}
+\RequirePackage{pgfopts}
+\RequirePackage{ifplatform}
+\RequirePackage{pdftexcmds}
+\RequirePackage{ltxcmds}
+\newif\ifgraphicscache at render
+\newif\ifgraphicscache at compress
+\newif\ifgraphicscache at listing
+\newif\ifgraphicscache at hashshortnames
+\def\graphicscache at graphicsargs{}
+\newlength\graphicscache at tmplen
+\newcommand{\graphicscache at addarg}[1]{%
+ \ifx\graphicscache at graphicsargs\empty
+ \edef\graphicscache at graphicsargs{#1}%
+ \else
+ \edef\graphicscache at graphicsargs{\graphicscache at graphicsargs,#1}%
+ \fi
+}
+\pgfkeys{
+ /graphicscache/.cd,
+ render/.is if=graphicscache at render,
+ render=true,
+ cachedir/.store in=\graphicscache at cachedir,
+ cachedir={graphicscache},
+ compress/.is choice,
+ compress/false/.code={\graphicscache at compressfalse},
+ compress/jpeg/.code={\graphicscache at compresstrue \def\graphicscache at compress@mode{DCTEncode}},
+ compress/flat/.code={\graphicscache at compresstrue \def\graphicscache at compress@mode{FlatEncode}},
+ compress=jpeg,
+ dpi/.store in=\graphicscache at dpi,
+ dpi=300,
+ qfactor/.store in=\graphicscache at qfactor,
+ qfactor={0.15},
+ hashshortnames/.is if=graphicscache at hashshortnames,
+ hashshortnames=false,
+ width/.code={%
+ \setlength\graphicscache at tmplen{#1}%
+ \graphicscache at addarg{width=\the\graphicscache at tmplen}%
+ },
+ height/.code={%
+ \setlength\graphicscache at tmplen{#1}%
+ \graphicscache at addarg{height=\the\graphicscache at tmplen}%
+ },
+ trim/.code={\graphicscache at addarg{trim=#1}},
+ clip/.code={\graphicscache at addarg{clip}},
+ angle/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{angle=\graphicscache at tmp}%
+ },
+ origin/.code={\graphicscache at addarg{origin=#1}},
+ keepaspectratio/.code={\graphicscache at addarg{keepaspectratio}},
+ scale/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{scale=\graphicscache at tmp}%
+ },
+ page/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{page=\graphicscache at tmp}%
+ },
+ listing/.is if=graphicscache at listing,
+ listing=false,
+ frame/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{frame=\graphicscache at tmp}%
+ },
+ valign/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{valign=\graphicscache at tmp}%
+ },
+ raise/.code={%
+ \edef\graphicscache at tmp{#1}%
+ \graphicscache at addarg{raise=\graphicscache at tmp}%
+ },
+}
+\ProcessPgfOptions{/graphicscache}\relax
+\ifdefined\graphicscache at inhibit
+ \pgfkeys{/graphicscache/render=false}%
+\fi
+\ifgraphicscache at listing
+ \newwrite\graphicscache at listout
+ \immediate\openout\graphicscache at listout=\jobname.graphicscache
+\fi
+\newcommand{\graphicscache at dorender}{%
+ \message{Rendering \graphicscache at outputhash: \graphicscache at fname\space with args: \graphicscache at graphicsargs\space (master file)}%
+ \ifwindows
+ \immediate\write18{md "\graphicscache at cachedir" 2>NUL}%
+ \else
+ \immediate\write18{mkdir -p "\graphicscache at cachedir"}%
+ \fi
+ \ifwindows
+ \immediate\write18{del /q \graphicscache at cachedir\string\graphicscacheout.pdf}
+ \immediate\write18{pdflatex
+ -jobname graphicscacheout
+ -interaction nonstopmode
+ -output-directory "\graphicscache at cachedir"
+ "\string\documentclass{standalone}
+ \string\usepackage{graphicx}
+ \string\usepackage[export]{adjustbox}
+ \string\begin{document}\string\includegraphics[\graphicscache at graphicsargs]{\graphicscache at fname}\string\end{document}"
+ }%
+ \IfFileExists{\graphicscache at cachedir/graphicscacheout.pdf}{}{%
+ \PackageError{graphicscache}{External pdflatex call failed (see above)}{}%
+ \def\graphicscache at output{}%
+ }
+ \else
+ \immediate\write18{pdflatex
+ -jobname graphicscacheout
+ -interaction nonstopmode
+ -output-directory "\graphicscache at cachedir"
+ '\string\documentclass{standalone}
+ \string\usepackage{graphicx}
+ \string\usepackage[export]{adjustbox}
+ \string\begin{document}\string\includegraphics[\graphicscache at graphicsargs]{\graphicscache at fname}\string\end{document}'
+ > /dev/null || rm "\graphicscache at cachedir/graphicscacheout.pdf"
+ }%
+ \fi
+ \ifgraphicscache at compress
+ \message{With compression: \graphicscache at compress@mode}%
+ \ifwindows
+ \immediate\write18{mgs
+ -sOutputFile=\graphicscache at output\space
+ -sDEVICE=pdfwrite
+ -dCompatibilityLevel=1.4
+ -dPDFSETTINGS=/prepress
+ -dNOPAUSE -dQUIET -dBATCH
+ -c ".setpdfwrite <<
+ /AutoFilterColorImages false
+ /EncodeColorImages true
+ /ColorImageFilter /\graphicscache at compress@mode\space
+ /ColorImageDict << /ColorTransform 1 /QFactor \graphicscache at qfactor\space /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >>
+ /ColorImageResolution \graphicscache at dpi\space
+ /AutoFilterGrayImages false
+ /EncodeGrayImages true
+ /GrayImageFilter /\graphicscache at compress@mode\space
+ /GrayImageDict << /ColorTransform 1 /QFactor \graphicscache at qfactor\space /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >>
+ /GrayImageResolution \graphicscache at dpi\space
+ >> setdistillerparams"
+ -f \graphicscache at cachedir\string\graphicscacheout.pdf
+ }%
+ \else
+ \immediate\write18{gs
+ -sOutputFile=\graphicscache at output\space
+ -sDEVICE=pdfwrite
+ -dCompatibilityLevel=1.4
+ -dPDFSETTINGS=/prepress
+ -dNOPAUSE -dQUIET -dBATCH
+ -c '.setpdfwrite <<
+ /AutoFilterColorImages false
+ /EncodeColorImages true
+ /ColorImageFilter /\graphicscache at compress@mode\space
+ /ColorImageDict << /ColorTransform 1 /QFactor \graphicscache at qfactor\space /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >>
+ /ColorImageResolution \graphicscache at dpi\space
+ /AutoFilterGrayImages false
+ /EncodeGrayImages true
+ /GrayImageFilter /\graphicscache at compress@mode\space
+ /GrayImageDict << /ColorTransform 1 /QFactor \graphicscache at qfactor\space /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >>
+ /GrayImageResolution \graphicscache at dpi\space
+ >> setdistillerparams'
+ -f \graphicscache at cachedir/graphicscacheout.pdf || rm \graphicscache at output
+ }%
+ \fi
+ \else
+ \message{Direct}%
+ \ifwindows
+ \immediate\write18{
+ copy \graphicscache at cachedir\string\graphicscacheout.pdf \graphicscache at output
+ }%
+ \else
+ \immediate\write18{
+ cp \graphicscache at cachedir/graphicscacheout.pdf \graphicscache at output
+ }%
+ \fi
+ \fi
+}
+\LetLtxMacro\graphicscache at includegraphics\includegraphics%
+\newcommand\graphicscache at native{%
+ \expandafter\graphicscache at includegraphics\expandafter[\graphicscache at graphicsargs]{\graphicscache at fname}%
+}
+\newcommand{\graphicscache at work}{%
+ \ifgraphicscache at render
+ \filemodcmp{\graphicscache at fname}{\graphicscache at output}{% input is newer
+ \graphicscache at dorender%
+ }{% Output is newer
+ \message{Already have \graphicscache at outputhash: \graphicscache at fname}%
+ }%
+ \filemodcmp{\graphicscache at fname}{\graphicscache at output}{% input is newer/output does not exist
+ \graphicscache at native
+ }{% otherwise, use the generated file!
+ \graphicscache at includegraphics{\graphicscache at output}%
+ }%
+ \else
+ \IfFileExists{\graphicscache at output}{%
+ \graphicscache at includegraphics{\graphicscache at output}%
+ }{%
+ \PackageWarning{graphicscache}{Could not find cache file \graphicscache at output, for \graphicscache at fname, falling back to native...}{}%
+ \graphicscache at native
+ }%
+ \fi
+}
+\catcode`\*=11
+\newif\ifgraphicscache at exists
+\newcommand{\graphicscache at getfname}[1]{%
+ \ifx\detokenize\@undefined\else
+ \edef\Gin at extensions{\detokenize\expandafter{\Gin at extensions}}%
+ \fi
+ \begingroup
+ \global\graphicscache at existstrue
+ \let\input at path\Ginput at path
+ \ltx at ifpackagelater{graphics}{2017/06/26}{%
+ \set at curr@file{#1}%
+ \expandafter\filename at parse\expandafter{\@curr at file}%
+ \ifx\filename at ext\Gin at gzext
+ \expandafter\filename at parse\expandafter{\filename at base}%
+ \ifx\filename at ext\relax
+ \let\filename at ext\Gin at gzext
+ \else
+ \edef\Gin at ext{\Gin at ext\Gin at sepdefault\Gin at gzext}%
+ \fi
+ \fi
+ }{%
+ \filename at parse{#1}%
+ }%
+ \ifx\filename at ext\relax
+ \@for\Gin at temp:=\Gin at extensions\do{%
+ \ifx\Gin at ext\relax
+ \Gin at getbase\Gin at temp
+ \fi}%
+ \else
+ \Gin at getbase{\Gin at sepdefault\filename at ext}%
+ \ltx at ifpackagelater{graphics}{2017/06/26}{%
+ \ifx\Gin at ext\relax
+ \let\Gin at savedbase\filename at base
+ \let\Gin at savedext\filename at ext
+ \edef\filename at base{\filename at base\Gin at sepdefault\filename at ext}%
+ \let\filename at ext\relax
+ \@for\Gin at temp:=\Gin at extensions\do{%
+ \ifx\Gin at ext\relax
+ \Gin at getbase\Gin at temp
+ \fi}%
+ \ifx\Gin at ext\relax
+ \let\filename at base\Gin at savedbase
+ \let\filename at ext\Gin at savedext
+ \fi
+ \fi
+ }{}%
+ \fi
+ \ifx\Gin at ext\relax
+ \global\graphicscache at existsfalse
+ \else
+ \@ifundefined{Gin at rule@\Gin at ext}%
+ {\global\graphicscache at existsfalse}%
+ {}%
+ \fi
+ \ifgraphicscache at exists
+ \xdef\graphicscache at fname{\Gin at base\Gin at ext}%
+ \fi
+ \endgroup
+}
+\catcode`\*=12
+\renewcommand{\includegraphics}[2][]{%
+ \begingroup
+ \expandarg
+ \edef\graphicscache at options{\@nameuse{opt at graphicscache.sty}}%
+ \pgfkeys{/graphicscache/.cd,#1}%
+ \ifgraphicscache at render
+ \graphicscache at getfname{#2}%
+ \else
+ \edef\graphicscache at fname{#2}%
+ \graphicscache at existstrue
+ \fi
+ \ifgraphicscache at exists
+ \ifgraphicscache at hashshortnames
+ \edef\graphicscache at hashedname{#2}%
+ \else
+ \edef\graphicscache at hashedname{\graphicscache at fname}%
+ \fi
+ \edef\graphicscache at outputhash{\pdf at mdfivesum{\graphicscache at options\graphicscache at graphicsargs\graphicscache at hashedname}}%
+ \edef\graphicscache at output{\graphicscache at cachedir/\graphicscache at outputhash.pdf}%
+ \ifgraphicscache at listing
+ \message{graphicscache: includegraphics\{#2\} => \graphicscache at output}%
+ \immediate\write\graphicscache at listout{#2 \graphicscache at fname\space \graphicscache at output}%
+ \fi
+ \graphicscache at work
+ \else
+ \PackageError{graphicscache}{Could not find file #2}{}%
+ \fi
+ \endgroup
+}
+\newcommand{\includegraphicscache}[3][]{%
+ \begingroup
+ \expandarg
+ \pgfkeys{/graphicscache/.cd,#2}%
+ \includegraphics[#1]{#3}%
+ \endgroup
+}
+\endinput
+%%
+%% End of file `graphicscache.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/graphicscache/graphicscache.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check 2021-08-02 23:48:45 UTC (rev 60149)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check 2021-08-03 20:44:46 UTC (rev 60150)
@@ -369,7 +369,7 @@
grabbox gradientframe gradstudentresume grafcet grant
graph35 graphbox graphics
graphics-cfg graphics-def graphics-pln
- graphicx-psmin graphicxbox graphicxpsd
+ graphicx-psmin graphicscache graphicxbox graphicxpsd
graphpaper graphviz grayhints greek-fontenc greek-inputenc
greekdates greektex greektonoi greenpoint gregoriotex
grfext grffile grfpaste
Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2021-08-02 23:48:45 UTC (rev 60149)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2021-08-03 20:44:46 UTC (rev 60150)
@@ -575,6 +575,7 @@
depend gmverb
depend grabbox
depend graphbox
+depend graphicscache
depend graphicx-psmin
depend graphicxbox
depend graphpaper
Added: trunk/Master/tlpkg/tlpsrc/graphicscache.tlpsrc
===================================================================
More information about the tex-live-commits
mailing list.