当我制作 TikZ 图片时,我有时会使用绝对坐标,当我这样做时,我发现Martin Scharrer 的showgrid
TikZ 库非常方便。(它会将“方格纸”放在我的画布下面,并在边缘标注数字。)
下面是一些代码来说明这一点。(请注意,showgrid
必须从以下位置下载该库马丁的网站。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{showgrid} % http://latex.scharrer-online.de/general/wiki/showgrid
\begin{document}
\begin{tikzpicture}[show grid=all]
\draw (3,2) -- +(45:3);
\end{tikzpicture}
\end{document}
我想要的是拥有一个带有选项的自定义环境draw guides
。draw guides
设置后,将绘制各种调试辅助工具(例如节点名称),并将show grid=all
其激活。
下面的代码展示了我尝试这样做。它不起作用,我认为问题可能与密钥show grid
驻留在/tikz/
目录中有关,但draw guides
驻留在/wickerson/
目录中。我曾尝试cd
在适当的时候进入该目录,但似乎没有帮助。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{showgrid} % http://latex.scharrer-online.de/general/wiki/showgrid
\pgfkeys{/wickerson/.cd,
draw guides/.code = {%
% here do some other stuff, like enabling
% the printing of node names
\pgfkeys{/tikz/.cd,show grid=all}}
}
\newenvironment{wickersonpicture}[1][]{%
\pgfkeys{/wickerson/.cd,#1}
% do some stuff
\begin{tikzpicture}
}{%
\end{tikzpicture}
}
\begin{document}
\begin{wickersonpicture}[draw guides]
\draw (3,2) -- +(45:3);
\end{wickersonpicture}
\end{document}
答案1
正如您之前的一个问题中所讨论的那样,沿着家谱往上走并不是那么简单,因此,pgfkeys
在筛选属于不同密钥家族的不同密钥时,我们需要格外小心。
如果您正在为 TikZ 编写包,请始终为高级用户留出一个钩子,以便他们直接调整节点、坐标或 tikzpicture 本身。例如;
\documentclass[tikz]{standalone}
\usetikzlibrary{showgrid}
\pgfkeys{/wickerson/tikz options/.code={
\tikzset{every picture/.prefix style={#1}}}
}
\newenvironment{wickersonpicture}[1][]{%
\pgfkeys{/wickerson/.cd,#1}
% do some stuff
\begin{tikzpicture}
}{%
\end{tikzpicture}
}
\begin{document}
\begin{wickersonpicture}[tikz options={show grid=all,red}]
\draw (3,2) -- +(45:3);
\end{wickersonpicture}
\end{document}
我们喜欢 Tikz,它很棒,功能相对强大,而且文档齐全。然而在我看来,还有另一个原因导致它被广泛采用。用例和结构。我认为 Tantau 的结构能力经常被忽视。有数百个选项可用,每个库都分离得很好。任何尝试编写包的人都会意识到,随着功能的增加,想出一个一致的方案是多么困难。因此,如果某些选项的附加值不是明显不同的,那么最好将 TikZ 选项留给 TikZ,而不要先用预代码来咀嚼它们。