In einem expl3-Paket soll ein Lua-Modul zum Einsatz kommen, da Lua die Programmierung bestimmter Funktionen vereinfacht. Das Lua-Modul wiederum soll im Paket definierte expl3-Funktionen aufrufen. Das funktioniert aber nicht immer. Im folgenden Minimalbeispiel funktioniert der \TestnutzerbefehlA, aber nicht der \TestnutzerbefehlB.

\begin{filecontents*}{testpaket.sty}
\ProvidesExplPackage{testpaket}{2025-08-03}{1.0}{Testpaket}
\directlua { testmodul = require ('testmodul') }

\cs_new:Npn \testpaket_testbefehl:n #1
  {
    \int_to_Roman:n {#1}
  }

\NewDocumentCommand \TestnutzerbefehlA {m}
  {
    \directlua { testmodul.testfunktionA ( #1 ) }
  }

\NewDocumentCommand \TestnutzerbefehlB {m}
  {
    \directlua { testmodul.testfunktionB ( #1 ) }
  }
\end{filecontents*}
\begin{filecontents*}{testmodul.lua}
local testmodul = {}

testmodul.testfunktionA = function (nr)
  tex.sprint("bla blub ")
  tex.sprint("\\ExplSyntaxOn")
  tex.sprint("\\testpaket_testbefehl:n{"..nr.."}")
  tex.sprint("\\ExplSyntaxOff")
end

testmodul.testfunktionB = function (nr)
  tex.sprint("\\section{")
  testmodul.testfunktionA(nr)
  tex.sprint("}")
end

return testmodul
\end{filecontents*}
\documentclass{article}
\usepackage{testpaket}

\begin{document}
\TestnutzerbefehlA{75}
\TestnutzerbefehlB{85}
\end{document}

Die Fehlermeldung lautet:

! Undefined control sequence.
<argument> bla blub \ExplSyntaxOn \testpaket
                                             _testbefehl:n{85}\ExplSyntaxOff

Die expl3-Syntax wird also nicht erkannt, obwohl direkt davor \ExplSyntaxOn steht. Woran liegt das?

gefragt 03 Aug, 23:01

Cletus's gravatar image

Cletus
1.6k105867
Akzeptiert-Rate: 75%

Deine Antwort auf die Frage: (Bemerkungen bitte oben als Kommentar)
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×29
×14
×4

gestellte Frage: 03 Aug, 23:01

Frage wurde gesehen: 155 Mal

zuletzt geändert: 03 Aug, 23:01