我正在使用很棒的独立包,但我有一个问题:我想在外部文件中有一个 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
定义诸如的命令,然后通过命令在主文件中调用它。\definecolor
input
\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}