我一直在使用 python 中的 qiskit 包绘制量子电路。我需要 latex 源代码并执行
circuit.draw(output='latex_source')
我得到了这一行很长的乳胶代码:
'% \\documentclass[preview]{standalone}\n% If the image is too large to fit on this documentclass use\n\\documentclass[draft]{beamer}\n% img_width = 6, img_depth = 15\n\\usepackage[size=custom,height=10,width=28,scale=0.7]{beamerposter}\n% instead and customize the height and width (in cm) to fit.\n% Large images may run out of memory quickly.\n% To fix this use the LuaLaTeX compiler, which dynamically\n% allocates memory.\n\\usepackage[braket, qm]{qcircuit}\n\\usepackage{amsmath}\n\\pdfmapfile{+sansmathaccent.map}\n% \\usepackage[landscape]{geometry}\n% Comment out the above line if using the beamer documentclass.\n\\begin{document}\n\\begin{equation*}\n \\Qcircuit @C=1.0em @R=0.0em @!R {\n\t \t\\lstick{ {q}_{0} : \\ket{0} } & \\gate{X} \\barrier[0em]{2} & \\qw & \\qw & \\qw & \\ctrl{1} & \\gate{H} \\barrier[0em]{2} & \\qw & \\meter & \\qw \\barrier[0em]{2} & \\qw & \\qw & \\ctrl{2} & \\qw & \\qw & \\qw\\\\\n\t \t\\lstick{ {q}_{1} : \\ket{0} } & \\qw & \\qw & \\gate{H} & \\ctrl{1} & \\targ & \\qw & \\qw & \\qw & \\meter & \\qw & \\ctrl{1} & \\qw & \\qw & \\qw & \\qw\\\\\n\t \t\\lstick{ {q}_{2} : \\ket{0} } & \\qw & \\qw & \\qw & \\targ & \\qw & \\qw & \\qw & \\qw & \\qw & \\qw & \\targ & \\control\\qw & \\meter & \\qw & \\qw\\\\\n\t \t\\lstick{c_{0}: 0} & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw \\cwx[-3] & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw\\\\\n\t \t\\lstick{c_{1}: 0} & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw \\cwx[-3] & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw\\\\\n\t \t\\lstick{c_{2}: 0} & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw & \\cw \\cwx[-3] & \\cw & \\cw\\\\\n\t }\n\\end{equation*}\n\n\\end{document}'
请帮我区分这些线条,以便我可以在乳胶上运行它。
答案1
您真正需要做的是通知生成单个长字符串的程序创建真正的换行符而不是输出\n
,并输出单个\
(反斜杠)字符而不是\\
成对字符。哦,它还应该摆脱\t
(制表符)指令。
经过这些调整,并且在(a)从切换到文档类(如序言注释中所建议的那样)和(b)更改为(以增加行之间的距离)之后standalone
,beamer
我@R=0.0em
得到@R=0.25em
以下输出:
%\documentclass[preview]{standalone}
% If the image is too large to fit on this documentclass use
\documentclass[draft,landscape]{beamer} % img_width = 6, img_depth = 15
\usepackage[size=custom,height=10,width=28,scale=0.7]{beamerposter}
% instead and customize the height and width (in cm) to fit.
% Large images may run out of memory quickly.
% To fix this use the LuaLaTeX compiler, which dynamically
% allocates memory.
\usepackage[braket, qm]{qcircuit}
\usepackage{amsmath}
\pdfmapfile{+sansmathaccent.map}
\usepackage{geometry}
% Comment out the above line if using the beamer documentclass.
\begin{document}
\begin{equation*}
\Qcircuit @C=1.0em @R=0.25em @!R {
\lstick{ {q}_{0} : \ket{0} } & \gate{X} \barrier[0em]{2} & \qw & \qw & \qw & \ctrl{1} & \gate{H} \barrier[0em]{2} & \qw & \meter & \qw \barrier[0em]{2} & \qw & \qw & \ctrl{2} & \qw & \qw & \qw\\
\lstick{ {q}_{1} : \ket{0} } & \qw & \qw & \gate{H} & \ctrl{1} & \targ & \qw & \qw & \qw & \meter & \qw & \ctrl{1} & \qw & \qw & \qw & \qw\\
\lstick{ {q}_{2} : \ket{0} } & \qw & \qw & \qw & \targ & \qw & \qw & \qw & \qw & \qw & \qw & \targ & \control\qw & \meter & \qw & \qw\\
\lstick{c_{0}: 0} & \cw & \cw & \cw & \cw & \cw & \cw & \cw & \cw \cwx[-3] & \cw & \cw & \cw & \cw & \cw & \cw & \cw\\
\lstick{c_{1}: 0} & \cw & \cw & \cw & \cw & \cw & \cw & \cw & \cw & \cw \cwx[-3] & \cw & \cw & \cw & \cw & \cw & \cw\\
\lstick{c_{2}: 0} & \cw & \cw & \cw & \cw & \cw & \cw & \cw & \cw & \cw & \cw & \cw & \cw & \cw \cwx[-3] & \cw & \cw\\
}
\end{equation*}
\end{document}