我觉得我的问题与这和这但是我无法修改提供的解决方案以适应我的问题。
在以下 MWE 中,我尝试在\foreach
循环中定义 8 针锚点。我的做法显然是错误的,因为我得到了“未定义控制序列”当我尝试引用其中一个引脚时出现错误。
有人可以提供一个在循环中定义锚点的最小例子吗?
\documentclass[tikz,border=1cm]{standalone}
\usepackage{circuitikz}
% BEGIN myic definition
\def\w{3cm}
\def\h{4.5cm}
\pgfdeclareshape{myic}{
\anchor{center}{\pgfpointorigin}
\anchor{text}
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
% PIN ANCHORS
% The following code does not work as expected.
% I am looking for a way to define \n anchors in a loop.
\foreach \n in {0,...,7}
{\anchor{in\n}{\pgfpoint{.5*\w}{7*.25cm-\n*.5cm}}}
\foregroundpath{
% RECTANGLE
\pgfsetlinewidth{0.025cm}
\pgfpathrectanglecorners{\pgfpoint{.5*\w}{.5*\h}}{\pgfpoint{-.5*\w}{-.5*\h}}
\pgfusepath{draw}
% PIN NAMES
\foreach \n in {0,...,7}
{\pgftext[right,at={\pgfpoint{.5*\w-.1cm}{7*.25cm-\n*.5cm}}]{\scriptsize IN\n}}
}
}
% END myic definition
\begin{document}
\begin{circuitikz}
\draw (0,0) node[myic] (u0) {U0};
\draw (u0.in0) to[short,-o] ++(1,0); % <- ERROR: Undefined control sequence.
\end{circuitikz}
\end{document}
这是我目前所拥有的,带有圆圈的红线是我无法创建的:
答案1
我终于申请成功了percusee 的回答(此处)解决了我的问题。它使用以下循环:
\makeatletter
\foreach \n in {0,...,7}{
\xdef\doanchor{
\noexpand\anchor{in\n}{
\noexpand\pgfpoint{.5*\w}{7*.25cm-\n*.5cm}
}
}
\doanchor
}
\makeatother