CTAN Comprehensive TeX Archive Network

Directory macros/latex/contrib/projlib


The ProjLib Toolkit

This bundle is dated 2023/01/05.
New documentations are being written and are expected to be completed by the end of 2023. In the meantime, only the core code would be included in Live 2023 coming this April (old documentations have been removed from the distribution).


ProjLib can be interpreted as "Project Library" (in English), or as "Projet Libre" (in French, meaning "Free Project").

ProjLib is a collection of tools that help you write document. With the main package ProjLib loaded (note that it is case-sensitive), you no longer need to manually configure the appropriate multilingual settings nor to set up the theorem-like environments. In addition, a series of auxiliary functionalities are introduced.

To get started, simply put this line in your preamble:

For the options and detailed usage, please refer to the documentation.

The modules

Each module corresponds to a separate package, for example, the module theorem is projlib-theorem.sty.

The modules include:

  1. module author - Enhanced author information block
    • Offering \address, \curraddr and \email.
    • Write in the AMS fashion (with option ams-fashion):
      • Support \dedicatory, \keywords and \subjclass
        • \thanks can be written outside \author;
        • The abstract environment can be placed before \maketitle.
  2. module datetime - Convert numeric date-time string to natural language
    • \TheDate and \Thedate for converting numeric date-time string to natural language, with multi-language support (if the command names \TheDate or \Thedate are occupied, then one can switch to the longer version \ProjLibDate and \ProjLibdate).
    • \ProjLibToday and \ProjLibToday (with the module language enabled, \today is redefined into \ProjLibToday, and thus supports the arguments like only-year-month).
    • Multiple input and output format available.
  3. module draft - Useful commands during draft stage
    • \DNF for marking unfinished part. In addition, a report of all unfinished places shall be printed at the last of your document.
    • Reimplemented \blindtext to support more languages.
  4. module font - Font selection and configuration
    • Supporting Palatino, Times, Garamond, Biolinum, Noto, etc.
  5. module language - Multi-language configuration
    • \UseLanguage, \UseOtherLanguage for selecting languages, and \AddLanguageSetting for adding language-specific settings.
    • \DefineMultilingualText for defining multilingual text strings.
    • Currently support Chinese (simplified and traditional), English, French, German, Italien, Japanese, Portuguese (European and Brazilian), Russian and Spanish.
  6. module logo - The ProjLib logo
    • Draw the ProjLib logo in colorful or colorless fashion.
  7. module math - Efficient math setup
    • \DefineOperator and \DefineShortcut for setting up math macros efficiently.
    • \ListOfSymbols for printing list of symbols.
  8. module paper - Configuration of the paper style
    • Paper style configuration, with the themes light yellow, yellow, green, light gray, gray, dark, etc.
  9. module text - Text-related commands
    • Provide a few useful commands such as \ie, \eg, \cf, \etc ; and if you have your own version defined, they won't interfere with your definition.
    • \ItemDescription for writing leading description to items in itemize or enumerate.
  10. module theorem - Configuration of theorem-like environments
    • Setting up theorem-like environments based on the package create-theorem
      • \CreateTheorem, \SetTheorem and more...
        • In particular, supporting the modes name as is and name as context for the referencing names.
    • Supporting the modes simple name and complex name for the referencing names.
    • \SwitchTheoremNumbering and \DisableTheoremNumbering for manipulating the numbering.
    • Preset environments include: application, assertion, assumption, axiom, claim, conclusion, conjecture, construction, convention, corollary, definition, definition-proposition, definition-theorem, example, exercise, fact, hypothesis, lemma, notation, observation, postulate, problem, property, proposition, question, recall, remark, theorem, and the corresponding unnumbered version with an asterisk * in the name.
  11. module titlepage - Commands for rendering the title page
    • Currently support four title page styles: default, academic, minimalist and simple.
Since the module theorem uses cleveref, it should be loaded after varioref and hyperref (same for the main package ProjLib).

Regarding the files and the compilation of documentations

How to get these files

You can get the .sty files mentioned above simply by compiling ProjLib.ins:

latex ProjLib.ins

How to get the source of the documentation

You can get the .tex source files of the documentation by compiling ProjLib-doc.ins:

latex ProjLib-doc.ins

How to compile the documentation

It is recommended to use latexmk with option -xelatex:

latexmk -xelatex ProjLib-doc-**.tex

Here ** should be replaced with the language identifier, such as en.


All these can be done with the given script MakeFile.sh.


This work is released under the Project Public License, v1.3c or later.

Download the contents of this package in one zip archive (40.6k).

ProjLib – A series of tools to simplify your workflow

ProjLib is a collection of tools to help you write documents. With the main package ProjLib loaded, you no longer need to set up the theorem-like environments, nor to manually configure the appropriate multilingual settings. In addition, a series of auxiliary functionalities are introduced.

Version 2023-01-05
LicensesThe Project Public License 1.3c
Copyright2021–2023 Jinwen XU
MaintainerJinwen XU
Contained inTeX Live as projlib
MiKTeX as projlib
TopicsExperimental 3
Misc support
Guest Book Sitemap Contact Contact Author