ラテックスにいくつかの定義を無視させたり、プリプロセッサ定義のようなものに置き換えたりすることはできますか?

ラテックスにいくつかの定義を無視させたり、プリプロセッサ定義のようなものに置き換えたりすることはできますか?

私は複数のマシンで文書を書いています。そのうちの 1 台には、Ubuntu 14.04 がインストールされており、TexLive も少し古いバージョンになっています。他のマシンには、Ubuntu 14.10 と Arch Linux がインストールされています。

私の文書では、矢印.metaライブラリ。現在、私のマシンの 1 つ (14.04 のもの) でコンパイルされないドキュメントで困っています。

問題のある定義をすべて無視するように LaTeX を作成する方法はありますか。私が欲しいのは、実際の画像のソース ファイルを変更せずに、TikZ の新しい機能を有効または無効にするための何か (おそらくコメント インおよびコメント アウトする数行のコード) です。現在、arrows.meta のヒントを使用している画像は 9 枚ですが、この数は増える可能性があります。したがって、画像のソースを変更することは、適切な方法ではありません。

\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エイリアスします。Stealthstealtharrows

この最終結果は、描画コードに変更を加えることなく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}

関連情報