包括带有序言的外部 tikzpicture

包括带有序言的外部 tikzpicture

我正在使用很棒的独立包,但我有一个问题:我想在外部文件中有一个 tikzpicture,但带有自定义颜色或其他东西,但是当我将它包含在主文件中时\includestandalone,编译失败,因为主文件不知道外部文件中定义的颜色。

例如:

% pic.tex
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}

\definecolor{myBlue}{rgb}{0.2,0.2,1.0}

\begin{document}
\begin{tikzpicture}
% ...
\end{tikzpicture}
\end{document}
% main.tex
\documentclass{article}
\usepackage{standalone}

\begin{document}
\includestandalone{pic}
\end{document}

这不起作用,因为主文件没有颜色,也没有导入 tikzlibrary pic.tex

我怎样才能让主文件导入 的前言pic.tex?另外,如果在主文件中导入时,独立文件中定义的颜色和其他内容保持本地化,那就太好了(在这种情况下,我不希望myBlue在主文件的其余部分可以访问颜色)。

答案1

对我来说这是可行的:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{pic.tex}
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\definecolor{myBlue}{rgb}{0.2,0.2,1.0}
\begin{tikzpicture}
\draw [myBlue] (0,0) -- (1,1);
\end{tikzpicture}
\end{document}
\end{filecontents*}
\usepackage{standalone}
\usepackage{tikz}
\begin{document}
\includestandalone{pic}
\end{document}

答案2

如果您想使用外部文件,一种可能性是仅使用 定义一个 .tex 文件,在环境内部tikzpicture定义诸如的命令,然后通过命令在主文件中调用它。\definecolorinput

\myBlue您可以在主文件中测试该命令以验证它未在其中定义。

就我个人而言,我喜欢在外部文件中定义 TikZ 图片,然后在 TikZEdt 中编辑它们。它让我可以在其他任何地方重复使用它们,也使组织它们变得简单。我也用它adjustbox来定义图形大小,但那是另一个话题。

图片.tex:

\begin{tikzpicture}
\definecolor{myBlue}{rgb}{0.2,0.2,1.0}
\draw [myBlue] (0,0) -- (1,1);
\end{tikzpicture}

主要.tex:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\input{pic}
%\myBlue{A} % Undefined controle sequence
\end{document}

相关内容