最近,我学习了 matlab 代码matlab2tikz
。我猜想,此代码的输出是一个.tikz
文件,可以与标准图形包一起使用,并\input{mysphere.tikz}
在图形环境中使用一条简单的线条。
这让我想知道.tikz
在稿件中包含 TikZ 代码是否是一种常用方法。将 TikZ 脚本保存在单独的文件中而不是将它们全部放在最终稿件中会很方便。这将使我的稿件更具可读性。有人能在这方面给我一些建议吗?
我搜索了该pgfmanual
字符串.tikz
,但没有找到结果。我仍在网络上搜索.tikz
文件示例。
TeX.SeX
(几分钟前我问了这个问题,并根据 的建议将其移植到这里@WillHunting
。)
答案1
您需要考虑以下几点:
- 可读性:tikz 脚本往往很长,很容易导致源代码的其余部分出现严重中断。从这个角度来看,只将特定于文档的问题留在主文档中(即图形环境、标题等),并从外部文件加载 tikz 文件是积极的。同样的论点可能适用于表格、算法等;
- 肮脏的黑客行为:我把它放在这里是因为它直接遵循了上一点。我们可能不喜欢它,但有时浮动引擎不会按照我们(或我们的出版商)的意愿运行。然后你必须在文本周围移动浮动,有时把它放在完全不相关的文本块中间。在这种情况下,你会真正感激图片只有 4-5 行长,而不是 100 行;
- 重复使用:您可能希望在多个文档中重复使用同一张图形,在这种情况下将其与主文档分开可以节省时间;
- 调试图:这是为了防止您想自己编写 tikz 图片。我不知道它是如何
matlab2tikz
工作的,但如果它没有为您提供开箱即用的图形,您可能需要对其进行调整以适合您的目的。在这种情况下,独立包就派上用场了,它允许您只编译图形,并在长文档中获得宝贵的编译时间(您可以查看 Peter Grill 对您的问题的评论,以获得有关此事的更多具体建议)。请注意,还有其他解决方案,例如 emacs 区域编译功能,它们可以利用位于单独文件中的 tikz 图片,或者即使图片仍在主文档中也可以工作; - 可移植性:例如,根据您的工作流程,只用一个文件通过电子邮件发送给您的合作者可能会更方便。请注意,这很容易被规避,例如通过共享 Dropbox 或设置 VCS 服务器。而且即使使用电子邮件,通常也只是带来一点不便(只发送您目前正在处理的文件,如果您需要发送完整的可编译项目,请将其全部压缩到一个文件中)。
这就是我能想到的全部内容,如您所见,它主要针对“单独文件”视图。但我可能有偏见,在这种情况下,我希望其他答案会反过来。
我只想补充几点:
- 当然,你可以以不同的方式处理两行 tikz 脚本和带有标题和标签的完整浮动图片;
- 另一种我从未尝试过的方法是将 tikz 文件编译为 pdf,然后将生成的 pdf 包含在文档中。主要优点是它节省了整个文档的编译时间,缺点是您会失去 tikz 集成功能,例如标签。该
tikzexternalize
库提供了一种折衷方案(并且可以很好地用于单独的文件或仅一个文件); - 您的问题似乎也与文件扩展名有关。文件扩展名取决于您使用的系统:在 Windows 上,它们用于告诉操作系统文件是什么,而在 Linux 上,它们仅供用户使用。无论如何,在特定情况下,除非您有一个专门用于编辑 tikz 脚本的 Windows 程序,否则应该没有任何区别。似乎大多数用户都以扩展名结尾所有侧文件
.tex
,无论文件是什么,但我可能错了,而且考虑的样本太小。而且我找不到任何始终使用相同扩展名的好理由。所以这真的取决于你; - 最后一点:我刚刚重读了你的问题,特别是结尾部分,找到了 tikz 示例。关于“什么是 tikz 文件”,还有很多话要说,但文档(你已经有了)非常出色,会比我更好地告诉你。寻找示例时,实际上非常简单:即使不是每次都明确说明,每个以 和 开头的代码片段都
\begin{tikzpicture}
可以\end{tikzpicture}
放在.tikz
(或.tex
) 文件中并输入到主文件中(前提是你在主文件序言中加载所需的库)。
答案2
mwe
我通过反复试验写下了以下内容。
主文件mwe.tex
:
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\input{temp.tikz}
\end{document}
该文件temp.tikz
仅包含:
\begin{tikzpicture}
\draw (0,0) --(1,2);
\end{tikzpicture}
输出mwe.tex
如下所示:
答案3
现在这个问题可能已经解决了,因为它有一个公认的答案。但是如果想调整图形大小怎么办?或者添加标题?等等...补救措施是resizebox
使用graphicx
。
\documentclass{article}
\usepackage{tikz}
% \usepackage{graphicx}
\usepackage{filecontents}
\begin{document}
\begin{filecontents*}{temp.tikz}
\begin{tikzpicture}
\draw (0,0) --(1,2);
\end{tikzpicture}
\end{filecontents*}
\begin{figure}[htb]
\centering
\resizebox{2cm}{!}{\input{temp.tikz}}
\caption{my figure drawn in tikz}\label{fig:myfigure}
\end{figure}
\end{document}
在中\resizebox{2cm}{!}{\input{temp.tikz}}
,第一个参数{2cm} is the width and second is the height
!
是为了允许图形的自然高度(以保持纵横比不变)。