Übersicht:
Die Datei MaTeX.cs im Projektordner speichern. Und mit using MaTeX;
importieren.
Conv.MathToLatex()
Wandelt Terme bzw. Gleichungen in Form von
string
's sowie verschiedene C#-Objekte ausMathNet.Numerics.LinearAlgebra
in LaTeX-Schreibweise um.
string MathToLatex(object obj)
Unterstützte Terme bzw. Gleichungen:
=
-Zeichen+
, -
, *
, /
, ^
sin()
, cos()
, tan()
, ... , arcsin()
, ... , sqrt()
, exp()
f(x)
Unterstützte MathNet.Numerics.LinearAlgebra
-Objekte:
Matrix
Vector
Beispiel:
// Objekte definieren
string S = "0 = 3*2-sqrt(x)";
Vector V = DenseVector.OfArray(new double[] {4,7,1});
Matrix M = DenseMatrix.OfArray(new double[,] {
{1,5,0},
{0,3,0},
{4,0,1}
});
// LaTeX-Code genrerieren
string S_latex = Conv.MathToLatex(S);
string V_latex = Conv.MathToLatex(V);
string M_latex = Conv.MathToLatex(M);
// LaTeX-Code anzeigen
Console.WriteLine(S_latex + "\n");
Console.WriteLine(V_latex + "\n");
Console.WriteLine(M_latex + "\n");
Ausgabe:
0 = 6 - \sqrt{x}
\begin{pmatrix}
4 \\
7 \\
1
\end{pmatrix}
\begin{bmatrix}
1 & 5 & 0 \\
0 & 3 & 0 \\
4 & 0 & 1
\end{bmatrix}
Export.AsText()
Speichert LaTeX-Code in Form von
string
's in unterschiedlichen Formaten ausTextFormats
in der Dateifilename
ab. Dabei kann der Schreibmodus ausWriteModes
gewählt werden. Zusätzlich können Klammermodi ausBracketModes
für Markdown bzw. LaTeX Formate verwendet werden.
bool AsText(string latex, string filename, WriteModes writeMode, TextFormats textFormat, BracketModes[] bracketModes)
Unterstützte Dateinamen:
filename
darf nur den Dateinamen, keinen Dateipfad enthalten.Config.SaveLocation
festgelegt werden.filename
keine Dateiendung enthält, wird diese durch textFormat
festgelegt:TextFormats |
Dateiendung |
---|---|
TextFormats.TXT |
.txt |
TextFormats.MD |
.md |
TextFormats.TEX |
.tex |
TextFormats.TEX_DOCUMENT |
.tex |
Unterstützte Schreibmodi aus WriteModes
:
Dateiformat | WriteModes |
Aktion |
---|---|---|
alle TextFormats |
WriteModes.OVERRIDE |
Datei mit latex wird erstellt bzw. ersetzt |
alle TextFormats |
WriteModes.APPEND |
latex wird an das Ende der Datei angehängt |
alle TextFormats |
WriteModes.AT_START |
latex wird am Anfang der Datei eingefügt |
TextFormats.TEX |
WriteModes.INSERT_AFTER_DOCUMENT_START |
latex wird in der Datei nach dem ersten auftreten von \begin{document} eingefügt |
TextFormats.TEX |
WriteModes.INSERT_BEFORE_DOCUMENT_END |
latex wird in der Datei vor dem zuletzt aufgetretendem \end{document} eingefügt |
Unterstützte Dateiformate aus TextFormats
:
Dateiformat | TextFormats |
Bsp.: Dateiinhalt |
---|---|---|
Text | TextFormats.TXT |
0=6-\sqrt{x} |
Markdown | TextFormats.MD |
$0=6-\sqrt{x}$ |
LaTeX | TextFormats.TEX |
\begin{equation*}0=6-\sqrt{x}\end{equation*} |
LaTeX Dokument | TextFormats.TEX_DOCUMENT |
\documentclass[10pt]{article}\begin{document}\begin{equation*}0=6-\sqrt{x}\end{equation*}\end{document} |
Unterstützte Klammermodi aus BracketModes
für TextFormats.TEX
, TextFormats.TEX_DOCUMENT
und TextFormats.MD
:
Klammermodus | BracketModes |
Bsp.: Dateiinhalt für TextFormats.TEX |
Bsp.: Dateiinhalt für TextFormats.MD |
---|---|---|---|
Keine Klammern | new BracketModes[] {} |
0=6-\sqrt{x} |
0=6-\sqrt{x} |
Öffnende Klammer | new BracketModes[] {BracketModes.BEGIN} |
\begin{equation*}0=6-\sqrt{x} |
$0=6-\sqrt{x} |
Schließende Klammer | new BracketModes[] {BracketModes.END} |
0=6-\sqrt{x}\end{equation*} |
0=6-\sqrt{x}$ |
Beide Klammern | new BracketModes[] {BracketModes.BEGIN, BracketModes.END} |
\begin{equation*}0=6-\sqrt{x}\end{equation*} |
$0=6-\sqrt{x}$ |
Beispiel:
Objekte
S
,V
,M
und deren LaTeX-CodeS_latex
,V_latex
,M_latex
aus dem MathToLatex-Beispiel verwenden
string FileName = "Beispiel_ExportAsText";
// Export (I)
Export.AsText(
S_latex,
FileName,
WriteModes.OVERRIDE, // (Default)
TextFormats.TEX_DOCUMENT,
new BracketModes[] {BracketModes.BEGIN, BracketModes.END} // (Default)
);
// Export (II)
Export.AsText(
M_latex + @"\cdot",
FileName,
WriteModes.INSERT_BEFORE_DOCUMENT_END,
TextFormats.TEX, // (Default)
new BracketModes[] {BracketModes.BEGIN}
);
// Export (III)
Export.AsText(
V_latex,
FileName,
WriteModes.INSERT_BEFORE_DOCUMENT_END,
TextFormats.TEX, // (Default)
new BracketModes[] {BracketModes.END}
);
// oder mit Export (II) und (III) kombiniert
Export.AsText(
M_latex + @"\cdot" + V_latex,
FileName,
WriteModes.INSERT_BEFORE_DOCUMENT_END,
TextFormats.TEX, // (Default)
new BracketModes[] {BracketModes.BEGIN, BracketModes.END} // (Default)
);
Mit Default
markierte Parameter sind optional und können über die jeweilige Config
-Option global konfiguriert werden.
Ausgabe: Beispiel_ExportAsText.tex
\documentclass[10pt]{article} % Export (I)
% |
\begin{document} % |
% |
\begin{equation*} % |
0 = 6 - \sqrt{x} % |
\end{equation*} % |
\begin{equation*} % Export (II)
\begin{bmatrix} % |
1 & 5 & 0 \\ % |
0 & 3 & 0 \\ % |
4 & 0 & 1 % |
\end{bmatrix}\cdot % |
\begin{pmatrix} % Export (III)
4 \\ % |
7 \\ % |
1 % |
\end{pmatrix} % |
\end{equation*} % |
\end{document} % Export (I)
Export.AsImage()
(Coming Soon)Rendert LaTeX-Code in Form von
string
's und speichert es als Bild.
bool AsImage(string latex, string filename, ImageFormats imageFormat)
Unterstützte Dateinamen:
filename
darf nur den Dateinamen, keinen Dateipfad enthalten.Config.SaveLocation
festgelegt werden.imageFormat
festgelegt:ImageFormats |
Dateiendung |
---|---|
ImageFormats.JPG |
.jpg |
ImageFormats.JEPG |
.jepg |
ImageFormats.BMP |
.bmp |
ImageFormats.PNG |
.png |
ImageFormats.GIF |
.gif |
ImageFormats.SVG |
.svg |
Wrapper.PrettyPrint()
Gibt
text
zurück, wennConfig.PrettyPrinting
mittrue
konfiguriert ist, sonstalternative
.
string PrettyPrint(string text, string alternative)
Wrapper.PrintBrackets()
Gibt
bracketText
zurück, wenn der KlammermoduscurrentMode
im Array der akzeptierten KlammermodicompareModes
enthalten ist, sontalternative
.
string PrintBrackets(string bracketText, string alternative, BracketModes currentMode, BracketModes[] compareModes)
Enum
-ObjekteTextFormats
enum TextFormats { TXT, MD, TEX, TEX_DOCUMENT }
ImageFormats
enum ImageFormats { JPG, JPEG, BMP, PNG, GIF, SVG }
WriteModes
enum WriteModes { OVERRIDE, APPEND, AT_START, INSERT_AFTER_DOCUMENT_START, INSERT_BEFORE_DOCUMENT_END }
BracketModes
enum BracketModes { BEGIN, END }
In der Config
-Klasse können einheitlich Formate, Modi und Eigenschaften etc. konfiguriert werden. Diese Werte werden zum Beispiel zur Vervollständigung von Überladenen Funktionen sowie als Bedingung in Wrapper
-Funktionen verwendet. Sie können aber auch einfach abgefragt oder geändert werden:
Config.SaveLocation = Path.GetFullPath("dein/neuer/Speicherpfad");
Config.PrettyPrinting = false;
Config.TextFormat = TextFormats.MD;
...
Vervollständigung von Überladenen Funktionen:
Hier wird eine Überladung der Export.AsText()
-Funktion mit weniger Parametern verwendet, nämlich:
bool AsText(string latex, string filename, TextFormats textFormat)
Export.AsText(
Conv.MathToLatex("0=6-\sqrt{x}"),
"ergebnis",
TextFormats.TEX_DOCUMENT
);
Die in dieser Überladung 'fehlenden Paramter' sind writeMode
und bracketModes
. Beim Aufruf der 'vollständigen' Export.AsText()
-Funktion werden für diese fehlenden Parameter die konfigurierten Werte Config.WriteMode
und Config.BracketModes
eingesetzt.
Config
-OptionenAttribut | Datentyp | Standardwert | Bsp. Verwendung |
---|---|---|---|
PrettyPrinting |
bool |
true |
Fügt beim generieren von LaTeX-Code mit Conv.MathToLatex() oder beim Schreiben mit Export.AsText() Leerzeichen- und zeilen ein, wenn true . |
IgnoreFileExceptions |
bool |
false |
Export.AsText() wirft keine Exception wenn bei Lese- oder Schreiboperationen ein Fehler auftritt, sondern gibt false zurück, wenn true . |
TextFormat |
TextFormats |
TextFormats.TEX |
Legt das Standard Dateiformat für Export.AsText() fest und die Dateiendung, wenn diese nicht schon durch filename gesetzt wurde. |
ImageFormat |
ImageFormats |
ImageFormats.JPG |
Legt das Standard Dateiformat für Export.AsImage() fest. |
WriteMode |
WriteModes |
WriteModes.OVERRIDE |
Legt den Standard Schreibmodus für Export.AsText() fest. |
BracketMode |
BracketModes |
new BracketModes[] {BracketModes.BEGIN, BracketModes.END} |
Legt die Standard Klammermodi für Export.AsText() fest. |
LatexHeader |
string |
@"\documentclass[10pt]{article}" |
Legt den Standard LaTeX-Header fest und wird bei Export.AsText() mit TextFormats.TEX_DOCUMENT vor \document{begin} geschrieben. |
SaveLocation |
string |
System.IO.Directory.GetCurrentDirectory() |
Legt den Standard Ordnerpfad für die mit Export.AsText() erstellten bzw. modifizierten Dateien fest. |