class PdfStartThreadWhatsitNode
\pdftstartthread [ ⟨rule spec⟩ ] [ ⟨attr spec⟩ ] ⟨id spec⟩ (v, m)
This uses the same syntax as \pdfthread
, apart that it must be followed by a \pdfendthread
.
\pdfstartthread
and the corresponding \pdfendthread
must end up in vboxes with the same
nesting level; all vboxes between them will be added into the thread.
In the output routine, if there are other newly created boxes which have the same nesting level
as the vbox(es) containing \pdfstartthread
and \pdfendthread
, they will be also added into the
thread, which is probably not what you want. To avoid such undesired behavior, it’s often enough
to wrap boxes that shouldn’t belong to the thread by a box to change their box nesting level.
Example:
assert.node_type("whatsit", "pdf_start_thread", {
id = "whatsit (8)",
subtype = "pdf_start_thread (25)",
fields = {
"prev (-1)",
"next (0)",
"id (1)",
"subtype (2)",
"attr (3)",
"width (4)",
"depth (5)",
"height (6)",
"named_id (7)",
"thread_id (8)",
"thread_attr (9)",
},
})
Reference:
- Corresponding C source code: texnodes.c#L1176-L1183
- Hàn Thế Thành and others. The pdfTEX user manual, pdfTEX 1.40.27, February 12, 2025, page 51 pdftex-a.pdf
😱 Types incomplete or incorrect? 🙏 Please contribute!
fields
PdfStartThreadWhatsitNode.attr
PdfStartThreadWhatsitNode.attr : Node {
next: Node?,
prev: Node?,
id: integer,
subtype: integer,
head: Node?,
attr: Node,
}
A list of attributes.
PdfStartThreadWhatsitNode.width
the width (not used in calculations)
PdfStartThreadWhatsitNode.height
the height (not used in calculations)
PdfStartThreadWhatsitNode.depth
the depth (not used in calculations)
PdfStartThreadWhatsitNode.named_id
is tread_id
a string value?
PdfStartThreadWhatsitNode.tread_id
the thread id string the thread name
PdfStartThreadWhatsitNode.thread_attr
extra thread information