Michaël Van Canneyt 1 неделя назад
Родитель
Сommit
1852861920
1 измененных файлов с 52 добавлено и 2 удалено
  1. 52 2
      packages/fcl-md/src/markdown.latexrender.pas

+ 52 - 2
packages/fcl-md/src/markdown.latexrender.pas

@@ -47,6 +47,7 @@ type
     Procedure Append(const aContent : String);
     Procedure AppendNL(const aContent : String = '');
     Property Builder : TStringBuilder Read FBuilder;
+    function EscapeLaTeX(const S: String): String;
   public
     constructor Create(aOwner : TComponent); override;
     destructor destroy; override;
@@ -54,7 +55,9 @@ type
     Procedure RenderDocument(aDocument : TMarkDownDocument; aDest : TStrings); overload;
     procedure RenderChildren(aBlock : TMarkDownContainerBlock; aAppendNewLine : Boolean); overload;
     function RenderLaTeX(aDocument : TMarkDownDocument) : string;
-    function EscapeLaTeX(const S: String): String;
+    Procedure RenderToFile(aDocument : TMarkDownDocument; aFileName : string);
+    class procedure FastRenderToFile(aDocument : TMarkDownDocument; const aFileName : string; aOptions : TLaTeXOptions = []; const aTitle : String = ''; const aAuthor : string = '');
+    class function FastRender(aDocument : TMarkDownDocument; aOptions : TLaTeXOptions = []; const aTitle : String = ''; const aAuthor : string = '') : string;
   published
     Property Options : TLaTeXOptions Read FOptions Write FOptions;
     property Title : String Read FTitle Write FTitle;
@@ -317,6 +320,53 @@ begin
   FLaTeX:='';
 end;
 
+procedure TMarkDownLaTeXRenderer.RenderToFile(aDocument: TMarkDownDocument; aFileName: string);
+var
+  lTeX : String;
+  lFile : THandle;
+begin
+  lTeX:=RenderLaTex(aDocument);
+  lFile:=FileCreate(aFileName);
+  try
+    if lTex<>'' then
+      FileWrite(lFile,lTex[1],Length(lTex)*SizeOf(Char));
+  finally
+    FileClose(lFile);
+  end;
+end;
+
+class procedure TMarkDownLaTeXRenderer.FastRenderToFile(aDocument: TMarkDownDocument; const aFileName: string; aOptions: TLaTeXOptions;
+  const aTitle: String; const aAuthor: string);
+var
+  lRender : TMarkDownLaTexRenderer;
+begin
+  lRender:=TMarkDownLaTexRenderer.Create(Nil);
+  try
+    lRender.Options:=aOptions;
+    lRender.Title:=aTitle;
+    lRender.Author:=aAuthor;
+    lRender.RenderToFile(aDocument,aFileName);
+  finally
+    lRender.Free;
+  end;
+end;
+
+class function TMarkDownLaTeXRenderer.FastRender(aDocument: TMarkDownDocument; aOptions: TLaTeXOptions; const aTitle: String;
+  const aAuthor: string): string;
+var
+  lRender : TMarkDownLaTexRenderer;
+begin
+  lRender:=TMarkDownLaTexRenderer.Create(Nil);
+  try
+    lRender.Options:=aOptions;
+    lRender.Title:=aTitle;
+    lRender.Author:=aAuthor;
+    Result:=lRender.RenderLatex(aDocument);
+  finally
+    lRender.Free;
+  end;
+end;
+
 function TMarkDownLaTeXRenderer.EscapeLaTeX(const S: String): String;
 var
   i: Integer;
@@ -788,4 +838,4 @@ initialization
   TLaTeXMarkDownTableRowBlockRenderer.RegisterRenderer(TMarkDownLaTeXRenderer);
   TLaTeXMarkDownDocumentRenderer.RegisterRenderer(TMarkDownLaTeXRenderer);
   TLaTeXMarkDownTextRenderer.RegisterRenderer(TMarkDownLaTeXRenderer);
-end.
+end.