Могу ли я заставить latex игнорировать некоторые определения или заменить их своего рода определением препроцессора?

Могу ли я заставить latex игнорировать некоторые определения или заменить их своего рода определением препроцессора?

Я пишу документ на нескольких машинах. На одной из них установлена ​​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}

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