我可以讓乳膠忽略一些定義或用某種預處理器定義替換它們嗎

我可以讓乳膠忽略一些定義或用某種預處理器定義替換它們嗎

我在幾台機器上寫一個文件。其中一個安裝了 Ubuntu 14.04,並安裝了過時的 TexLive。其他有 Ubuntu 14.10 和 Arch Linux。

在我的文檔中我使用箭頭.元圖書館.現在我遇到了一個無法在我的一台機器(14.04 機器)上編譯的文件。

有沒有辦法,我可以讓乳膠忽略所有有問題的定義。我想要的是一些東西(也許是幾行程式碼來註釋和註釋)來啟用和禁用 TikZ 的新功能而不更改實際圖像的來源檔案?目前有 9 個使用 arrow.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 或更高版本(日期為 2013/12/18 或之後)。如果是,我們加載arrows.meta-Stealth可以像平常一樣使用。如果不是,則將呼叫的箭頭提示別名為庫提供的Stealth舊提示。stealtharrows

最終結果是,如果 TikZ/PGF 3.0.0 可用,則將使用它,但如果它們不可用,則Stealth回退到它們,而不需要對繪圖程式碼進行任何修改。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}

相關內容