Entwickler-Ecke
Open Source Projekte - groffstudio 0.13.2
hydemarie - Do 24.02.22 15:28
Titel: groffstudio 0.13.2
Was noch gefehlt hat:
Eine Alternative zu
TeXstudio [
https://www.texstudio.org/] für diejenigen, die lieber groff als LaTeX verwenden möchten.
Also habe ich mal eine gebaut. Verwendete Komponenten: Nur das, was Lazarus bereits mitliefert.
Quellcode, kompilierte Pakete und FAQ:
Website. [https://groff.tuxproject.de]
hydemarie - Do 10.03.22 17:07
Update: Version 0.10.0.
Das Statusfenster ist jetzt nur noch ein ... naja, Statusfenster.
Wer eine Logausgabe haben will, der kann jetzt mit einem Häkchen eine Logdatei erstellen lassen. Nebenbei einen Absturz unter Windows korrigiert.
Nächster Schritt: Meine Versionsprüfung(sanzeige) geht - unter Windows - irgendwie noch nicht so richtig. Mal sehen, was das wieder soll... :)
Nachtrag:
Korrigiert. Version 0.10.1.
hydemarie - Sa 12.03.22 13:43
Update: Version 0.11.0.
Die Versionsprüfung ist jetzt abschaltbar (Standard: aus) und die Windowspakete haben jetzt OpenSSL an Bord. (Man denkt ja auch nicht immer daran, dass das unter Windows nicht üblich ist.)
Gausi - So 13.03.22 09:39
Ich will mal etwas Feedback zur weiteren "Motivation" geben. Durchaus interessantes Projekt, aber ich verstehe das nicht. :gruebel:
Du beschreibst groff als Alternative für LaTeX, und das scheint irgendwie auch so zu sein. Aber wenn ich da hinterhergoogele, dann bekomme ich so Infos wie "wird hauptsächlich für die Erstellung von Manpages für Linux benutzt". Diese Manpages sind aber doch eher hübsch formatierte Text-Dateien. Das ist doch was völlig anderes als das, wofür man LaTex in der Regel benutzt - also z.B. wissenschaftliche Paper im Bereich Mathematik/Physik/Informatik, oder Abschlussarbeiten im Studium dieser Bereiche.
Könntest du da etwas Licht in mein Dunkel bringen?
hydemarie - So 13.03.22 11:36
Hurra! Motivation!
Wie LaTeX kreist auch groff um das Konzept der Makropakete. Im deutschsprachigen Raum ist (war?) etwa KOMA ein beliebtes Makropaket für LaTeX, das unter anderem standardkonforme Briefe einfacher gemacht hat. Ein typischer Anwendungsfall für groff ist in der Tat das Schreiben von manpages (Makropaket „man“) - aber mit dem Makropaket „mom“ zum Beispiel sieht die Sache schon
ganz anders aus. [
http://www.schaffter.ca/mom/mom-01.html] :)
Und auch wissenschaftliche Arbeiten sind mit groff möglich - wie LaTeX beherrscht groff die Nutzung von Präprozessoren, also das Parsen des Codes vor dem Erzeugen der Ausgabe. Für mathematische Formeln ist zum Beispiel der Präprozessor „eqn“ da. Praktischerweise hat groffstudio Auswahlboxen für beides… ;)
Dass die deutschsprachige Literatur zum Thema groff sich in Grenzen hält und es ohne ersichtlichen Grund - naja, vielleicht tatsächlich wegen der fehlenden Editoren? - mittlerweile überwiegend von LaTeX abgelöst worden ist, ist etwas bedauerlich, aber an der unterschiedlichen Ausrichtung liegt es meiner Meinung nach nicht.
hydemarie - Mo 14.03.22 19:11
Update: Version 0.12.0.
Vorbereitungen für die Paketierung unter Linux, UNIX und BSD, das Hauptfenster geht jetzt auf dem primären Monitor auf, sonst nur Kleinigkeiten.
hydemarie - Do 11.01.24 20:20
Update: Version 0.13.0.
Nachdem ich freundliches Feedback zu meiner Windowsversion bekommen hatte, habe ich mir 2-3 Dinge noch mal angesehen. Die wesentlichen Änderungen:
- Multi-Select für die diversen Parameter (wurde sonst zu voll mit den Checkboxen)
- unter macOS sieht die Schrift nicht mehr *mist*e aus
- groff wird jetzt weniger wahrscheinlich nicht gefunden
Komplettes Diff:
https://code.rosaelefanten.org/groffstudio/vdiff?from=47ab69880fde8e84&to=8bb30e04bd97756c
hydemarie - Di 30.01.24 18:31
Einerseits:
Anscheinend schon. Zu meiner Verteidigung: Ist nach über 20 Jahren meine erste Multithreadanwendung in Pascal.
Andererseits:
Muss ich nicht unbedingt, geht anscheinend auch so.
Eine andere Anwendung, die ich parallel entwickle und die erst mal nur für interne Zwecke verwendet wird, macht grob Folgendes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TDoStuffThread.Execute; begin FreeOnTerminate := True;
DoStep1(); Form1.pbProgress.StepBy(25); Form1.Refresh;
DoStep2(); Form1.pbProgress.StepBy(25); Form1.Refresh;
DoStep3(); Form1.pbProgress.StepBy(25); Form1.Refresh;
DoStep4(); Form1.pbProgress.StepBy(25); Form1.Refresh; end; |
Und
es funktioniert. Frage: Ist es ein Fehler, dass das funktioniert?
(Ich finde Synchronize() irgendwie unschön. Gerade groffstudio hat ja mehr als bloß 1 UI-Element, an dem das logisch dranhängt.)
Th69 - Di 30.01.24 18:56
Das ist ja das Unvorhersehbare, daß es nicht gleich zum Absturz o.ä. kommt, sondern meistens zu funktionieren scheint.
Wenn du jedoch parallel im UI-Thread dieselben UI-Elemente bearbeitest (egal ob per Code oder vom Benutzer), dann kann es jedoch zu Fehlverhalten kommen.
Du kannst auch mehrere UI-Aktionen in der bei
Synchronize angegebenen Funktion hintereinander ausführen (bei deinem Code also alles nach dem
RunCommand - also auch der
ShowMessage-Aufruf etc. - du mußt nur
GroffOutputVersion als Klassenmember anlegen).
Edit: Wenn ich das in
Functional programming in Pascal [
https://forum.lazarus.freepascal.org/index.php?topic=45818.46] richtig verstehe, dann unterstützt FPC auch Lambda-Ausdrücke (d.h. anonyme Funktionen), so daß du den Code inline lassen kannst - anstatt in einer eigenen extra Funktion:
Delphi-Quelltext
1: 2: 3: 4: 5:
| Synchronize( procedure begin ... end); |
hydemarie - Di 30.04.24 00:21
Update: Version 0.13.2.
Ist jetzt mit einer neueren Version von Lazarus kompiliert und Synchronize() ist jetzt drin... ;)
... Weiß zufällig einer der Mitlesenden, ob (und wie) ich RunCommand() dazu bewegen kann, den Befehl mit der Umgebung des aktuellen Nutzers auszuführen? Momentan ist groffstudio nicht so recht kompatibel mit "groff aus Homebrew installiert", weil /opt/homebrew naturgemäß nicht im Standardpfad ist, sondern i.d.R. in der lokalen .profile o.dgl. definiert wird - und die wird von RunCommand() ja nicht geladen.
hydemarie - Do 02.05.24 19:38
Update: Version 0.14.0. Unter Windows wird für PDF-Ausgabe jetzt Ghostscript vorausgesetzt. Aus Gründen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!