% \iffalse meta-comment % % Copyright (C) 2016 by Christopher Granade % --------------------------------------------------------------------------- % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Christopher Granade (cgranade@cgranade.com). % % This work consists of the files revquantum.dtx and revquantum.ins % and the derived filebase revquantum.sty. % % \fi % % \iffalse %<*driver> \ProvidesFile{revquantum.dtx} % %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{revquantum} %<*package> [2017/03/15 v0.11 Misc. fixes and improved installer.] % % %<*driver> \documentclass{ltxdoc} \usepackage[pretty]{revquantum}[2015/12/29] \usepackage{xcolor} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{revquantum.dtx} \PrintChanges \PrintIndex \end{document} % % \fi % % \CheckSum{0} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \changes{v0.10}{2016/09/21}{Build script fixes for CTAN submission.} % \changes{v0.09}{2016/09/20}{wlog fix, updates to affil database.} % \changes{v0.08}{2016/04/11}{Significant reworking to robustly configure colors and fonts in listings.} % \changes{v0.07}{2016/04/07}{Added citeneed macro, fixed TODO spacing.} % \changes{v0.06}{2016/04/04}{Fix for hyperref bug.} % \changes{v0.05}{2016/04/04}{BibTeX hack for missing babel languages.} % \changes{v0.04}{2015/12/30}{Added Color Universal Design color names, checks for incompatible packages.} % \changes{v0.03}{2015/11/26}{Integration of stmaryrd, better docs.} % \changes{v0.02}{2015/11/04}{Initial public version.} % % \DoNotIndex{\newcommand,\newenvironment} % % \providecommand*{\url}{\texttt} % \newcommand{\DescribeColor}[1]{% % \DescribeMacro{#1}% % {\color{#1} \textbullet} % % } % % \GetFileInfo{revquantum.dtx} % \title{The \textsf{revquantum} package} % \author{Christopher Granade \\ \url{cgranade@cgranade.com}} % \date{\fileversion~from \filedate} % % \maketitle % % \section{Introduction} % % The \textsf{revquantum} package provides a number of useful hacks to solve % common annoyances with the \textsf{revtex4-1} package, and to define notation % in common use within quantum information. In doing so, \textsf{revquantum} % imports and configures a number of commonly-available and used packages, and % where reasonable, provides fallbacks. % % The \textsf{revquantum} package also warns when users try to load packages which % are known to be incompatible with \textsf{revtex4-1}. In particular, loading the following % packages will cause warnings: % % \begin{itemize} % \item \textsf{subcaption} % \end{itemize} % % Yes, this is a short list. It will get longer. % % \section{Usage} % % \textbf{NB:} \textsf{revquantum} must be loaded first unless |nobibtexhacks| % is passed. % % \subsection{Package Options} % % The \textsf{revquantum} package provides several options to configure its behavior. % These can be used in the traditional way, as optional arguments to |\usepackage|. % For instance, this document was prepared using |\usepackage[pretty]{revquantum}|. % % \DescribeMacro{[final]} % % Removes support for TODO commands (see below), causing them to escalate from % warnings to errors. % % \DescribeMacro{[pretty]} % % Uses the \textsf{mathpazo} package to typeset the document % more nicely than the default for \textsf{revtex4-1} drafts. % % \DescribeMacro{[uselistings]} % % Includes the \textsf{listings} package and configures it for % literate and math-escape notation in Python, Mathematica and MATLAB. % % \DescribeMacro{[nobibtexhacks]} % % Prevents \textsf{revquantum} from patching the \BibTeX support provided % by \textsf{revtex4-1} to include titles. % % \DescribeMacro{[strict]} % % Causes package incompatibility warnings to become errors. % % \subsection{New Commands} % % \subsubsection{TODO Annotations} % % \DescribeMacro{\todo} \marg{annotation} % % Marks an incompleted task in a different color in the document, and raises % a warning in the LaTeX log. % % \DescribeMacro{\TODO} % \TODO % % \DescribeMacro{\todolist} \marg{contents} % % Typesets \emph{contents} as a TODO annotation, wrapped in an |{enumerate}| % environment. % % \subsubsection{Mathematical Notation} % % This package also provides commands for notation common in quantum information. % % \DescribeMacro{\ii} % \DescribeMacro{\dd} % % These commands typeset the imaginary unit $\ii$ and differential element $\dd$, % respectively, in math roman. % % \DescribeMacro{\defeq} % % This command uses |\mathrel| to properly format the colon-equals operator % as a relation operator. % % \DescribeMacro{\expect} % Typesets the expectation operator $\expect$. % % \DescribeMacro{\id} % % \todo{The current implementation of id is to call openone, provided by revtex4-1, % and thus not available when used from documentation.} % % \DescribeMacro{\llbracket} % \DescribeMacro{\rrbracket} % % Typesets the double-square brackets commonly used to denote stabilizer code % properties, as in $\llbracket n, k, d \rrbracket$. These commands are provided % by |{stmaryrd}|, and are given a reasonable fallback if that package is not % available. % % % % \subsubsection{Affiliation Database} % % The \textsf{revquantum} package provides commands for quickly typesetting % affiliations, with an eye towards reducing copy-paste errors when authors have % a nontrivial set of shared affiliations. % % \DescribeMacro{\newaffil} \marg{shorthand} \marg{description} % % The workhorse of the affiliation database is the |\newaffil| command, % which defines a new command that expands to call the \textsf{revtex4-1} % |\affiliation| command. For instance, |\newaffil{UFooBar}{Bar, UFoo}| % defines a new command |\affilUFooBar| that expands to % |\affiliation{Bar, UFoo}|. % % So far, the following affiliation commands are provided: % % \DescribeMacro{\affilTODO} Special, marks that an affiliation is not % provided. % % % \DescribeMacro{\affilEQuSUSyd} Centre for Engineered Quantum Systems, University of Sydney. % % \DescribeMacro{\affilEQuSMacq} Centre for Engineered Quantum Systems, Macquarie University. % % \DescribeMacro{\affilUSydPhys} School of Physics, University of Sydney. % % \DescribeMacro{\affilIQC} Institute for Quantum Computing, University of Waterloo. % % \DescribeMacro{\affilUWPhys} Department of Physics, University of Waterloo. % % \DescribeMacro{\affilUWAMath} Department of Applied Mathematics, University of Waterloo. % % \DescribeMacro{\affilUWChem} Department of Chemistry, University of Waterloo. % % \DescribeMacro{\affilPI} Perimeter Institute for Theoretical Physics. % % \DescribeMacro{\affilCIFAR} Canadian Institute for Advanced Research. % % \DescribeMacro{\affilCQuIC} Center for Quantum Information and Control, University of New Mexico. % % \DescribeMacro{\affilIBMTJW} IBM T. J. Watson Research Center. % % % \subsubsection{Internal-Use Commands} % % \DescribeMacro{\booloption} % \DescribeMacro{\newnew} % % These commands are used internally by \textsf{revquantum} to define % new boolean package options, and to declare new kinds of |\newcommand| % commands. For example, |\newnew| is used to define |\newoperator|, % which in turn defines new commands for named mathematical operators (e.g. $\Tr$). % % \DescribeMacro{\sectionautorefname} % \DescribeMacro{\algorithmautorefname} % \DescribeMacro{\equationautorefname} % \DescribeMacro{\lemmaautorefname} % % These commands configure \textsf{hyperref}'s \texttt{autoref} command % for use with \textsf{revtex4-1}, so that \texttt{autoref} correctly % describes Section, Algorithm, and Lemma, and also follows the standard % notation for equation references. % % \DescribeMacro{\boolean{@xetex}} % % This boolean variable uses \textsf{iftex} to check if XeTeX is installed. % If \textsf{iftex} is not available, then we assume plain LaTeX. % % \subsection{New Colors} % % The \textsf{revquantum} package also provides a color palette % that is safe for colorblind readers and for printing, the % \href{http://jfly.iam.u-tokyo.ac.jp/color/}{Color Universal % Design} palette of Okabe and Ito. % % \DescribeColor{cud-black} % \DescribeColor{cud-orange} % \DescribeColor{cud-sky-blue} % \DescribeColor{cud-bluish-green} % \DescribeColor{cud-yellow} % \DescribeColor{cud-blue} % \DescribeColor{cud-vermillion} % \DescribeColor{cud-reddish-purple} % % These colors are defined as \textsf{xcolor} color names, such that they % can be used in all packages which depend on \textsf{xcolor}. In particular, % CUD colors can be directly used from \textsf{tikz}. To use with \textsf{tikz}, % however, \textsf{revquantum} must be loaded \emph{after} \textsf{tikz}. % % \StopEventually{} % % \section{Implementation} % % \iffalse %<*package> % \fi % % \begin{macrocode} \usepackage{ifthen} % \end{macrocode} % \subsection{XeTeX Detection} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % We make a new boolean variable to track if XeTeX is being used. % \begin{macrocode} \newboolean{@xetex} \setboolean{@xetex}{false} \IfFileExists{iftex.sty}{ \wlog{[INFO] iftex loaded} \usepackage{iftex} }{ \newif\ifXeTeX \XeTeXfalse } \ifXeTeX \wlog{[INFO] Using XeTeX} \setboolean{@xetex}{true} \else \setboolean{@xetex}{false} \fi % \end{macrocode} % \subsection{Notation} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % \begin{macro}{\newnew} % \begin{macrocode} \newcommand{\newnew}[2]{ \expandafter\newcommand\csname new#1\endcsname[1]{ \expandafter\newcommand\csname ##1\endcsname{#2{##1}} } } % \end{macrocode} % \end{macro} % % \begin{macrocode} \newnew{operator}{\operatorname} \newnew{rm}{\mathrm} \newoperator{Tr} \newoperator{Cov} \newoperator{supp} \newoperator{diag} \newoperator{rank} % \end{macrocode} % % \begin{macro}{\ii} % \begin{macrocode} \newcommand{\ii}{\mathrm{i}} % Outside what newnew currently supports. % \end{macrocode} % \end{macro} % % % \begin{macro}{\dd} % \begin{macrocode} \newcommand{\dd}{\mathrm{d}} % Outside what newnew currently supports. % \end{macrocode} % \end{macro} % % \begin{macrocode} \newrm{e} \newrm{TVD} \newrm{T} % \end{macrocode} % % \begin{macro}{\defeq} % \begin{macrocode} \newcommand{\defeq}{\mathrel{:=}} % \end{macrocode} % \end{macro} % % % \begin{macro}{\expect} % \begin{macrocode} \newcommand{\expect}{\mathbb{E}} % \end{macrocode} % \end{macro} % % % \begin{macro}{\id} % \begin{macrocode} \newcommand{\id}{\openone} % \end{macrocode} % \end{macro} % % \begin{macrocode} % \end{macrocode} % We want to only conditionally use |{stmaryrd}| if it's available, and % otherwise, hack up a few commands from that package. % % \begin{macrocode} \IfFileExists{stmaryrd.sty}{ \RequirePackage{stmaryrd} }{ \PackageWarning{revquantum}{ The stmaryrd package is not available, so some commands (e.g.: double-brackets) will look wrong. } \newcommand{\llbracket}{[\!\!\hspace{1.5pt}[} \newcommand{\rrbracket}{]\!\!\hspace{1.5pt}]} } % \end{macrocode} % \subsection{Options Handling} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % We will need to define a few options to make the package nicer to use. We do % so by making a new command, |\booloption| \marg{boolname} \marg{optionname} % \marg{default}. % \begin{macro}{\booloption} % \begin{macrocode} \newcommand{\booloption}[3]{ \newboolean{#1} \setboolean{#1}{#3} \ifthenelse{\equal{#3}{true}}{ % \end{macrocode} % Default is true, so we need a "no" option to % turn off the new boolean. % \begin{macrocode} \DeclareOption{no#2}{\setboolean{#1}{false}} }{ % \end{macrocode} % Default is false, so we need an option to turn % on the new boolean. % \begin{macrocode} \DeclareOption{#2}{\setboolean{#1}{true}} } } % \end{macrocode} % \end{macro} % We then use this new command to define the options for \textsf{revquantum}, % |final|, |pretty|, |uselistings|, |nobibtexhacks|, and |strict|. % \begin{macrocode} \booloption{@final}{final}{false} \booloption{@pretty}{pretty}{false} \booloption{@uselistings}{uselistings}{false} \booloption{@bibtexhacks}{bibtexhacks}{true} \booloption{@strict}{strict}{false} \ProcessOptions\relax % \end{macrocode} % For the |strict| option, we do one last thing and define a new macro that % either raises a warning or an option depending on whether |strict| has been % set as an option. % \begin{macro}{\rq@quasiwarn} % \begin{macrocode} \ifthenelse{\boolean{@strict}}{ \newcommand{\rq@quasiwarn}{ \PackageError{revquantum} } }{ \newcommand{\rq@quasiwarn}{ \PackageWarning{revquantum} } } % \end{macrocode} % \end{macro} % \subsection{Unforgivable BibTeX Hacks} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % These hacks include the title of each reference in the BibTeX output by % redefining the part of \textsf{revtex4-1} on the fly which is responsible % for writing out the bibdata. Note that these hacks \emph{must} come before % importing packages, or else \textsf{revtex4-1} will have already written out % its control notes. % \begin{macrocode} \ifthenelse{\boolean{@bibtexhacks}}{\def\@bibdataout@aps{% \immediate\write\@bibdataout{% @CONTROL{% apsrev41Control,author="08",editor="1",pages="0",title="0",year="1",eprint="1"% }% }% \if@filesw \immediate\write\@auxout{\string\citation{apsrev41Control}}% \fi }}{} % \end{macrocode} % \subsection{Imports} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Here, we import a few other useful packages and configure them according to % the options passed by the user. In handling the fonts specified by % |[pretty]|, we must be careful to do so in a way that is supported by % XeTeX. % Note that we only load \textsf{color} if % neither \textsf{tikz} nor \textsf{xcolor} have already been imported, and if % we are not using \textsf{listings}. In the latter case, we will load % \textsf{xcolor} instead so that we can make \textsf{listings} play nicer with % our own custom palette. % Also of % note is that we do not import \textsf{hyperref} yet, as it must go last to avoid duplicating % reference names. % \begin{macrocode} \RequirePackage{amsmath} \RequirePackage{amsfonts} \RequirePackage{amsthm} \RequirePackage{amssymb} \RequirePackage{amsbsy} \@ifpackageloaded{tikz}{}{% \@ifpackageloaded{xcolor}{}{% \ifthenelse{\boolean{@uselistings}}{}{% \RequirePackage[usenames,dvipsnames]{color}% }% }% \AtBeginDocument{% \@ifpackageloaded{tikz}{% \rq@quasiwarn{tikz loaded, but after revquantum. This may not work.}% }% }% } \RequirePackage{braket} \RequirePackage{graphicx} \RequirePackage[english]{babel} \ifthenelse{\boolean{@pretty}}{ \ifthenelse{\boolean{@xetex}}{ % http://tex.stackexchange.com/a/50593 \usepackage{fontspec} \usepackage{mathpazo} \setmainfont [ BoldFont = texgyrepagella-bold.otf , ItalicFont = texgyrepagella-italic.otf , BoldItalicFont = texgyrepagella-bolditalic.otf ] {texgyrepagella-regular.otf} }{ \RequirePackage{mathpazo} } }{} \ifthenelse{\boolean{@uselistings}}{ \RequirePackage{xcolor} \RequirePackage{listings} \RequirePackage{textcomp} % Make sure we have a ` for writing Mathematica. }{} \ifthenelse{\boolean{@bibtexhacks}}{ \RequirePackage{letltxmacro} \RequirePackage{etoolbox} }{} % \end{macrocode} % \subsubsection{Theorem Environments} % \begin{macrocode} \newtheorem{theorem}{Theorem} \newtheorem{lemma}{Lemma} % \end{macrocode} % \subsubsection{\textsf{algorithm} and \textsf{algpseudocode} Setup} % \begin{macrocode} \RequirePackage{algorithm} \RequirePackage{algpseudocode} \renewcommand{\algorithmicrequire}{\textbf{Input:}} \renewcommand{\algorithmicensure}{\textbf{Output:}} \newcommand{\inlinecomment}[1]{\Comment {\footnotesize #1} \normalsize} \newcommand{\linecomment}[1]{\State \(\triangleright\) {\footnotesize #1} \normalsize} % \end{macrocode} % \subsubsection{\textsf{listings} Setup} % Here, we provide special support for scientific languages like Python and Mathematica, % as well as for legacy environments. This support consists of configuring escapes, % quoting, providing additional keywords, etc. % \begin{macrocode} \ifthenelse{\boolean{@uselistings}}{ \definecolor{comment-color}{gray}{0.5} \lstset{ basicstyle=\footnotesize, commentstyle=\color{comment-color}, frame=lines, gobble=4, numbers=left, numberstyle=\tiny, stepnumber=5, numbersep=5pt, keywordstyle=\color{cud-bluish-green!85!black}\bfseries, keywordstyle={[2]\color{cud-sky-blue!75!black}}, emphstyle=\color{cud-vermillion} } \ifthenelse{\boolean{@xetex}}{ \RequirePackage{sourcecodepro} \lstset{basicstyle=\footnotesize\sourcecodepro} }{} \lstdefinestyle{matlab}{ language=MATLAB, mathescape=true } \lstdefinestyle{python}{ language=Python, mathescape=true, showstringspaces=false, morekeywords={as,async,await} } \lstdefinestyle{mathematica}{ language=Mathematica, upquote=true, % Needed to deal with the context symbol `.' literate= {->}{$\to$}1 {!=}{$\neq$}1 {\\[DoubleStruckOne]}{${\id}$}1 {\\[Sigma]}{$\sigma$}1 {(x)}{$\otimes$}1 % CG: I have the distinct impression this will break. Badly. } }{} % \end{macrocode} % \subsection{Import Warnings} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The following command will cause a warning to be emitted if the package % named by its argument is loaded. To make robust against the order in which % packages are loaded, all such logic happens at |\begin{document}|. This % code is adapted from the solution provided by Martin Scharrer at % \url{http://tex.stackexchange.com/a/16200/615}. % \begin{macro}{\rq@warnpackage} % \begin{macrocode} \newcommand{\rq@warnpackage}[1]{ \AtBeginDocument{% \@ifpackageloaded{#1}{% \rq@quasiwarn{The #1 package is known to be incompatible with revtex4-1. You may encounter problems using this package.}% }{} } } % \end{macrocode} % \end{macro} % With this command in place, we can now issue specific warnings for individual % ``bad'' packages. % \begin{macrocode} \rq@warnpackage{subcaption} % \end{macrocode} % \subsection{Slightly More Forgivable BibTeX Hacks} %%%%%%%%%%%%%%%%%%%%%%%%% % Next, we include \href{http://tex.stackexchange.com/a/199299/615}{a solution % suggested by egreg} for a rather annoying |{revtex4-1}| bug. In particular, % we will set up |language={en}| as an alias for |language={english}|, so that % |{revtex4-1}| will no longer raise |{babel}| errors for the undefined language. % As with our unforgivable hacks, we will guard the forgivable hacks with % the |[nobibtexhacks]| option. % \begin{macro}{\ORIGselectlanguage} % \begin{macrocode} \ifthenelse{\boolean{@bibtexhacks}}{ \LetLtxMacro{\ORIGselectlanguage}{\selectlanguage} \DeclareRobustCommand{\selectlanguage}[1]{% \@ifundefined{alias@\string#1} {\ORIGselectlanguage{#1}} {\begingroup\edef\x{\endgroup \noexpand\ORIGselectlanguage{\@nameuse{alias@#1}}}\x}% } }{} % \end{macrocode} % \end{macro} % \begin{macro}{\definelanguagealias} % \begin{macrocode} \newcommand{\definelanguagealias}[2]{% \@namedef{alias@#1}{#2}% } % \end{macrocode} % \end{macro} % \begin{macrocode} \definelanguagealias{en}{english} \definelanguagealias{EN}{english} \definelanguagealias{English}{english} % \end{macrocode} % We will also redefine |\doibase| to eat any newlines following it, and to % prefer HTTPS to HTTP. This will fix a rather annoying bug where line breaks % in the *.bbl source can introduce extraneous spaces into the target of % each citation's |\href|. % \begin{macro}{\doibase} % \begin{macrocode} \ifthenelse{\boolean{@bibtexhacks}}{ % Ensure that the \doibase command is defined, just in case. \providecommand{\doibase}{} \renewcommand{\doibase}[1]{https://dx.doi.org/\ifdefempty{#1}{}{#1}} }{} % \end{macrocode} % \end{macro} % \subsection{TODO Support} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % These commands provide a way of marking items as needing to be done before % the final version (denoted by the |final| package option). % \begin{macro}{\todo} % \begin{macrocode} \ifthenelse{\boolean{@final}}{ \newcommand{\todo}[1]{% \PackageError{revquantum}{Unaddressed TODO}% \rq@todo{#1}% } }{ \newcommand{\todo}[1]{% \PackageWarning{revquantum}{Unaddressed TODO}% \rq@todo{#1}% } } % \end{macrocode} % \end{macro} % % We also define a |\citeneed| command for the special case of a missing citation. % As per Steve Flammia's suggestion, this is formatted in analogy to the infamous % Wikipedia annotation. % % \begin{macro}{\citeneed} % \begin{macrocode} \ifthenelse{\boolean{@final}}{ \newcommand{\citeneed}{% \PackageError{revquantum}{citation needed}% \rq@todo{[citation needed]}% } }{ \newcommand{\citeneed}{% \PackageWarning{revquantum}{citation needed}% \rq@todo{[citation needed]}% } } % \end{macrocode} % \end{macro} % % Both of these macros are based on the |\rq@todo| macro, which performs the % formatting for TODOs. % % \begin{macro}{\rq@todo} % \begin{macrocode} \newcommand{\rq@todo}[1]{% {\color{magenta} #1}% } % \end{macrocode} % \end{macro} % % We also provide a few other special cases below. % % \begin{macro}{\TODO} % \begin{macrocode} \newcommand{\TODO}{\todo{TODO}} % \end{macrocode} % \end{macro} % % % \begin{macro}{\todolist} % \begin{macrocode} \newcommand{\todolist}[1]{\todo{ \begin{itemize} #1 \end{itemize} }} % \end{macrocode} % \end{macro} % \subsection{Color Universal Design} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \begin{macrocode} \definecolor{cud-black} {RGB}{0,0,0} \definecolor{cud-orange} {RGB}{230,159,0} \definecolor{cud-sky-blue} {RGB}{86,180,233} \definecolor{cud-bluish-green} {RGB}{0,158,115} \definecolor{cud-yellow} {RGB}{240,228,66} \definecolor{cud-blue} {RGB}{0,114,178} \definecolor{cud-vermillion} {RGB}{213,94,0} \definecolor{cud-reddish-purple}{RGB}{204,121,167} % \end{macrocode} % \subsection{Affiliation Database} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \begin{macro}{\newaffil} % \begin{macrocode} \newcommand{\newaffil}[2]{ \expandafter\newcommand\csname affil#1\endcsname{ \affiliation{ #2 } } } % \end{macrocode} % \end{macro} % % \subsubsection{General Affiliations} % % \begin{macrocode} \newaffil{TODO}{\TODO} % \end{macrocode} % % \subsubsection{Australia} % % \begin{macrocode} \newaffil{EQuSUSyd}{ Centre for Engineered Quantum Systems, University of Sydney, Sydney, NSW, Australia } \newaffil{EQuSMacq}{ Centre for Engineered Quantum Systems, Macquarie University, Sydney, NSW, Australia } \newaffil{USydPhys}{ School of Physics, University of Sydney, Sydney, NSW, Australia } % \end{macrocode} % % \subsubsection{Canada} % % \begin{macrocode} \newaffil{IQC}{ Institute for Quantum Computing, University of Waterloo, Waterloo, ON, Canada } \newaffil{UWPhys}{ Department of Physics, University of Waterloo, Waterloo, ON, Canada } \newaffil{UWAMath}{ Department of Applied Mathematics, University of Waterloo, Waterloo, ON, Canada } \newaffil{UWChem}{ Department of Chemistry, University of Waterloo, Waterloo, ON, Canada } \newaffil{PI}{ Perimeter Institute for Theoretical Physics, 31 Caroline St. N, Waterloo, Ontario, Canada N2L 2Y5 } \newaffil{CIFAR}{ Canadian Institute for Advanced Research, Toronto, ON, Canada } % \end{macrocode} % % \subsubsection{United States} % % \begin{macrocode} \newaffil{CQuIC}{ Center for Quantum Information and Control, University of New Mexico, Albuquerque, NM 87131-0001, USA } \newaffil{IBMTJW}{ IBM T. J. Watson Research Center, Yorktown Heights, New York 10598, USA } % \end{macrocode} % \subsection{\textsf{hyperref} Setup} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Finally, we load \textsf{hyperref} separately so that it can go last. % Get rid of \textsf{hyperref}'s ugly boxes. %From:http://tex.stackexchange.com/a/51349 % \begin{macrocode} \RequirePackage[breaklinks=true]{hyperref} \hypersetup{ colorlinks = true, %Colours links instead of ugly boxes urlcolor = blue, %Colour for external hyperlinks linkcolor = blue, %Colour of internal links citecolor = red %Colour of citations } % \end{macrocode} % \subsubsection{\textsf{autoref} Setup} % We must declare our \textsf{autoref} configuration at the beginning % of the document to keep other packages from clobbering it. % \begin{macro}{\sectionautorefname} % \begin{macrocode} \AtBeginDocument{% \def\sectionautorefname{Section}% } % \end{macrocode} % \end{macro} % % % \begin{macro}{\algorithmautorefname} % \begin{macrocode} \AtBeginDocument{% \def\algorithmautorefname{Algorithm}% } % \end{macrocode} % \end{macro} % % % \begin{macro}{\equationautorefname} % See http://tex.stackexchange.com/a/66150. % \begin{macrocode} \AtBeginDocument{% \def\equationautorefname~#1\null{(#1)\null}% } % \end{macrocode} % \end{macro} % % % \begin{macro}{\lemmaautorefname} % \begin{macrocode} \AtBeginDocument{% \newcommand{\lemmaautorefname}{Lemma}% } % \end{macrocode} % \end{macro} % % \iffalse % % \fi % % \Finale \endinput