Ich habe eine Zeichnung mit TikZ erstellt und habe darin eine Menge lange Pfade als Hilfslinien/-kreise. Wenn ich meine Zeichnung compiliere, nimmt sie so viel Platz weg, als wären die Pfade Linien, was ja auch soweit klar ist. Gibt es dennoch die Möglichkeit, den Compiler anzuweisen, nach der Erstellung das Dokumentes nach dem tatsächlich benötigtem Platz zu schauen und das Bild entsprechend anzupassen? |
Werden keine weiteren Vorgaben gemacht, berücksichtigt TikZ bei der Ermittlung der Bounding Box alle verwendeten Pfade, auch wenn sie weder gezeichnet noch gefüllt werden und damit gar nicht sichtbar sind. Die Bounding Box ist dabei der rechteckige Platz, der dann im Dokument für die Abbildung frei gehalten wird. Die Beispiele dienen nur der Illustration. Die eigentliche Bounding Box ist jeweils rot und die eigentlich nicht gezeichneten Hilfslinien sind grün. Open in writeLaTeX
\documentclass{scrartcl} \usepackage{tikz} \usetikzlibrary{intersections,calc} \usepackage{blindtext} \begin{document} \begin{tikzpicture}[very thick, hilfslinie/.style={draw,green!50!black,green,thin} ] \draw[name path=dreieck](0,0)coordinate[label=above left:A](A) --(3,-1)coordinate[label=below:B](B)--(4.5,3)coordinate[label=above:C](C)--cycle; \path[hilfslinie,name path=kreis1](A)circle[radius=2cm]; \path[name intersections={of=kreis1 and dreieck,by={h1,h2}}]; \path(h1)[hilfslinie,name path=kreis2]circle[radius=1cm]; \path(h2)[hilfslinie,name path=kreis3]circle[radius=1cm]; \path[hilfslinie,name path=g,name intersections={of=kreis2 and kreis3}]($(A)!8cm!(intersection-2)$)--(A); \draw[blue,name intersections={of=dreieck and g}](intersection-2)--(A); %Bounding Box zeichnen \draw[red](current bounding box.south west)rectangle(current bounding box.north east); \end{tikzpicture} \blindtext \end{document} Über die Optionen overlay
In obigem Beispiel könnte man die Option einfach bei der Stildefinition für die Hilfslinien ergänzen, so dass sie für alle Pfade mit diesem Stil gilt: Open in writeLaTeX
\documentclass{scrartcl} \usepackage{tikz} \usetikzlibrary{intersections,calc} \usepackage{blindtext} \begin{document} \begin{tikzpicture}[very thick, hilfslinie/.style={draw,green!50!black,green,thin, overlay % kein Einfluss auf Bounding Box } ] \draw[name path=dreieck](0,0)coordinate[label=above left:A](A) --(3,-1)coordinate[label=below:B](B)--(4.5,3)coordinate[label=above:C](C)--cycle; \path[hilfslinie,name path=kreis1](A)circle[radius=2cm]; \path[name intersections={of=kreis1 and dreieck,by={h1,h2}}]; \path(h1)[hilfslinie,name path=kreis2]circle[radius=1cm]; \path(h2)[hilfslinie,name path=kreis3]circle[radius=1cm]; \path[hilfslinie,name path=g,name intersections={of=kreis2 and kreis3}]($(A)!8cm!(intersection-2)$)--(A); \draw[blue,name intersections={of=dreieck and g}](intersection-2)--(A); %Bounding Box zeichnen \draw[red](current bounding box.south west)rectangle(current bounding box.north east); \end{tikzpicture} \blindtext \end{document}
In obigem Beispiel könnte man das wie folgt einfügen: Open in writeLaTeX
\documentclass{scrartcl} \usepackage{tikz} \usetikzlibrary{intersections,calc} \usepackage{blindtext} \begin{document} \begin{tikzpicture}[very thick, hilfslinie/.style={draw,green!50!black,green,thin} ] \draw[name path=dreieck](0,0)coordinate[label=above left:A](A) --(3,-1)coordinate[label=below:B](B)--(4.5,3)coordinate[label=above:C](C)--cycle; \useasboundingbox(A)--(B)--(C)--cycle; \path[hilfslinie,name path=kreis1](A)circle[radius=2cm]; \path[name intersections={of=kreis1 and dreieck,by={h1,h2}}]; \path(h1)[hilfslinie,name path=kreis2]circle[radius=1cm]; \path(h2)[hilfslinie,name path=kreis3]circle[radius=1cm]; \path[hilfslinie,name path=g,name intersections={of=kreis2 and kreis3}]($(A)!8cm!(intersection-2)$)--(A); \draw[blue,name intersections={of=dreieck and g}](intersection-2)--(A); %Bounding Box zeichnen \draw[red](current bounding box.south west)rectangle(current bounding box.north east); \end{tikzpicture} \blindtext \end{document}
Im Beispiel ist die Beschränkung des Beschneidens mittels Open in writeLaTeX
\begin{scope} \draw[name path=dreieck](0,0)coordinate[label=above left:A](A) --(3,-1)coordinate[label=below:B](B)--(4.5,3)coordinate[label=above:C](C)--cycle; \clip(A)--(B)--(C)--cycle; ... \end{scope} %Bounding Box zeichnen \draw[red](current bounding box.south west)rectangle(current bounding box.north east); Mit einer Kombination von beiden Befehlen, könnte man auch die Bounding Box auf den wesentlichen Teil der Zeichnung beschränken, aber innerhalb von diesem die Hilfslinien mit anzeigen lassen: Open in writeLaTeX
\draw[name path=dreieck](0,0)coordinate[label=above left:A](A) --(3,-1)coordinate[label=below:B](B)--(4.5,3)coordinate[label=above:C](C)--cycle; \useasboundingbox(A)--(B)--(C)--cycle; \clip[preaction={draw=red}](current bounding box.south west)rectangle(current bounding box.north east);
Umgebung
beantwortet 30 Mär '14, 22:34 esdd |
Willkommen auf der TeXwelt! :) Wenn ich Dich richtig verstanden habe, suchst Du sowas wie TikZ'
clip
-Option.\path[use as bounding box] (0,0) rectangle (1,1);
Die Koordinaten muss man natürlich noch anpassen.