summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-05-28 22:01:24 +0000
committerKarl Berry <karl@freefriends.org>2020-05-28 22:01:24 +0000
commit18bba653e4b29ba58a75d6ce516c7203834bb769 (patch)
treed9f06b4e042bbbde8e101065c91be2154b3e8360 /Master/texmf-dist/tex/latex
parent0893837b836c0bc724438be1b006cb3fa88a5338 (diff)
tile-graphic (28may20)
git-svn-id: svn://tug.org/texlive/trunk@55325 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/tile-graphic/tile-graphic.sty356
1 files changed, 356 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tile-graphic/tile-graphic.sty b/Master/texmf-dist/tex/latex/tile-graphic/tile-graphic.sty
new file mode 100644
index 00000000000..577161d6c46
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tile-graphic/tile-graphic.sty
@@ -0,0 +1,356 @@
+%%
+%% This is file `tile-graphic.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tile-graphic.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% tile-graphic.sty package, %%
+%% Copyright (C) 2020 %%
+%% dpstory@uakron.edu %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+\ProvidesPackage{tile-graphic}
+ [2020/05/27 v1.0.1 Tile a graphic (dps)]
+
+\RequirePackage{xkeyval}
+\newif\if@wrttofiles\@wrttofilesfalse
+\DeclareOptionX{wrttofiles}{\@wrttofilestrue}
+\DeclareOptionX{!wrttofiles}{\@wrttofilesfalse}
+\newif\if@packagefiles \@packagefilestrue
+\DeclareOptionX{packagefiles}{\@packagefilestrue}
+\DeclareOptionX{!packagefiles}{\@packagefilesfalse}
+\define@choicekey*+{tile-graphic.sty}{pdfcreator}[\val\nr]%
+ {pdflatex,lualatex,xelatex,ps2pdf,distiller}{%
+ \edef\tg@case{\nr}%
+ \ifcase\nr\relax
+ \def\tg@pdfcreator@app{pdflatex}\or
+ \def\tg@pdfcreator@app{lualatex}\or
+ \def\tg@pdfcreator@app{xelatex}\or
+ \def\tg@pdfcreator@app{ps2pdf}\or
+ \def\tg@pdfcreator@app{acrodist}\fi
+}{\PackageWarning{tile-graphics}%
+ {Bad choice for pdfcreator, permissible values\MessageBreak
+ are pdflatex, lualatex, xelatex, ps2pdf, and\MessageBreak
+ distiller.\MessageBreak Using the default pdflatex}}
+\def\tg@pdfcreator@app{pdflatex}\def\tg@case{0}
+\ProcessOptionsX\relax
+\edef\tg@restoreCats{%
+ \catcode`\noexpand\"=\the\catcode`\"\relax
+ \catcode`\noexpand\,=\the\catcode`\,\relax
+ \catcode`\noexpand\_=\the\catcode`\_\relax
+}
+\@makeother\"\@makeother\,\@makeother\_
+\RequirePackage{shellesc}
+\RequirePackage{web}
+\RequirePackage{graphicx}
+\RequirePackage{multido}
+\newif\if@wrtorpkg \@wrtorpkgfalse
+\if@wrttofiles
+ \@wrtorpkgtrue
+\else
+ \if@packagefiles
+ \@wrtorpkgtrue
+ \fi
+\fi
+\newif\iftg@direct \tg@directtrue
+\newif\iftgfolder \tgfolderfalse
+\ifnum\tg@case>\tw@\relax\tg@directfalse\fi
+\newif\ifpassthruTG \passthruTGtrue
+\newdimen\tg@dima
+\newdimen\tg@dimb
+\newbox\tg@box
+\newcount\tg@Cnt
+\def\tg@rmslash#1/{\def\tgInFolder{#1}}%
+\let\tgInFolder\@empty
+\def\sysdel#1{\def\tg@sysdel{#1\space}}
+\sysdel{del}
+\def\syscopy#1{\def\tg@syscopy{#1\space}}
+\syscopy{copy}
+\def\sysmove#1{\def\tg@sysmove{#1\space}}
+\sysmove{move}
+\def\pkgappArgs#1{\def\pkg@ppArgs##1{#1}}
+\pkgappArgs{#1}
+\def\tileappArgs#1{\def\tile@ppArgs##1{#1}}
+\tileappArgs{#1}
+\def\latexappArgs#1{\def\latex@ppArgs##1{#1}}
+\latexappArgs{#1}
+\def\dvipsappArgs#1{\def\dvips@ppArgs##1{#1}}
+\dvipsappArgs{#1}
+\providecommand{\definePath}[1]{\def\ef@ctrlName{#1}%
+ \hyper@normalise\ef@definePath}
+\def\ef@definePath#1{\expandafter\xdef\ef@ctrlName{#1}}
+\def\fullPathToSource{\definePath{\tg@fullPathToSource}}
+\let\tg@fullPathToSource\@empty
+\def\afterTileCreationHook#1{\def\@fterTileCreationHook{#1}}
+\let\@fterTileCreationHook\relax
+\def\afterPkgCreationHook#1{\def\@fterPkgCreationHook{#1}}
+\let\@fterPkgCreationHook\relax
+\newcommand{\packagesuffix}{package}
+\newcommand{\setTileParams}[4][]{%
+ \tg@dima #3\p@\relax
+ \ifdim\tg@dima < \p@
+ \PackageWarning{tile-graphic}
+ {Number of columns must be positive,\MessageBreak
+ setting number of columns to 2}\tg@dima\tw@\p@\fi
+ \edef\nCols{\strip@pt\tg@dima}%
+ \tg@Cnt\nCols\relax
+ \edef\n@Cols{\the\tg@Cnt}\edef\nCols{\the\tg@Cnt}%
+ \tg@dima #2\p@\relax
+ \ifdim\tg@dima < \p@
+ \PackageWarning{tile-graphic}
+ {Number of rows must be positive,\MessageBreak
+ setting number of rows to 2}\tg@dima\tw@\p@\fi
+ \edef\nRows{\strip@pt\tg@dima}%
+ \tg@Cnt\nRows\relax
+ \edef\n@Rows{\the\tg@Cnt}\edef\nRows{\the\tg@Cnt}%
+ \multiply\tg@Cnt \nCols\relax
+ \edef\nFilesCreated{\the\tg@Cnt}%
+ \def\pathToPic{#4}%
+ \filename@parse{#4}%
+ \edef\tg@dir{\filename@area}%
+ \ifx\tg@dir\@empty\tgfolderfalse\else
+ \expandafter\tg@rmslash\tg@dir
+ \tgfoldertrue
+ \fi
+ \edef\tg@base{\filename@base}%
+ \edef\tgBaseName{\filename@base}%
+ \edef\tg@ext{\filename@ext}%
+ \setbox\tg@box\hbox{\includegraphics[draft,#1]{#4}}%
+ \setlength\tg@dima{\the\wd\tg@box}%
+ \tg@dima=.99626\tg@dima
+ \divide\tg@dima \nCols
+ \edef\bpWdtile{\strip@pt\tg@dima}%
+ \setlength\tg@dima{\the\ht\tg@box}%
+ \tg@dima=.99626\tg@dima
+ \divide\tg@dima \nRows
+ \edef\bpHttile{\strip@pt\tg@dima}%
+ \setbox\tg@box\box\voidb@x
+ \tg@dima=\bpHttile pt \relax
+ \edef\tg@HT{\the\tg@dima}
+ \tg@dima=\bpWdtile pt \relax
+ \edef\tg@WD{\the\tg@dima}
+ \ifpassthruTG
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{5in}{6in}
+ \else
+ \web@MargScrDimOpts{0pt}{0pt}{0pt}{0pt}{\tg@HT}{\tg@WD}
+ \fi
+ \@tempcnta\n@Rows\relax
+ \advance\@tempcnta\@ne
+ \edef\n@Rows{\the\@tempcnta}
+ \@tempcnta\z@
+ \tg@dima0pt
+ \tg@dimb=\tg@HT\relax
+ \@whilenum \@tempcnta < \n@Rows \do {%
+ \advance\@tempcnta\@ne
+ \csarg\edef{y\the\@tempcnta}{\strip@pt\tg@dima}
+ \advance\tg@dima \tg@dimb
+ }
+ \@tempcnta\n@Cols\relax
+ \advance\@tempcnta\@ne
+ \edef\n@Cols{\the\@tempcnta}
+ \@tempcnta\z@
+ \tg@dima0pt
+ \tg@dimb=\tg@WD\relax
+ \@whilenum \@tempcnta < \n@Cols \do {%
+ \advance\@tempcnta\@ne
+ \csarg\edef{x\the\@tempcnta}{\strip@pt\tg@dima}
+ \advance\tg@dima \tg@dimb
+ }
+ \if@wrtorpkg\expandafter
+ \tg@wrtthefiledoc\fi
+}
+\def\tg@wrtthefiledoc{\newwrite\wrttiledoc
+ \long\def\IWTD##1{\immediate\write\wrttiledoc{##1}}
+ \immediate\openout \wrttiledoc tile-template.tex
+ \IWTD{%
+ \string\RequirePackage{tmp}^^J%
+ \string\documentclass{article}^^J%
+ \string\usepackage{web}^^J%
+ \string\usepackage{graphicx}^^J%
+ \string\let\string\WriteBookmarks\string\relax^^J%
+ \string\margins{0pt}{0pt}{0pt}{0pt}^^J%
+ \string\screensize{\tg@HT}{\tg@WD}^^J%
+ \string\parindent0pt\string\parskip0pt^^J%
+ \string\begin{document}^^J%
+ \string\tgInputContent^^J%
+ \string\end{document}}%
+ \immediate\closeout \wrttiledoc
+}
+\def\tg@wrttmppkg#1#2{\def\CommentCutFile{tmp.sty}%
+ \immediate\openout\CommentStream \CommentCutFile
+ \immediate\write\CommentStream{\string
+ \def\string\tgInputContent{\string
+ \InputIfFileExists{#1_#2.cut}%
+ {}{\string\null}}}%
+ \immediate\closeout\CommentStream
+}
+\InputIfFileExists{package-data.cut}{}{}%
+\def\tg@msgi{%
+ \textbf{Tile Graphic Report}\medskip\par
+ \textbf{Options:}
+ \begin{itemize}
+ \if@wrttofiles
+ \item The \texttt{wrttofiles} option taken,
+ {\nFilesCreated} files written ({\nRows}~rows, {\nCols}~cols):
+ \begin{quote}
+ \texttt{\tg@base\_01.pdf}, \texttt{\tg@base\_02.pdf}, \dots.
+ \end{quote}
+ \ifx\tg@dir\@empty Files saved to source file folder. \else
+ Files saved to the \texttt{\tgInFolder} folder.\fi
+ \else
+ \item The \texttt{!wrttofiles} option taken, no files written.
+ \fi
+ \if@packagefiles
+ \item The \texttt{packagefiles} option taken,
+ package file saved as \texttt{\tg@base\_\packagesuffix.pdf}.
+ The package contains {\nFilesCreated} pages of tiled graphics.
+ \ifx\tg@dir\@empty
+ The package file saved to source file folder.
+ \else
+ The package file saved to the \texttt{\tgInFolder} folder.
+ \fi
+ \else
+ \item The \texttt{!packagefiles} option taken,
+ no package file created.
+ \fi
+ \end{itemize}
+ \if@wrtorpkg\else
+ Try using the \texttt{wrttofiles} and/or
+ \texttt{packagefiles} option(s) to obtain a nontrivial result.
+ \fi
+}
+\def\tileTheGraphic{\begingroup\let\@nu\@nameuse
+ \if@packagefiles\else\global\passthruTGfalse\expandafter
+ \tg@msgi % provide content
+ \fi
+ \ifpassthruTG
+ \tg@msgi % provide content
+ \else
+ \global\let\tg@IndxToks\@empty
+ \if@wrtorpkg\expandafter\tg@domultido\fi
+ \fi
+ \endgroup
+ \xdef\nFilesCreated{\the\tg@Cnt}%
+ \edef\x{\if@wrtorpkg\noexpand\compileTileFiles\fi}\x
+}
+\def\tg@domultido{%
+ \tg@Cnt\z@
+ \multido{\iR=\nRows+-1}{\nRows}{%
+ \multido{\iC=1+1}{\nCols}{%
+ \global\advance\tg@Cnt\@ne
+ \ifnum\tg@Cnt<10\relax
+ \edef\x{0\the\tg@Cnt}\else
+ \edef\x{\the\tg@Cnt}\fi
+ \edef\y{\noexpand\g@addto@macro\noexpand
+ \tg@IndxToks{{\x}}}\y
+ \@tempcntb\iC
+ \advance\@tempcntb\@ne
+ \edef\oX{\the\@tempcntb}%
+ \@tempcntb\iR
+ \advance\@tempcntb\@ne
+ \edef\oY{\the\@tempcntb}%
+ \wrtTileCuts
+ \edef\z{\noexpand\parbox{\tg@WD}{\noexpand
+ \includegraphics[width=\tg@WD,%
+ viewport=\@nu{x\iC} \@nu{y\iR} \@nu{x\oX} \@nu{y\oY},%
+ clip]{\pathToPic}}}\if@packagefiles\expandafter
+ \z\expandafter\newpage\fi
+ }% inner multido
+ }% outer multido
+}
+\def\wrtTileCuts{%
+ \def\CommentCutFile{\tg@base_\x.cut}%
+ \immediate\openout\CommentStream=\CommentCutFile
+ \immediate\write\CommentStream{\string
+ \parbox{\tg@WD}{\string
+ \includegraphics[width=\tg@WD,%
+ viewport=\@nu{x\iC} \@nu{y\iR} \@nu{x\oX} \@nu{y\oY},%
+ clip]{\pathToPic}}}\immediate\closeout\CommentStream
+}
+\def\compileTileFiles{%
+ \ifpassthruTG
+ \if@packagefiles
+ \def\CommentCutFile{package-data.cut}%
+ \immediate\openout\CommentStream \CommentCutFile
+ \immediate\write\CommentStream{\string\passthruTGfalse}%
+ \immediate\closeout\CommentStream
+ \ShellEscape{\tg@syscopy \jobname.tex
+ \tg@base_\packagesuffix.tex}%
+ \iftg@direct
+ \ShellEscape{\pkg@ppArgs{\tg@pdfcreator@app} --shell-escape
+ \tg@base_\packagesuffix.tex}%
+ \else
+ \ShellEscape{\latex@ppArgs{latex} --shell-escape
+ \tg@base_\packagesuffix.tex}%
+ \ShellEscape{\dvips@ppArgs{dvips} \tg@base_\packagesuffix.dvi}%
+ \ifnum\tg@case=\thr@@
+ \ShellEscape{\pkg@ppArgs{\tg@pdfcreator@app}
+ \tg@base_\packagesuffix.ps}%
+ \else
+ \ShellEscape{\pkg@ppArgs{\tg@pdfcreator@app} /N /Q
+ "\tg@fullPathToSource/\tg@base_\packagesuffix.ps"}%
+ \fi
+ \ShellEscape{\tg@sysdel \tg@base_\packagesuffix.dvi
+ \tg@base_\packagesuffix.ps}%
+ \fi
+ \@fterPkgCreationHook
+ \ShellEscape{\tg@sysdel \tg@base_\packagesuffix.tex
+ \tg@base_\packagesuffix.log \tg@base_\packagesuffix.aux}%
+ \iftgfolder
+ \ShellEscape{\tg@sysmove
+ \tg@base_\packagesuffix.pdf \tgInFolder}\fi
+ \fi
+ \else
+ \if@wrttofiles
+ \edef\@tforexp{\noexpand
+ \@tfor\noexpand\Indx:=\tg@IndxToks}%
+ \@tforexp \do {%
+ \edef\tgTileBaseIndx{\tg@base_\Indx}%
+ \edef\x{\noexpand\tg@wrttmppkg{\tg@base}{\Indx}}\x
+ \iftg@direct
+ \ShellEscape{\tile@ppArgs{\tg@pdfcreator@app}
+ tile-template.tex}%
+ \else
+ \ShellEscape{\latex@ppArgs{latex} --shell-escape
+ tile-template.tex}%
+ \ShellEscape{\dvips@ppArgs{dvips} tile-template.dvi}%
+ \ifnum\tg@case=\thr@@
+ \ShellEscape{\pkg@ppArgs{\tg@pdfcreator@app}
+ tile-template.ps}%
+ \else
+ \ShellEscape{\pkg@ppArgs{\tg@pdfcreator@app} /N /Q
+ "\tg@fullPathToSource/tile-template.ps"}%
+ \fi
+ \ShellEscape{\tg@sysdel tile-template.dvi
+ tile-template.ps}%
+ \fi
+ \@fterTileCreationHook
+ \ShellEscape{\tg@syscopy tile-template.pdf
+ \tgTileBaseIndx.pdf}%
+ \ShellEscape{\tg@syscopy tile-template.pdf
+ \tgTileBaseIndx.pdf}%
+ }% do
+ \iftgfolder
+ \ShellEscape{\tg@sysmove \tg@base_*.pdf \tgInFolder}\fi
+ \fi
+ \fi
+ \ShellEscape{\tg@sysdel \tg@base_*.cut package-data.cut}%
+ \ShellEscape{\tg@sysdel tmp.sty tile-template.*}%
+}
+\let\WriteBookmarks\relax
+\InputIfFileExists{tg.cfg}{}{}
+\tg@restoreCats
+\parindent0pt
+\endinput
+%%
+%% End of file `tile-graphic.sty'.