[latex3-commits] [git/LaTeX3-latex3-latex2e] develop: additions to ltnews31; compatibility rule for \upshape; \fontshapeforce and \fontseriesforce added (cd3c2aab)

Frank Mittelbach frank.mittelbach at latex-project.org
Wed Jan 8 14:35:58 CET 2020

Repository : https://github.com/latex3/latex2e
On branch  : develop
Link       : https://github.com/latex3/latex2e/commit/cd3c2aab9f74ecb1a02b607ccad45e35875c80c3


commit cd3c2aab9f74ecb1a02b607ccad45e35875c80c3
Author: Frank Mittelbach <frank.mittelbach at latex-project.org>
Date:   Wed Jan 8 14:35:58 2020 +0100

    additions to ltnews31; compatibility rule for \upshape; \fontshapeforce and \fontseriesforce added


 .gitignore            |  2 ++
 base/doc/ltnews31.tex | 38 ++++++++++++++++++++++++++++++++++++--
 base/ltfssaxes.dtx    | 42 +++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 79 insertions(+), 3 deletions(-)

diff --git a/.gitignore b/.gitignore
index f87ea66e..afc5e7f7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,8 @@
diff --git a/base/doc/ltnews31.tex b/base/doc/ltnews31.tex
index a6f21148..321dd947 100644
--- a/base/doc/ltnews31.tex
+++ b/base/doc/ltnews31.tex
@@ -209,7 +209,16 @@ Using \cs{upshape} will still change italics or slanted back to an
 upright shape but will not any longer alter the small caps setting. To
 change small capitals back to upper/lower case you can now use
 \cs{ulcshape} (or \cs{textulc}) which in turn will not change the font
-with respect to italics, slanted or swash. Finally, if you want to
+with respect to italics, slanted or swash.
+There is one exception: for compatibility reasons \cs{upshape} will
+change small capitals back to upright (\texttt{n} shape), if the
+current shape is \texttt{sc}. This is done so that something like
+\cs{scshape}\allowbreak\texttt{...}\allowbreak\cs{upshape} continues
+to work, but we suggested that you don't use that deprecated method in
+new documents.
+Finally, if you want to
 reset the shape back to normal you can use \cs{normalshape} which is a
 shorthand for \cs{upshape}\cs{ulcshape}.
@@ -482,6 +491,25 @@ typesetting was used.
+\subsection{Allow more write streams with   \texttt{filecontents} in \LuaTeX}
+\section{Changes to packages in the \pkg{graphics} category}
+\subsection{Make color/graphics user-level commands robust}
 \section{Changes to packages in the \pkg{tools} category}
@@ -513,15 +541,21 @@ registers available.
+\subsection{Allow spaces in \cs{hhline} arguments}
-\section{Changes to packages in the \pkg{amsmath} category}
+\section{Changes to packages in the \pkg{amsmath} category}
 \section{Documentation updates}
diff --git a/base/ltfssaxes.dtx b/base/ltfssaxes.dtx
index 225cf649..62c97f38 100644
--- a/base/ltfssaxes.dtx
+++ b/base/ltfssaxes.dtx
@@ -682,6 +682,18 @@
 % \subsection{Changing to a new series}
+%  \begin{macro}{\fontseriesforce}
+%    To change unconditionally to a new series you can use
+%    \cs{fontseriesforce}. If course, if the series doesn't exist for
+%    the current family substitution still happens, but there is not
+%    dependency on the current series.
+%    \begin{macrocode}
+\DeclareRobustCommand\fontseriesforce[1]{\edef\f at series{#1}}
+%    \end{macrocode}
+%  \end{macro}
 %  \begin{macro}{\fontseries}
 %    The \cs{fontseries} command takes one argument which is the requested new
 %    font series. In the orginal implementation  it simply saved the
@@ -981,7 +993,26 @@
 \DeclareFontShapeChangeRule {sc}{sw}  {scsw}  {sw}   
 %\DeclareFontShapeChangeRule {sc}{sc}  {sc}    {}
 \DeclareFontShapeChangeRule {sc}{ulc} {n}     {}
-\DeclareFontShapeChangeRule {sc}{up} {sc}     {}
+%    \end{macrocode}
+%    The next rule might be a bit surprising and rightly so. Correct
+%    would be that \texttt{sc} is not affected by \texttt{up}, i.e.,
+%    remains \texttt{sc} as showed in the commented out rule. However,
+%    for nearly three decades commands such as \upshape{sc} or
+%    \cs{textup} changed small caps back to the ``normal'' shape. So
+%    for backward compatibility we keep hat behavior.
+%    As a result you are currently typesetting in \texttt{scit} or
+%    \texttt{scsl} using \cs{upshape} twice will return you to the
+%    normal shape too, the first will change to \texttt{sc} and the
+%    second (because of the rule below) change that to
+%    \texttt{n}. This is the way \texttt{fontspec} implemented its
+%    version on this interface, so this rule means we are also
+%    compatible with the way \texttt{fontspec} behaved. Still it
+%    remains an odditywhic I would rather liked to have avoided.
+%    \begin{macrocode}
+%\DeclareFontShapeChangeRule {sc}{up} {sc}     {}
+\DeclareFontShapeChangeRule {sc}{up} {n}     {}
 %    \end{macrocode}
 %    \begin{macrocode}
@@ -1045,6 +1076,13 @@
 %  \end{macro}
+%  \begin{macro}{\fontshapeforce}
+%    The unconditional version:
+%    \begin{macrocode}
+\DeclareRobustCommand\fontshapeforce[1]{\edef\f at shape{#1}}
+%    \end{macrocode}
+%  \end{macro}
 %  \begin{macro}{\merge at font@shape}
 %    Look up the database entry (if existing) and act accordingly.
 %    \begin{macrocode}
@@ -1156,6 +1194,8 @@
 %<latexrelease>\DeclareRobustCommand\fontseries[1]{\edef\f at series{#1}}
 %<latexrelease>\DeclareRobustCommand\fontshape [1]{\edef\f at shape{#1}}
 %<latexrelease>\let\merge at font@series\@undefined

More information about the latex3-commits mailing list