Можем ли мы заставить работать ссылки на внешние изображения pgfplots?

Можем ли мы заставить работать ссылки на внешние изображения pgfplots?

У меня есть несколько графиков, созданных с помощью TikZ и pgfplots. В подписях я использую \ref{...}метки графиков, чтобы маркер был напечатан там; действительно, классная функция.

Теперь, отправляя в arXiv, приходится прыгнуть с обручами, чтобы документ скомпилировался с их ужасно устаревшим TeX Live (2011 на момент написания этой статьи). В частности, я использую экстернализацию TikZ, потому что TikZ сильно развился, а загрузка PDF-файлов рисунков вместе с исходниками LaTeX прекрасно обходит проблемы.

Проблема теперь в том, что указанные ссылки на pgfplotsучастки, соответственно их метки, не разрешаются; я получаю (??)вместо маркера. Излишне говорить, что проблема не возникает локально.

Можно ли это обойти (кроме жесткого кодирования маркера для arXiv) или мне придется с этим жить (т. е. жестко кодировать маркер вместо использования механизма ссылок)?

Я не даю MWE, поскольку не считаю поддельную отправку в arXiv разумной.

решение1

В текущем руководстве TikZ (3.0.0) говорится следующее:

[ \labelво внешней графике, на которую ссылаются в основном документе] реализуется автоматически внешней библиотекой. Подробно, \labelвнутренняя часть внешней графики заставляет внешнюю библиотеку генерировать отдельные вспомогательные файлы для каждого внешнего изображения. Эти файлы называются imagename.dpth. [...] Когда основной документ загружает изображение, он копирует .dpthфайл в основной .auxфайл.

Поэтому, когда вы отправляете документ с предварительно подготовленными внешними рисунками, вам необходимо упаковать как PDF-файли dpthфайлы.

решение2

Ответ самого Рафаэля показывает, как это правильно делать.


К сожалению, иногда нам приходится иметь дело с системами, которые (по сомнительным причинам безопасности) ограничивают типы файлов, которые они разрешают загружать (например, «редакторский менеджер» не допускает имена файлов, заканчивающиеся на .dpth), или используют доисторическую версию LaTeX, которая вообще не имеет экстернализации TikZ.

Если вы оказались в такой неудачной ситуации, вот мой следующий поствзломможет избавить вас от неприятностей.

Предположим, у вас есть изображение, выведенное на external.pdfс сопровождающим external.dpth. Переименуйте external.dpthи external.texзамените изображение TikZ на

\includegrapics{external}
\tikzexternalhack{external}

используя следующее определение в вашей претаблице:

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

Связанный контент