A comprehensive Python library for programmatically creating and compiling LaTeX documents and snippets.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
PyLaTeX provides a configuration system that allows you to customize the behavior of document generation. The configuration affects global settings like indentation, table styling, typography enhancements, and default values.
import pylatex.config
from pylatex.config import Version1, Version2, Default, NextMajorimport pylatex.config
from pylatex import Document, Table
# Use the default configuration
doc = Document()
# Change global configuration
pylatex.config.active = pylatex.config.Version2()
# Use configuration temporarily
with Version1(indent=False).use():
# Code here uses Version1 config with no indentation
doc = Document()
# Override specific attributes temporarily
with pylatex.config.active.change(booktabs=True, indent=False):
# Code here uses current config but with booktabs enabled and no indent
table = Table()Configuration classes define sets of default behaviors for PyLaTeX document generation.
class Version1:
"""Configuration for v1.x.y library behavior.
Default attributes:
- indent = True
- booktabs = False
- microtype = False
- row_height = None
"""
def __init__(self, **kwargs): ...
def use(self): ...
def change(self, **kwargs): ...
class Version2(Version1):
"""Configuration for v2.x.y library behavior.
Default attributes:
- indent = False
- booktabs = True
- microtype = True
- row_height = 1.3
"""
# Configuration aliases
Default = Version1 # Current default configuration
NextMajor = Version2 # Next major release configurationCore configuration attributes that control PyLaTeX behavior:
bool - Whether to indent LaTeX code for readabilitybool - Use booktabs package for professional table stylingbool - Enable microtype package for improved typographyfloat | None - Default row height multiplier for tablesTemporarily override configuration settings using context managers.
def use(self):
"""Use the configuration temporarily in a specific context.
Returns:
Context manager for temporary configuration switching
"""
def change(self, **kwargs):
"""Override specific attributes temporarily.
Args:
**kwargs: Configuration attributes to override
Returns:
Context manager that yields the modified configuration
"""# Global active configuration instance
active: Version1 # Current active configurationimport pylatex.config
from pylatex import Document
# Use Version1 (default) behavior
doc1 = Document() # Uses indentation, no booktabs
# Switch to Version2 globally
pylatex.config.active = pylatex.config.Version2()
doc2 = Document() # No indentation, uses booktabs
# Switch back to Version1
pylatex.config.active = pylatex.config.Version1()import pylatex.config
from pylatex import Document, Table
# Temporarily use Version2 behavior
with pylatex.config.Version2().use():
doc = Document() # Uses Version2 settings
table = Table() # Uses booktabs=True, row_height=1.3
# Back to original configuration after context
doc2 = Document() # Uses original settingsimport pylatex.config
from pylatex import Document
# Create custom configuration
custom_config = pylatex.config.Version1(
indent=False,
booktabs=True,
microtype=True
)
# Use custom configuration temporarily
with custom_config.use():
doc = Document() # Uses custom settingsimport pylatex.config
from pylatex import Table
# Override only specific attributes
with pylatex.config.active.change(booktabs=True, row_height=1.5):
table = Table() # Uses booktabs with custom row height
# Other settings remain unchangedDifferent configuration settings affect various aspects of document generation:
indent=True: Generated LaTeX code is indented for readabilityindent=False: Compact LaTeX output without indentationbooktabs=True: Uses booktabs package for professional table appearancebooktabs=False: Uses standard LaTeX table stylingmicrotype=True: Enables microtype package for improved character spacingmicrotype=False: Standard LaTeX typographyrow_height=1.3: Tables use 1.3x line spacing for better readabilityrow_height=None: Uses LaTeX default row spacingInstall with Tessl CLI
npx tessl i tessl/pypi-pylatex