pgfplots, 사용자 정의 범례 및 tikz 라이브러리 외부

pgfplots, 사용자 정의 범례 및 tikz 라이브러리 외부

여러 가지로 Tikz 피규어를 만들어 보려고 합니다.pgfplots . 그들은 모두 동일한 곡선을 가지고 있기 때문에 나는 그들에 대해 하나의 범례를 갖고 싶습니다. 에서 알아냈어요이 질문각 곡선에 라벨을 붙이고 참조할 수 있습니다. 나는 그것을 서브플롯 하단에 간단한 범례를 만드는 데 사용했습니다. 그리고 별도의 파일로 시도해 보니 괜찮아 보였습니다. 그런 다음 external플롯이 많기 때문에 이전에 겪었던 TeX 메모리 문제를 해결하는 Tikz 라이브러리를 사용하는 논문에 넣었습니다 . 발생하는 문제는 다음 MWE로 재현될 수 있습니다.

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot coordinates { (0,0) (1,1) };\label{plot:p1}
\end{axis}
\node (A) at (1,-1) {\ref{plot:p1} Plot 1};
\end{tikzpicture}
\end{document}

이는 다음을 생성합니다.

여기에 이미지 설명을 입력하세요

대신에:

여기에 이미지 설명을 입력하세요

(단순화를 위해 여기서는 하위 플롯 대신 하나의 플롯만 사용하고 있습니다.) 첫 번째 이미지에서 누락된 참조에 대한 물음표를 확인하세요. 물론, 네 번째 줄을 주석 처리하면(외부화를 사용하지 않음) 참조는 괜찮게 나타납니다(두 번째 이미지). 그래서 나는 궁금하다:

참조를 얻고 외부화를 계속 사용하려면 어떻게 해야 합니까?

추신: Ubuntu 11.10의 TexLive 2011

답변1

Ignasi가 의견에서 말했듯이 이것은 완전히 자동으로 작동하지 않습니다.

로부터pgfplots 매뉴얼:

\labela / \ref가 로 그려진 경우에는 특별한 경우가 있습니다 tikzpicture. 예를 들어 범례 \ref 이미지나 기능의 경우입니다 \pgfplotslegendfromname. 이러한 경우에는 mode=convert with system call자체적으로 처리할 수 없으므로 a)의 경우와 같이 진행해야 합니다 .

사례 a)는 다음과 같이 제안합니다.

mode=list and make이미지에 대한 시스템 호출을 사용 하거나 복사하여 붙여넣고 수동으로 발행하십시오.

내가 추가하면 귀하의 예가 나에게 효과적입니다.

\pgfkeys{
    /tikz/external/mode=list and make
}

파일에 추가하고 make -B -f <filename>.makefile첫 번째 컴파일 실행 후에 실행합니다.

관련 정보