https://github.com/latex3/latex2e
Tip revision: d4c0442683ffb0f84313b5715f1538c5ee99545d authored by Joseph Wright on 06 February 2020, 17:58:41 UTC
Set pre-release level
Set pre-release level
Tip revision: d4c0442
ltvers.dtx
% \iffalse meta-comment
%
% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
% This file is part of the LaTeX base system.
% -------------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008 or later.
%
% This file has the LPPL maintenance status "maintained".
%
% The list of all files belonging to the LaTeX base distribution is
% given in the file `manifest.txt'. See also `legal.txt' for additional
% information.
%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
%
% \fi
%
% \iffalse
%%% From File: ltvers.dtx
%
%<*driver>
% \fi
\ProvidesFile{ltvers.dtx}
[2020/01/31 v1.1e LaTeX Kernel (Version Info)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltvers.dtx}
\title{\filename}
\date{\filedate}
\author{%
Johannes Braams\and
David Carlisle\and
Alan Jeffrey\and
Leslie Lamport\and
Frank Mittelbach\and
Chris Rowley\and
Rainer Sch\"opf}
\begin{document}
\MaintainedByLaTeXTeam{latex}
\maketitle
\DocInput{\filename}
\end{document}
%</driver>
% \fi
%
%
% \section{Version Identification}
% First we identify the date and version number of this release of
% \LaTeX, and set |\everyjob| so that it is printed at the start of
% every \LaTeX\ run.
%
% \StopEventually{}
%
% \changes{v1.0g}{1996/11/28}
% {Check for old format modified /2319}
% \changes{v1.0f}{1996/11/20}
% {Check for old format modified /2319}
% \changes{v1.0e}{1995/05/12}
% {Add autoload docstrip guards}
% \changes{v1.0e}{1995/05/12}
% {Check for format older than 1 year}
% \changes{v1.0d}{1994/05/25}
% {Remove PRELIMINARY TEST RELEASE from startup banner
% (spring is here)}
% \changes{v1.0b}{1994/04/12}
% {Have version info generated automatically.}
% \changes{v1.0a}{1994/03/04}
% {Initial version, split from latex.dtx}
% \changes{v1.0r}{2015/02/21}{Removed autoload code}
% \changes{v1.0t}{2015/06/23}
% {set \cs{patch@level} in ltvers rather than in ltfinal/ltpatch}
%
% \begin{macro}{\fmtname}
% \begin{macro}{\fmtversion}
% \begin{macro}{\latexreleaseversion}
% \begin{macro}{\patch@level}
% A |\patch@level| of \texttt{0} or higher denotes an official
% public release. A negative value indicates a candidate release
% that is not distributed.
%
% If we put code updates into the kernel that are supposed to go
% into the next release we set the |\patch@level| to \texttt{-1}
% and the |\fmtversion| / |\latexreleaseversion| to the dated of
% the next release (guessed, the real value is not so important and
% will get corrected when we make the release official).
%
% If the |\patch@level| is already at \texttt{-1} we do nothing
% here and use the |\fmtversion| date for any new|\IncludeInRelease|
% line when we add further code.
%
% Finally, if we do make a public release we either just set the
% |\patch@level| to zero (if our initial guess was good) or we also
% change the date and then have to additionally change to that date
% on all the |\IncludeInRelease| statements that used the
% ``guessed'' date.
% \begin{macrocode}
%<*2ekernel>
\def\fmtname{LaTeX2e}
\edef\fmtversion
%</2ekernel>
%<latexrelease>\edef\latexreleaseversion
%<*2ekernel|latexrelease>
{2020-10-01}
%</2ekernel|latexrelease>
%<*2ekernel>
\def\patch@level{-1}
% \end{macrocode}
%
% \begin{macro}{\development@branch@name}
% For more fine grain control there is the possibility to name the
% current development branch. This is only used when the
% \cs{patch@level} is negative (i.e., a pre-release format) and is
% intended to help us internally when we locally install a
% format out of some development branch.
% \begin{macrocode}
\edef\development@branch@name{develop \the\year-\the\month-\the\day}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% Check that the format being made is not too old.
% The error message complains about `more than 5 years'
% but in fact the error is not triggered until 65 months.
%
% This code is currently not activated as we don't know if we already
% got to the last official 2e version (due to staff shortage or due to
% a successor (think positive:-)).
% \changes{v1.0i}{2001/06/04}{Check for old format disabled}
% \changes{v1.0k}{2004/01/28}{Check for old format made 5 years (pr/3601)}
% \changes{v1.0l}{2009/09/24}{Stop checking for old format}
% \begin{macrocode}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
\count@\year
\advance\count@-#1\relax
\multiply\count@ by 12\relax
\advance\count@\month
\advance\count@-#2\relax}
\expandafter\reserved@a\fmtversion\@nil
% \end{macrocode}
% |\count@| is now the age of this file in months. Take a generous
% definition of `year' so this message is not generated too often.
% \begin{macrocode}
\ifnum\count@>65
\typeout{^^J%
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
! You are attempting to make a LaTeX format from a source file^^J%
! That is more than five years old.^^J%
!^^J%
! If you enter <return> to scroll past this message then the format^^J%
! will be built, but please consider obtaining newer source files^^J%
! before continuing to build LaTeX.^^J%
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
}
\errhelp{To avoid this error message, obtain new LaTeX sources.}
\errmessage{LaTeX source files more than 5 years old!}
\fi
\let\reserved@a\relax
\fi
% \end{macrocode}
%
% \changes{v1.0p}{2015/01/22}{Preserve any \cs{everyjob} material inserted
% by a loader (\texttt{.ini} file)}
% \changes{v1.0v}{2015/08/23}{Allow negative patchlevel for pre-release}
% \changes{v1.1e}{2020/01/31}{Allow for upcoming format as pre-release 0}
% \begin{macrocode}
\ifnum0\ifnum\patch@level=0 \ifx\development@branch@name\@empty 1\fi\fi>0 %
\everyjob\expandafter{\the\everyjob
\typeout{\fmtname \space<\fmtversion>}}
\immediate
\write16{\fmtname \space<\fmtversion>}
\else\ifnum\patch@level>0
\everyjob\expandafter{\the\everyjob
\typeout{\fmtname \space<\fmtversion> patch level \patch@level}}
\immediate
\write16{\fmtname \space<\fmtversion> patch level \patch@level}
\else
\everyjob\expandafter{\the\everyjob
\typeout{\fmtname \space<\fmtversion> pre-release-\number-\patch@level\space
\ifx\development@branch@name\@undefined \else
\ifx\development@branch@name\@empty \else
\space (\development@branch@name\space branch)%
\fi
\fi
}}
\immediate
\write16{\fmtname \space<\fmtversion> pre-release-\number-\patch@level\space
\ifx\development@branch@name\@undefined \else
\ifx\development@branch@name\@empty \else
\space (\development@branch@name\space branch)%
\fi
\fi
}
\fi
\fi
%</2ekernel>
% \end{macrocode}
%
% \begin{macro}{\IncludeInRelease}
% \changes{v1.0w}{2015/02/21}
% {set \cs{@currname} empty here (in case \cs{IncludeInRelease} input early)}
% \begin{macrocode}
%<2ekernel>\let\@currname\@empty
% \end{macrocode}
%
% \changes{v1.0n}{2015/01/07}{macro added}
% \changes{v1.0m}{2015/01/17}{modified with \cs{@currname}}
% \changes{v1.0o}{2015/01/19}{Optional argument}
% \changes{v1.0q}{2015/02/19}{Swap argument order}
%
% \begin{macrocode}
%<*2ekernel|latexrelease>
%<latexrelease>\newif\if@includeinrelease
%<latexrelease>\@includeinreleasefalse
% \end{macrocode}
% \begin{macrocode}
\def\IncludeInRelease#1{%
\if@includeinrelease
\PackageError{latexrelease}{mis-matched IncludeInRelease}%
{There is an \string\EndIncludeRelease\space missing}%
\@includeinreleasefalse
\fi
\kernel@ifnextchar[%
{\@IncludeInRelease{#1}}
{\@IncludeInRelease{#1}[#1]}}
% \end{macrocode}
%
% If a specific date has not been specified in |latexrelease|
% use `|#1|`.
% \begin{macrocode}
\def\@IncludeInRelease#1[#2]{\@IncludeInRele@se{#2}}
% \end{macrocode}
%
% \begin{macrocode}
\def\@IncludeInRele@se#1#2#3{%
\toks@{[#1] #3}%
\expandafter\ifx\csname\string#2+\@currname+IIR\endcsname\relax
\ifnum\expandafter\@parse@version#1//00\@nil
>\expandafter\@parse@version\fmtversion//00\@nil
\GenericInfo{}{Skipping: \the\toks@}%
\expandafter\expandafter\expandafter\@gobble@IncludeInRelease
\else
\GenericInfo{}{Applying: \the\toks@}%
\@includeinreleasetrue
\expandafter\let\csname\string#2+\@currname+IIR\endcsname\@empty
\fi
\else
\GenericInfo{}{Already applied: \the\toks@}%
\expandafter\@gobble@IncludeInRelease
\fi
}
% \end{macrocode}
%
% \begin{macrocode}
\def\EndIncludeInRelease{%
\if@includeinrelease
\@includeinreleasefalse
\else
\PackageError{latexrelease}{mis-matched EndIncludeInRelease}{}%
\fi}
% \end{macrocode}
%
% \begin{macrocode}
\long\def\@gobble@IncludeInRelease#1\EndIncludeInRelease{%
\@includeinreleasefalse
\@check@IncludeInRelease#1\IncludeInRelease\@check@IncludeInRelease
\@end@check@IncludeInRelease}
% \end{macrocode}
% \begin{macrocode}
\long\def\@check@IncludeInRelease#1\IncludeInRelease
#2#3\@end@check@IncludeInRelease{%
\ifx\@check@IncludeInRelease#2\else
\PackageError{latexrelease}{skipped IncludeInRelease for tag \string#2}{}%
\fi}
% \end{macrocode}
%
% \begin{macrocode}
%</2ekernel|latexrelease>
% \end{macrocode}
% \end{macro}
% \Finale
%
\endinput