Tengo varias figuras de tikz, algunas de las cuales tienen más de 400 líneas de código. Esto complica mi trabajo en el archivo principal ya que tengo que desplazarme por todo ese código con bastante frecuencia, así que pensé en ponerlo en un archivo externo que luego puedo simplemente incluir en mi documento principal. Ahora no sé cómo proceder, veo dos formas:
- Poner cada imagen en un archivo separado, compilar como PDF, incluir las figuras en PDF
- Poner cada imagen en un archivo separado, incluir los archivos, compilar el documento principal
¿Cuál es la mejor manera de hacer esto? ¿Y cómo debo hacerlo exactamente? Por ejemplo en la opción dos, no lo sé.quéSe necesita código en los subarchivos: ¿debería comenzar a definir a \documentclass
y proceder como si fuera un documento independiente o puedo simplemente poner el código que estoy "cortando" del documento principal?
¿Que debería hacer entonces? include
? input
?
MWE
\documentclass{scrreprt}
\usepackage{tikz}
\usepackage{lipsum}
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{document}
\chapter{Foo}
\lipsum[1]
\begin{figure}[h!]
\centering
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%Shape: Rectangle [id:dp6874714272670446]
\draw (600.5,167) -- (608.5,167) -- (608.5,181.5) -- (600.5,181.5) -- cycle ;
%Shape: Rectangle [id:dp25216565311879857]
\draw (569,127) -- (639,127) -- (639,167) -- (569,167) -- cycle ;
%Shape: Rectangle [id:dp10652138678304235]
\draw (593.5,181.5) -- (614.5,181.5) -- (614.5,188.5) -- (593.5,188.5) -- cycle ;
%Shape: Rectangle [id:dp27982392636707765]
\draw (572.5,130.71) -- (635.5,130.71) -- (635.5,163.29) -- (572.5,163.29) -- cycle ;
%Shape: Rectangle [id:dp29031818189807423]
\draw (572.75,193.2) -- (637.25,193.2) -- (637.25,212.43) -- (572.75,212.43) -- cycle ;
%Shape: Rectangle [id:dp6960940497473749]
\draw (577.35,196.4) -- (581,196.4) -- (581,198.41) -- (577.35,198.41) -- cycle ;
%Shape: Rectangle [id:dp012575111125552318]
\draw (583.35,196.4) -- (587,196.4) -- (587,198.41) -- (583.35,198.41) -- cycle ;
%Shape: Rectangle [id:dp7462575500863122]
\draw (589.35,196.4) -- (593,196.4) -- (593,198.41) -- (589.35,198.41) -- cycle ;
%Shape: Rectangle [id:dp74377024282381]
\draw (595.35,196.4) -- (599,196.4) -- (599,198.41) -- (595.35,198.41) -- cycle ;
%Shape: Rectangle [id:dp5681813434227054]
\draw (577.35,200.41) -- (581,200.41) -- (581,202.41) -- (577.35,202.41) -- cycle ;
%Shape: Rectangle [id:dp45670728197953436]
\draw (583.35,200.41) -- (587,200.41) -- (587,202.41) -- (583.35,202.41) -- cycle ;
%Shape: Rectangle [id:dp4491046180017293]
\draw (589.35,200.41) -- (593,200.41) -- (593,202.41) -- (589.35,202.41) -- cycle ;
%Shape: Rectangle [id:dp6731288033777918]
\draw (595.35,200.41) -- (599,200.41) -- (599,202.41) -- (595.35,202.41) -- cycle ;
%Shape: Rectangle [id:dp7160498396948172]
\draw (601.35,196.4) -- (605,196.4) -- (605,198.41) -- (601.35,198.41) -- cycle ;
%Shape: Rectangle [id:dp13325729640208062]
\draw (607.35,196.4) -- (611,196.4) -- (611,198.41) -- (607.35,198.41) -- cycle ;
%Shape: Rectangle [id:dp2394144125721973]
\draw (601.35,200.41) -- (605,200.41) -- (605,202.41) -- (601.35,202.41) -- cycle ;
%Shape: Rectangle [id:dp19114186601978278]
\draw (607.35,200.41) -- (611,200.41) -- (611,202.41) -- (607.35,202.41) -- cycle ;
%Shape: Rectangle [id:dp6393250197036928]
\draw (616.35,196.4) -- (620,196.4) -- (620,198.41) -- (616.35,198.41) -- cycle ;
%Shape: Rectangle [id:dp5875707462557691]
\draw (616.35,200.41) -- (620,200.41) -- (620,202.41) -- (616.35,202.41) -- cycle ;
%Shape: Rectangle [id:dp2632343129417658]
\draw (622.35,196.4) -- (626,196.4) -- (626,198.41) -- (622.35,198.41) -- cycle ;
%Shape: Rectangle [id:dp16732048982102876]
\draw (628.35,196.4) -- (632,196.4) -- (632,198.41) -- (628.35,198.41) -- cycle ;
%Shape: Rectangle [id:dp994069766161821]
\draw (622.35,200.41) -- (626,200.41) -- (626,202.41) -- (622.35,202.41) -- cycle ;
%Shape: Rectangle [id:dp22742437505582824]
\draw (628.35,200.41) -- (632,200.41) -- (632,202.41) -- (628.35,202.41) -- cycle ;
%Shape: Rectangle [id:dp7394772484697936]
\draw (577.35,204.42) -- (581,204.42) -- (581,206.42) -- (577.35,206.42) -- cycle ;
%Shape: Rectangle [id:dp22090387903101294]
\draw (583.35,204.42) -- (587,204.42) -- (587,206.42) -- (583.35,206.42) -- cycle ;
%Shape: Rectangle [id:dp3094625226147294]
\draw (589.35,204.42) -- (593,204.42) -- (593,206.42) -- (589.35,206.42) -- cycle ;
%Shape: Rectangle [id:dp2693883419330956]
\draw (595.35,204.42) -- (599,204.42) -- (599,206.42) -- (595.35,206.42) -- cycle ;
%Shape: Rectangle [id:dp879541864109227]
\draw (577.35,208.42) -- (581,208.42) -- (581,210.43) -- (577.35,210.43) -- cycle ;
%Shape: Rectangle [id:dp005070405348506002]
\draw (583,208.42) -- (599.35,208.42) -- (599.35,210.43) -- (583,210.43) -- cycle ;
%Shape: Rectangle [id:dp7109131109721036]
\draw (601.35,204.42) -- (605,204.42) -- (605,206.42) -- (601.35,206.42) -- cycle ;
%Shape: Rectangle [id:dp34805202583561967]
\draw (607.35,204.42) -- (611,204.42) -- (611,206.42) -- (607.35,206.42) -- cycle ;
%Shape: Rectangle [id:dp88037563000339]
\draw (601.35,208.42) -- (605,208.42) -- (605,210.43) -- (601.35,210.43) -- cycle ;
%Shape: Rectangle [id:dp199400132263712]
\draw (607.35,208.42) -- (611,208.42) -- (611,210.43) -- (607.35,210.43) -- cycle ;
%Shape: Rectangle [id:dp4342588107618768]
\draw (616.35,208.42) -- (620,208.42) -- (620,210.43) -- (616.35,210.43) -- cycle ;
%Shape: Rectangle [id:dp9519101603214133]
\draw (622.35,204.42) -- (626,204.42) -- (626,206.42) -- (622.35,206.42) -- cycle ;
%Shape: Rectangle [id:dp4542360869287658]
\draw (622.35,208.42) -- (626,208.42) -- (626,210.43) -- (622.35,210.43) -- cycle ;
%Shape: Rectangle [id:dp5417437553938629]
\draw (628.35,208.42) -- (632,208.42) -- (632,210.43) -- (628.35,210.43) -- cycle ;
\end{tikzpicture}
\caption{This is just a part of the total picture.}
\end{figure}
\lipsum[2]
\end{document}
Respuesta1
Respuesta simple, puedes hacer ambas cosas. Sin embargo, visto más de cerca, cada uno tiene sus propias ventajas y desventajas.
Método 1
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
\documentclass{scrreprt}
\usepackage{tikz}
\usepackage{lipsum}
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\usetikzlibrary{external}
\tikzexternalize[prefix=tikzexfig/]
\usepackage{standalone}
\begin{document}
\chapter{Foo}
\lipsum[1]
\begin{figure*}[h]
\centering{
\input{ex.tex}
\caption{This is just a part of the total picture.}
\label{f1}
}
\end{figure*}
\lipsum[2]
\end{document}
Nota:
tikzexfig
es una carpeta dentro de su directorio maestro.Actualización 1:Debes escapar del shell para compilar el documento.
ex.tex
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%Shape: Rectangle [id:dp6874714272670446]
\draw (600.5,167) -- (608.5,167) -- (608.5,181.5) -- (600.5,181.5) -- cycle ;
\end{tikzpicture}
Ventajas:
- Compilación en línea más sencilla gracias al almacenamiento en caché inteligente de figuras en pdf.
Desventajas:
Cuando lo use para publicaciones, seguramente deberá usar
standalone
el paquete para compilarlas por separado.Se alcanzaría el límite de memoria (
pdftex/LaTeX
).Al editar, debes eliminar lo ya generado
pdf's
manualmente. (Aún no conozco una alternativa mejor para automatizarlo). Tuve una buena conversación con @DavidCarlisle sobre cómo ponerle un envoltorio, similar apsfrag
. Sin embargo, el resultado fue un terrible fracaso;-)
.La primera recopilación con todas las figuras llevará algo
hell-a-lot
de tiempo. Las compilaciones posteriores son mucho más rápidas.
Método 2
No voy a discutirlo, ya que es la standalone
implementación del paquete estándar.
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%Shape: Rectangle [id:dp6874714272670446]
\draw (600.5,167) -- (608.5,167) -- (608.5,181.5) -- (600.5,181.5) -- cycle ;
\end{tikzpicture}
\end{document}
Ventajas:
Exteriorización tipo archivo más sencilla.
Proporciona su salida en diferentes formatos. Para obtener más información, visite la documentación del paquete.
Podemos tomar el resultado y compilarlo en menos tiempo.
Desventajas:
- Diferentes subarchivos. Al menos, todavía no soy consciente de incluirlo como enMétodo 1.
Descargo de responsabilidad 1:Recuerdo haber visto en alguna parte que
tikzexternal
ystandalone
no deberían usarse juntos. Pero no recuerdo por qué y no estoy seguro de sus impactos.Descargo de responsabilidad 2:Con
pdftex/LaTeX
, el límite de memoria es un problema común para ambos métodos en sí.