关于将绘图保存为 `tikz` 文件

关于将绘图保存为 `tikz` 文件

这个答案描述如何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环境组成,但它也调用mathtikz 库,并声明变量\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 中基本折叠的一个示例:

  1. 输入完整代码。将 foldmethod 设置为manual在此处输入图片描述
  2. 通过视觉选择tikzpicture选择环境(ctrl-v) 在此处输入图片描述
  3. zf折叠。继续编辑文档的其余部分。如果要进入折叠部分,请按zd在此处输入图片描述
  4. 退出 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}

换句话说,tikzpgfplots库不一定在tikzpicture环境内部加载,也可以在文档前言中加载。

相关内容