Commit Graph

194 Commits

Author SHA1 Message Date
Nicolas Guillot
8cf87ef703 inline layout for all complex atom types
Extends the width-checking pattern from fractions/radicals to ALL remaining
  complex atom types, completing Priority 1 of the multiline implementation.

  Changes:
  - Large operators (∑, ∫, ∏): Now stay inline with height+width checking
    (breaks only if height > fontSize * 2.5 OR width exceeds constraint)
  - Delimiters (\left...\right): Stay inline with maxWidth propagation to
    inner content for proper nested wrapping
  - Colors (.color, .textcolor, .colorBox): All 3 types now stay inline with
    maxWidth propagation for proper nested wrapping
  - Matrices/tables: Small matrices can now stay inline with surrounding content
  - Width constraint propagation: All recursive createLineForMathList() calls
    now properly pass maxWidth parameter

Impact:
  Before: Complex atoms always forced line breaks, even when they fit
  After: ALL complex atoms intelligently stay inline when width permits

  Examples:
  - a + ∑ xᵢ + b → 1 line instead of 3
  - (a+b) + \left(\frac{c}{d}\right) + e → stays inline with wrapping
2025-11-14 09:53:14 +01:00
Nicolas Guillot
c5b737d9bb Line breaking for fractions and radicals fixes
Implement smart width-checking for complex mathematical displays to enable
  inline rendering when space permits, dramatically improving multiline layout.

  Changes:
  - Add shouldBreakBeforeDisplay() helper to check width before line breaks
  - Add performLineBreak() helper for clean line transitions
  - Modify fraction handling to stay inline when they fit within maxWidth
  - Modify radical handling to stay inline when they fit within maxWidth
  - Support radicals with degrees (cube roots, nth roots, etc.)
2025-11-13 15:45:35 +01:00
Nicolas Guillot
cd9c3f7a37 add documentation 2025-11-13 15:08:55 +01:00
Nicolas Guillot
9f6f5a2934 [multiple lines] inter atoms line breaking support 2025-11-13 14:52:11 +01:00
mgriebling
48fcb899fc Merge pull request #54 from nguillot/dfrac_support
Add support for dfrac and tfrac LaTeX commands
2025-11-04 09:54:02 -05:00
mgriebling
51b3560eb1 Merge pull request #53 from nguillot/multiline-fixes
Add Unicode-aware line wrapping with conservative number protection
2025-11-04 09:53:34 -05:00
Nicolas Guillot
d2df078dc9 Add support for dfrac and tfrac LaTeX commands
Add display-style (dfrac) and text-style (tfrac) fraction commands
  to SwiftMath's LaTeX parser. These commands force fractions to render
  in specific styles regardless of context.

  Implementation:
  - Add dfrac parsing to prepend displaystyle to numerator/denominator
  - Add tfrac parsing to prepend textstyle to numerator/denominator
  - Implement in both parser functions in MTMathListBuilder.swift

  Testing:
  - Add testDisplayStyleFraction() for dfrac validation
  - Add testTextStyleFraction() for tfrac validation
  - Add testDisplayAndTextStyleFractions() for complex expressions
  - All 180 tests pass on macOS and iOS simulator

  Documentation:
  - Update MISSING_FEATURES.md (7/12 features now implemented, 58%)
  - Update README.md feature list to include dfrac and tfrac

  Fixes issue where equations like y'=-\dfrac{2}{x^{3}} would fail to
  parse with "Invalid command dfrac" error. This was blocking the
  StepByStep feature preview rendering.
2025-11-03 10:24:40 +01:00
Nicolas Guillot
ca0e514505 [multi line display] Fix line wrapping to respect width constraints and prevent text truncation 2025-10-27 13:33:29 +01:00
mgriebling
43faacf8de Merge pull request #52 from nguillot/latex_support_extension
Add comprehensive LaTeX support: matrices, delimiters, operators, and line wrapping
2025-10-05 09:38:49 -04:00
Nicolas Guillot
c7198ad9af [UI] add line wrapping functionality 2025-10-02 16:42:31 +02:00
Nicolas Guillot
11f57f7c6e add a fallback font system to render CJK text in the \text command 2025-10-01 14:11:00 +02:00
Nicolas Guillot
b67cc8fd38 [Test] fix MathFontTests on mac 2025-10-01 10:36:11 +02:00
Nicolas Guillot
fe00c5a96e add iiiint LaTeX command support 2025-10-01 10:30:03 +02:00
Nicolas Guillot
7a40cd704a pmatrix/bmatrix/vmatrix LaTeX command support 2025-10-01 10:22:56 +02:00
Nicolas Guillot
80db8c66fb smallmatrix LaTeX command support 2025-10-01 10:09:56 +02:00
Nicolas Guillot
e9ab64d844 substack LaTeX command support 2025-10-01 10:04:06 +02:00
Nicolas Guillot
7bd6ef660b [Test] add skipped tests to show what can be implemented 2025-09-30 20:20:59 +02:00
Nicolas Guillot
fc7e96acf5 [Test] increase LaTeX command coverage 2025-09-30 19:40:26 +02:00
Nicolas Guillot
61ef8dc4f8 supports all standard LaTeX math delimiters for both inline and display modes 2025-09-30 19:17:56 +02:00
Nicolas Guillot
6a5f64e402 fixup! [MTMathListBuilder] enhanced \begin{cases} environment support 2025-09-30 13:07:59 +02:00
Nicolas Guillot
7c9766f825 [MTMathListBuilder][MTTypesetter] add \cfrac support 2025-09-30 10:17:08 +02:00
Nicolas Guillot
225948c725 [MTMathListBuilder] enhanced \begin{cases} environment support
No Need to use the & character at line end. The previous notation is still supported.
2025-09-30 10:03:17 +02:00
Nicolas Guillot
5530f3910f [MTMathListBuilder] add support for some \not operators 2025-09-30 09:51:01 +02:00
Nicolas Guillot
4dcc7800d5 [MTMathAtomFactory] add support for /mod and /pmod 2025-09-30 09:35:29 +02:00
Nicolas Guillot
7f6cb02371 [MTMathAtomFactory] add support for /implies, /iint, /iiint, /nexists 2025-09-29 16:26:48 +02:00
mgriebling
fa8244ed03 Merge pull request #50 from raskavil/main
49: mathColor was used instead of mathColorbox
2025-08-03 08:48:30 -04:00
Vilém Raška
5011e4dd79 Fixed wrong reference
mathColor was used instead of mathColorbox
2025-08-02 15:09:03 +02:00
mgriebling
bc7fcfcab8 Merge pull request #46 from Lakr233/main
Fix a crash at cell spacer insertion loop
2025-07-31 15:21:37 -04:00
mgriebling
2398fdd42a Merge pull request #47 from jumhyn-browser/patch-1
Avoid crashing on unexpected color strings
2025-07-31 15:21:18 -04:00
Freddy Kellison-Linn
c7dcf78d11 Avoid crashing on unexpected color strings 2025-07-30 14:55:15 -04:00
Lakr
cfd646dcac Fix spacer insertion condition in table cell loop
Changed the condition to insert a spacer only when a table row has at least two cells, preventing out-of-bounds errors when accessing the second cell.
2025-07-03 15:13:23 +09:00
mgriebling
1e49ab4e85 Merge pull request #44 from trilorez/image-layout-info
Add layout info to MathImage
2025-05-22 10:22:16 -04:00
Daniel Resnick
a73bf8d3f1 Add layout info to MathImage
This makes it possible to align images generated by MathImage alongside text, in an AttributedString for example.
2025-05-16 18:36:32 -06:00
mgriebling
28184a044c Merge pull request #39 from lbioser/fix_color_crash
fix crush when {color}
2025-04-22 10:02:40 -04:00
mgriebling
cc9d806298 Merge pull request #43 from trilorez/optional-fixes
Fix crashes due to forced unwrapping.  Thanks for fixing this.
2025-04-22 09:58:44 -04:00
Daniel Resnick
f6f4ebfa89 Fix crashes due to forced unwrapping 2025-04-16 18:10:56 -06:00
mgriebling
f73b8a1f73 Merge pull request #41 from risasim/main
Added support for VisionOS
2025-04-07 08:40:15 -04:00
Richard
1c3bf9129a Added support for visionOS by adding to #if os(iOS) || os(visionOS) 2025-03-27 11:19:51 +01:00
libing
d84db07ef3 2025-02-12 06:15:06 +00:00
Michael Griebling
606f9be66d Fix Ø command. 2024-12-18 14:50:44 -05:00
Michael Griebling
5c251ad218 Added comments to the accents. 2024-12-18 09:17:40 -05:00
Michael Griebling
1708b07bc9 Restore original `i's. 2024-12-17 16:18:00 -05:00
Michael Griebling
c73dc863b8 Try better accented 'i'. 2024-12-17 15:39:17 -05:00
Michael Griebling
872fa0b2bf Update \cc and \CC definitions. 2024-12-17 15:24:56 -05:00
Michael Griebling
653fe396de Fixed the ç and Ç commands, \cc and \CC, respectively. 2024-12-17 11:29:42 -05:00
Michael Griebling
3f8a358984 Added special symbols. 2024-12-17 11:08:14 -05:00
Michael Griebling
d0b1ff94df Added support for accented and special characters in the input text stream. (e.g., áéíóúýàèìòùâêîôûäëïöüÿãñõçøåæœß'ÁÉÍÓÚÝÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÃÑÕÇØÅÆŒ)
Also added some new commands to support special characters like \aa (å), etc.
2024-12-17 10:21:27 -05:00
Michael Griebling
07b110d07f Update internal changes. 2024-12-15 12:21:08 -05:00
mgriebling
3d07349901 Merge pull request #33 from a-lebedev/feature/fix_crash_for_getting_fonts 2024-12-10 06:49:46 -05:00
Andrew Lebedev
1dbbaddbff Add thread safety for fonts cache via read-write lock in MTFontManager 2024-11-20 17:57:37 +01:00