tex ファイルから複数の tikzpictures の 1 つを抽出する

tex ファイルから複数の tikzpictures の 1 つを抽出する

これは私の最初の質問です。しばらく検索しましたが、同様の質問はまだ見つかりませんでした。おそらく、正しい検索フレーズが足りないのでしょう。とにかく、ここにあります。

論文を書いているときに、プロットの入力に問題があります。計算結果が .txt ファイルにリストされているので、プロットごとに独自の tex ファイルを作成したくありません。そこで、すべての図を 1 つのファイルに入れて、独自の「tikzpicture」環境で区別しようと考えています。今、メインのドキュメントに、この tex ファイルから 3 番目または 5 番目の図だけを入力するように指示する方法が見つかりません。これを行う方法はありますか? おそらく、各 tikzpicture にタグのようなものを付けるのでしょうか?

私の目標は、a) 生成するファイル数を減らすこと、b) すべてのダイアグラムの形式を定義し、変更したい場合には、すべてのダイアグラム ファイルではなく、一度だけ変更すれば済むようにすることです。

複雑すぎる場合は、これを実現する別の方法を提案していただけますか?

よろしくお願いします。

答え1

\newcommand最も簡単ですが、またずさんな解決策は、.tex ファイルで作成する各 tikzpicture に対して を定義し、それをメイン ファイルに挿入することです。

次のようなファイルがありますpictures.tex:

\newcommand{\tikzI}{
  \begin{tikzpicture}
    <insert tikz contents here>
  \end{tikzpicture}
}

\newcommand{\tikzII}{
  \begin{tikzpicture}
    <another tikzpicture>
  \end{tikzpicture}
}

メインファイルは次のようになります。

<preamble>
\begin{document}
\input{pictures}

<some text here>
\tikzI
<more text>
\tikzII
\end{document}

しかし、Alan Munn が示唆したように、すべての画像を独自のファイルに割り当て、各 tikzpicture ごとにこれらのファイルを個別に呼び出す方が簡単で快適かもしれません。(メイン ディレクトリが乱雑にならないように、tikzpicture 専用のディレクトリを作成します)

答え2

すべての画像を 1 つのファイルに入れる必要はないと思います。長期的には、複数のファイルを管理する方がはるかに簡単です。

これは、パッケージとクラスの組み合わせの理想的な使用例ですstandalone。個々のグラフィックはそれぞれstandaloneドキュメントとして作成し、単独でテストできますが、その後、パッケージを使用してマスター ドキュメントに入力できますstandalone。一般的な TikZ スタイルを小さなパッケージにまとめることができます。次に例を示します。

一般的なTikZスタイルをパッケージにまとめる

まず、TikZ スタイルのパッケージを作成します。ここでは例として 1 つのスタイルを定義しました。

\ProvidesPackage{mytikzstyles}[2017/04/30]
\tikzset{my line/.style={red,very thick}}

このドキュメントを としてmytikzstyles.styドキュメントと同じフォルダーに保存するか、複数のドキュメントで使用する場合は、 のローカルtexmfフォルダーに配置します<path-to-local-texmf>/tex/latex/mytikzstyles/

個別のstandalone画像ドキュメントを作成する

次に、standalone各イメージのクラス ドキュメントを作成します。この利点は、完全にコンパイル可能なドキュメントであるため、個別にテストして調整できることです。各ドキュメントでは、\usepackage{mytikzstyles}作成した共通スタイルにアクセスするために追加する必要があるだけです。

Image-1.tex

\documentclass[tikz=true,border=10pt]{standalone}
\usepackage{mytikzstyles}
\begin{document}
\begin{tikzpicture}
\draw[my line] (0,0)  -- (0,3)  -- (3,3) -- cycle;
\end{tikzpicture}
\end{document}

Image-2.tex

\documentclass[tikz=true,border=10pt]{standalone}
\usepackage{mytikzstyles}
\begin{document}
\begin{tikzpicture}
\draw[my line] (0,0)  -- (0,3)  -- (3,0) -- (3,3) -- cycle;
\end{tikzpicture}
\end{document}

クラスを使用してstandaloneファイルを入力する

これで、メイン ドキュメントに好きな方法でファイルを入力できるようになりました。メイン ファイル ディレクトリを整理しておくために、すべての画像ドキュメントを専用のフォルダーに入れることができます。(フォルダーやファイル名にスペースがないことを確認してください。)

次に例を示します。

\documentclass{article}
\usepackage{standalone}
\usepackage{tikz}
\usepackage{mytikzstyles}
\begin{document}
\begin{figure}
\centering
\input{Image-2}
\caption{This is image 2}
\end{figure}
\begin{figure}
\centering
\input{Image-1}
\caption{This is image 1}
\end{figure}
\end{document}

コードの出力

関連情報