배경
TeX 조판 자체는 순차적이지만 TikZ/pgfplots 그림은 서로 독립이다. 네이티브 환경의 tikzexternalize는 shell-escape가 필요해 브라우저에서 못 쓴다. TikZ 비중이 큰 문서에서 컴파일 시간의 대부분이 그림 조판이다.
제안
전처리 단계에서 외부화를 에뮬레이션한다.
- 문법 스냅샷/토크나이저로
tikzpicture (및 \begin{axis} 포함) 환경을 추출한다.
- 각 그림을 preamble(관련
\usepackage, \usetikzlibrary, \pgfplotsset, 매크로 정의) + standalone 클래스로 감싼 독립 문서로 만든다.
- 워커 풀(코어 수 기반, 2~4개 pdfTeX 워커)에서 병렬 컴파일하고, 결과 PDF를 내용 해시로 캐시한다.
- 본문의 그림을
\includegraphics{<hash>.pdf} 로 치환한 뒤 메인 컴파일을 돈다.
- 그림 소스나 preamble 해시가 바뀐 그림만 재컴파일한다.
폴백: 추출 실패, 외부 매크로/카운터 의존(\ref 등), 컴파일 실패 시 해당 그림은 인라인으로 남긴다. 결과가 인라인과 달라질 수 있는 케이스(페이지 스타일 의존, remember picture/overlay)는 외부화 대상에서 제외한다.
측정
- 벤치 문서: TikZ 그림 10개 + pgfplots 5개짜리 article. cold/warm, 그림 1개 편집 시 지연.
- 워커 수 1/2/4 별 벽시계 시간과 메모리 피크.
- 외부화 결과와 인라인 결과의 시각 동일성(래스터 diff) 검사.
배경
TeX 조판 자체는 순차적이지만 TikZ/pgfplots 그림은 서로 독립이다. 네이티브 환경의
tikzexternalize는 shell-escape가 필요해 브라우저에서 못 쓴다. TikZ 비중이 큰 문서에서 컴파일 시간의 대부분이 그림 조판이다.제안
전처리 단계에서 외부화를 에뮬레이션한다.
tikzpicture(및\begin{axis}포함) 환경을 추출한다.\usepackage,\usetikzlibrary,\pgfplotsset, 매크로 정의) +standalone클래스로 감싼 독립 문서로 만든다.\includegraphics{<hash>.pdf}로 치환한 뒤 메인 컴파일을 돈다.폴백: 추출 실패, 외부 매크로/카운터 의존(
\ref등), 컴파일 실패 시 해당 그림은 인라인으로 남긴다. 결과가 인라인과 달라질 수 있는 케이스(페이지 스타일 의존,remember picture/overlay)는 외부화 대상에서 제외한다.측정