mirror of
https://github.com/moparisthebest/xeps
synced 2024-11-30 13:12:15 -05:00
261 lines
6.9 KiB
TeX
261 lines
6.9 KiB
TeX
%% Copyright (C) 2011-2012 by Martin Scharrer <martin@scharrer-online.de>
|
|
%% ----------------------------------------------------------------------
|
|
%% This work 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 2005/12/01 or later.
|
|
%%
|
|
%% This work has the LPPL maintenance status `maintained'.
|
|
%%
|
|
%% The Current Maintainer of this work is Martin Scharrer.
|
|
%%
|
|
%% This work consists of the files trimclip.dtx, adjustbox.ins
|
|
%% and the derived files trimclip.sty,
|
|
%% tc-dvips.def, tc-pdftex.def, tc-pgf.def and tc-xetex.def.
|
|
%% Further author information are located in the .def files.
|
|
%%
|
|
\ProvidesPackage{trimclip}[%
|
|
2012/05/16
|
|
v1.0
|
|
Trim and clip general TeX material]
|
|
\def\tc@driver{tc-\Gin@driver}
|
|
\DeclareOption{pgf}{\def\tc@driver{tc-pgf.def}\PassOptionsToPackage{pgf}{graphicx}}
|
|
\DeclareOption{pdftex}{\def\tc@driver{tc-pdftex.def}\PassOptionsToPackage{pdftex}{graphicx}}
|
|
\DeclareOption{xetex}{\def\tc@driver{tc-xetex.def}\PassOptionsToPackage{xetex}{graphicx}}
|
|
\DeclareOption{dvips}{\def\tc@driver{tc-dvips.def}\PassOptionsToPackage{dvips}{graphicx}}
|
|
\DeclareOption{dvipdfm}{\def\tc@driver{tc-xetex.def}\PassOptionsToPackage{xetex}{graphicx}}
|
|
\DeclareOption{dvipdf}{\def\tc@driver{tc-xetex.def}\PassOptionsToPackage{xetex}{graphicx}}
|
|
\DeclareOption*{%
|
|
\@ifpackageloaded{graphics}{%
|
|
\edef\tc@driver{tc-\CurrentOption.def}%
|
|
\begingroup
|
|
\edef\@tempa{\CurrentOption.def}%
|
|
\ifx\@tempa\Gin@driver\else
|
|
\let\on@line\@gobble
|
|
\PackageWarning{trimclip}{%
|
|
A different clipping driver was requested than the\MessageBreak
|
|
one used for 'graphics/x'! This is not recommended\MessageBreak
|
|
and can lead to defect output files.%
|
|
}%
|
|
\fi
|
|
\endgroup
|
|
}{%
|
|
\def\tc@driver{tc-\Gin@driver}%
|
|
\PassOptionsToPackage\CurrentOption{graphicx}%
|
|
}%
|
|
}
|
|
\ProcessOptions*\relax
|
|
\RequirePackage{graphicx}[1999/02/16]
|
|
\RequirePackage{collectbox}[2011/08/22]
|
|
\RequirePackage{adjcalc}
|
|
\def\tc@readvalues#1{%
|
|
\tc@@readvalues#1 {} {} {} \\%
|
|
}
|
|
\def\tc@@readvalues#1 #2 #3 #4 #5\\{%
|
|
\adjsetlengthdefault\tc@llx{#1}%
|
|
\ifx\@nnil#2\@nnil
|
|
\tc@lly\tc@llx
|
|
\tc@urx\tc@llx
|
|
\tc@ury\tc@llx
|
|
\else
|
|
\adjsetlengthdefault\tc@lly{#2}%
|
|
\ifx\@nnil#3\@nnil
|
|
\tc@urx\tc@llx
|
|
\tc@ury\tc@lly
|
|
\else
|
|
\adjsetlengthdefault\tc@urx{#3}%
|
|
\adjsetlengthdefault\tc@ury{#4}%
|
|
\fi
|
|
\fi
|
|
}%
|
|
\newdimen\tc@llx
|
|
\newdimen\tc@lly
|
|
\newdimen\tc@urx
|
|
\newdimen\tc@ury
|
|
\newcommand\trimbox{%
|
|
\collectboxcheckenv{trimbox}%
|
|
\@ifstar
|
|
\trimbox@s
|
|
\trimbox@
|
|
}
|
|
\def\trimbox@#1{%
|
|
\collectbox{\@trimclip\@trimbox{#1}}%
|
|
}
|
|
\def\trimbox@s#1{%
|
|
\collectbox{\@trimclip\@viewportbox{#1}}%
|
|
}
|
|
\expandafter\newcommand\expandafter*\csname trimbox*\endcsname{%
|
|
\@collectboxisenv{trimbox*}%
|
|
\trimbox@s
|
|
}
|
|
\newcommand\clipbox{%
|
|
\collectboxcheckenv{clipbox}%
|
|
\@ifstar
|
|
\clipbox@s
|
|
\clipbox@
|
|
}
|
|
\def\clipbox@#1{%
|
|
\collectbox{\@trimclip\@clipbox{#1}}%
|
|
}
|
|
\def\clipbox@s#1{%
|
|
\collectbox{\@trimclip\@clipvpbox{#1}}%
|
|
}
|
|
\expandafter\newcommand\expandafter*\csname clipbox*\endcsname{%
|
|
\@collectboxisenv{clipbox*}%
|
|
\clipbox@s
|
|
}
|
|
\newcommand\marginbox{%
|
|
\collectboxcheckenv{marginbox}%
|
|
\@ifstar
|
|
\marginbox@s
|
|
\marginbox@
|
|
}
|
|
\def\marginbox@#1{%
|
|
\@collectbox{\@trimclip\@marginbox{#1}}%
|
|
}
|
|
\def\marginbox@s#1{%
|
|
\@collectbox{\@trimclip\@marginraisebox{#1}}%
|
|
}
|
|
\expandafter\newcommand\expandafter*\csname marginbox*\endcsname{%
|
|
\@collectboxisenv{marginbox*}%
|
|
\marginbox@s
|
|
}
|
|
\def\@trimclip#1#2{%
|
|
\tc@readvalues{#2}%
|
|
#1%
|
|
\collectedbox
|
|
\tc@llx
|
|
\tc@lly
|
|
\tc@urx
|
|
\tc@ury
|
|
\usebox\collectedbox
|
|
}
|
|
\def\tc@correctbaseline#1{%
|
|
\ifdim\dp#1<\z@
|
|
\raise\dp#1%
|
|
\else
|
|
\ifdim\ht#1<\z@
|
|
\lower\ht#1%
|
|
\fi\fi
|
|
\box#1%
|
|
}%
|
|
\def\tc@correctdims#1{%
|
|
\ifdim\dp#1<\z@ \dp#1=\z@ \fi
|
|
\ifdim\wd#1<\z@ \wd#1=\z@ \fi
|
|
\ifdim\ht#1<\z@ \ht#1=\z@ \fi
|
|
}
|
|
\def\@trimbox#1#2#3#4#5{%
|
|
\setbox#1=\hbox{%
|
|
%
|
|
\tc@llx=#2\relax
|
|
\tc@lly=#3\relax
|
|
\advance\tc@lly-\dp#1%
|
|
\tc@urx=#4\relax
|
|
\advance\tc@urx-\wd#1%
|
|
\tc@ury=#5\relax
|
|
\advance\tc@ury-\ht#1%
|
|
%
|
|
% Set dimensions now.
|
|
% This allows that the arguments can refer
|
|
% to the original dimensions without issues.
|
|
\hskip-\tc@llx
|
|
\dp#1-\tc@lly
|
|
\wd#1-\tc@urx
|
|
\ht#1-\tc@ury
|
|
%
|
|
\tc@correctbaseline{#1}%
|
|
}%
|
|
\tc@correctdims{#1}%
|
|
}
|
|
\def\@marginbox#1#2#3#4#5{%
|
|
\setbox#1=\hbox{%
|
|
%
|
|
\tc@llx=#2\relax
|
|
\tc@lly=#3\relax
|
|
\advance\tc@lly\dp#1%
|
|
\tc@urx=#4\relax
|
|
\advance\tc@urx\wd#1%
|
|
\tc@ury=#5\relax
|
|
\advance\tc@ury\ht#1%
|
|
%
|
|
% Set dimensions now.
|
|
% This allows that the arguments can refer
|
|
% to the original dimensions without issues.
|
|
\hskip\tc@llx
|
|
\dp#1\tc@lly
|
|
\wd#1\tc@urx
|
|
\ht#1\tc@ury
|
|
%
|
|
\box#1%
|
|
}%
|
|
\tc@correctdims{#1}%
|
|
}
|
|
\def\@marginraisebox#1#2#3#4#5{%
|
|
\setbox#1=\hbox{%
|
|
%
|
|
\tc@llx=#2\relax
|
|
\tc@lly=#3\relax
|
|
\tc@urx=#4\relax
|
|
\advance\tc@urx\wd#1%
|
|
\tc@ury=#5\relax
|
|
\advance\tc@ury\ht#1%
|
|
%
|
|
% Set dimensions now.
|
|
% This allows that the arguments can refer
|
|
% to the original dimensions without issues.
|
|
\hskip\tc@llx
|
|
\wd#1\tc@urx
|
|
\ht#1\tc@ury
|
|
% Copy original tty values (ury is taken as temp dimension)
|
|
\tc@ury=\tc@lly
|
|
\advance\tc@lly\dp#1%
|
|
\dp#1\tc@lly
|
|
% Raise bu original tty value (now in ury)
|
|
\raise\tc@ury\box#1%
|
|
}%
|
|
\tc@correctdims{#1}%
|
|
}
|
|
\def\@viewportbox#1#2#3#4#5{%
|
|
\setbox#1=\hbox{%
|
|
%
|
|
% Assign values
|
|
\tc@llx=#2\relax
|
|
\tc@lly=#3\relax
|
|
\tc@urx=#4\relax
|
|
\tc@ury=#5\relax
|
|
%
|
|
% Set dimensions now.
|
|
% This allows that the arguments can refer
|
|
% to the original dimensions without issues.
|
|
\hskip-\tc@llx
|
|
\dp#1-\tc@lly
|
|
\wd#1\tc@urx
|
|
\ht#1\tc@ury
|
|
%
|
|
\tc@correctbaseline{#1}%
|
|
}%
|
|
\tc@correctdims{#1}%
|
|
}
|
|
\def\@clipbox#1#2#3#4#5{%
|
|
\@trimbox{#1}{#2}{#3}{#4}{#5}%
|
|
\@cliptoboxdim{#1}%
|
|
}
|
|
\def\@clipvpbox#1#2#3#4#5{%
|
|
\@viewportbox{#1}{#2}{#3}{#4}{#5}%
|
|
\@cliptoboxdim{#1}%
|
|
}
|
|
\InputIfFileExists{\tc@driver}{%
|
|
{\let\on@line\@gobble
|
|
\PackageInfo{trimclip}{Using driver '\tc@driver'.}}%
|
|
}{%
|
|
\input{tc-pgf.def}%
|
|
{\let\on@line\@gobble
|
|
\PackageInfo{trimclip}{No clipping driver '\tc@driver' available.\MessageBreak Using fall-back PGF driver.}}%
|
|
}
|
|
\endinput
|
|
%%
|
|
%% End of file `trimclip.sty'.
|