示例circle through
见第 65 页手册。我还不能将其复制到光盘上。
这不仅仅是一个 MWE,而是tikz
故意设计成新的,这样人们就可以指出编码方式的低效之处。例如,声明orig
为图像后,我不能在指令中使用吗img
?
\documentclass{article}
\usepackage{mwe}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary {calc}
\def\paramfont{\color{white}\sffamily\bfseries}
\def\paramradiusfactor{0.5}
\def\paramlabel{LABEL}
\def\paramradius{5}
\pgfdeclareimage
% [〈options〉]
{orig}{example-image-a.png}
\newsavebox\mybox
\savebox\mybox
{
\begin{tikzpicture}
\color{red}
\node[anchor=south west,inner sep=0,opacity=0.1] (img) at (9,9) {\includegraphics[width=\textwidth]{example-image-a}}; % TODO make use of orig
\coordinate (nw) at (img.north west);
\coordinate (ne) at (img.north east);
\coordinate (sw) at (img.south west);
\coordinate (se) at (img.south east);
\coordinate (diskcenter) at ($(sw)!0.66!(ne)$);
\def \diskradius{\paramradius*\paramradiusfactor}
\coordinate (disklabel) at ($(diskcenter)+(0,\diskradius)$);
\fill[yellow] (diskcenter) circle [radius=\diskradius]; % ?? through disklabel?
\node[above] at (disklabel) {\paramfont\selectfont \paramlabel};
\end{tikzpicture}
}
\begin{document}
\usebox\mybox
\end{document}
答案1
您仍然可以使用circle through
,但需要through
事先加载库。然后您可以输入\node[fill=yellow, circle through=(disklabel)] at (diskcenter) {\paramfont\selectfont\paramlabel};
例如。
要引用您之前定义的图像,您应该使用\pgfuseimage
。
钛钾Z 已经加载了该xcolor
包。你不需要再次加载它(除非你需要在前言中定义一些在加载 Ti 之前需要的东西钾Z)。
由于您的目标是减少冗余和多余的代码:我删除了它,\color{red}
因为它在这个例子中是没用的。此外,您可以直接编写\coordinate (diskcenter) at ($(img.south west)!0.66!(img.north east)$);
并跳过坐标的四个定义。至少,您在示例中不使用north west
和south east
坐标,因此您可以删除它们。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc, through}
\def\paramfont{\color{white}\sffamily\bfseries}
\def\paramradiusfactor{0.5}
\def\paramlabel{LABEL}
\def\paramradius{5}
\pgfdeclareimage[width=\textwidth]{orig}{example-image-a.png}
\newsavebox\mybox
\savebox\mybox
{
\begin{tikzpicture}
\node[anchor=south west,inner sep=0,opacity=0.1] (img) at (9,9) {\pgfuseimage{orig}};
\coordinate (nw) at (img.north west);
\coordinate (ne) at (img.north east);
\coordinate (sw) at (img.south west);
\coordinate (se) at (img.south east);
\coordinate (diskcenter) at ($(sw)!0.66!(ne)$);
\def\diskradius{\paramradius*\paramradiusfactor}
\coordinate (disklabel) at ($(diskcenter)+(0,\diskradius)$);
\node[fill=yellow, circle through=(disklabel)] at (diskcenter) {\paramfont\selectfont\paramlabel};
\end{tikzpicture}
}
\begin{document}
\usebox\mybox
\end{document}