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", so this trait is not object safe.