尝试使用 QCircuit nghost 和 \vdots

尝试使用 QCircuit nghost 和 \vdots

我正在开发一个利用 QCircuit 库的项目。我不得不说,我在使用这个库时遇到了很多问题,因为这个库的文档很少,无法说明可以做什么。然而,在编译这个电路时,出现了两个问题,我直接从 Overleaf 报告了这些问题。代码编译成功,结果是我想要的,但我不明白错误的原因,因为它来自这个块。我的符号有误吗?我不知道还能找到什么……

我明白了缺少 $ 插入在第一行之前\raisebox{-2.3em}{=}和在\end{center}

有什么建议吗?我以为这是nghost或者虚拟点,但我不确定。

\documentclass[a4paper, 12pt]{book}

% General Settings
\usepackage[paper = a4paper, margin = 1in]{geometry}
\usepackage[italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{subfig}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{graphicx,color,listings}
\usepackage{float}
\usepackage{booktabs}
\usepackage{hologo}
\usepackage{colortbl}

% Math packages
\usepackage{amsmath,amssymb,amsthm}
\usepackage{mathrsfs}
\usepackage{mathdots}
\usepackage{mathtools}


% Quantum circuit package
\usepackage[braket, qm]{qcircuit}

\hypersetup{
    colorlinks=true,
    linkcolor=black,
    urlcolor=blue,
}
\urlstyle{same}

\begin{document}
    \begin{center}
        \mbox{
            \Qcircuit @C=1em @R=1em {
                & \qw                         & \multigate{2}{G} & \qw                     & \qw \\
                & \raisebox{.3em}{\vdots}     & \nghost{G}       & \raisebox{.3em}{\vdots} &     \\
                & \qw                         & \ghost{G}        & \qw                     & \qw
            }
        }
        \raisebox{-2.3em}{=}
        \mbox{
            \Qcircuit @C=1em @R=1em {
                & \qw
                & \multigate{2}{H^{\otimes n}}
                & \qw
                & \multigate{2}{
                    \begin{array}{ll}
                        \ket{0}^{\otimes n} \rightarrow \ket{0}^{\otimes n} \\
                        \ket{x}^{\otimes n} \rightarrow -\ket{x}^{\otimes n}
                    \end{array}}
                & \qw
                & \multigate{2}{H^{\otimes n}}
                & \qw
                & \qw 
                \\
                & \raisebox{.3em}{\vdots}
                & \nghost{H^{\otimes n}}
                & \raisebox{.3em}{\vdots}
                & \nghost{
                    \begin{array}{cc}
                        \ket{0}^{\otimes n}\rightarrow \ket{0}^{\otimes n}\\
                        \ket{x}^{\otimes n}\rightarrow -\ket{x}^{\otimes n}
                    \end{array}}
                & \raisebox{.3em}{\vdots}
                & \nghost{H^{\otimes n}}
                & \raisebox{.3em}{\vdots}
                &
                \\
                & \qw
                & \ghost{H^{\otimes n}}
                & \qw
                & \ghost{
                    \begin{array}{ll}
                        \ket{0}^{\otimes n}\rightarrow \ket{0}^{\otimes n}\\
                        \ket{x}^{\otimes n}\rightarrow -\ket{x}^{\otimes n}
                    \end{array}}
                & \qw
                & \ghost{H^{\otimes n}}
                & \qw
                & \qw
            }
        }
    \end{center}
\end{document}

答案1

在内核中,\vdots被定义为可以在文本和数学中使用的命令,但mathdots重新定义为只能在数学模式下使用。

解决方法:将其包在里面$...$

更好的是,

\newcommand{\qvdots}{% \vdots for qcircuit
  \raisebox{0.3em}{\ensuremath{\vdots}}%
}

并使用\qvdots

还有一些虚假的空格,使得水平间距难以控制。检查<---我在代码中添加的标记。

hyperref包应该最后加载(只有一些包需要放在它后面,而没有您正在加载的包)。

\documentclass[a4paper, 12pt]{book}

% General Settings
\usepackage[paper = a4paper, margin = 1in]{geometry}
\usepackage[italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{subfig}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{graphicx,color,listings}
\usepackage{float}
\usepackage{booktabs}
\usepackage{hologo}
\usepackage{colortbl}

% Math packages
\usepackage{amsmath,amssymb,amsthm}
\usepackage{mathrsfs}
\usepackage{mathdots}
\usepackage{mathtools}


% Quantum circuit package
\usepackage[braket, qm]{qcircuit}

\usepackage{hyperref} % should be last

\hypersetup{
  colorlinks=true,
  linkcolor=black,
  urlcolor=blue,
}
\urlstyle{same}

\newcommand{\qvdots}{% \vdots for qcircuit
  \raisebox{0.3em}{\ensuremath{\vdots}}%
}

\begin{document}

\begin{center}
  \mbox{% <---
    \Qcircuit @C=1em @R=1em {
      & \qw     & \multigate{2}{G} & \qw     & \qw \\
      & \qvdots & \nghost{G}       & \qvdots &     \\
      & \qw     & \ghost{G}        & \qw     & \qw
    }% <---
  }% <---
  \quad\raisebox{-2.3em}{=}\quad % <---
  \mbox{% <---
    \Qcircuit @C=1em @R=1em {
      & \qw
      & \multigate{2}{H^{\otimes n}}
      & \qw
      & \multigate{2}{
          \begin{array}{ll}
          \ket{0}^{\otimes n} \rightarrow \ket{0}^{\otimes n} \\
          \ket{x}^{\otimes n} \rightarrow -\ket{x}^{\otimes n}
          \end{array}
        }
      & \qw
      & \multigate{2}{H^{\otimes n}}
      & \qw
      & \qw 
      \\
      & \qvdots
      & \nghost{H^{\otimes n}}
      & \qvdots
      & \nghost{
          \begin{array}{cc}
            \ket{0}^{\otimes n}\rightarrow \ket{0}^{\otimes n}\\
            \ket{x}^{\otimes n}\rightarrow -\ket{x}^{\otimes n}
          \end{array}
        }
      & \qvdots
      & \nghost{H^{\otimes n}}
      & \qvdots
      &
      \\
      & \qw
      & \ghost{H^{\otimes n}}
      & \qw
      & \ghost{
          \begin{array}{ll}
            \ket{0}^{\otimes n}\rightarrow \ket{0}^{\otimes n}\\
            \ket{x}^{\otimes n}\rightarrow -\ket{x}^{\otimes n}
          \end{array}
        }
      & \qw
      & \ghost{H^{\otimes n}}
      & \qw
      & \qw
    }% <---
  }
\end{center}

\end{document}

在此处输入图片描述

相关内容