From 72c9345e5bafe708888bf65448a81d1aee8275ed Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Sat, 5 Oct 2019 03:01:15 +0000
Subject: CTAN sync 201910050301

---
 macros/latex/base/latexchanges.tex | 836 +++++++++++++++++++++++++++++++++++++
 1 file changed, 836 insertions(+)
 create mode 100644 macros/latex/base/latexchanges.tex

(limited to 'macros/latex/base/latexchanges.tex')

diff --git a/macros/latex/base/latexchanges.tex b/macros/latex/base/latexchanges.tex
new file mode 100644
index 0000000000..43780d3cf8
--- /dev/null
+++ b/macros/latex/base/latexchanges.tex
@@ -0,0 +1,836 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2015-2019
+% 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
+%    http://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
+% Filename: latexchanges.tex
+ 
+\NeedsTeXFormat{LaTeX2e}
+ 
+\documentclass{ltxguide}
+ 
+\usepackage[T1]{fontenc}
+
+\usepackage{url}
+
+\title{Changes to the \LaTeXe{} format}
+ 
+\author{\copyright~Copyright 2015--2019, \LaTeX3 Project Team.\\
+   All rights reserved.}
+ 
+\date{2019-10-01}
+
+% a few commands from doc 
+\newcommand\Lpack[1]{\mbox{\textsf{#1}}}
+\newcommand\DescribeMacro[1]{\texttt{\string#1}}
+
+\makeatletter % -- provide command introduced in new release
+              %    so this typesets with an old format
+
+\DeclareTextCommandDefault\textcommabelow[1]
+  {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex
+   \hbox{\check@mathfonts\fontsize\ssf@size\z@
+   \math@fontsfalse\selectfont,}\hidewidth}\egroup}
+\makeatother
+ 
+\ifx\href\undefined
+  \newcommand\ghissue[1]{github #1}
+  \newcommand\gnatsissue[1]{gnats #1}
+  \newcommand\ltnewsissue[1]{\LaTeX\ News~#1}
+  \newcommand\sxanswer[1]{\url{https://tex.stackexchange.com\slash a\slash #1}}
+  \newcommand\sxquestion[1]{\url{https://tex.stackexchange.com\slash q\slash #1}}
+\else
+  \newcommand\ghissue[1]{%
+    \href{https://github.com/latex3/latex2e/issues/#1}{github #1}}
+  \newcommand\gnatsissue[1]{%
+    \href{https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/#1}{gnats #1}}
+  \newcommand\ltnewsissue[1]{%
+    \href{https://www.latex-project.org/news/latex2e-news/ltnews#1.pdf}{\LaTeX\ News~#1}}
+  \newcommand\sxanswer[1]{%
+     \url{https://tex.stackexchange.com/a/#1}}
+  \newcommand\sxquestion[1]{%
+     \url{https://tex.stackexchange.com/q/#1}}
+\fi
+
+\begin{document}
+ 
+\maketitle
+ 
+\tableofcontents
+
+\newpage
+ 
+\section{Introduction}
+ 
+This document describes changes that have been made to the
+\LaTeX\ format since the 2014/05/01 \LaTeX\ release.
+
+
+As announced in \ltnewsissue{22}, the 2015 \LaTeX{} release adopts a new
+policy. Improvements and bug fixes will be made to the format sources,
+with the \Lpack{latexrelease} package being available to revert
+changes to use definitions from an earlier format.
+
+
+\section{Changes introduced in 2019-10-01}
+
+Introduced \LaTeX\texttt{-dev} formats for pre testing future \LaTeX{}
+releases. Now there's a \texttt{latex-base-dev} package on CTAN which
+contains a pre-release of the \LaTeXe{} kernel and both \TeX Live and
+MiK\TeX{} include the standard \LaTeX{} executables (\texttt{pdflatex},
+\texttt{lualatex}, etc.) with \texttt{-dev} appended, which use the
+pre-release format.
+
+The handling of Unicode characters was improved by making them safe
+inside \verb|\ref|s and \verb|\label|s, by using \verb|\ifincsname|
+to make these characters safe in these contexts (\ghissue{95}).
+
+In line with the better handling of Unicode characters, file names
+can now contain any Unicode character plus spaces, as these cases
+are now correctly handled by the kernel.
+
+An optional argument was added to the \texttt{filecontents} environment,
+to which a comma-separated list of options can be given. The options
+include \texttt{overwrite} (or \texttt{force}), \texttt{nosearch}, and
+\texttt{noheader} (which has the same effect as the starred form of the
+environment). The environment is now allowed anywhere in the document.
+
+A plethora of \LaTeX{} commands was made robust so that fewer
+\verb|\protect| are needed when using some commands in moving arguments.
+There are a few border cases where it's tricker to make the command
+robust or where it's not worth it to do so, but most reasonable use
+cases are covered. The most notable change was \verb|\begin| and
+\verb|\end|, which are now robust and won't break when used in moving
+arguments.
+
+An extra \verb|\hskip 1sp| was added to \verb|c|-column table cells to
+protect against the presence of an \verb|\unskip| in the table cell
+(\ghissue{102}).
+
+\texttt{U+012F} which is ``i with ogonek'' should produce an
+``i'' and not a ``dotless i''. This has been corrected
+(\ghissue{122}).
+
+The Unicode slots \texttt{27E8} and \texttt{27E9} have been mapped to
+\verb|textlangle| and \verb|textrangle| which is the recommended mapping
+(\ghissue{110}).
+
+Basic ligatures (ff, fi, fl, ffi, ffl, ft, st) can now be input as a
+single unicode character in pdf\TeX, which is useful when copy-pasting
+(\ghissue{154}).
+
+\verb|\InputIfFileExists{foo}{\input{bar}}{}|
+did not load the files \texttt{foo.tex} and \texttt{bar.tex} but
+would load \texttt{bar.tex} twice. This has been corrected (\ghissue{109}).
+
+The \textsf{fncylab} and \textsf{varioref} packages changed \LaTeX's internal
+counter prefix commands \verb|p@...| so that they would take the counter
+value as an argument instead of just acting as a prefix to them. These
+packages also provided the \verb|\labelformat| macro to change the prefix
+macro and \verb|\Ref| so that using counters defined that way in the
+beginning of sentences would have the proper capitalisation. These features
+were added to the \LaTeXe{} kernel.
+
+The kernel now says ``Trying to load\ldots''
+instead of ``Try loading \ldots'' in one of its informal
+messages to match style of similar messages (\ghissue{107}).
+
+\verb|\DeclareErrorFont| would change the font size to 10\,pt which, when
+used in the wrong place, would make incorrect font settings in the document.
+This has now been fixed (\gnatsissue{4399}).
+
+The default action of the file \texttt{nfssfont.tex} was set to produce a
+font table, so that one can simply hit enter instead of having to write
+\verb=\table\bye=.
+
+The \LaTeX{} kernel now provides dummy (empty) definitions for the
+commands \verb|\conditionally@traceoff| and
+\verb|\conditionally@traceon| from the \texttt{trace} package so they
+can be used by package developers without worrying about them being
+defined or not (\ghissue{164}).
+
+
+
+
+
+\section{Changes introduced in 2018-12-01}
+
+Further additions to the characters supported by default in UTF-8.
+The commands \verb|\guillemetleft| and \verb|\guillemetright| are
+provided as alias for the names based on the Adobe font names
+(\ghissue{65}).
+
+The use of potrusion in tables of contents is suppressed by default,
+see \sxquestion{172785}.
+
+The handling of visible space in verbation was adjusted for
+\ghissue{69} and \ghissue{70}.
+
+Spaces are removed from the argument passed to BiBTeX, \ghissue{88}.
+
+New commands \verb|\Hwithstroke| and \verb|\hwithstroke| added to T1 encoding support.
+
+The internal box structure for floats is adjusted to preserve box
+levels of split hyperlinks, avoiding a fatal pdftex error. \ghissue{94}.
+
+
+\section{Changes  introduced in 2018-04-01 patch~5}
+Improved support for non ASCII filenames on the commandline on
+filesystems using legacy encodings.
+
+Adjusted the new package rollback code so that some edge cases where rollback
+can not be guaranteed become a warning not an error.
+
+\section{Changes  introduced in 2018-04-01 patch~4}
+No changes to the format, but \texttt{docstrip} adjusted so that non-ASCII
+\texttt{.ins} files work with the new UTF-8 defaults.
+
+\section{Changes  introduced in 2018-04-01 patch~3}
+Additional adjustments for GitHub issues \ghissue{34} and \ghissue{38}, adjustment to the
+location of some documentation files, such as \texttt{source2e.tex} to
+be installed in the documentation sources not the default \TeX\ input
+tree.
+
+
+\section{Changes  introduced in 2018-04-01 patch~2}
+Additional adjustments for GitHub issues  \ghissue{32} and  \ghissue{33}.
+
+\section{Changes  introduced in 2018-04-01 patch~1}
+Make \verb|\UseRawInputEncoding| and \Lpack{latexrelease} reset \verb|\inputencodingname|
+when disabling the UTF-8 input handling.
+
+\section{Changes  introduced in 2018-04-01}
+Further details of changes at this release are given in \ltnewsissue{28}, but in brief
+the main changes are as listed below.
+
+The default encoding for files has been changed to UTF-8.
+
+A new possibility to refer to older versions of packages has been added.
+
+New commands previously available in \Lpack{remreset} and
+\Lpack{chngcntr} packages for controlling counters have been added.
+
+The definition of \verb|\@ifundefined| has been refined to use the e-\TeX \verb|\ifcsname|
+primitive when available, and to avoid defining the command being tested to be \verb|\relax|
+in the case that it was previously undefined.
+
+\section{Changes  introduced in 2017-04-15}
+Optionally, \LaTeX{} format and package dates may use ISO style dates with
+\texttt{-}  rather than \texttt{/}.
+
+For Unicode \TeX{}s, made further adjustments to the composite accent
+code in \texttt{tuenc.def}, and further updates tracking changes in
+Lua\TeX, now at 1.04.
+
+Previously defining an encoding-specific composite with an undeclared
+accent (or an accent declared later) gave no error, but did nothing useful.
+\LaTeX\ will now detect this and give the accent comamnd a default definition
+as an error, allowing the declared composite to work as intended.
+
+The definition of \verb|\-| is adjusted to match the comments in
+\gnatsissue{3855} to accomodate non standard settings of \verb|\hyphenchar|.
+
+In parboxes and similar settings, \verb|\lineskiplimit| is now
+reset (to the existing default value, \verb|\normallineskiplimit|).
+See \sxanswer{359934}.
+
+ The code for verb|\newpage| has been adjusted to add a test on the value of
+\verb|\prevdepth| so that the depth of the last line is preserved in
+forced page breaks.
+
+\section{Changes  introduced in 2017/01/01 patch~3}
+Emergency patch to correct a typo in a change introduced in patch~2.
+
+\section{Changes  introduced in 2017/01/01 patch~2}
+More adjustments for TU encoding, allowing for characters missing in
+common system fonts. Additional \texttt{fd} files
+for Latin Modern variants are included in the documented sources.
+
+\section{Changes  introduced in 2017/01/01 patch~1}
+Fixes to TU encoding definitions for Lua\TeX\ and Xe\TeX.
+
+\section{Changes  introduced in 2017/01/01}
+
+A new test is added during format making that e\TeX\ extensions are
+available. As noted in \LaTeX\ news, e\TeX\ will now be required to
+build \LaTeX.
+ 
+Further updates tracking changes for Lua\TeX~1.0.
+
+The definition of \verb|\showhyphens| is changed in formats built
+with Xe\TeX, as the original version, inherited from plain \TeX\ does
+not work with Xe-\TeX.
+
+Changes to the default encoding used by Lua\TeX\ and Xe\TeX\ formats to
+be TU (Unicode) rather than OT1 (7 bit legacy \TeX\ encoding).
+
+\section{Changes  introduced in 2016/03/31 patch~3}
+Fixes to \verb|\newinsert| and \verb|\extrafloats|.
+
+\section{Changes  introduced in 2016/03/31 patch~2}
+Adjustments to \verb|\c{g}| in OT1 encoding.
+
+\section{Changes  introduced in 2016/03/31 patch~1}
+Adjust the upper limit for Character Class allocation in Xe-\TeX\ to
+4096 to match a change in Xe-\TeX.
+
+\section{Changes  introduced in 2016/03/31}
+Modify picture mode as suggested in latex/4452 to avoid leaders of
+almost zero length.
+
+Modify the checks in \verb|\DeclareMathSymbol| and related commands
+so that they do not give errors with new Lua\TeX\ releases.
+
+\section{Changes  introduced in 2016/02/01}
+Adjustments to Lua\TeX\ support to match changes to the Lua\TeX\ engine,
+and to the character class allocation in Xe\TeX.
+
+Load Unicode data from new generic \texttt{unicode-data} distribution.
+
+\section{Changes  introduced in 2015/10/01 patch~2}
+
+This release fixes the behaviour of the allocation mechanism if the switch
+from the standard to extended pool takes place within a group.
+
+\section{Changes  introduced in 2015/10/01 patch~1}
+This release allows \Lpack{latexrelease} to revert the 
+Lua\TeX{}-specific
+changes, in particular fixing an incorrect date in part of the mechanism and
+adding a method to disable callback management entirely.
+
+\section{Changes  introduced in \LaTeX\ 2015/10/01}
+
+\subsection{LuaTeX allocation}
+Almost all changes at this release relate to incorporating allocation macros for luatex into the format
+as done for etex and xetex in 2015/01/01. For details see |ltluatex.dtx| or \ltnewsissue{22}.
+|ltluatex.dtx| now forms a new chapter (N) in the documented sources, |source2e.tex|.
+
+
+\subsection{Increased number of floats}
+The default float list has been increased from 18 to 52 registers if
+e\TeX\ is available.
+The list can be increased further using |\extrafloats| however this
+default allocation uses classic registers below 256 so the registers are
+also available for |\newinsert| as described below.
+
+\subsection{Improved \texttt{\textbackslash newinsert}}
+The command |\newinsert| has been extended to take registers from the lists of free float
+registers once the classic register allocation is used up. This should make it highly unlikely
+to get ``no room'' errors on register allocation assuming the format is used with
+an e-\TeX\ based \TeX\ engine.
+
+\subsection{New accent, \texttt{\textbackslash textcommabelow} (pr/4414)}
+The command |\textcommabelow| has been added. This is mainly intended for Romanian letters
+\textcommabelow{S}\,\textcommabelow{s}\,\textcommabelow{T}\,\textcommabelow{t}.
+
+\subsection{Unicode 8}
+The file |unicode-letters.def| used to initialise character data in
+Unicode \TeX\ variants has been regenerated from data files updated
+to Unicode~8.
+
+\section{Changes  introduced in 2015/01/01 patch~2}
+There were no changes to the format at this release, but the sources were fixed to fix bug latex/4434
+affecting bottom float positioning if the \Lpack{latexrelease} package was used.
+
+\section{Changes  introduced in 2015/01/01 patch~1}
+This release re-introduces the ``Patch Level'' scheme for identifying
+releases between main ``dated'' releases. Early \LaTeXe\ releases
+included a mechanism whereby updates could be provided by a 
+\emph{patch
+  file}. This was mainly intended to allow updates to be made without
+downloading the full sources again, which was an important
+consideration with download speeds and costs at the time.
+
+The new mechanism incorporates any changes directly into the sources,
+but having the patch level identified in the banner allows the
+\LaTeX\ release to be identified, even if (as in this case) most of the
+changes do not affect the format but affect other base packages such
+as \Lpack{latexrelease} and \Lpack{inputenc}. The patch level is shown
+in the banner at the start of the job, but does not affect the date
+handling of the |\IncludeInRelease| mechanism.
+
+Apart from re-arranging the version banner, the only change in the
+format is that |\newtoks| was accidentally defined twice, using the
+old and new allocation scheme described in Section \ref{e@alloc}.
+The old definition is now only in the \Lpack{latexrelease} package,
+for use when emulating old formats.
+
+
+
+
+\section
+[Changes between  \LaTeX\ releases 2014/05/01 and 2015/01/01]
+{Changes between \LaTeX\ releases 2014/05/01 and 2015/01/01\footnote{Much of this text
+is taken from \Lpack{fixltx2e} package which was formerly used to make such changes available separately.}}
+
+\subsection{Support for \LaTeX\ version changes}
+\DescribeMacro{\includeInRelease}\arg{date}\oarg{date}\arg{label}\arg{message}\arg{code}
+
+\smallskip
+
+The |\includeInRelease| command has been added to support backward and
+forward compatibility for the \LaTeX\ format. It supports the
+declaration of conditional code that can be loaded based on options
+given to the \Lpack{latexrelease} package. Its use is described in
+detail in the \Lpack{latexrelease} package documentation.
+
+\subsection{New Allocation Code\label{e@alloc}}
+Previously |\newcount| and related commands were based on classic TeX
+and only allocated in the range 0--255. This was extended (in
+different ways) for e-\TeX\ in the |etex| package and in the
+|xelatex.ini| and |lualatex.ini| files used in those formats. Related
+to this the number of boxes allocated to store floats was
+limited. This was extended to a certain extent in the |morefloats|
+package (by Don Hosek and H.-Martin Muench) but the new allocation
+incorporates float allocation directly and supports much larger float
+lists using the extended registers.
+
+The new code allocates registers in the full extended range (
+$2^{15}-1$ for etex and xelatex, $2^{16}-1$ for lualatex.
+In addition a new command |\extrafloats| is provided.
+
+\DescribeMacro{\extrafloats}\arg{number}
+\smallskip
+
+This allocates additional registers for the \LaTeX\ float system to
+hold figures and tables etc. Similar functionality has been
+available via the \Lpack{morefloats} package but this is a different
+implementation using extended e-\TeX\ registers when available so
+allows many more registers to be reserved for floats as they are
+allocated from a pool of 32 or 64 thousand rather than 256 registers,
+depending on the engine in use.
+
+\DescribeMacro{\newmarks}\arg{command}
+\smallskip
+
+e-\TeX\ only, previously available via the \Lpack{etex} package.
+Allocates commands to use the extended  e-\TeX\ mark mechanism.
+
+\DescribeMacro{\newXeTeXintercharclass}\arg{command}
+\smallskip
+
+Xe-\TeX\ only, previously in the Xe-\LaTeX\ format, but added via
+|xelatex.ini| not part of the core release. 
+Allocates commands to use the Xe-\TeX\ character class mechanism.
+
+
+\subsection{e-\TeX\ tracing if available}
+|\loggingall| (Usually used via |\tracingall|) is extended to enable
+additional e-\TeX\ tracing if e-\TeX\ is available. (|\tracingall|
+extension has been available as part of the |etex| package previously).
+
+Also based on code from the |etex| package, a command |\tracingnone|
+is added to reverse the effects of |\tracingall| and turn off all primitive
+\TeX\ tracing. A new command |\hideoutput| has been  added which resets the
+tracing parameters set by |\showoutput|.
+
+
+
+
+\subsection{\texttt{\textbackslash textsubscript} not defined in
+   latex.ltx (pr/3492)}
+
+\begin{verbatim}
+>>Number:         3492
+>>Category:       latex
+>>Synopsis:       \textsubscript not defined in latex.ltx
+>>Arrival-Date:   Tue Jan 14 23:01:00 CET 2003
+>>Originator:     Ionel Mugurel Ciobica
+
+I use \textsubscript much more often than \textsuperscript, and
+\textsubscript it is not defined in latex.ltx. Could you please
+consider including the definition of \textsubscript in the latex.ltx
+for the next versions of LaTeX.    Thank you.
+\end{verbatim}
+
+\subsection{\texttt{\textbackslash @} discards spaces when moving
+            (pr/3039)}
+
+\begin{verbatim}
+>>Number:         3039
+>>Category:       latex
+>>Synopsis:       \@ discards spaces when moving
+>>Arrival-Date:   Sat May 22 09:01:06 1999
+>>Originator:     Donald Arseneau
+>>Description:
+The \@ command expands to \spacefactor\@m in auxiliary files,
+which then ignores following spaces when it is reprocessed.
+\end{verbatim}
+
+\subsection{1-col fig can come before earlier 2-col fig
+           (pr/2346)}
+
+\begin{verbatim}
+>>Number:         2346
+>>Category:       latex
+>>Synopsis:       2-col: 1-col fig can come before earlier 2-col fig
+>>Arrival-Date:   Wed Dec 18 15:41:07 1996
+>>Originator:     bil kleb
+>>Description:
+as documented in Lamport's book, p. 198, concerning figure
+placement, "a figure will not be printed before an earlier
+figure, and a table will not be printed before an earlier
+table."  however, there is a footnote stating, "However,
+in two-column page style, a single-column figure can come before
+an earlier double-column figure, and vice versa."
+
+This twocolumn behavior is undesirable---at least by me and
+most professional organizations i publish in.  ed snyzter developed
+a hack fix for 2.09 several years ago which links the two
+counters, but i have not run across a similar "fix" for 2e...
+\end{verbatim}
+
+Originally fixed in package \Lpack{fix2col} which was merged into
+this package. Documentation and code from this package have been
+merged into this file.
+
+\subsubsection{Notes on the Implementation Strategy}
+
+The standard output routine maintains two lists of floats that have
+been `deferred' for later consideration. One list for single column
+floats, and one for double column floats (which are always
+immediately put onto their deferred list). This mechanism means
+that \LaTeX\ `knows' which type of float is contained in each box
+by the list that it is processing, but having two lists means
+that there is no mechanism for preserving the order between the
+floats in each list.
+
+The solution to this problem consists of two small changes to
+the output routine.
+
+Firstly, abandon the `double column float list' |\@dbldeferlist|
+and change every command where it is used so that instead the
+same |\@deferlist| is used as for single column floats.
+That one change ensures that double and single column floats
+stay in the same sequence, but as \LaTeX\ no longer `knows'
+whether a float is double or single column, it will happily
+insert a double float into a single column, overprinting the
+other column, or the margin.
+
+The second change is to provide an alternative mechanism for
+recording the two column floats. \LaTeX\ already has a compact
+mechanism for recording float information, an integer count register
+assigned to each float records information about the `type' of float
+`figure', `table' and the position information `htp' etc.
+
+The type information is stored in the `high' bits, one bit position
+(above `32') allocated to each float type. The `low' bits store
+information about the allowed positions, one bit each allocated for
+|h t b p|.  In the \LaTeX2.09 system, the bit corresponding to `16'
+formed a `boundary' between these two sets of information, and it
+was never actually used by the system. Ed Sznyter's
+\Lpack{fixfloats} package not unreasonably used this position to
+store the double column information, setting the bit for double
+column floats. Then at each point in the output routine at which a
+float is committed to a certain region, an additional check must be
+made to check that the float is (or is not) double column. If it
+spans the wrong number of columns it is deferred rather than being
+added.
+
+Unfortunately the bit `16' is not available in \LaTeXe. It is used
+to encode the extra float position possibility `|!|' that was added
+in that system. It would be possible to use position `32' and to
+move the flags for `table', `figure',\ldots\ up one position, to
+start at 64, but this would mean that in principle one less float
+type would be supported, and more importantly is likely to break
+any other packages that assume anything about the output routine
+internals. So here I instead use another mechanism for flagging
+double column floats: By default all floats have depth 0pt.
+This package arranges that double column ones have depth 1sp.
+This information may then be used in the same manner as in
+the \Lpack{fixfloats} package, to defer any floats that are not of
+the correct column spanning type.
+
+
+
+\subsection{Infinite glue found (pr/4023 and pr/2346)}
+
+The fix for pr/2346 did not work as intended when used in conjunction
+with |\enlargethispage| as the latter introduced an infinite negative
+glue at the bottom of the page. That in turn make a |\vsplit|
+operation to get at the column marks invalid.
+
+\subsection{Wrong header for twocolumn (pr/2613)}
+
+\begin{verbatim}
+>>Number:         2613
+>>Category:       latex
+>>Synopsis:       wrong headline for twocolumn
+>>Arrival-Date:   Mon Sep 22 16:41:09 1997
+>>Originator:   Daniel Reischert
+>>Description:
+When setting the document in two columns
+the headline shows the top mark of the second column,
+but it should show the top mark of the first column.
+\end{verbatim}
+
+Originally fixed in package \Lpack{fix2col} which was merged into
+this package. Documentation and code from this package have been
+merged into this file.
+
+\subsubsection{Notes on the Implementation Strategy}
+
+The standard \LaTeX\ twocolumn system works internally by making
+each column a separate `page' that is passed independently to \TeX's
+page breaker. (Unlike say the \Lpack{multicol} package, where all
+columns are gathered together and then split into columns later,
+using |\vsplit|.) This means that the primitive \TeX\ marks that are
+normally used for header information, are globally reset after the
+first column. By default \LaTeX\ does nothing about this.
+A good solution is provided by Piet van Oostrum (building on earlier
+work of Joe Pallas) in his \Lpack{fixmarks} package.
+
+After the first column box has been collected the mark information
+for that box is saved, so that any |\firstmark| can be
+`artificially' used to set the page-level marks after the second
+column has been collected. (The second column |\firstmark| is not
+normally required.) Unfortunately \TeX\ does not provide a direct
+way of knowing if any marks are in the page, |\firstmark| always has a
+value from previous pages, even if there is no mark in this page.
+The solution is to make a copy of the box and then |\vsplit| it
+so that any marks show up as |\splitfirstmark|.
+
+The use of |\vsplit| does mean that the output routine will globally
+change the value of |\splitfirstmark| and
+|\splitbotmark|. The \Lpack{fixmarks} package goes to some trouble
+to save and restore these values so that the output routine does
+\emph{not} change the values. This part of \Lpack{fixmarks} is not
+copied here as it is quite costly (having to be run on every page) and
+there is no reason why anyone writing code using |\vsplit| should
+allow the output routine to be triggered before the split marks have
+been accessed.
+
+
+
+\subsection{\texttt{\textbackslash setlength} produces error if
+  used with registers like \texttt{\textbackslash dimen0} (pr/3066)}
+
+\begin{verbatim}
+>>Number:         3066
+>>Category:       latex
+>>Synopsis:       \setlength{\dimen0}{10pt}
+>>Arrival-Date:   Tue Jul  6 15:01:06 1999
+>>Originator:     Heiko Oberdiek
+>>Description:
+The current implementation of \setlength causes an error,
+because the length specification isn't terminated properly.
+More safe:
+\def\setlength#1#2{#1=#2\relax}
+\end{verbatim}
+
+\subsection{Fewer fragile commands}
+
+\begin{verbatim}
+>>Number:         3816
+>>Category:       latex
+>>Synopsis:       Argument of \@sect has an extra }.
+>>Arrival-Date:   Sat Oct 22 23:11:01 +0200 2005
+>>Originator:     Susanne Wunsch
+
+Use of a \raisebox in \section{} produces the error message
+mentioned in the subject.
+
+PR latex/1738 described a similar problem, which has been solved
+10 years ago. Protecting the \raisebox with \protect solved my
+problem as well, but wouldn't it make sense to have a similar fix
+as in the PR?
+
+It is particularly confusing, that an unprotected \raisebox in a
+\section*-environment works fine, while in a \section-environment
+produces error.
+\end{verbatim}
+
+While not technically a bug, in this day and age there are few
+reasons why commands taking optional arguments should not be robust.
+
+\subsubsection{Notes on the implementation strategy}
+
+Rather than changing the kernel macros to be robust, we have decided
+to add the macro \DescribeMacro{\MakeRobust}|\MakeRobust| in
+\Lpack{fixltx2e} so that users can easily turn fragile macros into
+robust ones. A macro |\foo| is made robust by doing the simple
+|\MakeRobust{\foo}|. \Lpack{fixltx2e} makes the following kernel
+macros robust: |\(|, |\)|, |\[|, |\]|,
+ |\makebox|, |\savebox|,
+|\framebox|, |\parbox|, |\rule| and |\raisebox|.
+
+\ldots TODO \ldots  fleqn vesion of |\[\]| 
+
+\subsection{\texttt{\textbackslash addpenalty} ruins flush-bottom (pr/3073)}
+
+\begin{verbatim}
+>>Number:         3073
+>>Category:       latex
+>>Synopsis:       \addpenalty ruins flush-bottom
+>>Arrival-Date:   Sat Jul 17 05:11:05 1999
+>>Originator:     Donald Arseneau
+>>Description:
+Just to keep in mind for further development eh?
+A page break at an \addpenalty after \vspace does *not*
+give a flush-bottom page.  (The intent of \addpenalty is
+apparently just to preserve the flush bottom by putting
+the breakpoint `above' the skip.)
+\end{verbatim}
+
+\subsection{Within counters only reset next level down (pr4393)}
+
+This is actually implicitly documented behavior in the \LaTeX{}
+Manual that states that |\stepcounter| resets all counters marked
+``within''. However it means that if, for example, theorems are
+numbered within sections and you start a new chapter in a book, the
+section counter is reset to zero but the theorem counter is not
+until the first section appears. Thus a theorem directly within the
+chapter body (without a new section) would show an incremented
+number relative to the last theorem of the previous chapter.
+
+
+For this reason we are now resetting all levels of within in one go
+even if that means that some of these resets may happen several times
+unnecessarily.
+
+
+\subsection{Check the optional arguments of floats}
+
+By default LaTeX silently ignores unknown letters in the optional
+arguments of floats. |\begin{figure}[tB]| the |B| is ignored so it
+acts like |\begin{figure}[t]| However |\begin{figure}[B]| does
+\emph{not} act like |\begin{figure}[]| as the check for an empty
+argument, or unsupplied argument, is earlier. |[]| causes the
+default float placement to be used, but |[B]| means that \emph{no}
+float area is allowed and so the float will not be placed until the
+next |\clearpage| or end of document, no warning is given.
+
+This package adds a check on each letter, and if it not one of
+|!tbhp| then an error is given and the code acts as if |p| had been
+used, so that the float may be placed somewhere.
+
+\subsection{\texttt{\textbackslash DeclareMathSizes} only take pts.
+    (pr/3693)}
+
+\begin{verbatim}
+>>Number:         3693
+>>Category:       latex
+>>Synopsis:       \DeclareMathSizes only take pts.
+>>Arrival-Date:   Fri Jun 11 16:21:00 CEST 2004
+>>Originator:     Morten Hoegholm
+
+The last three arguments of \@DeclareMathSizes cannot take a dimension
+as argument, making it inconsistent with the rest of the font changing
+commands and itself, as the second argument can take a dimension
+specification.
+\end{verbatim}
+
+\subsection{No hyphenation in first word after float environment (pr/3498)}
+
+\begin{verbatim}
+>>Number:         3498
+>>Category:       latex
+>>Synopsis:       No hyphenation in first word after float environment
+>>Arrival-Date:   Thu Jan 30 13:21:00 CET 2003
+>>Originator:    Harald Harders
+
+If a float environment (figure, table) is written within a paragraph,
+the first word after the environment is not hyphenated.
+\end{verbatim}
+
+\subsection{\texttt{\textbackslash fnsymbol} should use text symbols
+    (pr/3400)}
+
+\begin{verbatim}
+>>Number:         3400
+>>Category:       latex
+>>Synopsis:       \fnsymbol should use text symbols if possible
+>>Arrival-Date:   Fri Jan 04 20:41:00 CET 2002
+>>Originator:     Walter Schmidt
+
+The \fnsymbol command can be used in both text and math
+mode.  The symbols produced are, however, always taken from
+the math fonts.  As a result, they may not match the text
+fonts, even if the symbols are actually available, for
+instance from the TS1 encoding.  Since \fnsymbol is
+primarily used for footnotes in text, this should be fixed,
+IMO.
+\end{verbatim}
+
+
+
+
+
+\subsection{\texttt{\textbackslash footnotemark}[x] crashes with fixltx2e.sty
+   (pr/3752)}
+
+\begin{verbatim}
+>>Number:         3752
+>>Category:       tools
+>>Synopsis:       feature \footnotemark[x] crashes with fixltx2e.sty
+>>Arrival-Date:   Fri Dec 17 10:11:00 +0100 2004
+>>Originator:     Stefan Pofahl
+
+ If I use /fnsymbol together with fixltx2e.sty I can not use
+ optional parameter [num]
+ \footnotemark[1] is not showing the mark number 1 but
+ the mark \value{footnote}.
+\end{verbatim}
+This bug was related to pr/3400, where |\@fnsymbol| was made robust.
+
+\subsubsection{Notes on the implementation strategy}
+
+Pr/3400 made |\@fnsymbol| decide between text-mode and math-mode,
+which requires a certain level of robustness somewhere as the
+decision between text and math must be made at typesetting time and
+not when inside |\protected@edef| or similar commands. One way of
+dealing with this is to make sure the value seen by |\@fnsymbol| is
+a fully expanded number, which could be handled by code such as
+\begin{verbatim}
+\def\fnsymbol#1{\expandafter\@fnsymbol
+  \expandafter{\the\csname c@#1\endcsname}}
+\end{verbatim}
+This would be a good solution if everybody used the high level
+commands only by writing code like |\fnsymbol{footnote}|. Unfortunately
+many classes (including the standard classes) and packages use the
+internal forms directly as in |\@fnsymbol\c@footnote| so the easy
+solution of changing |\fnsymbol| would break code that had worked for
+the past 20~years.
+
+Therefore the implementation here makes |\@fnsymbol| itself a
+non-robust command again and instead uses a new robust command
+\DescribeMacro{\TextOrMath}|\TextOrMath|, which will take care of
+typesetting either the math or the text symbol. In order to do so,
+we face an age old problem and unsolvable problem in \TeX: A
+reliable test for math mode that doesn't destroy
+kerning. Fortunately this problem can be solved when using e\TeX\ so
+if you use this as engine for your \LaTeX\ format, as recommended by
+the \LaTeX3 Project, you will get a fully functioning |\TextOrMath|
+command with no side effects. If you use regular \TeX\ as engine for
+your \LaTeX\ format then we have to choose between the lesser of two
+evils: 1)~breaking ligatures and preventing kerning or 2)~face the
+risk of choosing text-mode at the beginning of an alignment cell,
+which was supposed to be math-mode. We have decided upon 1) as is
+customary for regular robust commands in \LaTeX.
+
+
+ 
+\end{document}
-- 
cgit v1.2.3

