diff options
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex/texmath.h')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/tex/texmath.h | 329 |
1 files changed, 329 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/texmath.h b/Build/source/texk/web2c/luatexdir/tex/texmath.h new file mode 100644 index 00000000000..75a595e545f --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/tex/texmath.h @@ -0,0 +1,329 @@ +/* texmath.h + + Copyright 1996-2006 Han The Thanh <thanh@pdftex.org> + Copyright 2006-2009 Taco Hoekwater <taco@luatex.org> + + This file is part of LuaTeX. + + LuaTeX is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your + option) any later version. + + LuaTeX is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU General Public License along + with LuaTeX; if not, see <http://www.gnu.org/licenses/>. */ + +/* $Id: texmath.h 3461 2010-03-09 10:20:54Z taco $ */ + +#ifndef TEXMATH_H +# define TEXMATH_H 1 + +# define empty 0 + +extern pointer new_noad(void); + +extern void show_math_node(halfword); +extern void flush_math(void); +extern void math_left_brace(void); +extern void finish_display_alignment(halfword, halfword, halfword); +extern halfword new_sub_box(halfword); + +# define math_reset(p) do { if (p!=null) flush_node(p); p = null; } while (0) + +# define scripts_allowed(A) ((type((A))>=simple_noad)&&(type((A))<fence_noad)) + +# define default_code 010000000000 /* denotes |default_rule_thickness| */ + +typedef enum { + ord_noad_type = 0, + op_noad_type_normal, + op_noad_type_limits, + op_noad_type_no_limits, + bin_noad_type, + rel_noad_type, + open_noad_type, + close_noad_type, + punct_noad_type, + inner_noad_type, + under_noad_type, + over_noad_type, + vcenter_noad_type, +} noad_types; + +extern void initialize_math(void); +extern void initialize_math_spacing(void); +extern halfword math_vcenter_group(halfword); +extern void build_choices(void); +extern void close_math_group(halfword); +extern void init_math(void); +extern void start_eq_no(void); +extern void set_math_char(mathcodeval); +extern void math_char_in_text(mathcodeval); +extern void math_math_comp(void); +extern void math_limit_switch(void); +extern void math_radical(void); +extern void math_ac(void); +extern pointer new_style(small_number); +extern void append_choices(void); +extern void sub_sup(void); +extern void math_fraction(void); +extern void math_left_right(void); +extern void after_math(void); + +extern void scan_extdef_del_code(int level, int extcode); +extern void scan_extdef_math_code(int level, int extcode); + +extern int fam_fnt(int fam_id, int size_id); +extern void def_fam_fnt(int fam_id, int size_id, int f, int lvl); +extern void dump_math_data(void); +extern void undump_math_data(void); +void unsave_math_data(int lvl); + +/* + @ We also need to compute the change in style between mlists and their + subsidiaries. The following macros define the subsidiary style for + an overlined nucleus (|cramped_style|), for a subscript or a superscript + (|sub_style| or |sup_style|), or for a numerator or denominator (|num_style| + or |denom_style|). +*/ + +typedef enum { + display_style = 0, /* |subtype| for \.{\\displaystyle} */ + cramped_display_style, /* |subtype| for \.{\\crampeddisplaystyle} */ + text_style, /* |subtype| for \.{\\textstyle} */ + cramped_text_style, /* |subtype| for \.{\\crampedtextstyle} */ + script_style, /* |subtype| for \.{\\scriptstyle} */ + cramped_script_style, /* |subtype| for \.{\\crampedscriptstyle} */ + script_script_style, /* |subtype| for \.{\\scriptscriptstyle} */ + cramped_script_script_style, /* |subtype| for \.{\\crampedscriptscriptstyle} */ +} math_style_subtypes; + +extern const char *math_style_names[]; + +# define cramped 1 /* add this to an uncramped style if you want to cramp it */ + +# define cramped_style(A) 2*((A)/2)+cramped /* cramp the style */ +# define sub_style(A) 2*((A)/4)+script_style+cramped /* smaller and cramped */ +# define sup_style(A) 2*((A)/4)+script_style+((A)%2) /* smaller */ +# define num_style(A) (A)+2-2*((A)/6) /* smaller unless already script-script */ +# define denom_style(A) 2*((A)/2)+cramped+2-2*((A)/6) /* smaller, cramped */ +# define sup_sup_style(A) sup_style(sup_style((A))) /* smaller */ + +void setup_math_style(void); +void print_math_style(void); + +# define text_size 0 +# define script_size 1 +# define script_script_size 2 + +# define math_direction int_par(math_direction_code) + +# define dir_math_save cur_list.math_field +# define m_style cur_list.math_style_field +# define init_math_fields() do { \ + dir_math_save=false; \ + m_style=-1; \ + } while (0) + + +# define null_font 0 +# define min_quarterword 0 + +# define undefined_math_parameter max_dimen + +typedef enum { + math_param_quad, + math_param_axis, + math_param_operator_size, + math_param_overbar_kern, + math_param_overbar_rule, + math_param_overbar_vgap, + math_param_underbar_kern, + math_param_underbar_rule, + math_param_underbar_vgap, + math_param_radical_kern, + math_param_radical_rule, + math_param_radical_vgap, + math_param_radical_degree_before, + math_param_radical_degree_after, + math_param_radical_degree_raise, + math_param_stack_vgap, + math_param_stack_num_up, + math_param_stack_denom_down, + math_param_fraction_rule, + math_param_fraction_num_vgap, + math_param_fraction_num_up, + math_param_fraction_denom_vgap, + math_param_fraction_denom_down, + math_param_fraction_del_size, + math_param_limit_above_vgap, + math_param_limit_above_bgap, + math_param_limit_above_kern, + math_param_limit_below_vgap, + math_param_limit_below_bgap, + math_param_limit_below_kern, + math_param_under_delimiter_vgap, + math_param_under_delimiter_bgap, + math_param_over_delimiter_vgap, + math_param_over_delimiter_bgap, + math_param_sub_shift_drop, + math_param_sup_shift_drop, + math_param_sub_shift_down, + math_param_sub_sup_shift_down, + math_param_sub_top_max, + math_param_sup_shift_up, + math_param_sup_bottom_min, + math_param_sup_sub_bottom_max, + math_param_subsup_vgap, + math_param_space_after_script, + math_param_connector_overlap_min, + math_param_ord_ord_spacing, + math_param_ord_op_spacing, + math_param_ord_bin_spacing, + math_param_ord_rel_spacing, + math_param_ord_open_spacing, + math_param_ord_close_spacing, + math_param_ord_punct_spacing, + math_param_ord_inner_spacing, + math_param_op_ord_spacing, + math_param_op_op_spacing, + math_param_op_bin_spacing, + math_param_op_rel_spacing, + math_param_op_open_spacing, + math_param_op_close_spacing, + math_param_op_punct_spacing, + math_param_op_inner_spacing, + math_param_bin_ord_spacing, + math_param_bin_op_spacing, + math_param_bin_bin_spacing, + math_param_bin_rel_spacing, + math_param_bin_open_spacing, + math_param_bin_close_spacing, + math_param_bin_punct_spacing, + math_param_bin_inner_spacing, + math_param_rel_ord_spacing, + math_param_rel_op_spacing, + math_param_rel_bin_spacing, + math_param_rel_rel_spacing, + math_param_rel_open_spacing, + math_param_rel_close_spacing, + math_param_rel_punct_spacing, + math_param_rel_inner_spacing, + math_param_open_ord_spacing, + math_param_open_op_spacing, + math_param_open_bin_spacing, + math_param_open_rel_spacing, + math_param_open_open_spacing, + math_param_open_close_spacing, + math_param_open_punct_spacing, + math_param_open_inner_spacing, + math_param_close_ord_spacing, + math_param_close_op_spacing, + math_param_close_bin_spacing, + math_param_close_rel_spacing, + math_param_close_open_spacing, + math_param_close_close_spacing, + math_param_close_punct_spacing, + math_param_close_inner_spacing, + math_param_punct_ord_spacing, + math_param_punct_op_spacing, + math_param_punct_bin_spacing, + math_param_punct_rel_spacing, + math_param_punct_open_spacing, + math_param_punct_close_spacing, + math_param_punct_punct_spacing, + math_param_punct_inner_spacing, + math_param_inner_ord_spacing, + math_param_inner_op_spacing, + math_param_inner_bin_spacing, + math_param_inner_rel_spacing, + math_param_inner_open_spacing, + math_param_inner_close_spacing, + math_param_inner_punct_spacing, + math_param_inner_inner_spacing, + math_param_last +} math_parameters; + +extern const char *math_param_names[]; + +# define math_param_first_mu_glue math_param_ord_ord_spacing + +extern void def_math_param(int param_code, int style_code, scaled value, + int lvl); +extern scaled get_math_param(int param_code, int style_code); + + +typedef enum { + ScriptPercentScaleDown = 1, + ScriptScriptPercentScaleDown, + DelimitedSubFormulaMinHeight, + DisplayOperatorMinHeight, + MathLeading, + AxisHeight, + AccentBaseHeight, + FlattenedAccentBaseHeight, + SubscriptShiftDown, + SubscriptTopMax, + SubscriptBaselineDropMin, + SuperscriptShiftUp, + SuperscriptShiftUpCramped, + SuperscriptBottomMin, + SuperscriptBaselineDropMax, + SubSuperscriptGapMin, + SuperscriptBottomMaxWithSubscript, + SpaceAfterScript, + UpperLimitGapMin, + UpperLimitBaselineRiseMin, + LowerLimitGapMin, + LowerLimitBaselineDropMin, + StackTopShiftUp, + StackTopDisplayStyleShiftUp, + StackBottomShiftDown, + StackBottomDisplayStyleShiftDown, + StackGapMin, + StackDisplayStyleGapMin, + StretchStackTopShiftUp, + StretchStackBottomShiftDown, + StretchStackGapAboveMin, + StretchStackGapBelowMin, + FractionNumeratorShiftUp, + FractionNumeratorDisplayStyleShiftUp, + FractionDenominatorShiftDown, + FractionDenominatorDisplayStyleShiftDown, + FractionNumeratorGapMin, + FractionNumeratorDisplayStyleGapMin, + FractionRuleThickness, + FractionDenominatorGapMin, + FractionDenominatorDisplayStyleGapMin, + SkewedFractionHorizontalGap, + SkewedFractionVerticalGap, + OverbarVerticalGap, + OverbarRuleThickness, + OverbarExtraAscender, + UnderbarVerticalGap, + UnderbarRuleThickness, + UnderbarExtraDescender, + RadicalVerticalGap, + RadicalDisplayStyleVerticalGap, + RadicalRuleThickness, + RadicalExtraAscender, + RadicalKernBeforeDegree, + RadicalKernAfterDegree, + RadicalDegreeBottomRaisePercent, + MinConnectorOverlap, + SubscriptShiftDownWithSuperscript, + FractionDelimiterSize, + FractionDelimiterDisplayStyleSize, + MATH_param_last, +} MATH_param_codes; + +# define MATH_param_max MATH_param_last + +extern const char *MATH_param_names[]; + +#endif |