The revtex template file
The file revtex.tplx (download) is a custom template for converting jupyter notebooks to latex with nbconvert. Note that this is not so much for converting a notebook into a proper article (this is best done through markdown as an intermediary). Instead, the goal is to generate a printable pdf of a notebook (via latex).
Compared to the default template, it has the following features:
-
Use the
revtex
document class (single column). This results in a more condensed and readable output -
Support for the
braket
package -
Fixed title block. The document will be dated. The
title
,author
, andaffiliation
may be defined in the notebook metadata. This is based on Julius Schulz' template. For example you might put the following in the notebook metadata (Edit → Edit Notebook Metadata
):"latex_metadata": { "author": "M H Goerz", "affiliation": "Stanford University", "title": "An example notebook", "bib": "notebook.bib" }
-
Support for hiding input cells. Technically, this looks for
hide_input
either in the notebook metadata (hide all cells), or in cell metadata (hide a specific cell).In practice, instead of editing the metadata directly, cells can be hidden via the "Hide input" and "Hide input all" extensions that may be installed through the
jupyter_contrib_nbextensions
package -
Support for bibtex bibliographies. You can insert a citation in a markdown cell as e.g.
<cite data-cite="GoerzNPJQI2017">[GoerzNPJQI2017]</cite>
The generated tex file will then include a
\cite{GoerzNPJQI2017}
command, which should be defined in a filereferences.bib
. An alternative bibtex file may be set in the notebook metadata, in"latex_metadata" > "bib"
(see above)Alternatively, you can add a raw cell at the end of the notebook that contains the tex code for the bibliography, e.g.
\begin{thebibliography}{9} \bibitem{GoerzNPJQI2017} Michael H. Goerz, Felix Motzoi, K. Birgitta Whaley, and Christiane P. Koch. npj Quant. Info. \bf{3}, 37 (2017) \end{thebibliography}
Manual usage
To use the template, download and store it locally, then call nbconvert
as
e.g.
jupyter nbconvert --to=latex --template=./revtex.tplx file.ipynb
Note that this only works if you do not set up templates in a config file (see below). If you do, you may to use
jupyter nbconvert --to=latex --LatexExporter.template_file=./revtex.tplx file.ipynb
instead.
Then compile the resulting file with pdflatex
.
You can also convert directly to pdf, using
jupyter nbconvert --to=pdf --PdfExporter.template_file=./revtex.tplx file.ipynb
Out of the box, this does not work with a bibliography file, however (because the bib file is not copied to the temporary directory in which the compilation happens). You can use a raw cell containing the bibliography, though.
Setting up the template as a default
The template can be set as a default in the
~/.jupyter/jupyter_nbconvert_config.py
config file. It should contain the
following:
custom_path = os.path.expanduser("~/.jupyter/nbconvert_templates")
c.TemplateExporter.template_path.append(custom_path)
c.LatexExporter.template_file = 'revtex'
c.PDFExporter.latex_count = 3
c.PDFExporter.template_file = 'revtex'
c.PDFExporter.latex_command = ['xelatex', '{filename}']
The file revtex.tplx must be placed in
~/.jupyter/nbconvert_templates/
.
Using the template from inside the notebook interface
The notebook interface allows to directly download converted versions of the
notebook (File → Download as
). However, the settings for this are not taken
from ~/.jupyter/jupyter_nbconvert_config.py
. Instead, the same settings
as above must be duplicated in the
~/.jupyter/jupyter_notebook_config.py
config file.