Wie schneide ich aus diesem Beipiel ein Teilbild aus, so dass der Ausschnitt endlich die Gesamtgröße des Bildes hat.

So sollte im folgenden Beipiel eigentlich a + <Bild> + b ohne Leerräume stehen.

alt text

Open in Online-Editor
\documentclass[border=5mm]{standalone}
%\documentclass{scrreprt}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},  germandbls={ß}}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc} 
\usepackage{microtype}

\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}

\newcommand{\UntenLinks}{%
     \begin{scope}[]
      \clip(KL-2)rectangle(KL-3);
      \fill[red]
        [reverseclip]
        [KreisLinks]
      ;
    \end{scope}
}%
\newcommand{\Mitte}{%
    \begin{scope}
      \clip(KL-3)rectangle(KR-2-|KR-3);
      \fill[brown]
        [reverseclip]
        [KreisLinks]
        [KreisRechts]
      ;
    \end{scope}
}%
\newcommand{\UntenRechts}{%
    \begin{scope}
      \clip(KR-3)rectangle(KR-2);
      \fill[green]
        [reverseclip]
        [KreisRechts]
      ;
    \end{scope}
}%
\newcommand{\ObenRechts}{%
    \begin{scope}
    \clip(KR-1)rectangle(KR-2);
    \fill[yellow]
      [reverseclip]
      [KreisRechts]
    ;
  \end{scope}
}%

\newcommand{\Bild}[1]{%====================
\begin{tikzpicture}[
  scale=0.5,
  very thick,
  fill opacity=.5
]
\pgfdeclarelayer{pre main}
\pgfsetlayers{pre main,main}
% Größen
\newcommand\D{10cm}
\tikzset{
  KreisLinks/.style={insert path={(.5*\D,.5*\D)circle[radius=.5*\D]}},
  KreisRechts/.style={insert path={(1.5*\D,.5*\D)circle[radius=.5*\D]}},
  Diagonalendreieck/.style={insert path={(0,0)--+(2*\D,\D)--+(2*\D,0)--cycle}},
  reverseclip/.style={insert path={(current bounding box.south west)rectangle(current bounding box.north east)}},
%
Zeichnen/.style={%
%draw
}%
}
% Gesamtes Rechteck
\path[Zeichnen, name path=Rechteck](0,0) rectangle +(2*\D,\D);
% Kreis links
\path[Zeichnen,
%  path picture={\fill[orange][Diagonalendreieck];},
  name path=KreisLinks
] [KreisLinks];
% Kreis rechts
\path[Zeichnen, 
%  path picture={\fill[blue][Diagonalendreieck];},
  name path=KreisRechts
] [KreisRechts];
%Diagonale
\path[Zeichnen] (0,0) -- +(2*\D,\D);

% Schnittpunkte Kreise mit Rechtecken
\path [name intersections={of=KreisLinks and Rechteck,name=KL}];
\path [name intersections={of=KreisRechts and Rechteck,name=KR}];
% Füllen der Teilflächen
\pgfonlayer{pre main}
\begin{scope}
\clip[Diagonalendreieck];
{#1} % Argumente
\end{scope}
\endpgfonlayer
\end{tikzpicture}
}%====================

a+\Bild{\UntenLinks}+ b%\UntenLinks \Mitte \UntenRechts \ObenRechts
\end{document}

gefragt 15 Aug, 10:17

cis's gravatar image

cis
5.4k861169
Akzeptiert: 68%

bearbeitet 18 Aug, 02:18

sudo's gravatar image

sudo
1.9k1817


Du kannst für das gesamte Bild die overlay Option setzen und diese für die darzustellenden Bereiche mit overlay=false wieder aufheben.

Beim "umgekehrten" Clippen kann man dann aber nicht mehr die Bounding Box verwenden. Deshalb würde ich [reverseclip] durch [Rechteck] mit

Open in Online-Editor
Rechteck/.style={insert path={(0,0)rectangle(2*\D,\D)}},

ersetzen.

Damit das Teilbild \UntenLinks nicht zu hoch und das \ObenRechts nicht zu breit wird, müssen für diese beiden Befehle zusätzlich noch die Schnittpunkte der Diagonalen mit den Kreisen verwendet werden.

Und zum Schluß muss noch das Zeilenende nach \end{tikzpicture} auskommentiert werden, damit es kein Leerzeichen einfügt.

Open in Online-Editor
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}

\newcommand{\UntenLinks}{%
     \begin{scope}[overlay=false]
      \clip(KL-2|-KLD-2)rectangle(KL-3);
      \fill[red]
        [Rechteck]
        [KreisLinks]
      ;
    \end{scope}
}
\newcommand{\Mitte}{%
    \begin{scope}[overlay=false]
      \clip(KL-3)rectangle(KR-2-|KR-3);
      \fill[brown]
        [Rechteck]
        [KreisLinks]
        [KreisRechts]
      ;
    \end{scope}
}
\newcommand{\UntenRechts}{%
    \begin{scope}[overlay=false]
      \clip(KR-3)rectangle(KR-2);
      \fill[green]
        [Rechteck]
        [KreisRechts]
      ;
    \end{scope}
}
\newcommand{\ObenRechts}{%
    \begin{scope}[overlay=false]
    \clip(KR-1-|KRD-1)rectangle(KR-2);
    \fill[yellow]
      [Rechteck]
      [KreisRechts]
    ;
  \end{scope}
}

\newcommand{\Bild}[1]{%
  \begin{tikzpicture}[
    scale=0.5,
    very thick,
    fill opacity=.5,
    %
    Zeichnen/.style={%
      %draw
    },
    overlay
  ]
  \pgfdeclarelayer{pre main}
  \pgfsetlayers{pre main,main}
  % Größen
  \newcommand\D{10cm}
  \tikzset{
    KreisLinks/.style={insert path={(.5*\D,.5*\D)circle[radius=.5*\D]}},
    KreisRechts/.style={insert path={(1.5*\D,.5*\D)circle[radius=.5*\D]}},
    Diagonalendreieck/.style={insert path={(0,0)--+(2*\D,\D)--+(2*\D,0)--cycle}},
    Rechteck/.style={insert path={(0,0)rectangle(2*\D,\D)}},
  }
  % Gesamtes Rechteck
  \path[Zeichnen, name path=Rechteck][Rechteck];
  % Kreis links
  \path[Zeichnen,
    name path=KreisLinks
  ] [KreisLinks];
  % Kreis rechts
  \path[Zeichnen,
    name path=KreisRechts
  ] [KreisRechts];
  %Diagonale
  \path[Zeichnen,name path=Diagonale] (0,0) -- (2*\D,\D);
  % Schnittpunkte Kreise mit Rechteck und Diagonale
  \path [name intersections={of=KreisLinks and Rechteck,name=KL}];
  \path [name intersections={of=KreisLinks and Diagonale,name=KLD}];
  \path [name intersections={of=KreisRechts and Rechteck,name=KR}];
  \path [name intersections={of=KreisRechts and Diagonale,name=KRD}];
  % Füllen der Teilflächen
  \pgfonlayer{pre main}
    \begin{scope}
      \clip[Diagonalendreieck];
      {#1} % Argumente
    \end{scope}
  \endpgfonlayer
  \end{tikzpicture}% <- sonst Leerzeichen
}

\begin{document}
a+%
%\Bild{\UntenLinks}%
%\Bild{\Mitte}%
%\Bild{\UntenRechts}%
\Bild{\ObenRechts}%
+ b
\end{document}

alt text

alt text

alt text

alt text

Permanenter link

beantwortet 15 Aug, 11:52

esdd's gravatar image

esdd
14.2k53251

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×13
×6

Frage gestellt: 15 Aug, 10:17

Frage wurde angeschaut: 342 Mal

Zuletzt aktualisiert: 18 Aug, 02:18