### **PYJUPYTER**



#### A lightweight LaTeX package that provides a clean Python code environment inspired by Jupyter notebooks.

#### 

##### **Author** : BARA O. Bright

#### 

#### 

#### 

#### **Description**

#### 

#### The `pyjupyter` package defines a `jupyter` environment for displaying Python code in a visually structured box.

#### 

#### It combines :

* #### 
* #### `listings` for syntax highlighting
* #### `tcolorbox` for the visual container
* #### optionally the `sourcecodepro` font for improved monospaced typography

#### 

#### The design philosophy of the package is to remain minimal, robust, and compatible with standard LaTeX workflows.

#### 

#### Typical use cases include:

#### 

* #### scientific and technical reports
* #### programming assignments
* #### lecture notes
* #### computational or reproducible research documents

#### 

#### The package does not attempt to replicate the full Jupyter interface, but rather provides a simple and elegant way to include Python code blocks in LaTeX documents.

#### 

#### 

#### **Contents**

#### 

* #### `pyjupyter.sty` : The LaTeX style file
* #### `README.md` : This file
* #### pyjupyter.pdf if you have documentation

#### 

#### 

#### **Requirements**

#### 

##### **Mandatory dependencies :**

#### 

* #### tcolorbox
* #### listings
* #### xcolor

#### 

##### **Optional dependency** : sourcecodepro (for better monospaced font rendering)

#### 

#### All mandatory dependencies are part of standard LaTeX distributions such as TeX Live or MiKTeX.

#### 

#### 

#### **Installation**

#### 

#### This package is meant to be installed automatically by TeXLive, MikTeX, etc.

#### Otherwise, place `pyjupyter.sty` in :

#### 

#### the same directory as your `.tex` document  or

#### a local TEXMF tree

#### 

#### Then load it in your document :

#### 

#### ```

#### \\usepackage{pyjupyter}

#### ```

#### 

#### **Basic usage**

#### 

#### Example:

#### 

#### ```

#### \\begin{jupyter}\[]

#### &nbsp;   # Example Python code

#### &nbsp;   def square(x):

#### &nbsp;   return x\*\*2

#### &nbsp;   

#### &nbsp;   print(square(4))

#### \\end{jupyter}

#### ```

#### 

#### **Important Note About the Brackets**

#### 

#### The `jupyter` environment must always be invoked with brackets immediately after `\\begin{jupyter}` :

#### &nbsp;   

#### &nbsp;   ```

#### &nbsp;   \\begin{jupyter}\[]

#### &nbsp;   ```

#### &nbsp;       

#### even when no options are specified.

####         

#### **Reason**

#### 

#### Python comments begin with the character `#`.

#### Due to the way TeX parses macro arguments, starting the environment directly with a `#` character can conflict with parameter parsing in macro definitions.

#### 

#### Providing the optional argument brackets ensures that the environment is initialized correctly before the code is processed by `listings`.

#### 

#### This prevents errors when the first line of code is a Python comment.

#### 

#### 

#### **Customization**

#### 

#### The environment accepts all `tcolorbox` options :

#### 

#### Example :

#### 

#### ```

#### \\begin{jupyter}\[colback=blue!5]

#### &nbsp;   print("Custom background")

#### \\end{jupyter}

#### ```

#### 

#### You may also pass options to `listings` :

#### 

#### ```

#### \\begin{jupyter}\[listing options={numbers=left}]

#### &nbsp;   print("Line numbers enabled")

#### \\end{jupyter}

#### ```

#### 

#### But for line numbering, it is highly recommended to use the built-in `numbered` option rather than passing manual listing options :

#### 

#### ```

#### \\begin{jupyter}\[numbered]

#### &nbsp;   print("Line numbers enabled (recommended)")

#### \\end{jupyter}

#### ```

#### 

#### You can still pass other custom options to listings if needed :

#### 

#### ```

#### \\begin{jupyter}\[listing options={basicstyle=\\ttfamily\\small}]

#### &nbsp;   print("Custom styles")

#### \\end{jupyter}

#### ```

#### 

#### **License**

#### 

#### This package is distributed under the LaTeX Project Public License (LPPL) version 1.3c.

#### 

#### **Changes**

#### 

#### First public version: 1.0.0

#### 

#### 

#### Copyright 2026 BARA O. Bright

#### E-mail: barabright62 (at) gmail (dot) com

