Salvando figuras do tikz em arquivo externo

Salvando figuras do tikz em arquivo externo

Tenho vários números do tikz, alguns dos quais têm mais de 400 linhas de código. Isso complica meu trabalho no arquivo principal, pois tenho que passar por todo esse código com frequência, então pensei em colocá-lo em um arquivo externo que posso simplesmente incluir em meu documento principal. Agora não sei como proceder, vejo duas maneiras:

  • Colocar cada imagem em um arquivo separado, compilar como PDF, incluir as figuras em PDF
  • Colocar cada imagem em um arquivo separado, incluir os arquivos, compilar o documento principal

Qual é a melhor maneira de fazer isso? E como exatamente devo fazer isso? Por exemplo, na opção dois, não seio queo código é necessário nos subarquivos: devo começar a definir a \documentclasse proceder como se fosse um documento independente ou posso simplesmente colocar o código que estou "cortando" do documento principal?

O que devo fazer então? 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}

Responder1

Resposta simples, você pode fazer as duas coisas. No entanto, olhando mais de perto, cada um tem suas próprias vantagens e desvantagens.

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é uma pasta dentro do seu diretório mestre.

Atualização 1:Você deve escapar do shell para compilar o 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}

Vantagens:

  1. Compilação em linha mais fácil devido ao cache inteligente de figuras em PDF.

Desvantagens:

  1. Ao usar para publicações, você certamente terá que usar standalonepackage para compilá-las separadamente.

  2. O limite de memória seria atingido ( pdftex/LaTeX).

  3. Ao editar, você deve excluir o já gerado pdf'smanualmente. (Ainda não conheço uma alternativa melhor para automatizá-lo). Tive uma boa discussão com @DavidCarlisle sobre como colocar um wrapper em torno dele, semelhante a psfrag. No entanto, o resultado foi um fracasso terrível ;-).

  4. A primeira compilação com todas as figuras levará algum hell-a-lottempo. As compilações subsequentes são muito mais rápidas.

Método 2

Não vou discutir isso, pois é a standaloneimplementação padrão do pacote.

\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}

Vantagens:

  1. Exteriorização mais fácil, semelhante a um arquivo.

  2. Fornece sua saída em diferentes formatos. Para mais informações, visite a documentação do pacote.

  3. Podemos pegar a saída e compilar em menos tempo.

Desvantagens:

  1. Diferentes subarquivos. Pelo menos, ainda não estou ciente de incluí-lo como emMétodo 1.

Isenção de responsabilidade 1:Lembro-me de ter visto em algum lugar isso tikzexternale standaloneque não deveria ser usado junto. Mas não me lembro por que e não tenho certeza de seus impactos.

Isenção de responsabilidade 2:Com pdftex/LaTeX, o limite de memória é um problema comum para ambos os métodos em si.

informação relacionada