이것은 매우 특별한 경우인 것 같지만, 제가 필요한 것은 다음과 같습니다.
%&Testing
\documentclass{article}
\endofdump
\usepackage{pgfplots}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel=x axis label,ylabel=y axis label]
\addplot {x};
\end{axis}
\end{tikzpicture}
\end{document}
나는 서문을 다시 컴파일할 필요 없이 tikz를 켜거나 끌 수 있기를 원합니다. 따라서 \endofdump가 됩니다. MiKTeX를 사용하여 헤더를 만들었고
etex -job-name=Testing -initialize "&pdflatex" mylatexformat.ltx Testing.tex
그런 다음 Testing.tex를 컴파일하면 다음 오류 메시지가 나타납니다.
! Package tikz Error: Sorry, the system call 'pdflatex -shell-escape -halt-on-e
rror -interaction=batchmode -jobname "Testing-figure0" "\def\tikzexternalrealjo
b{Testing}\input{Testing}"' did NOT result in a usable output file 'Testing-fig
ure0' (expected one of .pdf:.jpg:.jpeg:.png:).
해당 로그 파일( Testing-figure0.log
)을 확인하면 다음과 같습니다.
! Undefined control sequence.
<recently read> \endofdump
l.3 \endofdump
이 문제를 어떻게 고칠 수 있을지 궁금했습니다. 외부화된 tikz 작업은 서문을 입력하지만 사용자 정의 형식을 사용하지 않는 것 같습니다. 따라서 \endofdump를 이해할 수 없습니다.
나는 이것이 효과가 있다는 것을 알았습니다 (이것이 이미 답일 수도 있습니다).
%&Testing
\documentclass{article}
\ifcsname tikzexternalrealjob\endcsname\else\endofdump\fi
\usepackage{pgfplots}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel=x axis label,ylabel=y axis label]
\addplot {x};
\end{axis}
\end{tikzpicture}
\end{document}
이를 수행하는 더 좋은 방법이 있습니까?
답변1
외부 pdflatex 호출이 포함된 매크로를 대신 호출하도록 변경할 수 있습니다.
etex '&mylatexformat'
형식을 만들려면 다음 명령줄이 필요했습니다.
etex --job-name=testing --ini "&pdflatex" mylatexformat.ltx testing.tex
형식이 만들어지면 tikz externalize가 사용할 수 있도록 다음을 추가하세요.
\def\zzz#1 #2\relax{%
\expandafter\def\csname pgfk@/tikz/external/system call\endcsname{etex '&mylatexformat' #2}%
}
\expandafter\expandafter\expandafter\zzz\csname pgfk@/tikz/external/system call\endcsname\relax
그래서 오류 없이 실행됩니다
%&Testing
\documentclass{article}
\endofdump
\usepackage{pgfplots}
\usetikzlibrary{external}
\def\zzz#1 #2\relax{%
\expandafter\def\csname pgfk@/tikz/external/system call\endcsname{etex '&mylatexformat' #2}%
}
\expandafter\expandafter\expandafter\zzz\csname pgfk@/tikz/external/system call\endcsname\relax
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel=x axis label,ylabel=y axis label]
\addplot {x};
\end{axis}
\end{tikzpicture}
\end{document}
답변2
일반은 어떻습니까 \ifdefined\endofdump\endofdump\else\fi
?