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
revtexdocument class (single column). This results in a more condensed and readable output -
Support for the
braketpackage -
Fixed title block. The document will be dated. The
title,author, andaffiliationmay 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_inputeither 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_nbextensionspackage -
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.