CTAN Comprehensive TeX Archive Network

Directory tex-archive/macros/latex/contrib/l3kernel

README.md

3 Programming Conventions

Release 2024-03-14

Overview

The files of the l3kernel bundle provide an API for programmers with defined syntax conventions, completely separating it from document level syntax. Hence, the commands provided are not intended for use at the document level nor for use in describing design layouts in document class files.

This API provides the foundation on which new additions to the kernel and other advanced extensions are built. The programming layer is designed to be loaded as part of format building or as a loaded package with plain or other formats.

The syntax and functionality provided by l3kernel is regarded by the team as stable. There may still be changes to some functions, but these will be very minor when compared to the scope of l3kernel. In particular, no functions will be removed, although some may be deprecated.

Requirements

The l3kernel bundle requires the extensions and a number of additional 'utility' primitives, almost all of which were first added to pdf. In particular, the functionality equivalent to the following pdf primitives must be available

  • \ifincsname
  • \ifpdfprimitive
  • \pdfcreationdate
  • \pdfelapsedtime
  • \pdffiledump
  • \pdffilemoddate
  • \pdffilesize
  • \pdflastxpos
  • \pdflastypos
  • \pdfmdfivesum
  • \pdfnormaldeviate
  • \pdfpageheight
  • \pdfpagewidth
  • \pdfprimitive
  • \pdfrandomseed
  • \pdfresettimer
  • \pdfsavepos
  • \pdfsetrandomseed
  • \pdfshellescape
  • \pdfstrcmp
  • \pdfuniformdeviate

For ease of reference, these primitives will be referred to as the 'pdf utilities'. With the exception of \expanded, these have been present in pdf since the release of version 1.40.0 in 2007; \expanded was added for Live 2019. Similarly, the full set of these utility primitives has been available in from the 2019 Live release, and has always been available in Lua (some by Lua emulation). The Japanese p and up gained all of the above (except \ifincsname) for Live 2019 and \ifincsname for Live 2020.

Starting from release 2023-05-15, the \expanded primitive is required. Its slow emulation has been removed.

In addition to the above, engines which are fully Unicode-compatible must provide the functionality of the following primitives, documented in the Lua manual

  • \Uchar
  • \Ucharcat
  • \Umathcode

The existence of the primitive \Umathcode is used as the marker for Unicode support.

Issues

The issue tracker for 3 is currently located on GitHub.

The Project

Development of 3 is carried out by The Project.

The development team can be contacted by e-mail: <latex-team@latex-project.org>.


Copyright (C) 1998-2012,2015-2024 The LaTeX Project
http://latex-project.org/
All rights reserved.

Files

Name Size Date Notes
CHANGELOG_md 58579 2024-03-14 11:45
README_md 3078 2024-03-14 11:45
expl3_dtx 71456 2024-03-14 11:45
expl3_pdf 610363 2024-03-14 11:45
interface3_pdf 1795605 2024-03-14 11:45
interface3_tex 1949 2024-03-14 11:45
l3_ins 6393 2024-03-14 11:45
l3basics_dtx 138852 2024-03-14 11:45
l3bitset_dtx 19547 2024-03-14 11:45
l3bootstrap_dtx 12955 2024-03-14 11:45
l3box_dtx 87821 2024-03-14 11:45
l3cctab_dtx 33772 2024-03-14 11:45
l3clist_dtx 83169 2024-03-14 11:45
l3coffins_dtx 88241 2024-03-14 11:45
l3color_dtx 112260 2024-03-14 11:45
l3debug_dtx 41914 2024-03-14 11:45
l3deprecation_dtx 24936 2024-03-14 11:45
l3doc_dtx 159782 2024-03-14 11:45
l3doc_pdf 565279 2024-03-14 11:45
l3docstrip_dtx 2384 2024-03-14 11:45
l3docstrip_pdf 151266 2024-03-14 11:45
l3expan_dtx 88794 2024-03-14 11:45
l3file_dtx 144214 2024-03-14 11:45
l3flag_dtx 14152 2024-03-14 11:45
l3fp_assign_dtx 9445 2024-03-14 11:45
l3fp_aux_dtx 47237 2024-03-14 11:45
l3fp_basics_dtx 84789 2024-03-14 11:45
l3fp_convert_dtx 19637 2024-03-14 11:45
l3fp_expo_dtx 49321 2024-03-14 11:45
l3fp_extended_dtx 51091 2024-03-14 11:45
l3fp_functions_dtx 7831 2024-03-14 11:45
l3fp_logic_dtx 23206 2024-03-14 11:45
l3fp_parse_dtx 105022 2024-03-14 11:45
l3fp_random_dtx 23581 2024-03-14 11:45
l3fp_round_dtx 18528 2024-03-14 11:45
l3fp_symbolic_dtx 20310 2024-03-14 11:45
l3fp_traps_dtx 12832 2024-03-14 11:45
l3fp_trig_dtx 73845 2024-03-14 11:45
l3fp_types_dtx 4911 2024-03-14 11:45
l3fp_dtx 76534 2024-03-14 11:45
l3fparray_dtx 11909 2024-03-14 11:45
l3int_dtx 93008 2024-03-14 11:45
l3intarray_dtx 30504 2024-03-14 11:45
l3kernel_functions_dtx 29838 2024-03-14 11:45
l3keys_dtx 130500 2024-03-14 11:45
l3legacy_dtx 4570 2024-03-14 11:45
l3luatex_dtx 23830 2024-03-14 11:45
l3msg_dtx 83081 2024-03-14 11:45
l3names_dtx 80270 2024-03-14 11:45
l3news_pdf 396222 2024-03-14 11:45
l3news_tex 4890 2024-03-14 11:45
l3news01_pdf 122959 2024-03-14 11:45
l3news01_tex 4937 2024-03-14 11:45
l3news02_pdf 150919 2024-03-14 11:45
l3news02_tex 6677 2024-03-14 11:45
l3news03_pdf 148747 2024-03-14 11:45
l3news03_tex 6482 2024-03-14 11:45
l3news04_pdf 114754 2024-03-14 11:45
l3news04_tex 5429 2024-03-14 11:45
l3news05_pdf 112524 2024-03-14 11:45
l3news05_tex 4716 2024-03-14 11:45
l3news06_pdf 151591 2024-03-14 11:45
l3news06_tex 6433 2024-03-14 11:45
l3news07_pdf 128344 2024-03-14 11:45
l3news07_tex 4977 2024-03-14 11:45
l3news08_pdf 163484 2024-03-14 11:45
l3news08_tex 9465 2024-03-14 11:45
l3news09_pdf 250159 2024-03-14 11:45
l3news09_tex 107383 2024-03-14 11:45
l3news10_pdf 150302 2024-03-14 11:45
l3news10_tex 9999 2024-03-14 11:45
l3news11_pdf 170102 2024-03-14 11:45
l3news11_tex 8481 2024-03-14 11:45
l3news12_pdf 205020 2024-03-14 11:45
l3news12_tex 14913 2024-03-14 11:45
l3pdf_dtx 17204 2024-03-14 11:45
l3prefixes_csv 48386 2024-03-14 11:45
l3prefixes_pdf 82720 2024-03-14 11:45
l3prefixes_tex 2821 2024-03-14 11:45
l3prg_dtx 70830 2024-03-14 11:45
l3prop_dtx 105151 2024-03-14 11:45
l3quark_dtx 35218 2024-03-14 11:45
l3regex_dtx 305486 2024-03-14 11:45 Regular expression facilities for
l3seq_dtx 100486 2024-03-14 11:45
l3skip_dtx 91719 2024-03-14 11:45
l3sort_dtx 40727 2024-03-14 11:45
l3str_convert_dtx 113735 2024-03-14 11:45
l3str_dtx 82462 2024-03-14 11:45
l3styleguide_pdf 296553 2024-03-14 11:45
l3styleguide_tex 11882 2024-03-14 11:45
l3syntax_changes_pdf 231402 2024-03-14 11:45
l3syntax_changes_tex 6219 2024-03-14 11:45
l3sys_dtx 42576 2024-03-14 11:45
l3term_glossary_pdf 242191 2024-03-14 11:45
l3term_glossary_tex 7079 2024-03-14 11:45
l3text_case_dtx 76368 2024-03-14 11:45
l3text_map_dtx 16624 2024-03-14 11:45
l3text_purify_dtx 20460 2024-03-14 11:45
l3text_dtx 48984 2024-03-14 11:45
l3tl_analysis_dtx 63041 2024-03-14 11:45
l3tl_build_dtx 13250 2024-03-14 11:45
l3tl_dtx 149691 2024-03-14 11:45
l3token_dtx 117145 2024-03-14 11:45
l3unicode_dtx 35639 2024-03-14 11:45
source3_pdf 7574289 2024-03-14 11:45
source3_tex 2282 2024-03-14 11:45
source3body_tex 24830 2024-03-14 11:45

Download the contents of this package in one zip archive (13.4M).

l3kernel – 3 programming conventions

The l3kernel bundle provides an implementation of the 3 programmers’ interface, as a set of packages that run under . The interface provides the foundation on which the 3 kernel and other future code are built: it is an API for programmers. The packages are set up so that the 3 conventions can be used with regular packages.

Packagel3kernel
Home pagehttp://www.latex-project.org/code.html
Bug trackerhttps://github.com/latex3/latex3/issues
Repositoryhttps://github.com/latex3/latex3
Version 2024-03-14
LicensesThe Project Public License 1.3c
Copyright1990–2024 The Project
MaintainerThe Project Team
TDS archivel3kernel.tds.zip
Contained inTeX Live as l3kernel
MiKTeX as l3kernel
TopicsFormat
Pre release
3
See alsol3backend
l3packages
l3experimental
Guest Book Sitemap Contact Contact Author