summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-09-21 20:56:17 +0000
committerKarl Berry <karl@freefriends.org>2016-09-21 20:56:17 +0000
commit28785b63ec8b8ca1cc6bdab4fe0208a9509e46b1 (patch)
tree53504e12b92110550b3352d8cbdf9f00aff365c1 /Master
parent8547630a54bd0e2f5e818bbce37ff41587b34254 (diff)
revquantum (21sep16)
git-svn-id: svn://tug.org/texlive/trunk@42122 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/revquantum/README.md70
-rw-r--r--Master/texmf-dist/doc/latex/revquantum/build.py295
-rw-r--r--Master/texmf-dist/doc/latex/revquantum/revquantum.pdfbin0 -> 180157 bytes
-rw-r--r--Master/texmf-dist/source/latex/revquantum/revquantum.dtx951
-rw-r--r--Master/texmf-dist/source/latex/revquantum/revquantum.ins55
-rw-r--r--Master/texmf-dist/tex/latex/revquantum/revquantum.sty429
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-science.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/revquantum.tlpsrc0
9 files changed, 1802 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/revquantum/README.md b/Master/texmf-dist/doc/latex/revquantum/README.md
new file mode 100644
index 00000000000..c29c76a4f70
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/revquantum/README.md
@@ -0,0 +1,70 @@
+# revquantum #
+
+This package attempts to solve, or at least mitigate, standard problems with
+writing quantum information papers in ``{revtex4-1}``. In particular:
+
+- Includes titles in BibTeX.
+- Allows for use of nicer-looking fonts via ``{mathpazo}``.
+- Configures ``{hyperref}`` to make nicer-looking links and to correctly use ``\autoref``.
+- Sets up ``{listings}`` for common scientific languages and legacy environments (Python, Mathematica and MATLAB).
+- Provides notation for quantum information and makes defining new notation easier.
+- Reduces boilerplate for author affiliations by providing a (rudimentary) database for a few departments.
+
+A major goal of this package is to reduce the amount of useless crap that needs to be copied and pasted between documents. In particular, a complete document can be written in just a few lines:
+
+```latex
+\documentclass[pra,aps,twocolumn,superscriptaddress,10pt]{revtex4-1}
+\usepackage[pretty,uselistings]{revquantum}
+
+\begin{document}
+
+\title{Example \textsf{revquantum} Document}
+
+\author{Christopher Granade}
+\email{cgranade@cgranade.com}
+\affilUSydPhys \affilEQUS
+
+\date{\today}
+
+\begin{abstract}
+ \TODO
+\end{abstract}
+
+\maketitle
+
+\bibliography{example}
+\appendix
+
+\end{document}
+```
+
+## Installing ##
+
+Installing LaTeX packages outside of CTAN is a pain, and this is no exception. I'll submit there at some point to remove that difficulty. In the meantime, I think the following works on Unix-like systems. If not, let me know or pull request with better instructions.
+
+```bash
+$ latex revquantum.ins # Makes the actual .sty from the .dtx file.
+$ pdflatex revquantum.dtx # Makes documentation, such as it is.
+$ mkdir texdir/tex/latex/revquantum # Replace texdir with where you actually installed TeX (e.g. ~/texmf).
+$ cp revquantum.sty texdir/tex/latex/revquantum # As with above, replace texdir.
+$ texhash
+```
+
+Directions for Windows/MikTeX can be found thanks to [this useful StackOverflow answer](http://tex.stackexchange.com/questions/2063/how-can-i-manually-install-a-package-on-miktex-windows).
+
+## Using ##
+
+I'll write more complete documentation later (hopefully), but for now:
+
+- ``{braket}`` is automatically imported, defining ``\ket``, ``\bra`` and ``\braket``.
+- The notation commands ``\ii`` and ``\dd`` typeset roman "i" and "d" characters, respectively. More generally, ``\newrm{foo}`` creates a new command ``\foo`` that typesets ``foo`` in math-roman. ``{revquantum}`` comes with ``\e``, ``\TVD`` and ``\T`` predefined using ``\newrm``.
+- Similarly, ``\newoperator`` defines new commands which typeset using ``\operatorname``. By default, this is used to define ``\Tr``, ``\Cov``, ``\supp``, ``\diag`` and ``\rank``.
+- The commands ``\defeq``, ``\expect`` and ``\id`` define the common notation ``:=``, double-struck E and double-struck 1 (respectively).
+- ``\newaffil{NAME}{DESCRIPTION}`` defines a new affiliation command ``\affilNAME``.
+- The ``\todo`` command typesets its argument in purple and raises a warning when built. If ``{revquantum}`` is loaded with the ``[final]`` option, this warning is escalated to an error. Similarly, ``\TODO`` takes no argument but inserts the placeholder "TODO" and ``\todolist`` typesets an ``{itemize}`` environment in ``\todo``.
+
+## Known Issues ##
+
+- The BibTeX thing is an unforgivable hack. Thankfully, I'm not asking for anyone's forgiveness.
+- ``\autoref`` chokes on appendices, giving nonsense like "Section A". This should be fixable, though.
+- The use of the "UW" prefix for the University of Waterloo was probably a bad idea, and will likely change so as to not preclude other universities whose names start with "W".
diff --git a/Master/texmf-dist/doc/latex/revquantum/build.py b/Master/texmf-dist/doc/latex/revquantum/build.py
new file mode 100644
index 00000000000..6217d29d198
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/revquantum/build.py
@@ -0,0 +1,295 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+from __future__ import print_function, unicode_literals
+
+PACKAGE_NAME = 'revquantum'
+TEX_DIR = None
+
+import errno
+import sys
+import os
+import tempfile
+import shutil
+import zipfile
+from subprocess import Popen, PIPE
+
+from io import StringIO
+
+def print_usage():
+ print("""
+Usage:
+------
+
+python build.py tds
+ Builds a *.tds.zip file for this package.
+
+python build.py install
+ Installs this package into the main TeX directory.
+ May require administrator privileges.
+""")
+ sys.exit(1)
+
+def is_writable(dir_name):
+ # Technique adapted from:
+ # http://stackoverflow.com/a/25868839/267841
+ # We modify by not raising on other OSErrors, as
+ # we don't care *why* a directory isn't writable,
+ # so much as that we need to know that it isn't.
+ # We also note that tempfile raises an IOError
+ # on Windows if it can't write, so we catch that,
+ # too.
+ try:
+ with tempfile.TemporaryFile(dir=dir_name):
+ pass
+ except (OSError, IOError) as ex:
+ return False
+
+ return True
+
+def mkdir_p(path):
+ # Copied from http://stackoverflow.com/a/600612/267841,
+ # in keeping with the CC-BY-SA 3.0 license on StackOverflow
+ # user contributions.
+ if os.path.isdir(path):
+ return
+ try:
+ os.makedirs(path)
+ except OSError as exc: # Python > 2.5
+ if exc.errno == errno.EEXIST and os.path.isdir(path):
+ pass
+ else:
+ raise
+ except WindowsError as exc:
+ if exc.errno == 183 and os.path.isdir(path):
+ pass
+ else:
+ raise
+
+def try_until(condition, *fns):
+ for fn in fns:
+ retval = fn()
+ if condition(retval):
+ return retval
+
+ # This is likely a terrible error for any poor user,
+ # so we should probably catch it. Probably.
+ raise RuntimeError("No candidates found matching the given condition.")
+
+def is_miktek():
+ # Assume MikTeX if and only if Windows.
+ # This is a bad assumption, but we can encapsulate
+ # it here and generalize later.
+ return os.name == 'nt'
+
+def find_tex_root():
+ proc = Popen(['kpsewhich', 'article.cls'], stdout=PIPE)
+ stdout, stderr = proc.communicate()
+
+ head, tail = os.path.split(stdout.strip())
+
+ # Note that kpsewhich returns with / characters, even
+ # under Windows, so we must use str.split to override
+ # os.path's behavior.
+ head_parts = head.split('/')
+
+ # If we're on Windows, then that destroyed the drive
+ # part of the pathspec.
+ if os.name == 'nt':
+ head_parts = [head_parts[0] + '\\'] + head_parts[1:]
+
+ # Remove "tex/latex/base" from head_parts, since that's where
+ # article.cls should live.
+ tex_root = os.path.join(*head_parts[:-3])
+
+ return tex_root
+
+def find_tex_user():
+ if is_miktek():
+ # Use MikTeX's initexmf utility to find the user install
+ # dir.
+ # http://tex.stackexchange.com/a/69484/615
+ initexmf = Popen(['initexmf', '--report'], stdout=PIPE)
+ stdout, stderr = initexmf.communicate()
+
+ for line in stdout.split('\n'):
+ try:
+ key, value = line.split(':', 1)
+ if key.strip().lower() == 'userinstall':
+ return value.strip()
+ except:
+ continue
+
+ raise RuntimeError("MikTeX did not report a UserInstall directory.")
+
+ else:
+ return os.path.expanduser('~/texmf')
+
+def find_tex():
+ global TEX_DIR
+
+ if TEX_DIR is None:
+ TEX_DIR = try_until(is_writable,
+ find_tex_root,
+ find_tex_user
+ )
+
+ return TEX_DIR
+
+def copy_to_tex(what, tex_path=['tex', 'latex']):
+ tex_root = find_tex()
+ where = os.path.join(tex_root, *tex_path)
+ full_path = os.path.join(where, what)
+
+ # Check if the directory exists, make it if it doesn't.
+ mkdir_p(where)
+
+ print("Installing: {} ---> {}".format(what, full_path))
+ shutil.copyfile(what, full_path)
+
+def write_to_zip(zip_file, filename, arcname=None, normalize_crlf=None):
+ """
+ normalize_crlf = None: automatically detect from filename.
+ """
+
+ if normalize_crlf is None:
+ root, ext = os.path.splitext(filename)
+ if ext in ('.dtx', '.ins', '.txt', '.md', '.py', '.tex'):
+ normalize_crlf = True
+ else:
+ normalize_crlf = False
+
+ if arcname is None:
+ arcname = filename
+
+ if not normalize_crlf:
+ print("\tPacking: {} ---> {}".format(filename, arcname))
+ zip_file.write(filename, arcname=arcname)
+ else:
+ print("\tPacking: {} ---> {} (normalized line endings)".format(filename, arcname))
+ contents = StringIO(newline='\n')
+ with open(filename, 'r') as f:
+ for line in f:
+ contents.write(line.decode('utf-8'))
+ zip_file.writestr(
+ arcname,
+ contents.getvalue()
+ )
+
+def yes_proc(args, yes="yes"):
+ proc = Popen(args, stdin=PIPE)
+ while proc.returncode is None:
+ proc.communicate(yes)
+ proc.poll()
+
+ return proc.returncode == 0
+
+class LaTeXStyleBuilder(object):
+ """
+ Builds a DocStrip-formatted LaTeX style by running
+ the LaTeX processor on the appropriate *.dtx file.
+ """
+ style_name = None
+ manifest = {}
+ ctan_manifest = {}
+
+ def __init__(self, style_name):
+ self.style_name = style_name
+
+ self.manifest = {
+ '{}.{}'.format(style_name, ext):
+ path + [style_name]
+ for ext, path in
+ {
+ 'sty': ['tex', 'latex'],
+ 'pdf': ['doc', 'latex']
+ }.items()
+ }
+
+ self.ctan_manifest = [
+ '{}.dtx'.format(style_name),
+ '{}.ins'.format(style_name),
+ '{}.pdf'.format(style_name),
+ 'build.py',
+ 'README.md'
+ ]
+
+ def build_sty(self):
+ print("Building: {}.sty".format(self.style_name))
+ if not yes_proc(['latex', '{}.ins'.format(self.style_name)]):
+ raise RuntimeError
+ print("\n\n\n")
+ return self
+
+ def build_doc_pdf(self):
+ print("Building: {}.pdf".format(self.style_name))
+ if not yes_proc(['pdflatex', '{}.dtx'.format(self.style_name)]):
+ raise RuntimeError
+ print("\n\n\n")
+ return self
+
+ def build_tds_zip(self):
+ print("Building: {}.tds.zip".format(self.style_name))
+ tds_zip = zipfile.ZipFile('{}.tds.zip'.format(self.style_name), 'w')
+
+ for what, where in self.manifest.items():
+ assert os.path.isfile(what)
+ write_to_zip(tds_zip, what, arcname=os.path.join(*where + [what]))
+
+ print("\n\n\n")
+ return self
+
+ def build_ctan_zip(self):
+ print("Building: {}.zip".format(self.style_name))
+ ctan_zip = zipfile.ZipFile('{}.zip'.format(self.style_name), 'w')
+
+ for what in self.ctan_manifest:
+ assert os.path.isfile(what)
+ write_to_zip(ctan_zip, what, arcname=os.path.join(self.style_name, what))
+
+ print("\n\n\n")
+ return self
+
+ def install(self):
+ for what, where in self.manifest.items():
+ assert os.path.isfile(what)
+ copy_to_tex(what, where)
+
+ # Make sure to run texhash if we're not using MikTeX.
+ if not is_miktek():
+ print("Rehashing...")
+ texhash = Popen(['texhash'])
+ texhash.wait()
+
+ return self
+
+if __name__ == "__main__":
+ print("""
+WARNING: This installer is still in alpha, and is provided
+ as a convenience only. That said, this installer
+ may cause you to say unkind words in frustration
+ instead of providing the intended convenience.
+""")
+
+ if len(sys.argv) < 2:
+ print_usage()
+
+ else:
+ subcommand = sys.argv[1]
+ if subcommand not in ('tds', 'install', 'ctan'):
+ print("No such command {}, try either 'tds', 'install' or 'ctan'.")
+ print_usage()
+
+ builder = LaTeXStyleBuilder(PACKAGE_NAME)
+ builder.build_sty().build_doc_pdf()
+
+ if subcommand == 'tds':
+ builder.build_tds_zip()
+
+ elif subcommand == 'install':
+ builder.install()
+
+ elif subcommand == 'ctan':
+ builder.build_ctan_zip()
+
+ else:
+ assert False
diff --git a/Master/texmf-dist/doc/latex/revquantum/revquantum.pdf b/Master/texmf-dist/doc/latex/revquantum/revquantum.pdf
new file mode 100644
index 00000000000..50bdd6038b5
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/revquantum/revquantum.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/revquantum/revquantum.dtx b/Master/texmf-dist/source/latex/revquantum/revquantum.dtx
new file mode 100644
index 00000000000..32a7e089a36
--- /dev/null
+++ b/Master/texmf-dist/source/latex/revquantum/revquantum.dtx
@@ -0,0 +1,951 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2016 by Christopher Granade <cgranade@cgranade.com>
+% ---------------------------------------------------------------------------
+% 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}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{revquantum}
+%<*package>
+ [2016/09/21 v0.10 Build script fixes for CTAN submission.]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[pretty]{revquantum}[2015/12/29]
+\usepackage{xcolor}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{revquantum.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \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}
+}{}
+% \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.
+
+% \begin{macro}{\ORIGselectlanguage}
+% \begin{macrocode}
+
+\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}
+
+
+% \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
+%</package>
+% \fi
+%
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/latex/revquantum/revquantum.ins b/Master/texmf-dist/source/latex/revquantum/revquantum.ins
new file mode 100644
index 00000000000..3e69d1772be
--- /dev/null
+++ b/Master/texmf-dist/source/latex/revquantum/revquantum.ins
@@ -0,0 +1,55 @@
+%%
+%% Copyright (C) 2015 by Christopher Granade <cgranade@cgranade.com>.
+%%
+%% This file 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.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/revquantum}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2015 by Christopher Granade <cgranade@cgranade.com>.
+
+This file 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.
+
+\endpreamble
+
+\generate{\file{revquantum.sty}{\from{revquantum.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* revquantum.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file revquantum.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/Master/texmf-dist/tex/latex/revquantum/revquantum.sty b/Master/texmf-dist/tex/latex/revquantum/revquantum.sty
new file mode 100644
index 00000000000..8f26497e1dd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/revquantum/revquantum.sty
@@ -0,0 +1,429 @@
+%%
+%% This is file `revquantum.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% revquantum.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2015 by Christopher Granade <cgranade@cgranade.com>.
+%%
+%% This file 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.
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{revquantum}
+ [2016/09/21 v0.10 Build script fixes for CTAN submission.]
+
+
+\usepackage{ifthen}
+
+
+
+
+
+\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
+
+
+\newcommand{\newnew}[2]{
+ \expandafter\newcommand\csname new#1\endcsname[1]{
+ \expandafter\newcommand\csname ##1\endcsname{#2{##1}}
+ }
+}
+\newnew{operator}{\operatorname}
+\newnew{rm}{\mathrm}
+
+\newoperator{Tr}
+\newoperator{Cov}
+\newoperator{supp}
+\newoperator{diag}
+\newoperator{rank}
+
+\newcommand{\ii}{\mathrm{i}} % Outside what newnew currently supports.
+\newcommand{\dd}{\mathrm{d}} % Outside what newnew currently supports.
+
+\newrm{e}
+\newrm{TVD}
+\newrm{T}
+
+\newcommand{\defeq}{\mathrel{:=}}
+\newcommand{\expect}{\mathbb{E}}
+\newcommand{\id}{\openone}
+
+
+ \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}]}
+ }
+
+
+\newcommand{\booloption}[3]{
+ \newboolean{#1}
+ \setboolean{#1}{#3}
+ \ifthenelse{\equal{#3}{true}}{
+ \DeclareOption{no#2}{\setboolean{#1}{false}}
+ }{
+ \DeclareOption{#2}{\setboolean{#1}{true}}
+ }
+}
+
+
+
+\booloption{@final}{final}{false}
+\booloption{@pretty}{pretty}{false}
+\booloption{@uselistings}{uselistings}{false}
+\booloption{@bibtexhacks}{bibtexhacks}{true}
+\booloption{@strict}{strict}{false}
+
+\ProcessOptions\relax
+
+
+
+\ifthenelse{\boolean{@strict}}{
+ \newcommand{\rq@quasiwarn}{
+ \PackageError{revquantum}
+ }
+}{
+ \newcommand{\rq@quasiwarn}{
+ \PackageWarning{revquantum}
+ }
+}
+
+
+
+
+\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
+}}{}
+
+
+
+
+
+\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}
+}{}
+
+
+
+\newtheorem{theorem}{Theorem}
+\newtheorem{lemma}{Lemma}
+
+
+
+
+\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}
+
+
+
+
+
+\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.
+ }
+}{}
+
+
+
+
+\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.}%
+ }{}
+ }
+}
+
+
+\rq@warnpackage{subcaption}
+
+
+
+
+\LetLtxMacro{\ORIGselectlanguage}{\selectlanguage}
+\DeclareRobustCommand{\selectlanguage}[1]{%
+ \@ifundefined{alias@\string#1}
+ {\ORIGselectlanguage{#1}}
+ {\begingroup\edef\x{\endgroup
+ \noexpand\ORIGselectlanguage{\@nameuse{alias@#1}}}\x}%
+}
+
+
+
+\newcommand{\definelanguagealias}[2]{%
+ \@namedef{alias@#1}{#2}%
+}
+
+
+
+\definelanguagealias{en}{english}
+\definelanguagealias{EN}{english}
+\definelanguagealias{English}{english}
+
+
+
+
+
+\ifthenelse{\boolean{@final}}{
+ \newcommand{\todo}[1]{%
+ \PackageError{revquantum}{Unaddressed TODO}%
+ \rq@todo{#1}%
+ }
+}{
+ \newcommand{\todo}[1]{%
+ \PackageWarning{revquantum}{Unaddressed TODO}%
+ \rq@todo{#1}%
+ }
+}
+
+\ifthenelse{\boolean{@final}}{
+ \newcommand{\citeneed}{%
+ \PackageError{revquantum}{citation needed}%
+ \rq@todo{[citation needed]}%
+ }
+}{
+ \newcommand{\citeneed}{%
+ \PackageWarning{revquantum}{citation needed}%
+ \rq@todo{[citation needed]}%
+ }
+}
+\newcommand{\rq@todo}[1]{%
+ {\color{magenta} #1}%
+}
+\newcommand{\TODO}{\todo{TODO}}
+\newcommand{\todolist}[1]{\todo{
+ \begin{itemize}
+ #1
+ \end{itemize}
+}}
+
+
+
+\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}
+
+\newcommand{\newaffil}[2]{
+ \expandafter\newcommand\csname affil#1\endcsname{
+ \affiliation{
+ #2
+ }
+ }
+}
+
+\newaffil{TODO}{\TODO}
+
+
+\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
+}
+
+
+\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
+}
+
+
+\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
+}
+
+
+
+
+
+\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
+}
+
+
+
+\AtBeginDocument{%
+ \def\sectionautorefname{Section}%
+}
+\AtBeginDocument{%
+ \def\algorithmautorefname{Algorithm}%
+}
+\AtBeginDocument{%
+ \def\equationautorefname~#1\null{(#1)\null}%
+}
+\AtBeginDocument{%
+ \newcommand{\lemmaautorefname}{Lemma}%
+}
+\endinput
+%%
+%% End of file `revquantum.sty'.
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 6dcc0092960..61c2265c834 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -506,7 +506,7 @@ my @TLP_working = qw(
refcheck refenums reflectgraphics refman refstyle
regcount regexpatch register regstats
reledmac relenc relsize reotex repeatindex repere repltext resphilosophica
- resumecls resumemac reverxii revtex
+ resumecls resumemac reverxii revquantum revtex
ribbonproofs rjlparshap rlepsf rmathbr rmpage
roboto robustcommand robustindex
romanbar romanbarpagenumber romande romanneg romannum
diff --git a/Master/tlpkg/tlpsrc/collection-science.tlpsrc b/Master/tlpkg/tlpsrc/collection-science.tlpsrc
index a2b51b32c77..add6dd56b25 100644
--- a/Master/tlpkg/tlpsrc/collection-science.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-science.tlpsrc
@@ -61,6 +61,7 @@ depend objectz
depend physics
depend pseudocode
depend pygmentex
+depend revquantum
depend sasnrdisplay
depend sciposter
depend sclang-prettifier
diff --git a/Master/tlpkg/tlpsrc/revquantum.tlpsrc b/Master/tlpkg/tlpsrc/revquantum.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/revquantum.tlpsrc