画面の左側の「図と表」というタイトルのすぐ下にある、判別しにくい 2 つの図を LaTeX で作成するにはどうすればよいでしょうか。ここ誰かQcircuit LaTeXのコードを教えてくれませんか?
写真は以下のとおりです。
そして
MWE は次のとおりです。
\documentclass{article}
\input{Qcircuit}
\begin{document}
\Qcircuit @C=1em @R=1em { \lstick{\ket{x}} & \qw \ar@{.}[]+<3.5em,1em>; [d]+<3.5em,-1em>
& \ctrl{1} &
\qw & \rstick{\ket{x}} \qw \\
\lstick{\ket{y}} & \gate{H} &
\gate{\pi} & \gate{H} & \rstick{\ket{y \oplus x}} \qw }
\end{document}
答え1
Jan が直接私に連絡してきて、私は彼に代わってこの質問に答えましたが、同様の質問が必要な人がいる場合に備えて、ここで回答を投稿します。
これら 2 つの回路の LaTeX ソースと結果の PDF は以下に含まれています。
水平に積み重ねられたゲートのネスト:
\documentclass{standalone}
\usepackage{rotating}
\input{Qcircuit}
\newcommand{\puremultigate}[2]{*+<1em,.9em>{\hphantom{#2}} \POS [0,0]="i",[0,0].[#1,0]="e",!C *{#2},"e"+UR;"e"+UL **\dir{-};"e"+DL **\dir{-};"e"+DR **\dir{-};"e"+UR **\dir{-},"i"}
\begin{document}
\begin{tabular}{c}
\vspace{-.6em}\\
\Qcircuit @R=.2em @C=.5em @!R {
& & & & & & & & & & & & & \puremultigate{5}{\rotatebox{-90}{\small Measurement}} \\
& & \qw & \qw & \multigate{3}{U} & \qw & \qw & \multigate{3}{\fbox{$U_1$\rule[-1em]{0em}{2.7em}}\ \,\fbox{$U_2$\rule[-1em]{0em}{2.7em}}} & \qw & \qw & \multigate{3}{U^\dagger} & \qw & \qw & \ghost{\rotatebox{-90}{\small Measurement}} & \qw & \qw \\
& \lstick{\raisebox{-1.5em}{$\rho$}} & \qw & \qw & \ghost{U} & \qw & \qw & \ghost{\fbox{$U_1$\rule[-1em]{0em}{2.7em}}\ \,\fbox{$U_2$\rule[-1em]{0em}{2.7em}}} & \qw & \qw & \ghost{U^\dagger} & \qw & \qw & \ghost{\rotatebox{-90}{\small Measurement}} & \qw & \qw \\
& & & \raisebox{.3em}{\vdots} & \pureghost{U} & \push{\rule{3em}{0em}} & & \pureghost{\fbox{$U_1$\rule[-1em]{0em}{2.7em}}\ \,\fbox{$U_2$\rule[-1em]{0em}{2.7em}}} & \push{\rule{.5em}{0em}} & & \pureghost{U^\dagger} & \push{\rule{1.5em}{0em}} & & \pureghost{\rotatebox{-90}{\small Measurement}} & & \\
& & \qw & \qw & \ghost{U} & \qw & \qw & \ghost{\fbox{$U_1$\rule[-1em]{0em}{2.7em}}\ \,\fbox{$U_2$\rule[-1em]{0em}{2.7em}}} & \qw & \qw & \ghost{U^\dagger} & \qw & \qw & \ghost{\rotatebox{-90}{\small Measurement}} & \qw & \qw \\
\push{\rule{.6em}{0em}} & & & & & & & & & & & & & &
}
\vspace{1.2em}\\
\end{tabular}
\end{document}
垂直に積み重ねられたゲートのネスト:
\documentclass{standalone}
\usepackage{rotating}
\input{Qcircuit}
\newcommand{\puremultigate}[2]{*+<1em,.9em>{\hphantom{#2}} \POS [0,0]="i",[0,0].[#1,0]="e",!C *{#2},"e"+UR;"e"+UL **\dir{-};"e"+DL **\dir{-};"e"+DR **\dir{-};"e"+UR **\dir{-},"i"}
\begin{document}
\begin{tabular}{c}
\vspace{-.6em}\\
\Qcircuit @R=.2em @C=.5em @!R {
& & & & & & & & & & & & & \puremultigate{5}{\rotatebox{-90}{\small Measurement}} \\
& & \qw & \qw & \multigate{3}{U} & \qw & \qw & \multigate{3}{\parbox{2em}{\fbox{$U_1$}\vspace{.2em}\\\fbox{$U_2$}}} & \qw & \qw & \multigate{3}{U^\dagger} & \qw & \qw & \ghost{\rotatebox{-90}{\small Measurement}} & \qw & \qw \\
& \lstick{\raisebox{-1.5em}{$\rho$}} & \qw & \qw & \ghost{U} & \qw & \qw & \ghost{\parbox{2em}{\fbox{$U_1$}\vspace{.2em}\\\fbox{$U_2$}}} & \qw & \qw & \ghost{U^\dagger} & \qw & \qw & \ghost{\rotatebox{-90}{\small Measurement}} & \qw & \qw \\
& & & \raisebox{.3em}{\vdots} & \pureghost{U} & \push{\rule{3em}{0em}} & & \pureghost{\parbox{2em}{\fbox{$U_1$}\vspace{.2em}\\\fbox{$U_2$}}} & \push{\rule{.5em}{0em}} & & \pureghost{U^\dagger} & \push{\rule{1.5em}{0em}} & & \pureghost{\rotatebox{-90}{\small Measurement}} & & \\
& & \qw & \qw & \ghost{U} & \qw & \qw & \ghost{\parbox{2em}{\fbox{$U_1$}\vspace{.2em}\\\fbox{$U_2$}}} & \qw & \qw & \ghost{U^\dagger} & \qw & \qw & \ghost{\rotatebox{-90}{\small Measurement}} & \qw & \qw \\
\push{\rule{.6em}{0em}} & & & & & & & & & & & & & &
}
\vspace{1.2em}\\
\end{tabular}
\end{document}
Qcircuit にはネストされたゲートのための特別な機能はありませんが、ネストされたゲートの効果を得るには、内部ゲートを表すボックスを標準の \multigate コマンドに挿入するだけです。
測定ゲートを正しく表示するには、導線を強制しない新しい \multigate コマンド \puremultigate を定義する必要がありました。これを行うには、Qcircuit.tex から \multigate の標準定義を取り出し、最後の \qw コマンドを削除しました。