使用自定义 tikz 库为多个图形定义颜色

使用自定义 tikz 库为多个图形定义颜色

我正在编写一个文档,其中包含在 tikz 中完成的几个图形,我想在所有图形中使用相同的颜色。目前,我在每个文件中定义它们\definecolor{LightBlue}{HTML}{dae8fc}。我想要一个包含所有.tikz文件定义的所有颜色的库。

我有一个tikzlibrarymycolors.code.tex文件,其中包含:

\definecolor{lightBlue}{HTML}{dae8fc}
\definecolor{darkBlue}{HTML}{6c8ebf}
\definecolor{darkGreen}{HTML}{82b366}
\definecolor{ligthGreen}{HTML}{d5e8d4}

对于每个图形我都包括了\usetikzlibrary{mycolors}。但是,我得到了错误Package tikz: I did not find the tikz library 'mycolors'. I looked for files named tikzlibrarymycolors.code.tex and pgflibrarymycolors.code.tex, but neither could be found in the current texmf trees.

我想将此库保留在当前文档本地。我需要构建 texmf 树吗?我正在使用https://tug.org/texlive/quickinstall.html

谢谢您的帮助。

答案1

按照惯例,用户提供的类、包和包库文件可以或应该位于当前工作目录或 TDS(TeX 目录结构)树之一中。请参阅https://tug.org/texlive/doc/texlive-en/texlive-en.html#x1-110002.3以获取完整列表。

使用\input\usepackage和类似的,可以指定一个相对路径,如\input{./sub/myfile.tex}。但这不会成功,\tikzuselibrary因为您只给了它文件名的中间部分,因此文件路径前缀的控制就丢失了。

幸运的是,LaTeX 提供了一个\input@path可以存储目录列表以搜索输入文件的目录。最后一步是让 tikz/pgf 知道\input@path。请参阅相关的 pgf 问题 #565,用于\graphicspath搜索图像

$ tree .
.
├── libs
│   └── tikzlibrarydemo.code.tex
└── main.tex

$ cat libs/tikzlibrarydemo.code.tex
% do sth so we know demo lib is successfully loaded
\tikzerror{lib demo}

\endinput
% main.tex
\documentclass{article}
\usepackage{tikz}

\makeatletter
\let\pgfutil@InputIfFileExists=\InputIfFileExists
% not necessary for current use case, but is actually more useful
% \let\pgfutil@IfFileExists=\IfFileExists

\def\input@path{{./libs/}}
\makeatother

\usetikzlibrary{demo}

\begin{document}
content
\end{document}

更新:\tikzuselibrary{demo}颜色定义和可能的其他 tikz 相关代码是否必须以 tikz 库的形式加载?因为和之间几乎没有区别<optional \makeatletter>\input tikzlibrarydemo.code.tex<optional \makeatother>

相关内容