Eine Nodeliste erstellen – einfaches Beispiel1
Auf der DANTE Konferenz in Dortmund habe ich einen Vortrag über LuaTeX gehalten und dort ein Beispiel für's Erstellen einer Nodelist gegeben. Das Beispiel habe ich extra knapp gehalten, damit der Code lesbar auf eine Folie passt. Hier ist dasselbe Beispiel etwas ausführlicher.
\directlua{
function mkhbox(str)
local head
local glyph = node.id("glyph")
for s in string.utfvalues(str) do
if s == 32 then % Leerzeichen
n = node.new(node.id("glue"))
n.spec = node.new(node.id("glue_spec"))
n.spec.width = 3 * 2^16
n.spec.shrink = 1.1 * 2^16
n.spec.stretch = 2.2 * 2^16
else
n = node.new(node.id("glyph"))
n.font = 1
n.char = s
end
if head then
last.next = n
else
head = n
end
last = n
end
return node.hpack(head)
end
node.write(node.copy(mkhbox("Hallo")))
b = mkhbox("Welt")
b.height = 0
b.depth = 0
node.write(node.copy(b))
}
\bye
Dieses (zugegebenermaßen wieder etwas künstliche) Beispiel erzeugt die beiden h-Boxen „Hallo” und „Welt“ und legt diese übereinander. mkhbox, also node.hpack() erzeugt eine \hbox, und für diese Box kannst du die Größen beliebig ändern. Sehr praktisch!

1 Kommentar zu "Eine Nodeliste erstellen – einfaches Beispiel"
Ulrike Fischer schrieb am 01.12 um 11:31 Uhr:
Für alle LaTeX-Nutzer, die das ausprobieren und sich über die mathematischen Symbole wundern: mit
n.font = font.current() (statt n.font=1) bekommt man die “aktuelle” Schrift.
Kommentar schreiben