PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grafik in tkiz-Umgebung mittels clip beschneiden



e271
19-10-2011, 15:47
Hallo,

ich füge in eine tikzpicture-Umgebung mit fester Breite eine PDF-Datei mit variabler Breite ein (vorher: pdfcrop). Manche PDF-Dateien sind jedoch breiter als die mit der tikzpicture-Umgebung festgelegte Box.

Wie kann ich denn mittels clip meine PDF-Dateien automatisch am rechten Ende der Box abschneiden, sofern sie breiter sind als die Box?

Anbei ein Minimalbeispiel (ohne die PDF-Datei):


\documentclass[11pt,twoside,paper=a4]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[ngerman]{babel}

\usepackage{calc}
\usepackage{mathtools}

\usepackage{tikz,pgf,pgfplots}

\usepackage[outer=37mm,inner=20mm,bottom=23mm,top=20mm]{geometry}
\geometry{papersize={170mm,240mm},total={124mm,185 mm}}

\tikzstyle{mybox} = [draw=black!100, fill=black!0, very thick,
rectangle, inner sep=5pt]

\makeatletter
\newcommand{\dummy}[1]{%
\dummy@i{#1}%
}
\def\dummy@i#1{%
\vspace{2mm}%
\hspace{3mm} %
\begin{tikzpicture}%
%\clip(?,?) rectangle (?,?); % <= Hier soll der Ausgabebereich beschnitten werden
\node [
mybox,
text width=\columnwidth-35pt
]\bgroup%
#1%
\egroup;%
\end{tikzpicture}%
\par%
}
\makeatother

\begin{document}
\dummy{\includegraphics[scale=0.8]{PDF-Datei-pdf}}
\end{document}

Viele Grüße
e271

mechanicus
19-10-2011, 19:19
Hi,

schaue dir das Paket adjustbox an. Allerdings verstehe ich auch deine Frage nicht richtig :(

Marco

e271
19-10-2011, 20:04
Danke für Deinen Tipp.

Nochmal zu meinem Problem:
Die tikzpicture-Umgebung erzeugt einen umrahmten Bereich, also quasi eine Framebox mit fester Breite.
In diese Box kommt mittels includegraphics eine pdf-Datei. Diese wurde vorher auf der Kommadozeile mit pdfcrop beschnitten.

Das Problem ist jetzt folgendes:
Manche pdf-Dateien sind etwas zu breit für die Box und ragen rechts hinaus auf den Seitenrand.
Darum möchte ich, dass alles, was rechts über die Box hinaus ragt, abgeschnitten wird.
Ich möchte das aber nicht jedesmal als Option bei includegraphics angeben, sondern innerhalb der tikzpicture-Umgebung automatisieren.

Ich hoffe, mein Anliegen ist jetzt etwas klarer :o

Viele Grüße
e271

tral
19-10-2011, 20:27
Hallo,

gib doch einfach \includgraphics ein "clip=true" als Option mit (siehe graphicx Doku)...

Christian.

e271
19-10-2011, 20:40
@tral
Dadurch wird aber noch nichts beschnitten. Ich müsste dann vorher noch ein "trim" als Option setzen und dabei bei jeder Grafik berechnen, wie viel abgeschnitten werden muss.

e271
19-10-2011, 21:45
Ich habs hingekriegt:

Hier die Ergänzungen/Änderungen:

...
\usepackage{adjustbox}

\newsavebox\IBox %
\newdimen\width %
\newdimen\height %

\makeatletter
\newcommand{\dummy}[1]{%
\dummy@i{#1}%
}
\def\dummy@i#1{%
\vspace{2mm}%
\hspace{3mm} %
\savebox\IBox
{%
#1%
}%
\width=\wd\IBox %
\height=\ht\IBox %
\begin{tikzpicture}%

\node [
mybox,
text width=\columnwidth-35pt
]\bgroup%
\pgfmathparse{max(\width-\columnwidth,0)} %
\clipbox{0pt 0pt \pgfmathresult pt 0pt}{#1}%
%
\egroup;%

\end{tikzpicture}%
\par%
}
\makeatother


Und hier nochmal das komplette Beispiel:


\documentclass[11pt,twoside,paper=a4]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[ngerman]{babel}

\usepackage{calc}
\usepackage{mathtools}

\usepackage{tikz,pgf,pgfplots}
\usepackage{adjustbox}

\usepackage[outer=37mm,inner=20mm,bottom=23mm,top=20mm]{geometry}
\geometry{papersize={170mm,240mm},total={124mm,185 mm}}

\tikzstyle{mybox} = [draw=black!100, fill=black!0, very thick,
rectangle, inner sep=5pt]

\newsavebox\IBox %
\newdimen\width %
\newdimen\height %

\makeatletter
\newcommand{\dummy}[1]{%
\dummy@i{#1}%
}
\def\dummy@i#1{%
\vspace{2mm}%
\hspace{3mm} %
\savebox\IBox
{%
#1%
}%
\width=\wd\IBox %
\height=\ht\IBox %
\begin{tikzpicture}%

\node [
mybox,
text width=\columnwidth-35pt
]\bgroup%
\pgfmathparse{max(\width-\columnwidth,0)} %
\clipbox{0pt 0pt \pgfmathresult pt 0pt}{#1}%
%
\egroup;%

\end{tikzpicture}%
\par%
}
\makeatother

\begin{document}
\dummy{\includegraphics[scale=0.8]{PDF-Datei.pdf}}
\end{document}