我正在尝试注释我的量化一些门周围的电路和绘图框:
\documentclass{article}
\usepackage{graphicx}
\usepackage{amssymb,amsfonts,dsfont}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\begin{quantikz}[row sep={20pt,between origins},column sep=.2cm,font=\small]
\lstick{\ket{0}} & \qw & \qw & \qw & \qw & \qw &[1cm] \qw & \qw \\
\lstick{\ket{0}} & \qw & \qw\qwbundle{} & \qw & \qw & \qw &[1cm] \qw & \gate[3]{U_2} \\
\lstick{\ket{0}} & \qw & \qw\qwbundle{} & \qw & \qw & \qw &[1cm] \qw & \qw \\
\lstick{\ket{0}} & \qw & \qwbundle{} & \gate{H}\gategroup[wires=2,steps=3,style={dashed,rounded corners,fill=white,inner xsep=2pt},background]{mylabel} & \ctrl{1} & \gate{U_1} &[1cm] \qw & \qw \\
\lstick{\ket{b}} & \qw & \qw\qwbundle{} & \qw & \gate{Z} & \qw &[1cm] \qw & \qw \\
\end{quantikz}
\end{document}
我希望它看起来像:
我读过quantikz 文档并调整了gategroup
第 13 页上的示例,但我收到了一个我无法理解的错误:l.76 I think the culprit is a tikzcd arrow in cell 5-8. \errmessage ...currentrow -\tikzcd@currentcolumn }
答案1
我认为最好尝试直接进行绘图,而不要使用专门的库。我建议使用下面的解决方案,该解决方案基于fit
将节点分组到矩形中的命令。
代码
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{fit, math}
\begin{document}
\newcommand{\ket}[1]{$|#1\rangle$}
\tikzset{%
box/.style={draw, fill=white,
minimum width=2em, minimum height=4ex,
inner sep=1ex, outer sep=.2ex%
},
hbox/.style={draw, fill=white,
minimum width=2em, minimum height=#1 ex,
inner sep=1ex, outer sep=.2ex%
},
dot/.style={circle, fill=black, minimum size=1ex,
inner sep=0pt, outer sep=2pt}
}
\begin{tikzpicture}[evaluate={real \a, \posl; \a=6; \posl=.75;}]
\draw (0, 1) node {\ket{0}} ++(.5, 0) -- ++(.5, 0) -- ++(\a, 0);
\draw (0, 0) node {\ket{0}} ++(.5, 0) -- ++(.5, 0) node {$/$} -- ++(\a, 0);
\draw (0, -1) node {\ket{0}} ++(.5, 0) -- ++(.5, 0) node {$/$} -- ++(\a, 0)
coordinate (U1);
\draw (0, -2) node {\ket{0}} ++(.5, 0) -- ++(.5, 0) node {$/$} -- ++(\a, 0)
node[pos=.15, box] (H) {$H$} node[pos=.3, dot] {} node[pos=.45, box] (U) {$U_1$}
node[pos=\posl, red, above] (a) {\ket{a}};
\draw (0, -3) node {\ket{b}} ++(.5, 0) -- ++(.5, 0) node {$/$} -- ++(\a, 0)
node[pos=.3, box] (Z) {$Z$}
node[pos=\posl, blue, above] (b) {$\beta$\/\ket{b}}
node[pos=\posl, blue, below=1ex] (ab) {$\beta\,${\color{red}\ket{a}}\ket{b}};
\path node[draw, dashed, fit={(H) (U) (Z)}, inner sep=1.5ex,
label={270: my label}] {}
node[fill=gray, opacity=.15, fit={(a) (b)}, inner sep=.5ex] {};
\path (U1) node[hbox=15] {$U_1$};
\end{tikzpicture}
\end{document}
答案2
问题是你把它放在\\
电路最后一行的末尾。
此外,对门组在标签定位和框尺寸方面进行了一些细微的改动。
\documentclass{article}
\usepackage{graphicx}
\usepackage{amssymb,amsfonts,dsfont}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\begin{quantikz}[row sep={20pt,between origins},column sep=.2cm,font=\small]
\lstick{\ket{0}} & \qw & \qw & \qw & \qw & \qw &[1cm] \qw & \qw \\
\lstick{\ket{0}} & \qw & \qw\qwbundle{} & \qw & \qw & \qw &[1cm] \qw & \gate[3]{U_2} \\
\lstick{\ket{0}} & \qw & \qw\qwbundle{} & \qw & \qw & \qw &[1cm] \qw & \qw \\
\lstick{\ket{0}} & \qw & \qwbundle{} & \gate{H}\gategroup[wires=2,steps=3,style={dashed,rounded corners,fill=white,inner xsep=0pt},background,label style={label position=below,anchor=
north,yshift=-0.2cm}]{mylabel} & \ctrl{1} & \gate{U_1} &[1cm] \qw & \qw \\
\lstick{\ket{b}} & \qw & \qw\qwbundle{} & \qw & \gate{Z} & \qw &[1cm] \qw & \qw
\end{quantikz}
\end{document}