Actualizar

Actualizar

Estoy escribiendo una figura con varios segmentos y parece que a tikz no le gusta. Entonces agregué:

\usepgfplotslibrary{external} 
\usetikzlibrary{matrix,chains,positioning,decorations.pathreplacing,arrows} 
\tikzexternalize

Funcionó bien y, de repente, si solo tenía un arco más, la compilación se bloquea.

\write18 enabled.
entering extended mode

Si miro en myFigure.log, no veo nada malo. termina con

Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO)
Package ifpdf Info: pdfTeX in PDF mode is detected.
)
Package pdftexcmds Info: LuaTeX not detected.
Package pdftexcmds Info: \pdf@primitive is availabl 

Como no tengo ningún mensaje de error, realmente no sé dónde buscar.

Aquí hay un ejemplo de 2 figuras que no se compilan en mi sistema:

\documentclass[11pt,a4]{article}
\usepackage{graphics}
\usepackage{url}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[dcucite,abbr]{harvard}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{external}
\usetikzlibrary{matrix,chains,positioning,decorations.pathreplacing,arrows}
\tikzexternalize

\textwidth 150mm \textheight 230mm \topmargin -20mm
\renewcommand{\baselinestretch}{1.25}
\marginparwidth 17mm
\oddsidemargin 7mm
\newcommand{\cvd}{\hfill\raisebox{3pt}{\fbox{\rule{0mm}{1mm}\hspace*{1mm}\rule{0mm}{1mm}}\,} \vspace{5mm}}
\newcommand{\proof}{\vspace{1mm}\noindent{\it Proof}\quad}
\renewcommand{\thefootnote}{\arabic{footnote}}
\newcounter{bean}

\date{}

\begin{document}
\pagestyle{empty}

\begin{figure}[h]\begin{center}

\begin{tikzpicture}[
init/.style={
  draw,
  circle,
  inner sep=2pt,
  font=\Huge,
}]
\matrix[row sep= 5mm, column sep=8mm] (m) {
\node [init] (x0) {}; & \node [init] (x1) {}; & \node[init] (x2) {}; & \node[init] (x3) {}; & \node[init] (x4) {}; & \node[init] (x5) {}; & \node[init] (x6) {}; & \node[init] (x7) {};\\
\node [init] (y0) {}; & \node [init] (y1) {}; & \node[init] (y2) {}; & \node[init] (y3) {}; & \node[init] (y4) {}; & \node[init] (y5) {}; & \node[init] (y6) {}; & \node[init] (y7) {};\\
\node [init] (z0) {}; & \node [init] (z1) {}; & \node[init] (z2) {}; & \node[init] (z3) {}; & \node[init] (z4) {}; & \node[init] (z5) {}; & \node[init] (z6) {}; & \node[init] (z7) {};\\
};

\node [init, left=of m] (s) {$s$};

\node [init, right=of m] (e) {$e$};

\path (s) edge[->, dotted] (x0);
\path (s) edge[->, dotted] (y0);
\path (s) edge[->, dotted] (z0);
\path (s) edge[->, dotted] (x1);
%\path (s) edge[->, dotted] (y1);
\path (s) edge[->, thick] (z1);
\path (s) edge[->, dotted] (x2);
%\path (s) edge[->, dotted] (y2);
\path (s) edge[->, dotted] (z2);
\path (s) edge[->, dotted] (x3);
%\path (s) edge[->, dotted] (y3);
\path (s) edge[->, dotted] (z3);
\path (s) edge[->, dotted] (x4);
%\path (s) edge[->, dotted] (y4);
\path (s) edge[->, dotted] (z4);
\path (s) edge[->, dotted] (x5);
%\path (s) edge[->, dotted] (y5);
\path (s) edge[->, dotted] (z5);
\path (s) edge[->, dotted] (x6);
%\path (s) edge[->, dotted] (y6);
\path (s) edge[->, dotted] (z6);
\path (s) edge[->, dotted] (x7);
%\path (s) edge[->, dotted] (y7);
\path (s) edge[->, dotted] (z7);

\path (x0) edge[->, dotted] (x1);
\path (x0) edge[->, dotted] (y1);
\path (x0) edge[->, dotted] (z1);
\path (y0) edge[->, dotted] (x1);
\path (y0) edge[->, dotted] (y1);
\path (y0) edge[->, dotted] (z1);
\path (z0) edge[->, dotted] (x1);
\path (z0) edge[->, dotted] (y1);
\path (z0) edge[->, dotted] (z1);

\path (x1) edge[->, dotted] (x2);
\path (x1) edge[->, dotted] (y2);
\path (x1) edge[->, dotted] (z2);
\path (y1) edge[->, dotted] (x2);
\path (y1) edge[->, dotted] (y2);
\path (y1) edge[->, dotted] (z2);
\path (z1) edge[->, dotted] (x2);
\path (z1) edge[->, thick] (y2);
\path (z1) edge[->, dotted] (z2);

\path (x2) edge[->, dotted] (x3);
\path (x2) edge[->, dotted] (y3);
\path (x2) edge[->, dotted] (z3);
\path (y2) edge[->, dotted] (x3);
\path (y2) edge[->, thick] (y3);
\path (y2) edge[->, dotted] (z3);
\path (z2) edge[->, dotted] (x3);
\path (z2) edge[->, dotted] (y3);
\path (z2) edge[->, dotted] (z3);

\path (x3) edge[->, dotted] (x4);
\path (x3) edge[->, dotted] (y4);
\path (x3) edge[->, dotted] (z4);
\path (y3) edge[->, dotted] (x4);
\path (y3) edge[->, thick] (y4);
\path (y3) edge[->, dotted] (z4);
\path (z3) edge[->, dotted] (x4);
\path (z3) edge[->, dotted] (y4);
\path (z3) edge[->, dotted] (z4);

\path (x4) edge[->, dotted] (x5);
\path (x4) edge[->, dotted] (y5);
\path (x4) edge[->, dotted] (z5);
\path (y4) edge[->, thick] (x5);
\path (y4) edge[->, thick] (y5);
\path (y4) edge[->, dotted] (z5);
\path (z4) edge[->, dotted] (x5);
\path (z4) edge[->, dotted] (y5);
\path (z4) edge[->, dotted] (z5);

\path (x5) edge[->, thick] (x6);
\path (x5) edge[->, dotted] (y6);
\path (x5) edge[->, dotted] (z6);
\path (y5) edge[->, thick] (x6);
\path (y5) edge[->, dotted] (y6);
\path (y5) edge[->, dotted] (z6);
\path (z5) edge[->, dotted] (x6);
\path (z5) edge[->, dotted] (y6);
\path (z5) edge[->, dotted] (z6);

\path (x6) edge[->, thick] (x7);
\path (x6) edge[->, dotted] (y7);
\path (x6) edge[->, dotted] (z7);
\path (y6) edge[->, dotted] (x7);
\path (y6) edge[->, dotted] (y7);
\path (y6) edge[->, dotted] (z7);
\path (z6) edge[->, dotted] (x7);
\path (z6) edge[->, dotted] (y7);
\path (z6) edge[->, dotted] (z7);

\path (x0) edge[->, dotted] (e);
%\path (y0) edge[->, dotted] (e);
\path (z0) edge[->, dotted] (e);
\path (x1) edge[->, dotted] (e);
%\path (y1) edge[->, dotted] (e);
\path (z1) edge[->, dotted] (e);
\path (x2) edge[->, dotted] (e);
%\path (y2) edge[->, dotted] (e);
\path (z2) edge[->, dotted] (e);
\path (x3) edge[->, dotted] (e);
%\path (y3) edge[->, dotted] (e);
\path (z3) edge[->, dotted] (e);
\path (x4) edge[->, dotted] (e);
%\path (y4) edge[->, dotted] (e);
\path (z4) edge[->, dotted] (e);
\path (x5) edge[->, dotted] (e);
%\path (y5) edge[->, dotted] (e);
\path (z5) edge[->, dotted] (e);
\path (x6) edge[->, dotted] (e);
%\path (y6) edge[->, dotted] (e);
\path (z6) edge[->, dotted] (e);
\path (x7) edge[->, dotted] (e);
\path (x7) edge[->, thick] (e);
\path (z7) edge[->, dotted] (e);

\node [left=of x0, xshift=-1cm] (A1) {A};
\node [left=of y0, xshift=-1cm] (A2) {B};
\node [left=of z0, xshift=-1cm] (A3) {C};

\node [above=of A1] (types) {Title 1};
\node [above=of m] (types) {Title 2};

\node [below=of z0, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{a}};
\node [below=of z1, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{b}};
\node [below=of z2, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{c}};
\node [below=of z3, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{d}};
\node [below=of z4, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{e}};
\node [below=of z5, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{f}};
\node [below=of z6, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{g}};
\node [below=of z7, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{h}};

\end{tikzpicture}

\end{center}\end{figure}

\begin{figure}[h!]\begin{center}

\begin{tikzpicture}[
init/.style={
  draw,
  circle,
  inner sep=2pt,
  font=\Huge,
  %join = by -latex
}]
\matrix[row sep= 5mm, column sep=8mm] (m) {
\node [init] (x0) {}; & \node [init] (x1) {}; & \node[init] (x2) {}; & \node[init] (x3) {}; & \node[init] (x4) {}; & \node[init] (x5) {}; & \node[init] (x6) {}; & \node[init] (x7) {};\\
\node [init] (y0) {}; & \node [init] (y1) {}; & \node[init] (y2) {}; & \node[init] (y3) {}; & \node[init] (y4) {}; & \node[init] (y5) {}; & \node[init] (y6) {}; & \node[init] (y7) {};\\
\node [init] (z0) {}; & \node [init] (z1) {}; & \node[init] (z2) {}; & \node[init] (z3) {}; & \node[init] (z4) {}; & \node[init] (z5) {}; & \node[init] (z6) {}; & \node[init] (z7) {};\\
};

\node [init, left=of m] (s) {$s$};

\node [init, right=of m] (e) {$e$};

\path (s) edge[->, dotted, very thick] node {\textbf{7}} (x0);
\path (s) edge[->, dotted, very thick] node {\textbf{1}} (y0);
\path (s) edge[->, dotted, very thick] node {\textbf{2}} (z0);
\path (s) edge[->, dotted] (x1);
\path (s) edge[->, dotted] (e);
\path (s) edge[->, dotted] (z1);
\path (s) edge[->, dotted] (x2);
\path (s) edge[->, dotted] (z2);
\path (s) edge[->, dotted] (x3);
\path (s) edge[->, dotted] (z3);
\path (s) edge[->, dotted] (x4);
\path (s) edge[->, dotted] (z4);
\path (s) edge[->, dotted] (x5);
\path (s) edge[->, dotted] (z5);
\path (s) edge[->, dotted] (x6);
\path (s) edge[->, dotted] (z6);
\path (s) edge[->, dotted] (x7);
\path (s) edge[->, dotted] (z7);

\path (x0) edge[->, dotted, very thick] node {\textbf{7}} (x1);
\path (x0) edge[->, dotted] (y1);
\path (x0) edge[->, dotted] (z1);
\path (y0) edge[->, dotted, very thick] node {\textbf{7}} (x1);
\path (y0) edge[->, dotted] (z1);
\path (z0) edge[->, dotted, very thick] node {\textbf{7}} (x1);
\path (z0) edge[->, dotted] (y1);
\path (z0) edge[->, dotted] (z7);

\path (x1) edge[->, dotted] (x7);
\path (x1) edge[->, dotted, very thick] node {\textbf{1}} (y2);
\path (x1) edge[->, dotted] (z2);
\path (y1) edge[->, dotted] (x2);
\path (y1) edge[->, dotted, very thick] node {\textbf{1}} (y2);
\path (y1) edge[->, dotted] (z2);
\path (z1) edge[->, dotted] (x2);
\path (z1) edge[->, dotted, very thick] node {\textbf{1}} (y2);

\path (x2) edge[->, dotted] (y3);
\path (x2) edge[->, dotted, very thick] node {\textbf{2}} (z3);
\path (y2) edge[->, dotted] (x3);
\path (y2) edge[->, dotted, very thick] node {\textbf{2}} (z3);
\path (z2) edge[->, dotted] (x3);
\path (z2) edge[->, dotted] (y3);
\path (z2) edge[->, dotted, very thick] node {\textbf{2}} (z3);

\path (x3) edge[->, dotted] (y4);
\path (x3) edge[->, dotted] (z4);
\path (y3) edge[->, dotted] (x4);
%\path (y3) edge[->, dotted] (y4);
\path (y3) edge[->, dotted] (z4);
\path (z3) edge[->, dotted] (x4);
\path (z3) edge[->, dotted] (y4);
%\path (z3) edge[->, dotted] (z4);
%
%\path (x4) edge[->, dotted] (x5);
\path (x4) edge[->, dotted] (y5);
\path (x4) edge[->, dotted[ (z5);
\path (y4) edge[->, dotted] (x5);
%\path (y4) edge[->, dotted] (y5);
\path (y4) edge[->, dotted] (z5);
%\path (z4) edge[->, dotted] (x5);
%\path (z4) edge[->, dotted] (y5);
%\path (z4) edge[->, dotted] (z5);
%
%\path (x5) edge[->, dotted] (x6);
%\path (x5) edge[->, dotted] (y6);
%\path (x5) edge[->, dotted] (z6);
%\path (y5) edge[->, dotted] (x6);
%\path (y5) edge[->, dotted] (y6);
%\path (y5) edge[->, dotted] (z6);
%\path (z5) edge[->, dotted] (x6);
%\path (z5) edge[->, dotted] (y6);
%\path (z5) edge[->, dotted] (z6);
%
%\path (x6) edge[->, dotted] (x7);
%\path (x6) edge[->, dotted] (y7);
%\path (x6) edge[->, dotted] (z7);
%\path (y6) edge[->, dotted] (x7);
%\path (y6) edge[->, dotted] (y7);
%\path (y6) edge[->, dotted] (z7);
%\path (z6) edge[->, dotted] (x7);
%\path (z6) edge[->, dotted] (y7);
%\path (z6) edge[->, dotted] (z7);
%
%\path (x0) edge[->, dotted] (e);
%\path (y0) edge[->, dotted] (e);
%\path (z0) edge[->, dotted] (e);
%\path (x1) edge[->, dotted] (e);
%\path (y1) edge[->, dotted] (e);
%\path (z1) edge[->, dotted] (e);
%\path (x2) edge[->, dotted] (e);
%\path (y2) edge[->, dotted] (e);
%\path (z2) edge[->, dotted] (e);
%\path (x3) edge[->, dotted] (e);
%\path (y3) edge[->, dotted] (e);
%\path (z3) edge[->, dotted] (e);
%\path (x4) edge[->, dotted] (e);
%\path (y4) edge[->, dotted] (e);
%\path (z4) edge[->, dotted] (e);
%\path (x5) edge[->, dotted] (e);
%\path (y5) edge[->, dotted] (e);
%\path (z5) edge[->, dotted, very thick] node {\textbf{0}} (e);
%\path (x6) edge[->, dotted] (e);
%\path (y6) edge[->, dotted] (e);
%\path (z6) edge[->, dotted] (e);
%\path (x7) edge[->, dotted, very thick] node {\textbf{0}} (e);
%\path (y7) edge[->, dotted, very thick] node {\textbf{0}} (e);
%\path (z7) edge[->, dotted, very thick] node {\textbf{0}} (e);

\node [left=of x0, xshift=-1cm] (A1) {A};
\node [left=of y0, xshift=-1cm] (A2) {B};
\node [left=of z0, xshift=-1cm] (A3) {C};

\node [below=of z0, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{a}};
\node [below=of z1, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{b}};
\node [below=of z2, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{c}};
\node [below=of z3, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{d}};
\node [below=of z4, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{e}};
\node [below=of z5, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{f}};
\node [below=of z6, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{g}};
\node [below=of z7, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{h}};

\end{tikzpicture}

\end{center}\end{figure}

\end{document}

Esto crea archivos test-figure0.dep, .dpth, .log, .md5 y .pdf, pero para figure1, hay todos menos PDF. Utilizo TeXShop para compilar con 'pdflatex -shell-escape' como comando predeterminado

Respuesta1

El problema es el número excesivo de edgeen su segunda figura que de alguna manera (no encontré la razón exacta) congela el compilador, sin producir ningún error de "falta de memoria".

Externalizar la figura no ayudará, porque después de todo, pdflatex debe invocarse de todos modos sobre la figura externa, lo que congela el compilador nuevamente.

Dos estrategias pueden mejorar el código y la compilación:

  1. En lugar de \path (a) edge[options] (b);, use \draw[options] (a) -- (b);Draw en lugar de Edge reduce el consumo de memoria (no sé por qué)

  2. ¡Usa bucles! Incluso si no se me ocurre ninguna razón por la cual esto reduciría el consumo de memoria, al menos haría que el código fuera más corto, más legible y fácil de mantener.

Esta es mi opinión sobre la segunda figura.

\begin{tikzpicture}[ 
init/.style={ 
  draw, 
  circle, 
  inner sep=2pt, 
  font=\Huge, 
  %join = by -latex 
}] 
\matrix[row sep= 5mm, column sep=8mm] (m) { 
\node [init] (x0) {}; & \node [init] (x1) {}; & \node[init] (x2) {}; & \node[init] (x3) {}; &             → \node[init] (x4) {}; & \node[init] (x5) {}; & \node[init] (x6) {}; & \node[init] (x7) {};\\ 
\node [init] (y0) {}; & \node [init] (y1) {}; & \node[init] (y2) {}; & \node[init] (y3) {}; &             → \node[init] (y4) {}; & \node[init] (y5) {}; & \node[init] (y6) {}; & \node[init] (y7) {};\\ 
\node [init] (z0) {}; & \node [init] (z1) {}; & \node[init] (z2) {}; & \node[init] (z3) {}; &             → \node[init] (z4) {}; & \node[init] (z5) {}; & \node[init] (z6) {}; & \node[init] (z7) {};\\ 
}; 

\node [init, left=of m] (s) {$s$};     
\node [init, right=of m] (e) {$e$}; 

\foreach \start/\end/\label in { 
    s/x0/7,  s/y0/1,  s/z0/2, 
    x0/x1/7, y0/x1/7, z0/x1/7, 
    x1/y2/1, y1/y2/1, z1/y2/1,
    x2/z3/2, y2/z3/2, z2/z3/2 } {
        \draw[->,dotted,very thick] (\start) -- (\end) node[midway] {\textbf{\label}};
};
\foreach \n [count=\previous from 0] in {1,...,7} {
    \draw[->,dotted] (s) -- (x\n);   \draw[->,dotted] (x\n) -- (e);
    \draw[->,dotted] (s) -- (z\n);   \draw[->,dotted] (z\n) -- (e);
    \draw[->,dotted] (x\previous) -- (y\n);
    \draw[->,dotted] (x\previous) -- (z\n);
    \draw[->,dotted] (y\previous) -- (x\n);
    \draw[->,dotted] (y\previous) -- (z\n);
    \draw[->,dotted] (z\previous) -- (x\n);
    \draw[->,dotted] (z\previous) -- (y\n);
}
\path (s) edge[->, dotted] (e);

\node [left=of x0, xshift=-1cm] (A1) {A};
\node [left=of y0, xshift=-1cm] (A2) {B};
\node [left=of z0, xshift=-1cm] (A3) {C};

\foreach \letter [count=\n from 0]in {a,b,c,d,e,f,g,h} {
    \node [below=of z\n, xshift=-0.3cm, yshift=0.5cm]  {\rotatebox{60}{\letter}};
}
\end{tikzpicture}

Este código se compila sin problemas y en poco tiempo produce:

Resultado

Actualizar

Noté que faltaban algunos bordes (bueno, no estoy seguro de cuál es la figura prevista), y una oportunidad para compactar aún más el código con bucles internos, en la parte que dibuja la miríada de pequeños bordes entre los nodos:

\foreach \n [count=\previous from 0] in {1,...,7} {
    \draw[->,dotted] (s) -- (x\n);   \draw[->,dotted] (x\n) -- (e);
    \draw[->,dotted] (s) -- (z\n);   \draw[->,dotted] (z\n) -- (e);
    \foreach \s in {x,y,z} {
       \foreach \e in {x,y,z} {
          \draw[->,dotted] (\s\previous) -- (\e\n);
        }
    }
}

El resultado es ahora:

Nuevo resultado

información relacionada