我正在尝试画画这个电路使用quantikz
。我不知道如何在双线上绘制打击符号,或者从以下位置绘制向下的箭头\meter
:
\documentclass{article}
\usepackage{graphicx}
\usepackage{amssymb,amsfonts,dsfont}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\begin{quantikz}
\lstick{$q_0$} & \gate{H} & \ctrl{2} & \gate{H} & \meter{} & \qw \\
\lstick{$q_1$} & \qw & \targX{} & \qw & \qw \vcw{-1} & \qw & \\
\lstick{$q_2$} & \qw & \targX{} & \qw & \qw \vcw{-1} & \qw \\
\lstick{$c$} & \cw\qwbundle[nwires=2]{1} & \cw & \cw & \cw \vcw{-1} & \cw{} \\
\end{quantikz}
\end{document}
答案1
这很接近了。添加了两个命令:绘制双箭头和在双线上添加删除线。
注意第二行中使用了\swap{1}
而不是。\targX{}
\documentclass{article}
\usepackage{graphicx}
\usepackage{amssymb,amsfonts,dsfont}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\tikzset{
operator/.append style={fill=blue!20, color=blue!20},
}
\newcommand{\vcwdouble}[3]{
\arrow[from=#1,to=#2,arrows, Rightarrow, double distance=.2mm, line width=.2mm, ->, shorten >=1pt, >=latex, "#3" {anchor=south west, yshift=1pt,xshift=2pt}, at end ]
}
\newcommand{\qwbundledouble}[1]{
\arrow[phantom,strike arrow]{l}[xshift=\pgfkeysvalueof{/quantikz/Strike Width}, yshift=\pgfkeysvalueof{/quantikz/Strike Height},anchor=south east, inner sep=0pt, xshift=-2pt]{\scriptstyle #1}\cw
}
\begin{document}
\begin{quantikz}
\lstick{$q_0$} & \gate{H} & \ctrl{2} & \gate{H} & \meter{}\vcwdouble{1-5}{4-5}{0} & \qw \\
\lstick{$q_1$} & \qw & \swap{1} & \qw & \qw & \qw & \\
\lstick{$q_2$} & \qw & \targX{} & \qw & \qw & \qw \\
\lstick{$c$} &\qwbundledouble{1} & \cw & \cw & \cw &\cw{} \\
\end{quantikz}
\end{document}
选项单线箭头(看起来更好)。尝试
\newcommand{\vcwsingle}[3]{
\arrow[from=#1,to=#2,arrows, ->, shorten >=1pt, >=latex, "#3" {anchor=south west, yshift=1pt,xshift=2pt}, at end ]
}