외부 파일에 tikz 수치 저장

외부 파일에 tikz 수치 저장

나는 여러 개의 tikz 수치를 가지고 있는데 그 중 일부는 400줄이 넘는 코드입니다. 모든 코드를 자주 스크롤해야 하므로 메인 파일에 대한 작업이 복잡해져서 이를 외부 파일에 저장하고 메인 문서에 간단히 포함시킬 수 있다고 생각했습니다. 이제 진행 방법을 모르겠습니다. 두 가지 방법이 있습니다.

  • 모든 사진을 별도의 파일에 넣고 PDF로 컴파일하고 PDF 그림을 포함합니다.
  • 모든 사진을 별도의 파일에 넣고, 파일을 포함하고, 기본 문서를 컴파일합니다.

이를 수행하는 가장 좋은 방법은 무엇입니까? 그리고 정확히 어떻게 해야 할까요? 예를 들어 옵션 2에서는 모르겠습니다.무엇코드는 하위 파일에 필요합니다. 정의를 시작 \documentclass하고 독립형 문서인 것처럼 진행해야 합니까, 아니면 그냥 주 문서에서 "잘라내는" 코드를 넣을 수 있습니까?

그러면 어떻게 해야 합니까? 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}

답변1

대답은 간단합니다. 둘 다 할 수 있습니다. 그러나 자세히 살펴보면 각 제품에는 고유한 장점과 단점이 있습니다.

방법 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}

참고: tikzexfig은(는) 마스터 디렉터리 내의 폴더입니다.

업데이트 1:문서를 컴파일하려면 셸을 이스케이프해야 합니다.

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}

장점:

  1. PDF에 있는 수치의 스마트 캐싱으로 인라인 편집이 더 쉬워졌습니다.

단점:

  1. standalone출판물에 사용하는 경우 패키지를 사용하여 별도로 컴파일 해야 합니다 .

  2. 메모리 제한에 도달했습니다( pdftex/LaTeX).

  3. 편집 시에는 이미 생성된 것을 pdf's수동으로 삭제해야 합니다. (아직 자동화하는 더 나은 대안을 알지 못합니다.) . psfrag​그러나 결과는 참담한 실패였다 ;-).

  4. 모든 그림을 처음으로 편집하는 데는 시간이 걸립니다 hell-a-lot. 후속 컴파일은 훨씬 더 빠릅니다.

방법 2

standalone표준 패키지 구현 이므로 이에 대해서는 논의하지 않겠습니다 .

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

장점:

  1. 파일과 같은 외부화가 더 쉬워졌습니다.

  2. 다양한 형식으로 출력을 제공합니다. 자세한 내용은 패키지 설명서를 참조하세요.

  3. 출력을 가져와 더 짧은 시간에 컴파일할 수 있습니다.

단점:

  1. 다른 하위 파일. 적어도 나는 그것을 다음과 같이 포함시키는 것을 아직 알지 못합니다.방법 1.

면책조항 1:tikzexternal와 를 standalone함께 사용하면 안 된다는 것을 어디선가 본 기억이 납니다 . 그러나 그 이유는 기억나지 않으며 그 영향도 확실하지 않습니다.

면책조항 2:를 사용하면 pdftex/LaTeX메모리 제한이 두 방법 모두에서 공통적으로 발생하는 문제입니다.

관련 정보