@@code.k @hpos_args :hpos left @ @caption_args :caption_side top @ | text.literal : A block of code, given here and displayed uninterpreted. Code that lives in a file is ^@source_listing instead; ^@code is only for a block written inline. It carried ":filename" and ":pattern" until 2026-08-16. Neither was ever implemented -- "filename" is read only by ^@source_listing and "pattern" by nothing at all -- and because a literal parameter's content begins at the first katom when no bar is written, "^@code :filename f :pattern p" DISPLAYED THOSE WORDS as the listing rather than acting on them. @@ @@code.html,tex :: @eval code_block.Code(K) @ @@ @@c.k code_text.literal : A word or phrase displayed verbatim in a line. Like ^@code, its content is LITERAL -- nothing in it is interpreted as Klammertext -- so it must be closed with the named delimiter "c^@". ^@c is the in-line form and ^@code the block form of the same thing; before 2026-08-16 this parameter was an ordinary string, so a "^#" or a bare "^@" inside it was read as Klammertext and usually failed the file, which is not what "verbatim" can mean. @@ @@c.html,tex :: @eval code_block.Code_fragment(K) eval@ @@ # :cwd makes the filename resolve against the DOCUMENT's directory, not # the directory ktext happens to run in. @@source_listing.k filename :marker @hpos_args :hpos left @ @caption_args :caption_side top @ : Code read from a file and displayed uninterpreted. *filename* is the file; without ":marker" the whole file is listed. ":marker P" lists only the region BETWEEN two lines that consist solely of "//P" and begin in the first column. The source file therefore declares its own extractable regions and the document asks for one by name, so the two cannot drift apart silently: renaming or reformatting the code does not change what is extracted, and a region that disappears is an error rather than a quietly different listing. Named "^@source_file" until 2026-08-16. # retired-ok @@ @@source_listing.html,tex :: @eval :cwd *K_input_dir* code_block.Source(K) @ @@