Podemos fazer com que referências em imagens pgfplots externalizadas funcionem?

Podemos fazer com que referências em imagens pgfplots externalizadas funcionem?

Tenho alguns gráficos criados com TikZ e pgfplots. Nas legendas, utilizo \ref{...}com rótulos de plotagem para que o marcador seja impresso ali; um recurso interessante, de fato.

Agora, ao enviar para o arXiv, é preciso pular alguns obstáculos para fazer o documento ser compilado com seu TeX Live terrivelmente desatualizado (2011 no momento em que este livro foi escrito). Em particular, eu uso a externalização do TikZ porque o TikZ evoluiu muito, e carregar os PDFs das figuras junto com as fontes LaTeX contorna perfeitamente os problemas.

O problema agora é que as referidas referências a pgfplotsparcelas resp. seus rótulos não conseguem resolver; Eu recebo (??)em vez do marcador. Escusado será dizer que o problema não ocorre localmente.

Isso é algo que posso contornar (exceto codificar o marcador para arXiv) ou tenho que conviver com isso (ou seja, codificar o marcador em vez de usar o mecanismo de referência)?

Eu não dou a mínima, pois não considero razoável um envio falso ao arXiv.

Responder1

O manual TikZ atual (3.0.0) tem o seguinte a dizer:

[ \labelnos gráficos externalizados referenciados no documento principal] é realizado automaticamente pela biblioteca externa. Em detalhes, o \labelinterior de um gráfico externalizado faz com que a biblioteca externa gere arquivos auxiliares separados para cada imagem externa. Esses arquivos são chamados imagename.dpth. [...] Quando o documento principal carregar a imagem, ele copiará o .dptharquivo para o arquivo principal .aux.

Então quando você envia um documento com figuras externas pré-preparadas, você tem que embalar tanto o PDFe dptharquivos.

Responder2

A auto-resposta de Raphael mostra como fazer isso corretamente.


Infelizmente, às vezes temos que lidar com sistemas que são (por razões de segurança questionáveis) restritivos nos tipos de arquivos que permitem o upload (por exemplo, o “gerente editorial” não permite nomes de arquivos que terminam em .dpth) ou usam uma versão pré-histórica do LaTeX que não tem externalização TikZ completamente.

Se acontecer de você estar em uma situação tão infeliz, meu seguintehackearpode lhe poupar problemas.

Suponha que você tenha uma imagem externalizada external.pdfcom acompanhamento external.dpth. Renomeie e external.dpthsubstitua external.texsua imagem TikZ por

\includegrapics{external}
\tikzexternalhack{external}

usando a seguinte definição em seu preábulo:

\makeatletter
\newcommand\tikzexternalhack[1]{%
    \write\@auxout{\noexpand\input{#1}}%
}
\makeatother

informação relacionada