CSharpMath 0.5.0-beta

The core of the C# math rendering engine - CSharpMath.
     Can display beautiful math equations and symbols from the LaTeX format.
     Needs a front end to function.
     Currently, front ends exist for Avalonia, iOS, SkiaSharp and Xamarin.Forms.

This is a prerelease version of CSharpMath.
Install-Package CSharpMath -Version 0.5.0-beta
dotnet add package CSharpMath --version 0.5.0-beta
<PackageReference Include="CSharpMath" Version="0.5.0-beta" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CSharpMath --version 0.5.0-beta
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

# 0.5.0 Evaluation Update Beta

## Changes from v0.5.0-alpha4 (Recently merged first)
## 🚀 Features

<details><summary>Add placeholder blinks setting (#177) @SymboLinker</summary><table><td>

In issue #175 a feature request was done for stopping the blinking of the placeholder (but still have a blinking carret if it moves to a spot without a placeholder).

The proposed pull request #176 just removes the blinking of the placeholder and does not leave it as an option.

This pull request adds a setting LaTeXSetting.PlaceholderBlinks that keeps the default value true and does not break any existing unit tests.

Tests are added
- to make sure that the setting for a non-blinking placeholder works
- to document how it should work
- to make sure that it will not be removed in a whim

@charlesroddie Please verify that the effect of changing the PlaceholderBlinks-setting results in the behaviour you like.
</td></table></details>

<details><summary>Make blinking Placeholder's Nucleus and ForeColor customizable in both CaretStates (#167) @SymboLinker</summary><table><td>

In pull request #164, posting https://github.com/verybadcat/CSharpMath/pull/164#issuecomment-699458440, the idea came up to make the placeholder customizable in the keyboard output. While PR #164 is concerned with the display of the keyboard buttons themselves, this PR is about the math keyboard output.

Currently the placeholder has two possible appearances: a full black square and an empty square with a black border.

This pull request makes the Nucleus and the ForeColor of the placeholder customizable in both CaretStates.

An example of usage: instead of an empty square with a black border in the 'hiding' CaretState, you could choose a full square with another Color (gray, for instance).

An example test:
In CSharpMath.Forms.Example\CSharpMath.Forms.Example\EditorPage.xaml.cs
add the following lines at the top of the constructor of the EditorView:
```
     Atom.LaTeXSettings.PlaceholderHidingNucleus = \u25A0;
     Atom.LaTeXSettings.PlaceholderHidingColor = Color.LightGray;
```
Open the Example project and go to the Editor tab. Click the fraction button. The output is:
![image](https://user-images.githubusercontent.com/32139898/94426706-46d0b980-018e-11eb-875c-21275d880d4d.png)
where the square in the numerator blinks, LightGray/Black.

I am willing to write unit tests after some form of preliminary approval of this pull request.
(And of course I will fix mistakes and refactor if needed.)
</td></table></details>


## 🧰 Maintenance

- #180 take 2 (#181) @Happypig375

- Update Release workflow with the workaround from Test (#180) @Happypig375

<details><summary>Make MathKeyboard IDisposable (#179) @charlesroddie</summary><table><td>

fixes: https://github.com/verybadcat/CSharpMath/issues/178
</td></table></details>

<details><summary>Cleanup in preparation for Font Styles (#156) @charlesroddie</summary><table><td>

Initial simplification in preparation for adding Font Styles
- DoNothingFontChanger was removed was only used in tests.

For subsequent PR:
- UnicodeFontChanger uses mathematical bold/italic ranges to use a single font for normal/bold/italic. To preserve existing functionality without deploying additional fonts, this logic needs to be kept when using standard fonts.
- Allow users to add bold and italic fonts, for use in TextPainter. This PR will not address MathAtom fonts. If these fonts are present, they will be used instead of UnicodeFontChanger for rendering bold/italic fonts.
</td></table></details>

<details><summary>Enable the use of codecov.io (#163) @Happypig375</summary><table><td>

See https://codecov.io/gh/verybadcat/CSharpMath
</td></table></details>

<details><summary>Continuous Benchmark (#162) @Happypig375</summary><table><td>

See https://verybadcat.github.io/CSharpMath/dev/bench/
</td></table></details>

- Fix GitHub Packages (#157) @Happypig375

<details><summary>Add test coverage as CI artifacts (#155) @Happypig375</summary><table><td>

Also CSharpMath.Rendering.Tests baselines became smaller magically
</td></table></details>

## Contributors
@Happypig375, @SymboLinker and @charlesroddie

NuGet packages (3)

Showing the top 3 NuGet packages that depend on CSharpMath:

Package Downloads
CSharpMath.Editor
The base code for a What You See Is What You Get math editor.
CSharpMath.Ios
The iOS front end for CSharpMath.
CSharpMath.Evaluation
Can convert CSharpMath.Atom.MathList parsed from LaTeX with CSharpMath.Atom.LaTeXParser into actual mathematical expressions that are evaluatable with AngouriMath. Supports arithmetic, trigonometry, symbolic simplification and expansion, as well as matrices, sets, and equation solving.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
0.5.0-beta 1,866 11/1/2020
0.5.0-alpha4 1,571 8/3/2020
0.5.0-alpha3 228 8/3/2020
0.5.0-alpha2.2 82 8/2/2020
0.5.0-alpha2.1 66 8/2/2020
0.5.0-alpha 175 8/2/2020
0.4.2 7,060 4/15/2020
0.4.1 287 4/14/2020
0.4.0 3,099 4/10/2020
0.4.0-beta 316 4/3/2020
0.4.0-alpha 281 3/18/2020
0.3.0 866 12/19/2019
0.3.0-beta3 539 11/8/2019
0.3.0-beta2 265 11/4/2019
0.3.0-beta 354 9/8/2019
0.3.0-alpha 312 8/23/2019
0.2.0 2,851 1/22/2019
0.2.0-beta1 506 1/5/2019
0.2.0-alpha3 520 11/24/2018
0.2.0-alpha2 423 11/17/2018
0.2.0-alpha 407 11/6/2018
0.1.5 526 1/1/2019
0.1.4 437 12/5/2018
0.1.3 455 11/11/2018
0.1.2 476 10/21/2018
0.1.1 453 10/13/2018
0.1.0 483 10/6/2018
0.1.0-rc.3 977 10/1/2018
0.1.0-rc.2 272 9/21/2018
0.1.0-rc.1 248 9/19/2018
0.1.0-rc.0 269 9/14/2018
0.1.0-pre8 581 8/26/2018
0.1.0-pre7 497 8/16/2018
0.1.0-pre6 488 8/8/2018
0.1.0-pre5 473 7/27/2018
0.1.0-pre4 516 7/20/2018
0.1.0-pre3 542 7/17/2018
0.1.0-pre2 485 7/14/2018
0.1.0-pre10 470 9/6/2018
0.1.0-pre1 520 6/28/2018
0.0.0 530 12/29/2017