这个答案描述如何tikz
在文档中包含文件,无论它是文章,书籍还是演示文稿。
它运行良好,直到您调用其他一些库为止。
假设我有以下图形:
% File myDrawing.tex
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{math} %needed tikz library
\tikzmath{\x1 = 1; \y1 =1; \x2 = \x1 + 1; \y2 =\y1 +3; }
% Using the variables for drawing
\begin{tikzpicture}
\draw[very thick, -stealth] (\x1, \y1)--(\x2, \y2);
\end{tikzpicture}
\end{document}
正如你所见,它主要由一个tikzpicture
环境组成,但它也调用math
tikz 库,并声明变量\x1
和\y1
在 tikzpicture 环境之外。
再举一个例子,考虑这pgfplots
部分代码:
\documentclass{standalone}
\usepackage{pgfplots}
\usetikzlibrary{arrows.meta}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot { .... };
\end{axis}
\end{tikzpicture}
\end{document}
它利用arrows
库并设置 pgfplots 版本,在 tikzpicture 环境之外, 也。
是否可以创建一个myDrawing.tikz
可以移植到主文档中的文件,同时还可以利用tikzscale
包?如果答案是肯定的,那么怎么办?你能发个例子吗?
我在将绘图正确且完美地放入文档中时遇到了困难。特别是高宽比的问题。
到目前为止,我将绘图保存为tex
文件,放在standalone
文档类别下,并使用includestandalone[width=...]{path/to/file}
按照说明进行操作这里。但有时我希望图形位于\begin{columns} \column{0.4\textwidth} \end{columns}
投影仪演示文稿的环境内,有时位于书籍文档的侧边距,并带有一个width=\marginparwidth
选项。
tikzscale 包看起来非常有前途,但其文档仅在处理tikz
文件时指导其使用。
答案1
我会尽量保持简单,并将完整的 TikZ 代码放在文档中。您可以使用代码折叠在编辑文档时隐藏详细信息。
这通常只会隐藏 tikzpicture 本身,而不会隐藏前导设置。但是,我认为这是一个功能,因为前导设置也会影响其他 tikzpicture 环境,因此最好通过查看它们来了解设置是什么。或者,您可以将大多数这些设置直接添加到环境本身上方,并将它们与环境折叠在一起。
Vim 中基本折叠的一个示例:
- 输入完整代码。将 foldmethod 设置为
manual
。 - 通过视觉选择
tikzpicture
选择环境(ctrl-v) - 按
zf
折叠。继续编辑文档的其余部分。如果要进入折叠部分,请按zd
。 - 退出 Vim 时按 Enter
:mkview
保存折叠。下次启动 Vim 时,代码显示已展开。按 Enter:loadview
重新应用上一次会话中的折叠。
请注意,您当然可以自动执行 中的大多数命令.vimrc
。
答案2
我们可以做
%main.tex
\documentclass{article}
\usepackage{tikz,tikzscale}
\usetikzlibrary{math} %needed tikz library
\begin{document}
\begin{figure}
\centering
\includegraphics[width=50pt]{myDrawing}
\end{figure}
\end{document}
哪里myDrawing.tikz
%myDrawing.tikz
\tikzmath{\x1 = 1; \y1 =1; \x2 = \x1 + 1; \y2 =\y1 +3; }
\begin{tikzpicture}
\draw[very thick, -stealth] (\x1, \y1)--(\x2, \y2);
\end{tikzpicture}
换句话说,tikz
和pgfplots
库不一定在tikzpicture
环境内部加载,也可以在文档前言中加载。