% \iffalse meta-comment % % Copyright (C) 2015-2024 % 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: ltnews24.tex % % This is issue 24 of LaTeX News. \documentclass{ltnews} \usepackage[T1]{fontenc} \usepackage{lmodern,url,hologo} \makeatletter % -- provide command introduced in new release % so this typesets with an old format % Check we are not in the preamble of a composite document \def\@tempa{\@latex@error{Can be used only in preamble}\@eha} \ifx\DeclareTextCommandDefault\@tempa \else \DeclareTextCommandDefault\textcommabelow[1] {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex \hbox{\check@mathfonts\fontsize\ssf@size\z@ \math@fontsfalse\selectfont,}\hidewidth}\egroup} \DeclareTextCommandDefault\textcommaabove[1]{% \hmode@bgroup \ooalign{% \hidewidth \raise.7ex\hbox{% \check@mathfonts\fontsize\ssf@size\z@\math@fontsfalse\selectfont`% }% \hidewidth\crcr \null#1\crcr }% \egroup } \fi \makeatother \publicationmonth{February} \publicationyear{2016} \publicationissue{24} \providecommand\pkg[1]{\texttt{#1}} \providecommand\cls[1]{\texttt{#1}} \providecommand\option[1]{\texttt{#1}} \providecommand\env[1]{\texttt{#1}} \providecommand\file[1]{\texttt{#1}} \begin{document} \maketitle \tableofcontents \section{\hologo{LuaTeX} support} This release refines the \hologo{LuaTeX} support introduced in the 2015/10/01 release. A number of patches have been added to improve the behavior of \pkg{ltluatex} (thanks largely to code review by Philipp Gesang). The kernel code has been adjusted to allow for changes in \hologo{LuaTeX} v0.85--v0.88. Most notably, newer \hologo{LuaTeX} releases allow more than $16$ write streams and these are now enabled for use by \verb|\newwrite|, but also the experimental \texttt{newtoken} Lua library has been renamed back to \texttt{token} which required small adjustments in the \hologo{LuaTeX} setup. The biggest change in \hologo{LuaTeX} v0.85--v0.87 compared to previous versions is that all the primitives (originally defined in \hologo{pdfTeX}) dealing with the PDF ``back end'' are no longer defined, being replaced by a much smaller set of new primitives. This does not directly affect the core \LaTeX{} files in this release but has required major changes to the \texttt{.ini} files used by \TeX{} Live and similar distributions to set up the format files. These changes in the \hologo{LuaTeX} engine will affect any packages using these back end commands (packages such as \pkg{graphics}, \pkg{color}, \pkg{hyperref}, etc.). Until all contributed packages are updated to the new syntax users may need to add aliases for the old \hologo{pdfTeX} commands. A new \pkg{luapdftexalias} package has been contributed to CTAN (not part of the core \LaTeX\ release) that may be used for this purpose. See also the sections below for related changes in the \textsf{tools} and \textsf{graphics} bundles. \section{Unicode data} As noted in \LaTeX{} News~22, the 2015/01/01 release of \LaTeX{} introduced built-in support for extended \TeX{} systems. In particular, the kernel now loads appropriate data from the Unicode Consortium to set \verb|\lccode|, \verb|\uccode|, \verb|\catcode| and \verb|\sfcode| values in an automated fashion for the entire Unicode range. The initial approach taken by the team was to incorporate the existing model used by (plain) \hologo{XeTeX} and to pre-process the ``raw'' Unicode data into a ready-to-use form as \verb|unicode-letters.def|. However, the relationship between the Unicode Consortium files and \TeX{} data structures is non-trivial and still being explored. As such, it is preferable to directly parse the original (\verb|.txt|) files at point of use. The team has therefore ``spun-out'' both the data and the loading to a new generic package, \pkg{unicode-data}. This package makes the original Unicode Consortium data files available in the \verb|texmf| tree (in \verb|tex/generic/unicode-data|) and provides generic loaders suitable for reading this data into the plain, \LaTeXe{}, and other, formats. At present, the following data files are included in this new package: \begin{itemize}\parskip=0pt \item \verb|CaseFolding.txt| \item \verb|EastAsianWidth.txt| \item \verb|LineBreak.txt| \item \verb|MathClass.txt| \item \verb|SpecialCasing.txt| \item \verb|UnicodeData.txt| \end{itemize} These files are used either by \LaTeXe{} or by \textsf{expl3} (i.e.~they represent the set currently required by the team). The Unicode Consortium provides various other data files and we would be happy to add these to the generic package, as it is intended to provide a single place to collect this material in the \verb|texmf| tree. Such requests can be mailed to the team as~usual or logged at the package home page: \url{https://github.com/latex3/unicode-data}. The new approach extends use of Unicode data in setting \TeX{} information in two ways. First, the \verb|\sfcode| of all end-of-quotation/closing punctuation is now set to $0$ (transparent to \TeX{}). Second, \verb|\Umathcode| values are now set using \verb|MathClass.txt| rather than setting up only letters (which was done using an arbitrary plane~$0$/plane~$1$ separation). There are also minor refinements to the existing code setting, particularly splitting the concepts of case and letter/non-letter category codes. For \hologo{XeTeX}, users should note that \verb|\xtxHanGlue| and \verb|\xtxHanSpace| are \emph{no longer defined}, that no assignments are made to \verb|\XeTeXinterchartoks| and that no \verb|\XeTeXintercharclass| data is loaded into the format. The values which were previously inherited from the plain \hologo{XeTeX} setup files are \emph{not} suitable for properly typesetting East Asian text. There are third-party packages addressing this area well, notably those in the \textsf{CTeX} bundle. Third-party packages may need adjustment to load the data themselves; see the \pkg{unicode-data} package for one possible loader. \section{More support for east European accents} As noted in \LaTeX{} News~23, comma accent support was added for \texttt{s} and \texttt{t} in the 2015/10/01 release. In this release a matching \verb|\textcommaabove| accent has been added for U+0123 (\verb|\c{g}|, \textcommaabove{g}) which is the lower case of U+0122 (\verb|\c{G}|, \textcommabelow{G}). In the OT1 and T1 encodings the combinations are declared as composites with the \verb|\c| command, which matches the Unicode names ``\textsf{latin (capital|small) letter g with cedilla}'' and also allows \verb|\MakeUppercase{\c{g}}| to produce \verb|\c{G}|, as required. In T1 encoding, the composite of \verb|\c| with \texttt{k}, \texttt{l}, \texttt{n} and \texttt{r} are also declared to use the comma below accent rather than cedilla to match the conventional use of these letters. The UTF-8 \pkg{inputenc} option \option{utf8} has been extended to support all latin combinations that can be reasonably constructed with a (single) accent command an a base character for the T1 encoding so \textcommaabove{g}, \k{u} and similar characters may be directly input using UTF-8 encoding. \section{Changes in Graphics} The changes in \hologo{LuaTeX}~v0.87 mean that the \pkg{color} and \pkg{graphics} packages no longer share the \file{pdftex.def} file between \hologo{LuaTeX} and \hologo{pdfTeX}. A separate file \file{luatex.def} (distributed separately) has been produced, and distributions are encouraged to modify \file{graphics.cfg} and \file{color.cfg} configuration files to default to the \option{luatex} option if \hologo{LuaTeX}~v0.87 or later is being used. The team has contributed suitable \texttt{.cfg} files to CTAN to be used as models. Normally it is best to let the local \file{graphics.cfg} automatically supply the right option depending on the \TeX\ engine being used; however the \pkg{color} and \pkg{graphics} (and so \pkg{graphicx}) packages have been extended to have an explicit \option{luatex} option comparable to the existing \option{pdftex} and \option{xetex} options. The \pkg{trig} package has been updated so that pre-computed values such as $\sin(90)$ now expand to digits (\texttt{1} rather than the internal token \verb|\@one| in this case). This allows them to be used directly in PDF literal strings. \section{Changes in Tools} \hologo{LuaTeX} from version v0.87 no longer supports the \verb|\write18| syntax to access system commands. A new package \pkg{shellesc} has been added to \textsf{tools} that defines a new command \verb|\ShellEscape| that may be used in all \TeX\ variants to provide a consistent access to system commands. The package also defines \verb|\write18| in \hologo{LuaTeX} so that it continues to access system commands as before; see the package documentation for details. \section{Improving support for Unicode engines} \looseness=-1 Stability concerns are always paramount when considering any change to the \LaTeXe{} kernel. At the same time, it is important that the format remains usable and gives reliable results for users. For the Unicode \TeX{} engines \hologo{XeTeX} and \hologo{LuaTeX} there are important differences in behavior from classical ($8$-bit) \TeX{} engines which mean that identical default behaviors are not appropriate. Over the past 18 months the team has addressed the most pressing of these considerations (as detailed above and in \LaTeX{} News~22 and 23), primarily by integrating existing patches into the kernel. There are, though, important areas which still need consideration, and which \emph{may} result in refinements to kernel support in this area in future releases. The default font setup in \LaTeXe{} at present is to use the \texttt{OT1} encoding. This assumes that hyphenation patterns have been read using appropriate codes: the \texttt{T1} encoding is assumed. The commonly-used hyphenation patterns today, \texttt{hyph-utf8}, are set up in this way for $8$-bit engines (\hologo{pdfTeX}) but for Unicode engines use Unicode code points. This means that hyphenation will be incorrect with Unicode engines unless a Unicode font is loaded. This requires a concept of a Unicode font encoding, which is currently provided by the \pkg{fontspec} package in two versions, \texttt{EU1} and \texttt{EU2}. The team is working to fully understand what is meant by a ``Unicode font encoding'', as unlike a classical \TeX{} encoding it is essentially impossible to know what glyphs will be provided (though each slot is always defined with the same meaning). There is also an overlap between this area and ideas of language and writing system, most obviously in documents featuring mixed scripts (for example Latin and Cyrillic). As well as these font considerations, the team is also exploring to what extent it is possible to allow existing ($8$-bit) documents to compile directly with Unicode engines without requiring changes in the sources. Whether this is truly possible remains an open question. It is important to stress that changes will only be made in this area where they do \emph{not} affect documents processed with \hologo{eTeX}/\hologo{pdfTeX} (i.e.~documents which are written for ``classical'' $8$-bit \TeX{} engines). Changes will also be made only where they clearly address deficiencies in the current setup for Unicode engines (i.e.~where current behaviors are wrong). \end{document}