
Я пишу документ на нескольких машинах. На одной из них установлена Ubuntu 14.04 с какой-то устаревшей установкой TexLive. На других — Ubuntu 14.10 и Arch Linux.
В своем документе я используюстрелки.метабиблиотека. Теперь я застрял с документом, который не компилируется на одной из моих машин (14.04).
Есть ли способ, я могу заставить latex игнорировать все проблемные определения. Я бы хотел иметь что-то (возможно, несколько строк кода для комментирования) для включения и отключения новых функций TikZ без изменения исходных файлов реальных изображений? Прямо сейчас это 9 изображений с использованием подсказок arrows.meta, и это число может вырасти. Поэтому изменение источника изображения — это не выход.
\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc} % font encoding
\usepackage[utf8]{inputenc} % input encoding
\usepackage{lmodern} % fonts
\usepackage{tikz,pgfplots} % provides TikZ
\usetikzlibrary{arrows}
%\usetikzlibrary{arrows.meta}
%\newcommand{\Stealth}{\stealth} % does not work
\begin{document}
\begin{tikzpicture}
\draw[-Stealth] (0,0) to (1,1);
\end{tikzpicture}
\end{document}
решение1
Лучшим решением на самом деле будет обновление дистрибутива TeX. Это избавит от головной боли в будущем, а новая arrows.meta
библиотека предоставляет много приятных функций.
Но если обновление не является вариантом: Условный код ниже проверит, pgf
является ли загруженная версия 3.0.0 или более поздней (датированной 18.12.2013 или позже). Если да, мы загружаем arrows.meta
и -Stealth
можем использовать как обычно. Если нет, псевдоним наконечника стрелки, вызываемый Stealth
на старый stealth
наконечник, предоставленный библиотекой arrows
.
Конечным результатом этого является то, что Stealth
будет использоваться, если TikZ/PGF 3.0.0 доступен, и возвращаться к нему, stealth
если они недоступны, без каких-либо изменений в коде чертежа.
Ограничения:Модификаторы стиля стрелок или другие параметры (например -{Stealth[width=6pt]}
, такие как ), введенные с помощью , arrows.meta
не будут успешно обработаны этим кодом.
\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc} % font encoding
\usepackage[utf8]{inputenc} % input encoding
\usepackage{lmodern} % fonts
\usepackage{tikz} % provides TikZ
\usetikzlibrary{arrows}
\makeatletter
\@ifpackagelater{pgf}{2013/12/18}{
\usetikzlibrary{arrows.meta}
}{
\pgfarrowsdeclarealias{Stealth}{Stealth}{stealth}{stealth}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw[-Stealth] (0,0) to (1,1);
\end{tikzpicture}
\end{document}