diff options
Diffstat (limited to 'macros/latex-dev/base/latexchanges.tex')
-rw-r--r-- | macros/latex-dev/base/latexchanges.tex | 1025 |
1 files changed, 0 insertions, 1025 deletions
diff --git a/macros/latex-dev/base/latexchanges.tex b/macros/latex-dev/base/latexchanges.tex deleted file mode 100644 index 933ea48ddb..0000000000 --- a/macros/latex-dev/base/latexchanges.tex +++ /dev/null @@ -1,1025 +0,0 @@ -% \iffalse meta-comment -% -% Copyright (C) 2015-2021 -% The LaTeX 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--2021, \LaTeX\ Project Team.\\ - All rights reserved.} - -\date{2021-06-08} - -% a few commands from doc -\newcommand\Lpack[1]{\mbox{\textsf{#1}}} -\newcommand\DescribeMacro[1]{\texttt{\string#1}} - -\newcommand\pkg[1]{\texttt{#1}} -\newcommand\cs[1]{\texttt{\textbackslash #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 - - -\setcounter{tocdepth}{1} % don't show subsections - - -\begin{document} - -\maketitle - -\begin{abstract} -This document describes changes that were made to the -\LaTeX\ format since the 2014-05-01 \LaTeX\ releases. - - -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. - -As a summary of changes for a main release will always be available in -\LaTeX\ News, detailed changes are not repeated in this document, -but changes in any patch releases will be listed in more -detail here. - -More detailed change logs are available as -\texttt{changes.txt} in the base distribution, and full code - differences may be browsed via the code repository on GitHub -see for example -\url{https://github.com/latex3/latex2e/commits/master}. -\end{abstract} - -\tableofcontents - -\newpage - -%\section{Introduction} - -\section{Changes introduced in 2021-06-01 patch~1} - -A further refinement to the handling of ``raw'' option lists added -in the last release, see \ghissue{508}. - -Fixes an issue with rollback when \pkg{latexrelease} is loaded by some -other package (as done for \texttt{platex} (\ghissue{577}). - -First aid for \pkg{ulem} and \pkg{varwidth} got added to help them -along until they get corrected. \pkg{ulem} has a problem with the -improved definition of \cs{hspace} and \pkg{varwidth} chokes on a -newly introduced glue item in vertical lists, which is needed for -paragraph hook handling (\ghissue{583}). - - -\section{Changes introduced in 2021-06-01} - -The focus of this release is to provide further important building -blocks for the future production of reliable tagged PDF output. Many -other improvements have been made. Please see \ltnewsissue{33} for an -overview of the new features and the change log in -\texttt{changes.txt} for a more detailed list of individual changes. - -\section{Changes introduced in 2020-10-01 patch~4} - -This patch fixed two bugs in the hook management: if debugging for the -L3 programming layer was turned on it reported inconsistent use of -local/global variables. This was a spurious warning but nevertheless -disconcerting (\ghissue{463}). The other bug was more serious, in some -situations a wrong value of \verb=\CurrentFile= inside of file-related hooks -could lead to errors (\ghissue{464}). - -We also added the documentation file \texttt{usrguide3.pdf} which -will become the main home for documenting new features of \LaTeX. At -this point in time it covers the \Lpack{xparse} functionality that has -been added to the kernel. - -\section{Changes introduced in 2020-10-01 patch~3} - -This patch fixed some rollback issues that prevented successful -rollback to other release levels in some cases. It also fixed an issue -with file hooks involving files with explicit paths (\ghissue{422}). - -One important change was to handle hook declarations done in the -document preamble in a special way, e.g., those done with -\verb=\AtBeginDocument=. They are now always executed last and are not -subject to the normal code sorting for hooks, because they are nearly always -needed to overwrite earlier settings made in packages. - -Finally, the NFSS series handling was slightly changed to -automatically drop surplus ``\texttt{m}''s from series specifications -when needed (and warn about them when encountered), e.g., -``\texttt{mc}'' automatically becomes ``\texttt{c}'' which is the -official NFSS name for a \emph{medium compact} series (\ghissue{453}). -This was done to improve the fix in 2020-02-02 PL~5. - -\section{Changes introduced in 2020-10-01 patch~2} - -This patch fixed the passing of options to packages and classes when -they are stored in a special place (denoted by \verb=\input@path=) -instead of their normal location (\ghissue{414}). In that case the -options got lost. - -\section{Changes introduced in 2020-10-01 patch~1} - -This patch fixed a file handling issue: to allow for spaces in file -names quotes were used but this upsets Bib\TeX{} (\ghissue{400}). In -addition, two rollback issues got corrected. - -\section{Changes introduced in 2020-10-01} - -Major enhancements in this release include pre-loading of the -\Lpack{xparse} package for producing document-level commands with more -complicated argument signatures and the new hook management system for -\LaTeX{} documented in \texttt{lthooks-doc.pdf}, -\texttt{ltfilehook-doc.pdf} and \texttt{ltshipout-doc.pdf}. - -In addition there have been many smaller fixes and enhancements. -Please see \ltnewsissue{32} for an overview of the new features and -the change log in \texttt{changes.txt} for a more detailed list of -individual changes. - -\section{Changes introduced in 2020-02-02 patch~5} - -The patch~4 dropped a bit too much in certain situations, e.g., it -changed a series value of \texttt{semibold} (as used by -\texttt{autoinst}) to \texttt{seibold}, rendering it useless. So we -now only correct series values if they are a member of the -following list: \texttt{ulm}, \texttt{elm}, \texttt{lm}, \texttt{slm}, -\texttt{mm}, \texttt{sbm}, \texttt{bm}, \texttt{ebm}, \texttt{ubm}, -\texttt{muc}, \texttt{mec}, \texttt{mc}, \texttt{msc}, \texttt{msx}, -\texttt{mx}, \texttt{mex} or \texttt{mux}. Here we assume that people -intended to follow the NFSS convention but somehow got it wrong. So we -drop one ``m'' and also add a warning that the -\verb=\DeclareFontShape= declaration in question should be updated -(\ghissue{293}). - - -\section{Changes introduced in 2020-02-02 patch~4} - -In some cases the \texttt{filecontents} environment was opening the -file for writing without quoting it, so that files with spaces failed -(\ghissue{284}). - -Ensure that \verb=\DeclareFontShape= drops surplus ``m'' in situations -where an \texttt{.fd} incorrectly specifies \texttt{mc} instead of -\texttt{c}, etc.\ (\ghissue{289}). - -\section{Changes introduced in 2020-02-02 patch~3} - -Support the following scenario: -\begin{verbatim} -\fontfamily{ptm}\selectfont text \textbf{\sffamily bold sans text} -\end{verbatim} -The default bold series for \texttt{ptm} is \texttt{b} so -\verb=\textbf= switches to that. The \verb=\sffamily= then tried to -find \texttt{OT1/cmss/b/n} which doesn't exist instead of first -altering the series default to use \texttt{bx} as needed for Computer -Modern Sans Serif. This has now been corrected (\ghissue{277}). - - -\section{Changes introduced in 2020-02-02 patch~2} - -Correct \verb=\capitalacute=, etc.\ so that they work in -\texttt{tabbing} (\ghissue{271}). Provide \verb=\@defaultfamilyhook= to -support CJK packages (\ghissue{269}). Provide a list of \texttt{fontenc} -loads with their options in \verb=\@fontenc@load@list= so that Babel -can determine the right \verb=\latinencoding= value (\ghissue{273}). - - -\section{Changes introduced in 2020-02-02 patch~1} - -Fixed a misspelled command name that caused trouble (\ghissue{264}). Make -\texttt{textcomp} package issue only info messages about glyph -substitutions (\ghissue{262}) and warn if it attempts to run in an old format (\ghissue{260}). - -\section{Changes introduced in 2020-02-02} - -Major enhancements in this release include pre-loading \Lpack{expl3} -to improve startup times, especially with Lua\TeX\ and Xe\TeX, and -extra features in the font selection mechanism. Please see -\ltnewsissue{31} for an overview of the new features and the change -log in \texttt{changes.txt} for a more detailed list of individual -changes. - - -\section{Changes introduced in 2019-10-01 patch~3} - -Further fixes to the handling of filenames, expand macros (and -\verb|\jobname| \emph{before} removing \verb|"|, not after. - -\section{Changes introduced in 2019-10-01 patch~2} - -Further fixes to the handling of filenames, \ghissue{204}: non-ascii -filenames and filenames with spaces and multiple dots should now work -in \verb|\includegraphics|. - -Reclassify some luatex callbacks. Other fixes for Issues raised: -\ghissue{198}, \ghissue{201}, \ghissue{202}, \ghissue{205}. - -\section{Changes introduced in 2019-10-01 patch~1} - -Adjustments to \verb|\set@curr@file|, and \verb|\@extracolsep|. - -Added missing \verb=\else= branch in \texttt{nfssfont} so that -\verb=\action= is executed if provided. - -\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 capitalization. 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 two -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 verbatim 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 command line 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 command 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 accommodate 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 behavior 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 initialize 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 \LaTeX\ 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} |