我正在使用该quantikz
软件包绘制量子电路,但无法将“自己的”门 (BS) 插入为量子门。噪声门是我想插入第二个门的一个工作示例。有人能帮助我吗?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\tikzset{pics/.cd, splitter/.style={code={\draw[ultra thick] (#1:{sqrt(1/2)}) --
(#1+180:{sqrt(1/2)});}},splitter/.default=45}
\tikzset{pics/.cd, BS/.style={code={
\draw[->](-1,0)--(1,0);
\draw[->](0,-1)--(0,1);
\path (0,0) pic{splitter};
}}}
\begin{tikzpicture}
\draw (0,0) pic{BS};
\end{tikzpicture}
\tikzset{
noisy/.style={starburst,fill=yellow,draw=red,line
width=2pt,inner xsep=-4pt,inner ysep=-5pt}
}
\begin{quantikz}
\lstick{$\ket{0}$}
&\gate[2]{D}
&\gate[1, style={noisy}]{L_{1,1}}\\ % noisy is working
\lstick{$\ket{0}$}
&
&\gate[1, style={BS}]{L_{1,2}} % BS is not working
\end{quantikz}
\end{document}
答案1
您想知道为什么将样式添加noise
到\gate
命令中有效,而自定义样式却BS
无效。让我尝试对此做出解释,希望您能轻松理解。
钛钾Z 知道可用于设置节点样式的形状。默认形状是rectangle
,例如,对于包含德。另一个更复杂的形状是starburst
用于设置右上节点的样式。因此,样式noise
是一种改变形状使用命令添加到图表中的节点\gate
。
现在,还有pic
s,可以说是较大 Ti 的一小部分钾Z 图片。Apic
可用于需要经常重用代码片段的情况。Apic
可以包含节点和路径,但 apic
本身不是节点,也不是形状。因此,如果您将样式定义BS
为 a 的定义pic
(您对 执行的操作pics/.cd, BS/.style
),则此样式不会对节点执行任何有意义的操作。节点不知道如何处理 a pic
,您将收到错误。
pic
但实际上你可以做的是将(单独或与其他路径一起)放置path picture
在节点上,这意味着你作为选项值给出的路径path picture
将添加到相关节点的背景中。你只需要确保缩放path picture
正确并位于正确的位置,并且节点足够大以显示整个图片:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\tikzset{
pics/.cd,
splitter/.style={
code={
\draw[ultra thick] (#1:{sqrt(1/2)}) -- (#1+180:{sqrt(1/2)});
}
},
splitter/.default=45
}
\tikzset{BS/.style={
draw=none,
minimum width=1cm,
minimum height=1cm,
path picture={
\begin{scope}[x=0.5cm, y=0.5cm]
\draw[->] (path picture bounding box.center) +(-1,0) -- +(1,0);
\draw[->] (path picture bounding box.center) +(0,-1) -- +(0,1);
\path (path picture bounding box.center) pic {splitter};
\end{scope}
}
}}
\begin{document}
\tikzset{
noisy/.style={
starburst,
fill=yellow,
draw=red,
line width=2pt,
inner xsep=-4pt,
inner ysep=-5pt}
}
\begin{quantikz}
\lstick{$\ket{0}$}
& \gate[2]{D}
& \gate[1, style={noisy}]{L_{1,1}} \\
\lstick{$\ket{0}$}
&
& \gate[1, style={BS}]{L_{1,2}}
\end{quantikz}
\end{document}