Für Tikz-Bilder nur Abbildungen und nicht die ganze Seite erstellen

Für Tikz-Bilder nur Abbildungen und nicht die ganze Seite erstellen

Ich möchte nur die Grafik produzieren und nicht die umgebende Seite. Im Wesentlichen hätte ich gerne ein weißes Kästchen um die Grafik, aber nicht eine ganze Seite voll.

ich fanddiese Antwort, und ich kann das MWE aus Peter Grills Antwort kompilieren. Ich verstehe, dass ich die \documentclass in standalone ändern sollte; Ich kann die Antwort jedoch nicht für mein Beispiel verwenden. Es wird ein leeres PDF erstellt (keine weiße Seite, einfach nichts). Dies ist eine modifizierte Version vonDieses Beispiel eines MLP, um zwei versteckte Ebenen statt nur einer zu haben:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\def\layersep{2.5cm}
\begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep,transform canvas={scale=1.5}]
    \tikzstyle{every pin edge}=[<-,shorten <=1pt]
    \tikzstyle{neuron}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
    \tikzstyle{input neuron}=[neuron, fill=green!50];
    \tikzstyle{output neuron}=[neuron, fill=red!50];
    \tikzstyle{hidden neuron}=[neuron, fill=blue!50];
    \tikzstyle{hidden2 neuron}=[neuron, fill=blue!50];
    \tikzstyle{annot} = [text width=4em, text centered]

% Draw the input layer nodes
    \foreach \name / \y in {1,...,4}
    % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4}
        \node[input neuron, pin=left:Input \#\y] (I-\name) at (0,-\y) {};

% Draw the hidden layer nodes
    \foreach \name / \y in {1,...,5}
        \path[yshift=0.5cm]
            node[hidden neuron] (H-\name) at (\layersep,-\y cm) {};

 % Draw the hidden layer nodes
    \foreach \name / \y in {1,...,5}
        \path[yshift=0.5cm]
            node[hidden2 neuron] (H2-\name) at (\layersep*2,-\y cm) {};

% Draw the output layer nodes
      \foreach \name / \y in {1,...,3}
        \path[yshift=0.5cm]
            node[output neuron,pin=right:Class \#\y] (O-\name) at (\layersep*3,-\y cm) {};

% Connect every node in the input layer with every node in the
% hidden layer.
    \foreach \source in {1,...,4}
        \foreach \dest in {1,...,5}
            \path (I-\source) edge (H-\dest);

 % Connect every node in the first hidden layer with every node in the
% second hidden layer.
    \foreach \source in {1,...,5}
        \foreach \dest in {1,...,5}
            \path (H-\source) edge (H2-\dest);

% Connect every node in the hidden layer with the output layer
    \foreach \source in {1,...,5}
        \foreach \dest in {1,...,3}
            \path (H2-\source) edge (O-\dest);

% Annotate the layers
    \node[annot,above of=H-1, node distance=1cm] (hl) {Hidden layer 1};
    \node[annot,above of=H2-1, node distance=1cm] (hl) {Hidden layer 2};
    \node[annot,right of=hl] {Output layer};
\end{tikzpicture}
\end{document}

Dadurch wird eine Seite mit dem Bild erstellt. Ich möchte eine Seite in der Größe des Bildes. Wie kann ich das machen?

Antwort1

Hier gibt es zwei Möglichkeiten, entweder auf die Standalone-Klasse umsteigen, was aus irgendeinem Grund nicht funktioniert, werde ich morgen testen. Oder sicherstellen, dass keine Kopf- oder Fußzeilen vorhanden sind, d. h. hinzufügen

\pagestyle{empty} 

Zur Präambel und neu kompilieren. Führen Sie dann in einem Terminal, einer DOS-Eingabeaufforderung oder was auch immer Ihr System bereitstellt, das resultierende PDF durch pdfcrop aus

pdfcrop file.pdf

Dadurch wird eine beschnittene Version der Datei unter dem Namenfile-crop.pdf


Bearbeiten: Nach dem Testen des Codes mit der standaloneKlasse funktioniert der Code, wenn Folgendes entfernt wird

transform canvas={scale=1.5}

Antwort2

Aus 25.4 Canvas Transformationsder TikZDokumentation:

Canvas-Transformationen sollten mit großer Vorsicht verwendet werden. In den meisten Fällen möchten Sie nicht, dass sich die Linienbreiten in einem Bild ändern, da dies zu visuellen Inkonsistenzen führt.

Ebenso wichtig ist, dass pgf bei der Verwendung von Canvas-Transformationen den Überblick über die Positionen der Knoten und die Bildgrößen verliert, da es die Auswirkungen der Canvas-Transformationen bei der Berechnung der Knotenkoordinaten nicht berücksichtigt (verlassen Sie sich jedoch nicht darauf, es kann sich in Zukunft ändern).

Beachten Sie abschließend, dass eine Canvas-Transformation immer auf den gesamten Pfad angewendet wird. Es ist nicht möglich (wie bei Koordinatentransformationen), in unterschiedlichen Teilen eines Pfads unterschiedliche Transformationen anzuwenden.

Kurz gesagt: Sie sollten keine Canvas-Transformationen verwenden, es sei denn, Sie wissen wirklich, was Sie tun.

Haben Sie gelesen pgf loses track ... of picture sizes? Dies ist das Problem, das auftritt, wenn articledurch geändert wird standalone. Wie transform canvas={scale=1.5}auf angewendet wurde tikzpicture(nicht nur auf ein bestimmtes path), standalonekann die korrekte Zahlengröße nicht berechnet werden, weil pgfsie nicht bekannt ist.

Sobald transform canvas={scale=1.5}auskommentiert ist, standalonewird die Abbildung wieder beschnitten:

\documentclass[border=2mm]{standalone} %<--- standalone
\usepackage{tikz}

\begin{document}

\def\layersep{2.5cm}
\begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep,
    %transform canvas={scale=1.5} <----- Comment out
]
    \tikzstyle{every pin edge}=[<-,shorten <=1pt]
    \tikzstyle{neuron}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
    \tikzstyle{input neuron}=[neuron, fill=green!50];
    \tikzstyle{output neuron}=[neuron, fill=red!50];
    \tikzstyle{hidden neuron}=[neuron, fill=blue!50];
    \tikzstyle{hidden2 neuron}=[neuron, fill=blue!50];
    \tikzstyle{annot} = [text width=4em, text centered]

% Draw the input layer nodes
    \foreach \name / \y in {1,...,4}
    % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4}
        \node[input neuron, pin=left:Input \#\y] (I-\name) at (0,-\y) {};

% Draw the hidden layer nodes
    \foreach \name / \y in {1,...,5}
        \path[yshift=0.5cm]
            node[hidden neuron] (H-\name) at (\layersep,-\y cm) {};

 % Draw the hidden layer nodes
    \foreach \name / \y in {1,...,5}
        \path[yshift=0.5cm]
            node[hidden2 neuron] (H2-\name) at (\layersep*2,-\y cm) {};

% Draw the output layer nodes
      \foreach \name / \y in {1,...,3}
        \path[yshift=0.5cm]
            node[output neuron,pin=right:Class \#\y] (O-\name) at (\layersep*3,-\y cm) {};

% Connect every node in the input layer with every node in the
% hidden layer.
    \foreach \source in {1,...,4}
        \foreach \dest in {1,...,5}
            \path (I-\source) edge (H-\dest);

 % Connect every node in the first hidden layer with every node in the
% second hidden layer.
    \foreach \source in {1,...,5}
        \foreach \dest in {1,...,5}
            \path (H-\source) edge (H2-\dest);

% Connect every node in the hidden layer with the output layer
    \foreach \source in {1,...,5}
        \foreach \dest in {1,...,3}
            \path (H2-\source) edge (O-\dest);

% Annotate the layers
    \node[annot,above of=H-1, node distance=1cm] (hl) {Hidden layer 1};
    \node[annot,above of=H2-1, node distance=1cm] (hl) {Hidden layer 2};
    \node[annot,right of=hl] {Output layer};
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Obwohl das Ergebnis nicht ist scaled, verstehe ich, dass es möglich ist, so etwas zu tun wie

\includegraphics[scale=1.5]{...}

um gleichwertige Ergebnisse zu erzielen wie transform canvas={scale=1.5}.

verwandte Informationen