Vervollständigung durch benutzerdefiniertes Script

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


Hahnsi
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Do 26. Mär 2020, 13:34

Vervollständigung durch benutzerdefiniertes Script

Beitrag von Hahnsi »

Hallo zusammen,

Ich erstelle derzeit ein Benutzerhandbuch. Inhalt dieses Handbuchs sind verschiedene Listen, die aus einer Datenbank generiert werden. Super Anwendungsfall für Latex! Nun komme ich an eine Hürde:
- Ich möchte, dass der Latex Compiler an einer bestimmten Text-Zeile ein Benutzerdefiniertes Programm aufruft und das Ergebnis dieses Programmaufrufs an entsprechende Stelle einfügt. Konkret geht es darum eine ID in einer XML-Datei zu suchen. Der Weg über \Write18 + \Input wie im nachfolgenden Beispiel dargestellt funktioniert grundsätzlich, allerdings handelt es sich derzeit um ca. 400 Programmaufrufe (Tendenz steigend), was extrem lange dauert. Gibt es eine effizientere Möglichkeit? Eine eingebettete Scriptumgebung o.ä.?

Code: Alles auswählen

\begin{document}
    \immediate\write18{SearchIdInSpotFile.exe 1741 > tool.log}
    \IfFileExists{tool.log}
    {
        \input{tool.log}
    }
    {}
\end{document}
Vielen Dank für eure Unterstützung.

Gast

Beitrag von Gast »

Wenn du SearchIdInSpotFile.exe in Lua realisieren kannst, kannst du ausprobieren, ob die Verwendung lualatex mit eben diesem Lua-Code das ganze beschleunigt.

Die andere Möglichkeit wäre, die ganzen Aufrufe zu sammeln und dann in einem Aufwasch nur einen Aufruf durchzuführen, falls SearchIdInSpotFile.exe das zu leisten vermag. Dann muss man nur noch tool.log einmal passend zerschneiden oder ggf. nicht per \input lesen, sondern beispielsweise per \openin und dann zeilenweise. Genaueres kann ich ohne die Kenntnis der Programme und des konkreten Einsatzes nicht sagen.

Solange 400 und mehr Programmaufrufe notwendig sind, wird das immer eine gewisse Zeit kosten, auch wenn das Programm selbst dann vermutlich ziemlich schnell in Dateicache ist und nicht mehr direkt von Platte geladen wird. Programmaufrufe gehören aber auf fast allen System zu den relativ kostspieligen Dingen. Deshalb dürfte es keine so große Rolle spielen, wer das externe Programm aufruft. Beschleunigung ist am ehesten zu erwarten, wenn die Anzahl der Aufrufe reduziert werden kann. Wenn also ein einziger Prozess zuerst alle IDs suchen und das passend in eine oder mehrere Dateien ausgeben kann (man könnte die ja auch tool-ID.log nennen), dann wäre das vermutlich schneller.

Gast

Beitrag von Gast »

PS: Ein erkennbarer Zusammenhang mit KOMA-Script ist für mich nicht auszumachen. Bist du sicher, dass die Frage nicht eher nach Allgemein oder eventuell noch nach Sonstige-Tools gehört?

Hahnsi
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Do 26. Mär 2020, 13:34

Erfolgreich gelöst

Beitrag von Hahnsi »

Vielen Dank für die Antwort! Gut möglich, dass es hier unter der falschen Rubrik aufgeführt ist.

Die Aufrufe zusammenzufassen war erfolgreich. Es läuft nun sehr viel effizienter. Daher kann der Post geschlossen werden.

Antworten