从 tex 文件中提取多个 tikzpictures 中的一个

从 tex 文件中提取多个 tikzpictures 中的一个

这是我的第一个问题。我搜索了一段时间,但还没有找到类似的问题,也许我缺少正确的搜索短语。无论如何,它来了。

在撰写论文时,我遇到了输入图表的问题:我得到了 .txt 文件中列出的计算结果,我想避免每个图表都有一个自己的 tex 文件。所以我的想法是将所有图表放在一个文件中,通过自己的“tikzpicture”环境来区分它们。现在我缺少一种方法来告诉我的主文档只输入这个 tex 文件中的第三或第五个图表。有办法吗?也许给每个 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 单独调用这些文件可能会更简单、更舒适。(专门为 tikzpictures 创建一个目录,这样它们就不会弄乱您的主目录)

答案2

我认为你不应该把所有图片都放到一个文件中。从长远来看,管理多个文件要容易得多。

这是包和类组合的理想用例standalone。每个单独的图形都可以作为文档创建standalone并单独测试,但随后可以使用standalone包将它们输入到主文档中。您可以将常用的 TikZ 样式放入一个小包中。以下是一个例子。

将常见的 TikZ 样式放入包中

首先我们创建一个 TikZ 样式包。我刚刚定义了一个样式作为示例。

\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}

代码输出

相关内容