% \iffalse meta-comment % % Copyright (C) 2011 by Martin Scharrer % ----------------------------------------------------------------- % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c % 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.3c or later is part of all distributions of LaTeX % version 2008/05/04 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 adjustbox.dtx, adjustbox.ins % and the derived file adjustbox.sty. % % $Id: adjustbox.dtx 2372 2011-03-20 12:01:30Z martin $ % \fi % % \iffalse %\ProvidesPackage{adjustbox} %\ProvidesFile{adjustbox-de.tex} %<*driver> \ProvidesFile{adjustbox.dtx} % [2011/03/20 v0.3 Adjusting TeX boxes (trim, clip, ...)] %<*driver> \expandafter\ifx\csname ifenglish\endcsname\relax \expandafter\newif\csname ifenglish\endcsname \englishtrue \fi \ifenglish \RequirePackage[english]{babel} \else \RequirePackage[ngerman]{babel} \fi %\PassOptionsToPackage{ngerman}{hyperref} %\RequirePackage[ngerman]{babel} \documentclass{ydoc}[2011/03/19] \GetFileInfo{adjustbox.dtx} \usepackage[utf8]{inputenc} \usepackage{adjustbox}[\filedate] \normalmarginpar \newcommand\babelfiledate{% \expandafter\babelfileDate\filedate\relax } \def\babelfileDate#1/#2/#3\relax{% \begingroup \year#1 \month#2 \day#3 \today \endgroup } %\EnableCrossrefs %\CodelineIndex %\RecordChanges %\OnlyDescription \renewcommand{\bottomfraction}{0.5} \begin{document} \DocInput{adjustbox.dtx} \PrintChanges %\newpage\PrintIndex \end{document} % % \fi % % \CheckSum{184} % % \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}{2011/01/24}{First internal version} % \changes{v0.2}{2011/01/27}{First released version} % \changes{v0.3}{2011/03/20}{Bug fix for wrong baseline placed on the bottom} % % \GetFileInfo{adjustbox.dtx} % % \DoNotIndex{\newcommand,\newenvironment,\def,\edef,\xdef,\gdef,\let} % % \ifenglish\else % \title{Das \pkgtitle{adjustbox} Paket} % \fi % \author{Martin Scharrer} % \email{martin@scharrer-online.de} % \ydocpdfsettings % \maketitle % % \makeatletter % \def\LATeX{\texorpdfstring{(L\kern -.36em{\sbox \z@ T\vbox to\ht \z@ {\hbox {\check@mathfonts % \fontsize \sf@size \z@ \math@fontsfalse \selectfont A}\vss }}\kern -.15em)\TeX}{(La)TeX}} % \makeatother % % \ifenglish % \begin{abstract} % This package provides macros missing in \pkg{graphics} to trim, clip and generally adjust boxed \LaTeX{} material. % The macros allow for verbatim content. Equivalent environments are also provided. The trim and clip operation % are implemented using the \pkg{pgf} package, which supports both DVI/PS and PDF output. % \\ % \textcolor{red}{This package is new and the implementation might change in upcoming releases!} % \end{abstract} % \else % \begin{abstract} % Dieses Paket stellt einige Makros zur Verfügung die im \pkg{graphics} Paket vermisst werden % und \LaTeX{} Material zu beschneiden (\emph{trim}, \emph{clip}) oder allgemein zu modifizieren. % Die Makros erlauben Inhalt das im \emph{verbatim} Modus gesetzt ist. % Ebenfalls werden passende Umgebungen für die Makros bereitgestellt. % Das Beschneiden wird durch eine \env{pgfpicture} Umgebung des Pakets \pkg{pgf} verwirklicht, % dass sowohl das PS und PDF Ausgabeformat unterstützt.\\ % \textcolor{red}{Dieses Paket ist noch neu und seine Implementieren kann sich in zukünftigen Versionen noch ändern!} % \end{abstract} % \fi % % \ifenglish % \section{Introduction} % The standard \LaTeX{} package \pkg{graphicx} (the extended version of \pkg{graphics}) provides the macro \Macro\includegraphics[]{} which can % be used to include graphic files. Several options can be used to scale, resize, rotate, trim and/or clip the graphic. % The macros \Macro\scalebox, \Macro\resizebox and \Macro\rotatebox are also provided to apply the corresponding % operation on \LATeX{} material, which is subsequently placed inside a \Macro\hbox. % However no macros are provided to trim or clip \LATeX{} material, most likely because this operations % are not done by \TeX{} but by the output format, i.e. using PostScript (PS) or PDF operations. % % This package provides the missing macros \Macro\clipbox and \Macro\trimbox % as well as the general \Macro\adjustbox macro. The clipping and trimming operations are implemented using % a \env{pgfpicture} environment from the \pkg{pgf} package which supports both PS and PDF output. % \else % \section{Einleitung} % Das \LaTeX{} Paket \pkg{graphicx} (die erweiterte Version von \pkg{graphics}) stellt das Macro \Macro\includegraphics[]{} zur Verfügung % mit dem Bilddateien eingebunden werden können. Zahlreiche Optionen können benutzt werden um das Bild zu skalieren, an eine vorgegebene Größe anzupassen, es zu rotieren % oder den Rand zu beschneiden. % Ebenfalls stellt das Paket die Makros \Macro\scalebox\relax (skalieren), \Macro\resizebox\relax (Größe ändern) und \Macro\rotatebox\relax (rotieren) zur Verfügung um \LATeX{} Material, % z.B.\ normalen Text, entsprechend anzupassen. Dies wird dazu in eine horizontale Box (\Macro\hbox) gesetzt. % Allerdings fehlen Makros um \LATeX{} Material zu beschneiden, wobei der abgeschnittenen Rand entweder sichtbar bleibt (engl.: \emph{trim}) oder ausgeblendet wird (engl. \emph{clip}). % Dies ist wahrscheinlich der Fall, weil diese Operationen nicht von \TeX{} selbst vorgenommen werden, sondern von dem verwendeten Ausgabeformat, z.B.\ durch PostScript (PS) % oder PDF Operationen. % % Das \textsf{adjustbox} Paket definiert die Makros \Macro\clipbox und \Macro\trimbox, sowie das allgemeine \Macro\adjustbox Macro (engl.: \emph{adjust} = anpassen). % Das Beschneiden wird durch eine \env{pgfpicture} Umgebung des Pakets \pkg{pgf} verwirklicht, dass sowohl das PS und PDF Ausgabeformat unterstützt. % \fi % \optionaloff % % \ifenglish % \def\llx{llx} % \def\lly{lly} % \def\urx{urx} % \def\ury{ury} % \def\text{text} % \def\height{height} % \def\width{width} % \def\totalheight{totalheight} % \def\depth{depth} % \def\factor{factor} % \def\xfactor{x-factor} % \def\yfactor{y-factor} % \def\Angle{angle} % \def\options{options} % \else % \def\llx{lux} % \def\lly{luy} % \def\urx{orx} % \def\ury{ory} % \def\text{Text} % \def\height{Höhe} % \def\width{Weite} % \def\totalheight{Totale Höhe} % \def\depth{Tiefe} % \def\factor{Faktor} % \def\xfactor{X-Faktor} % \def\yfactor{Y-Faktor} % \def\Angle{Winkel} % \def\options{Optionen} % \fi % % \ifenglish % \section{Usage} % This section describes the usage of the provided macros, which are outlined in \autoref{sec:boxmacros}. % Possible advanced values for the macro arguments are mentioned in \autoref{sec:argval}. The existing verbatim support % is explained in \autoref{sec:verbatim}. Finally \autoref{sec:alternatives} compares the existing macros with the % corresponding options of \Macro\djustbox. % See the example \autoref{sec:example} for examples of this macros. % % It is recommended to also read the \emph{Graphics Guide} (|grfguide|, i.e.~the manual of the |graphics|/|x| packages), % to understand the existing options for \Macro\includegraphics. % \else % \newpage % \section{Anleitung} % Dieser Abschnitt beschreibt die Verwendung der Makros dieses Pakets. Diese werden zuerst im \autoref{sec:boxmacros} beschrieben. % \autoref{sec:argval} erklärt welche Werte in den Makroargumenten verwendet werden können. Die Makros unterstützen sogenannten % \emph{verbatim} (engl.: wortgetreu) Inhalt was im \autoref{sec:verbatim} erleutert wird. % Schlussendlich wird im \autoref{sec:alternatives} die exisitierenden Makros mit den entsprechendem Optionen von \Macro\adjustbox % verglichen. Beispiele für die beschriebenen Makros befinden sich im folgendem \autoref{sec:example}. % % Dem Leser wird darüberhinaus die Lektüre der Anleitung der |graphic|/|x| Pakete, der \emph{Graphics Guide}, empfohlen wo % die möglichen Optionen für das Makro \Macro\includegraphics gelistet sind, die auch für \Macro\adjustbox verwendet werden. % \fi % % \ifenglish % \Needspace*{7\baselineskip} % \subsection{Box Modification Macros}\label{sec:boxmacros} % \else % \subsection{Makros zur Modifikation von {\LaTeX} Material}\label{sec:boxmacros} % \fi % % \ifenglish % \subsubsection*{Trim Box Content} % \else % \subsubsection*{Rand beschneiden ohne Überhang auszublenden} % \fi % \vskip-\lastskip % \DescribeMacro\trimbox*{<\llx>~<\lly>~<\urx>~<\ury>}{<\text>} % \ifenglish % \subsubsection*{Trim Box Content} % The macro \Macro\trimbox trims the given amount from the lower left (ll) and the upper right (ur) corner of % the box. This means that the amount \meta{llx} is trimmed from the left side, \meta{lly} from the bottom and % \meta{urx} and \meta{ury} from the right and top of the box, respectively. % Trimming means that the official size of the box is reduced, but no material % is actual removed. The material in the trimmed areas simply swaps over the official border. % % If the starred version is used the four coordinates are taken as the |viewport| instead, i.e. the box % is trimmed to the rectangle described by the coordinates. % \else % Das Makro \Macro\trimbox setzt den \meta{Text} in eine \TeX{} Box und reduziert dessen offizielle Größe % (\emph{bounding box}, engl.: begrenzende Box), so dass \TeX{} annimmt es wäre entsprechend kleiner. Überstehendes Material % ragt deswegen in den umgebenden Text hinein. % Die angegebenen Werte im ersten Argument stehen für die Beträge die von der unteren linken (lu) und der oberen rechten (or) % Ecke entfernt werden. Das heisst, dass der Wert \meta{lux} vom linken Rand, \meta{lly} vom unterem Rand und \meta{orx} und \meta{ory} % von rechten bzw. oberen Rand abgezogen werden. % Wird das Makro allerdings in der Sternvariante aufgerufen, stehen die vier Werte für den Darstellungsbereich (\emph{viewport}) und % alles ausserhalb wird von der offiziellen Größe abgeschnitten. % \fi % % % \DescribeEnv[<\text>]{trimbox}*{<\llx>~<\lly>~<\urx>~<\ury>} % \vspace{-\baselineskip} % \DescribeEnv[<\text>]{trimbox*}{<\llx>~<\lly>~<\urx>~<\ury>} % \ifenglish % The \env{trimbox} and \env{trimbox*} environments do the same as the corresponding macros. % Special care is taken so that the macros and the environments can have the same name. % Because of this the star can be either part of the name or an optional argument. % Also the plain\TeX{} syntax for environments (|\trimbox ... \endtrimbox|) can not be used % because it will trigger \Macro\trimbox as a macro. % \else % Die Umgebungen \env{trimbox} und \env{trimbox*} erzeugen den selben Effekt wie die gleichnamigen Makros. % Ein spezieller Trick wird verwendet, damit der selbe Name für ein Makro und für eine Umgebung verwendet werden kann, % was normallerweise nicht der Fall ist. Aufgrund dessen akzeptier die \env{trimbox} Umgebung auch einen optionallen Stern. % Die plain\TeX{} Schreibweise für Umgebungen (|\trimbox ... \endtrimbox|) kann allerdings nicht verwendet werden, % da es \Macro\trimbox als Makro aufrufen würde. % \fi % % % \ifenglish % \subsubsection*{Clip Box Content} % \else % \subsubsection*{Rand beschneiden und Überhang ausblenden} % \fi % \vskip-\lastskip % \DescribeMacro\clipbox*{<\llx>~<\lly>~<\urx>~<\ury>}{<\text>} % \ifenglish % The \Macro\clipbox macro works like the \Macro\trimbox and trims the given amounts from the \meta{text}. % However, in addition the trimmed material is also clipped, i.e. it is not shown in the final document. % Note that the material will still be part of the output file but is simply not shown. % It might be exported using special tools, so using \Macro\clipbox\relax (or \Macro\includegraphics[clip,trim=...]) % to censor classified information would be a bad idea. % The starred version will again use the given coordinates as |viewport|. % \else % Das \Macro\clipbox Makro arbeiten ähnlich wie \Macro\trimbox nur, dass der entfernte Rand auch wirklich % ausgeblendet wird. Allerdings bleibt dieses Material Teil der Ausgabedatei und könnte durch spezielle Software exportiert werden. % Von der Verwendung von \Macro\clipbox\relax (oder \Macro\includegraphics'[clip,trim=...]') um vertrauliche Informationen zu zensieren % kann deswegen nur abgeraten werden. % Die Sternvariante verwendet die angegebenen Werte als den zu darstellenden Bereich wie bei \Macro\trimbox'*'. % \fi % % \DescribeEnv[<\text>]{clipbox}*{<\llx>~<\lly>~<\urx>~<\ury>} % \vspace{-\baselineskip} % \DescribeEnv[<\text>]{clipbox*}{<\llx>~<\lly>~<\urx>~<\ury>} % \iffalse % The environment versions of \Macro\clipbox and \Macro\clipbox*. The same rules as for the trimming environments apply. % \else % Die obigen Makros als Umgebungen. Es gelten die gleichen Regeln wie bei den \env{trimbox} Umgebungen. % \fi % % % \ifenglish % \subsubsection*{Adjust Box Content} % \else % \subsubsection*{Allgemeine Manipulationen von \LaTeX{} Material} % \fi % \vskip-\lastskip % \DescribeMacro\adjustbox{}{<\text>} % \ifenglish % The \Macro\adjustbox macro is the general form of all box modifying macros mentioned in the introduction. % It can be thought as an \Macro\includegraphics for \LATeX{} material. % It supports the same set of \meta{options}, however they are provided as a mandatory not as an optional argument. % An \Macro\adjustbox without options would not make sense and can be replaced by a simple \Macro\mbox. % There is no starred version of this macro. See also \autoref{tab:alternatives} for a comparison of \Macro\adjustbox % with the other macros. % \else % Mit Hilfe des \Macro\adjustbox Makros (engl.\ \emph{adjust} = anpassen, justieren) ist es möglich die selben Optionen % die \Macro\inludegraphics für Bilder zur Verfügung stellt auch auf beliebiges \LATeX{} Material anzuwenden. % Die \meta{Optionen} sind dabei allerdings nicht optional, da \Macro\adjustbox ohne jegliche Optionen einem \Macro\mbox % gleich käme. Eine Sternvariante existiert für dieses Makro nicht. % Es kann dazu verwendet werden Kombinationen von anderen ähnlichen Makros zu ersetzen, was in \autoref{tab:alternatives} dargestellt wird. % \fi % % \DescribeEnv[<\text>]{adjustbox}{} % \ifenglish % The environment version of \Macro\adjustbox. % \else % Wie für die anderen Makros gibt es auch für \Macro\adjustbox eine passende Umgebung. % \fi % % \ifenglish % \subsection{Argument Values}\label{sec:argval} % The\marginpar{Parsing} argument values are parsed by versatile \Macro\pgfmathparse of the already used |pgf| package. % This allows very complex arithmetic expressions as any of the trim/clip coordinates or other numeric options. % See the |pgfmanual| for detailed information. % Note\marginpar{Space=Separator} that the four values for \Macro\trimbox and \Macro\clipbox as well as for the |trim| and |viewport| option of \Macro\adjustbox % are separated by spaces. If the expression of any of this values holds a space or ends with a macro (eats trailing spaces!) it must be wrapped into braces `|{ }|'. % \else % \newpage % \subsection{Erlaubte Werte für Makroargumente}\label{sec:argval} % Die numerischen Werte für die Makros werden durch das vielseitige \Macro\pgfmathparse Makro des sowieso schon verwendeten \pkg{pgf} Paketes % eingelesen. Dies erlaubt die Verwendung von einfachen oder komplizierten Formeln. % Eine genaue Beschreibung der unterstützten mathematischen Operationen befindet sich im Handbuch des \pkg{pgf} Paketes. % Dabei muss beachtet werden das die vier Werte für die \Macro\trimbox und \Macro\clipbox Makros sowie für die |trim| und |viewport| Optionen von \Macro\adjustbox % durch Leerzeichen getrennt werden müssen. Komplizierte Angaben die ein Leerzeichen enthalten oder auf ein Makro enden (entfernt nachfolgende Leerzeichen) müssen % deswegen in geschweifte Klammern `|{ }|' gesetzt werden. % \fi % % % \DescribeMacros % \hbox{\Macro\width~~~\Macro\height~~~\Macro\depth~~~\Macro\totalheight}% % \endDescribeMacros % \ifenglish % This \LaTeX{} lengths hold the original dimension of \meta{text} and can be used as part of the arguments to \Macro\adjustbox, \Macro\trimbox and \Macro\clipbox. % The totalheight is the height plus depth. % \else % Diese \LaTeX{} Längen enthalten die Weite, Höhe, Tiefe bzw.\ die totale Höhe (Höhe + Tiefe) des \meta{\text} Arguments bzw.\ des Inhalts der Umgebung. % Diese Längen können in den ersten Argument von \Macro\adjustbox, \Macro\trimbox und \Macro\clipbox verwendet werden um relative Änderungen vorzunehmen. % \fi % % If\marginpar{Default unit} no unit is provided for of the bounding box coordinates (\llx, \lly, \urx, \ury) then PostScript points % (\emph{big points}, bp, $72\,\text{bp}=1\,\text{inch}$) are used, as it is the default behaviour % of the |trim| and |viewport| ptions of \pkg{graphicx}'s \Macro\includegraphics. Note that \pkg{graphicx} converts all values, independent if a unit is provided or not, % internally to bp, because graphics where traditionally stored in Encapsulated PostScript (EPS) files. The more modern PDF files also use bp instead of pt. % Because the |adjustbox| package macros target \LATeX{} material and users will mostly use pt values this internal conversion to bp got disabled for them to % avoid unnecessary rounding errors. % % % \subsubsection*{Examples for Argument Values} % \codeline{\AlsoMacro\trimbox{'{.5\width} 10 {log10(10)/sin(45) + 1} 10pt'}{<\text>}} % will trim half the original amount from the left, 10\,bp from the bottom and % 2.42328\,bp from the right (bp, because no unit was used in the formula; change e.g. `|+ 1|' to `|+ 1pt|' to get 2.42328\,pt), % as well as 10\,pt from the top. % % \subsection{Verbatim Support}\label{sec:verbatim} % The macros read the \meta{text} as \TeX{} \Macro\hbox and not as an macro argument in order to support verbatim content. % This means that the braces around the content can also be written as \Macro\bgroup and \Macro\egroup: % \begin{macroquote} % \trimbox{1 2 3 4}\AlsoMacro\bgroup~<\text>\AlsoMacro\egroup % \end{macroquote} % Special care is taken to allow the \meta{text} to be a single macro (except \Macro\bgroup) without any braces: % \begin{macroquote} % \clipbox{1 2 3 4}\AlsoMacro\somemacro % \end{macroquote} % This is to support the questionable habit of some \LaTeX{} users to drop the braces for single token arguments. % All environments support verbatim content. % % \ifenglish % \subsection{Alternatives for existing Macros}\label{sec:alternatives} % The flexible \Macro\adjustbox can also be used as an alternative to existing macros from the \pkg{graphics} package as shown by Table~\ref{tab:alternatives}. % Because it is longer then the originals this is only of benefit if combinations are to be replaced or verbatim text must be supported. % \else % \subsection{Alternativen für existierende Makros}\label{sec:alternatives} % Das flexible \Macro\adjustbox Makro kann auch als Alternative für die vorhandenen Makros des \pkg{graphics} Paketes verwenden werden. % Dies ist in Tabelle~\ref{tab:alternatives} dargestellt. % Die dies allerdings mehr Schreibarbeit darstellt ist es nur dann von Vorteil, falls mehrere Operationen verknüpft werden sollen % oder wenn der entsprechende Text im \emph{verbatim} Modus eingelesen werden soll. % \fi % % \ifenglish % \begin{table}[!hb] % \else % \begin{table}[!hb] % \fi % \belowcaptionskip\abovecaptionskip % \colorlet{optional}{black} % \ifenglish % \caption{Alternatives for existing Macros} % \else % \caption{Alternativen für existierende Makros} % \fi % \label{tab:alternatives} % \hbox to \linewidth{\hss % \begin{tabular}{ll} % \toprule % \ifenglish % Original Macro (w/o text argument) & Alternative (w/o text argument) \\ % \else % Originales Makro (ohne Text Argument) & Alternative (ohne Text argument) \\ % \fi % \midrule % \Macro\rotatebox{<\Angle>} & \Macro\adjustbox{'angle='<\Angle>} \\ % \Macro\scalebox{<\factor>} & \Macro\adjustbox{'scale='<\factor>} \\ % \Macro\scalebox{<\xfactor>}[<\yfactor>] & \Macro\adjustbox{'width='<\xfactor>\AlsoMacro\width',height='<\yfactor>\AlsoMacro\height} \\ % \Macro\reflectbox & \Macro\adjustbox{'width=-'\AlsoMacro\width',height='\AlsoMacro\height} \\ % \Macro\resizebox{<\width>}{<\height>} & \Macro\adjustbox{'width='<\width>',height='<\height>} \\ % \Macro\resizebox*{<\width>}{<\totalheight>} & \Macro\adjustbox{'width='<\width>',totalheight='<\totalheight>} \\ % \Macro\trimbox{<\llx>~<\lly>~<\urx>~<\ury>} & \Macro\adjustbox{'trim='<\llx>~<\lly>~<\urx>~<\ury>} \\ % \Macro\trimbox*{<\llx>~<\lly>~<\urx>~<\ury>} & \Macro\adjustbox{'viewport='<\llx>~<\lly>~<\urx>~<\ury>} \\ % \Macro\clipbox{<\llx>~<\lly>~<\urx>~<\ury>} & \Macro\adjustbox{'trim='<\llx>~<\lly>~<\urx>~<\ury>,clip} \\ % \Macro\clipbox*{<\llx>~<\lly>~<\urx>~<\ury>} & \Macro\adjustbox{'viewport='<\llx>~<\lly>~<\urx>~<\ury>,clip} \\ % \bottomrule % \end{tabular}% % \hss}% % \end{table} % % \clearpage % \ifenglish % \section{Examples}\label{sec:example} % The following examples show the application of the package macros on an example text. % The result is placed in a tight, colored frame box to show the resulting dimensions. % \else % \section{Beispiele}\label{sec:example} % Die folgenden Beispiele zeigen die Anwendung der Makros dieses Packets auf einen Beispieltext (\Macro\example). % Das Ergebnis wird mit einer engen, farbigen Umrandung dargestellt um die entgültigen Dimensionen sichtbar zu machen. % \fi % % \begingroup % \def\examplecontent{\begin{tabular}{@{}|c|c|@{}} % \hline % A & B \\ % \hline % C & D \\ % \hline % \end{tabular}^^A % } % \fboxsep=0pt% % \def\Fbox{\fcolorbox{red}{white}}% % \def\X{\vspace*{20pt}}% % \par\bigskip\noindent % \begin{tabular}{@{}lc} % \X\Macro\example & \Fbox{\examplecontent} \\ % \X\Macro\trimbox{10 5 10 5}{\AlsoMacro\example} & \Fbox{\trimbox{10 5 10 5}{\examplecontent}} \\ % \X\Macro\clipbox{10 5 10 5}{\AlsoMacro\example} & \Fbox{\clipbox{10 5 10 5}{\examplecontent}} \\ % \X\Macro\trimbox*{15 5 25 30}{\AlsoMacro\example} & \Fbox{\trimbox*{15 5 25 30}{\examplecontent}} \\ % \X\Macro\clipbox*{15 5 25 30}{\AlsoMacro\example} & \Fbox{\clipbox*{15 5 25 30}{\examplecontent}} \\ % \X\Macro\adjustbox{trim=10 5 10 5,angle=45}{\AlsoMacro\example} & \Fbox{\adjustbox{trim=10 5 10 5,angle=45}{\examplecontent}} \\ % \X\Macro\adjustbox{scale=1.5}{\AlsoMacro\example} & \Fbox{\adjustbox{scale=1.5}{\examplecontent}} \\ % \X\Macro\adjustbox{width=180pt,height=20pt}{\AlsoMacro\example} & \Fbox{\adjustbox{width=40pt,height=10pt}{\examplecontent}} \\ % \X\Macro\adjustbox{width=180pt,height=20pt,keepaspectratio}{\AlsoMacro\example} & \Fbox{\adjustbox{width=40pt,height=10pt,keepaspectratio}{\examplecontent}} \\ % \end{tabular} % % \ifenglish % \subsubsection*{Environment example:} % \else % \subsubsection*{Beispiel mit Umgebung:} % \fi % \noindent % \Macro\begin{adjustbox}{angle=2}:\\ % \begin{adjustbox}{angle=2} % | verbatim inside \begin{adjustbox}{angle=2} ... \end{adjustbox} | % \end{adjustbox} % \endgroup % % \StopEventually{} % \clearpage % \iffalse %<*package> % \fi % \section{Implementation} % \ifenglish\else % Die Dokumentation des Quellcodes ist nur auf Englisch verfügbar. % \fi % % \begin{macrocode} \RequirePackage{graphicx}[1999/02/16] \RequirePackage{pgf} % \end{macrocode} % % \begin{environment}{clipbox} % \begin{macro}{\clipbox} % \begin{macrocode} \newcommand\clipbox{% \begingroup \def\adjustbox@name{clipbox}% \@ifstar {\adjustbox@{clip,viewport=}}% {\adjustbox@{clip,trim=}}% } % \end{macrocode} % \end{macro} % \begin{macrocode} \def\endclipbox{% \endadjustbox } % \end{macrocode} % \end{environment} % % \begin{environment}{clipbox*} % \begin{macrocode} \newenvironment{clipbox*} {\begin{clipbox}*} {\end{clipbox}} % \end{macrocode} % \end{environment} % % \begin{environment}{trimbox} % \begin{macro}{\trimbox} % \begin{macrocode} \newcommand\trimbox{% \begingroup \def\adjustbox@name{trimbox}% \@ifstar {\adjustbox@{viewport=}}% {\adjustbox@{trim=}}% } % \end{macrocode} % \end{macro} % \begin{macrocode} \def\endtrimbox{% \endadjustbox } % \end{macrocode} % \end{environment} % % \begin{environment}{trimbox*} % \begin{macrocode} \newenvironment{trimbox*} {\begin{trimbox}*} {\end{trimbox}} % \end{macrocode} % \end{environment} % % \begin{environment}{adjustbox} % \begin{macro}{\adjustbox} % \begin{macrocode} \newcommand\adjustbox{% \begingroup \def\adjustbox@name{adjustbox}% \adjustbox@{}% } % \end{macrocode} % \end{macro} % \begin{macrocode} \def\endadjustbox{% \unskip \egroup \color@endgroup \egroup \adjustbox@@ } % \end{macrocode} % \end{environment} % % % \begin{macro}{\adjustbox@} % \begin{macrocode} \def\adjustbox@#1#2{% \def\adjustbox@setkeys{\setkeys{Gin}{#1#2}}% \ifx\@currenvir\adjustbox@name \edef\@currenvir{\@currenvir\noexpand\empty}% \def\next{% \setbox\@tempboxa\hbox\bgroup \color@setgroup\bgroup \ignorespaces }% \else \def\next{% \setbox\@tempboxa\hbox\bgroup%0 \color@setgroup\bgroup% \aftergroup\color@endgroup \aftergroup\egroup% \aftergroup\adjustbox@@ \@ifnextchar\bgroup {\let\@let@token=}% {\adjust@box}% }% \fi \next } % \end{macrocode} % \end{macro} % % \begin{macro}{\adjust@box} % \begin{macrocode} \def\adjust@box#1{% #1\egroup } % \end{macrocode} % \end{macro} % % \begin{macro}{\adjustbox@@} % \begin{macrocode} \def\adjustbox@@{% % \end{macrocode} % Set the box dimension macros. % \begin{macrocode} \def\width{\wd\@tempboxa}% \def\height{\ht\@tempboxa}% \def\depth{\dp\@tempboxa}% \@tempdimc=\ht\@tempboxa \advance\@tempdimc by \dp\@tempboxa\relax \def\totalheight{\@tempdimc}% % \end{macrocode} % Locally redefine \Macro\Gin@defaultbp to use \Macro\pgfmathsetmacro % with |bp| as the default unit. % This should yield the same results (apart of smaller rounding errors) if values % are given without unit but avoids the internal conversion to |bp| of values with % units. % \begin{macrocode} \def\pgfmathresultunitscale{1bp}% \let\pgfmathpostparse\pgfmathscaleresult \let\Gin@defaultbp\pgfmathsetmacro \let\setlength\pgfmathsetlength % \end{macrocode} % The rest of the code was adapted from the \Macro\Gin@ii macro from the |graphicx| package. % The \emph{temp switch a} is set to |true| to indicate to |graphicx| that the % scaling should be done internal, so this package doesn't have to do it. % The content including macro \Macro\adjustbox@@@ is but into place, % the saved options are activated and the final size is set. % The typesetting of the content is finally done by executing the token register. % \begin{macrocode} \@tempswatrue \toks@{{\adjustbox@@@}}% \adjustbox@setkeys \Gin@esetsize \the\toks@ \endgroup } % \end{macrocode} % \end{macro} % % \begin{macro}{\adjustbox@@@} % \begin{macrocode} \def\adjustbox@@@{% \def\Gin@llx{0}% \Gin@defaultbp\Gin@lly{+-\dp\@tempboxa}% \Gin@defaultbp\Gin@urx{+\wd\@tempboxa}% \Gin@defaultbp\Gin@ury{+\ht\@tempboxa}% \Gin@viewport@code \begin{pgfpicture}% \pgfpathmoveto{\pgfqpoint{\Gin@llx pt}{\Gin@lly pt}}% \pgfpathlineto{\pgfqpoint{\Gin@urx pt}{\Gin@lly pt}}% \pgfpathlineto{\pgfqpoint{\Gin@urx pt}{\Gin@ury pt}}% \pgfpathlineto{\pgfqpoint{\Gin@llx pt}{\Gin@ury pt}}% \pgfpathclose \expandafter\pgfusepath\ifGin@clip{clip}\else{use as bounding box}\fi\relax \pgfset{inner sep=\z@,outer sep=\z@}% \pgfnode{rectangle}{base west}{\box\@tempboxa}{ADJUSTBOX@NODE}{}% \pgfsetbaselinepointnow{\pgfpointanchor{ADJUSTBOX@NODE}{base}}% \end{pgfpicture}% } % \end{macrocode} % \end{macro} % % \Finale % \iffalse % %<*de> %% Wrapper to set language to German and jobname to 'adjustbox-de'. %% Does not have to be included in distributions or placed on CTAN. \expandafter\newif\csname ifenglish\endcsname \englishfalse \input{adjustbox.dtx} % % \fi