pub trait LaTeXFormatter {
// Required methods
fn to_latex_with_depth(
&self,
context: &LaTeXContext,
depth: usize,
) -> Result<String, FormattingError>;
fn function_to_latex_with_depth(
&self,
name: &str,
args: &[Expression],
context: &LaTeXContext,
depth: usize,
) -> Result<String, FormattingError>;
// Provided methods
fn to_latex<C>(&self, context: C) -> Result<String, FormattingError>
where C: Into<Option<LaTeXContext>> { ... }
fn function_to_latex(
&self,
name: &str,
args: &[Expression],
context: &LaTeXContext,
) -> Result<String, FormattingError> { ... }
}Expand description
Format the expression to LaTeX
Required Methods§
Sourcefn to_latex_with_depth(
&self,
context: &LaTeXContext,
depth: usize,
) -> Result<String, FormattingError>
fn to_latex_with_depth( &self, context: &LaTeXContext, depth: usize, ) -> Result<String, FormattingError>
Format with explicit recursion depth tracking
Internal method that provides stack overflow protection by tracking recursion depth. This method returns a Result to allow proper error propagation during recursive formatting.
§Arguments
context- LaTeX formatting configurationdepth- Current recursion depth (starts at 0)
§Returns
Ok(String)- Successfully formatted LaTeX expressionErr(String)- Error message if limits exceeded
§Safety Limits
- Maximum recursion depth: 1000 levels
- Maximum terms per operation: 10000 terms/factors/arguments
Sourcefn function_to_latex_with_depth(
&self,
name: &str,
args: &[Expression],
context: &LaTeXContext,
depth: usize,
) -> Result<String, FormattingError>
fn function_to_latex_with_depth( &self, name: &str, args: &[Expression], context: &LaTeXContext, depth: usize, ) -> Result<String, FormattingError>
Convert function to LaTeX with context and depth tracking
Provided Methods§
Sourcefn to_latex<C>(&self, context: C) -> Result<String, FormattingError>
fn to_latex<C>(&self, context: C) -> Result<String, FormattingError>
Format an Expression as LaTeX mathematical notation
Converts mathematical expressions into LaTeX format suitable for rendering in mathematical documents and publications.
§Arguments
context- LaTeX formatting configuration
§Context Options
needs_parentheses- Whether to wrap the entire expression in parentheses
§Examples
use mathhook_core::{Expression, expr};
use mathhook_core::formatter::latex::{LaTeXFormatter, LaTeXContext};
let expression = expr!(x ^ 2);
let context = LaTeXContext::default();
let result = expression.to_latex(context).unwrap();
assert!(result.contains("x"));
assert!(result.contains("2"));§Error Handling
Returns error messages for expressions that exceed safety limits:
- Maximum recursion depth (1000 levels)
- Maximum terms per operation (10000 terms)
Sourcefn function_to_latex(
&self,
name: &str,
args: &[Expression],
context: &LaTeXContext,
) -> Result<String, FormattingError>
fn function_to_latex( &self, name: &str, args: &[Expression], context: &LaTeXContext, ) -> Result<String, FormattingError>
Convert function to LaTeX (convenience method)
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".