diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/image-gallery/image-gallery.cls |
Initial commit
Diffstat (limited to 'macros/latex/contrib/image-gallery/image-gallery.cls')
-rw-r--r-- | macros/latex/contrib/image-gallery/image-gallery.cls | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/macros/latex/contrib/image-gallery/image-gallery.cls b/macros/latex/contrib/image-gallery/image-gallery.cls new file mode 100644 index 0000000000..73a2185db3 --- /dev/null +++ b/macros/latex/contrib/image-gallery/image-gallery.cls @@ -0,0 +1,151 @@ + +% Rolf Niepraschk <Rolf.Niepraschk@ptb.de> +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. + +\errorcontextlines=100 + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{image-gallery}[2007/10/04 v1.0j image gallery -- RN] +\DeclareOption{dummy}{% + \AtEndOfClass{% + \renewcommand*\IG@image[2][]{\rule{\IG@width}{\IG@height}}% + \renewcommand*\IG@fillBox{% + \textcolor{red}{\rule{\IG@width}{\IG@height}}}% + \RequirePackage{color}% + }% +} +\DeclareOption{nocaption}{% + \AtEndOfClass{% + \let\IG@@showname\@gobble + \let\IG@@showtext\@gobble + }% +} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions\relax +\LoadClass[10pt]{article} + +\RequirePackage{graphicx,keyval,url} +\RequirePackage[margin={0mm,0mm},dvips]{geometry} + +\newcommand*\IG@image[2][]{% + \let\IG@tempa=\@empty + \ifIG@autorotate + \sbox\IG@box{\includegraphics[#1]{#2}}% + \ifdim\wd\IG@box<\ht\IG@box + \def\IG@tempa{angle=90,}% + \fi + \setbox\IG@box\box\voidb@x + \fi + \expandafter\includegraphics\expandafter[\IG@tempa#1]{#2}% +} + +\newcommand*\IG@fillBox{\mbox{\phantom{\rule{\IG@width}{\IG@height}}}} + +\newlength\IG@width \newlength\IG@height +\newlength\IG@top \newlength\IG@bottom +\newlength\IG@left \newlength\IG@right +\newif\ifIG@more +\newcommand*\IG@rows{} \newcommand*\IG@columns{} +\newcommand*\IG@tempa{} \newcommand*\IG@imagefile{} +\newread\IG@input +\newsavebox\IG@box +\newif\ifIG@autorotate \IG@autorotatetrue + +\define@key{IG}{width}{\setlength\IG@width{#1}} +\define@key{IG}{height}{\setlength\IG@height{#1}} +\define@key{IG}{top}{\setlength\IG@top{#1}} +\define@key{IG}{bottom}{\setlength\IG@bottom{#1}} +\define@key{IG}{left}{\setlength\IG@left{#1}} +\define@key{IG}{right}{\setlength\IG@right{#1}} +\define@key{IG}{rows}{\edef\IG@rows{\number#1}} +\define@key{IG}{columns}{\edef\IG@columns{\number#1}} +\define@key{IG}{autorotate}[true]{\csname IG@autorotate#1\endcsname} + +\newcommand*\gallerySetup[1]{% + \setkeys{IG}{#1} + \geometry{left=\IG@left,right=\IG@right,top=\IG@top,bottom=\IG@bottom} +} + +\newcommand*\IG@showname{} +\newcommand*\IG@alt@name{} + +\newcommand*\makeGallery[1]{% + \begingroup + \immediate\openin\IG@input=#1\relax + \IG@moretrue\@tempcnta=\z@\@tempcntb=\@ne + \endlinechar=\m@ne + \loop + \ifeof\IG@input\IG@morefalse\else + \read\IG@input to\IG@tempa + \if\IG@tempa\par\else + \ifx\IG@tempa\@empty\else + \count@=\z@ \let\IG@alt@name=\@empty + \@for\reserved@a:=\IG@tempa\do{% + \ifcase\count@ + \edef\IG@imagefile{\reserved@a}% + \or + \protected@edef\IG@alt@name{\reserved@a}% + \fi + \advance\count@\@ne + }% + \advance\@tempcnta\@ne + \makebox[\IG@width][c]{% + \IG@image[width=\IG@width,height=\IG@height,keepaspectratio]% + {\IG@imagefile}}% + \ifx\IG@alt@name\@empty + \edef\@tempa{\IG@imagefile}\let\IG@showname\IG@@showname + \else + \def\@tempa{\IG@alt@name}\let\IG@showname\IG@@showtext + \fi + \makebox[0pt][c]{% + \hskip-\IG@width\raisebox{-\ht\strutbox}[0pt][0pt]{% + \expandafter\IG@showname\expandafter{\@tempa}}}% + \ifnum\@tempcnta=\IG@columns\relax + \@tempcnta=\z@ \par + \ifnum\@tempcntb=\IG@rows\relax + \@tempcntb=\@ne \newpage + \else + \advance\@tempcntb\@ne \vfill + \fi + \else + \hfill + \fi + \fi + \fi + \fi + \ifIG@more\repeat + \immediate\closeout\IG@input + \IG@moretrue + \ifnum\@tempcntb=\@ne\else + \loop + \advance\@tempcnta\@ne + \IG@fillBox + \ifnum\@tempcnta=\IG@columns\relax + \@tempcnta=\z@ \par + \ifnum\@tempcntb=\IG@rows\relax + \@tempcntb=\@ne \IG@morefalse + \else + \advance\@tempcntb\@ne \vfill + \fi + \else + \hfill + \fi + \ifIG@more\repeat + \fi + \endgroup +} + +\parindent=\z@ \pagestyle{empty} +\DeclareUrlCommand\IG@@showname{\urlstyle{same}} +\let\IG@@showtext=\@firstofone + +\endinput |