这是我的第一个问题。我搜索了一段时间,但还没有找到类似的问题,也许我缺少正确的搜索短语。无论如何,它来了。
在撰写论文时,我遇到了输入图表的问题:我得到了 .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}