CTAN Comprehensive TeX Archive Network

Direc­tory macros/latex/contrib/l3packages


3 High-Level Con­cepts

Re­lease 2017/12/16


The l3packages col­lec­tion is con­tains im­ple­men­ta­tions for as­pects of the 3 ker­nel, deal­ing with higher-level ideas such as the De­signer In­ter­face. The pack­ages here are con­sid­ered broadly sta­ble (The 3 Project does not ex­pect the in­ter­faces to al­ter rad­i­cally). Th­ese pack­ages are build on con­ven­tions at the in­ter­face level, and so may not mi­grate in the cur­rent form to a stand-alone 3 for­mat.

All of the ma­te­rial in the col­lec­tion re­quires the 3 base layer pack­age l3kernel. The two pack­ages must be in­stalled in match­ing ver­sions: if you up­date l3packages, make sure that l3kernel is up­dated at the same time.

Cur­rently in­cluded in the CTAN re­lease of l3packages are the fol­low­ing bun­dles:

  • l3keys2e
  • xfp
  • xfrac
  • xparse
  • xtemplate


The l3keys2e pack­age al­lows keys de­fined us­ing l3keys to be used as pack­age and class op­tions with . This is tied to the method the ex­ist­ing ker­nel uses for pro­cess­ing op­tions, and so it is likely that a stand-alone 3 ker­nel will use a very dif­fer­ent ap­proach.


The xfp pack­age pro­vides a doc­u­ment-level in­ter­face for the 3 FPU. As such, it is a wrap­per around the core \fp_eval:n func­tion but does not re­quire code syn­tax. It pro­vides the ex­pand­able com­mand \fpeval, which can be used in­side for ex­am­ple \edef or con­texts where re­quires a num­ber.


The xfrac pack­age uses the in­ter­face de­fined by xtemplate to pro­vide flex­i­ble split-level frac­tions via the \sfrac macro. This is both a demon­stra­tion of the power of the tem­plate con­cept and also a use­ful ad­di­tion to the avail­able func­tion­al­ity in .


The xparse pack­age pro­vides a high-level in­ter­face for declar­ing doc­u­ment com­mands, e.g., a uni­form way to de­fine com­mands tak­ing op­tional ar­gu­ments, op­tional stars (and oth­ers), manda­tory ar­gu­ments and more.


The xtemplate pack­age pro­vides an in­ter­face for defin­ing generic func­tions us­ing a key=val syn­tax. This is de­signed to be "self-doc­u­ment­ing", with the key def­i­ni­tions pro­vid­ing in­for­ma­tion on how they are to be used.


Dis­cus­sion con­cern­ing the ap­proach, sug­ges­tions for im­prove­ments, changes, ad­di­tions, etc. should be ad­dressed to the list -L.

You can sub­scribe to this list by send­ing mail to


with the body con­tain­ing

subscribe LATEX-L  <Your-First-Name> <Your-Second-Name>


The is­sue tracker for 3 is cur­rently lo­cated on GitHub.

Please re­port spe­cific is­sues with 3 code there; more gen­eral dis­cus­sion should be di­rected to the -L list.

The 3 Project

Devel­op­ment of 3 is car­ried out by The 3 Project. Cur­rently, the team mem­bers are

  • Jo­hannes Braams
  • David Carlisle
  • Robin Fair­bairns
  • Morten Høgholm
  • Bruno Le Floch
  • Thomas Lotze
  • Frank Mit­tel­bach
  • Will Robert­son
  • Chris Row­ley
  • Rainer Schöpf
  • Joseph Wright

Former mem­bers of The 3 Project team were

  • Michael Downes
  • Denys Duchier
  • Alan Jef­frey
  • Martin Schröder

The de­vel­op­ment team can be con­tacted by e-mail: <la­tex-team@la­tex-project.org>; for gen­eral 3 dis­cus­sion the -L list should be used.

Copy­right (C) 1998-2011,2015-2017 The LaTeX3 Project
All rights re­served.

Down­load the con­tents of this pack­age in one zip archive (2.0M).

l3­pack­ages – High-level 3 con­cepts

The bun­dle holds pro­to­type im­ple­men­ta­tions of con­cepts for a de­signer in­ter­face, to be used with the ex­per­i­men­tal ker­nel as pro­gram­ming tools and ker­nel sup­port.

Pack­ages pro­vided in this re­lease are:

  • l3keys2e, which makes the fa­cil­i­ties of the ker­nel mod­ule l3keys avail­able for use by 2e pack­ages;
  • xfrac, which pro­vides flex­i­ble split-level frac­tions;
  • xparse, which pro­vides a high-level in­ter­face for declar­ing doc­u­ment com­mands; and
  • xtem­plate, which pro­vides a means of defin­ing generic func­tions us­ing a key-value syn­tax.

All the files of the bun­dle are also avail­able in the Sub­ver­sion (SVN) repos­i­tory of the 3 Project.

Home pagehttp://www.la­tex-project.org/code.html
Ver­sion 2017-12-16
Li­censesThe Project Public Li­cense 1.3c
Copy­right1998–2011, 2015–2017 The project
Main­tainerThe Team
TDS archivel3packages.tds.zip
Con­tained inTeX Live as l3­pack­ages
MiKTeX as l3­pack­ages
TopicsPre re­lease
Macro sup­port
See alsol3experimental
Guest Book Sitemap Contact Contact Author