Tidy up char 127
[latex2e.git] / trunk / doc / ltnews24.tex
blob573f1e87c8774c2c2c9589de1748e689bf78640e
1 % \iffalse meta-comment
3 % Copyright 2015,2016
4 % The LaTeX3 Project and any individual authors listed elsewhere
5 % in this file.
7 % This file is part of the LaTeX base system.
8 % -------------------------------------------
10 % It may be distributed and/or modified under the
11 % conditions of the LaTeX Project Public License, either version 1.3c
12 % of this license or (at your option) any later version.
13 % The latest version of this license is in
14 % http://www.latex-project.org/lppl.txt
15 % and version 1.3c or later is part of all distributions of LaTeX
16 % version 2005/12/01 or later.
18 % This file has the LPPL maintenance status "maintained".
20 % The list of all files belonging to the LaTeX base distribution is
21 % given in the file `manifest.txt'. See also `legal.txt' for additional
22 % information.
24 % The list of derived (unpacked) files belonging to the distribution
25 % and covered by LPPL is defined by the unpacking scripts (with
26 % extension .ins) which are part of the distribution.
28 % \fi
29 % Filename: ltnews24.tex
31 % This is issue 24 of LaTeX News.
33 \documentclass{ltnews}
34 \usepackage[T1]{fontenc}
36 \usepackage{lmodern,url,hologo}
38 \makeatletter % -- provide command introduced in new release
39 % so this typesets with an old format
41 % Check we are not in the preamble of a composite document
42 \def\@tempa{\@latex@error{Can be used only in preamble}\@eha}
43 \ifx\DeclareTextCommandDefault\@tempa
44 \else
45 \DeclareTextCommandDefault\textcommabelow[1]
46 {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex
47 \hbox{\check@mathfonts\fontsize\ssf@size\z@
48 \math@fontsfalse\selectfont,}\hidewidth}\egroup}
49 \DeclareTextCommandDefault\textcommaabove[1]{%
50 \hmode@bgroup
51 \ooalign{%
52 \hidewidth
53 \raise.7ex\hbox{%
54 \check@mathfonts\fontsize\ssf@size\z@\math@fontsfalse\selectfont`%
56 \hidewidth\crcr
57 \null#1\crcr
59 \egroup
61 \fi
63 \makeatother
65 \publicationmonth{February}
66 \publicationyear{2016}
68 \publicationissue{24}
70 \begin{document}
72 \maketitle
74 \tableofcontents
76 \section{\hologo{LuaTeX} support}
78 This release refines the \hologo{LuaTeX} support introduced in the
79 2015/10/01 release. A number of patches have been added to improve the
80 behavior of \package{ltluatex} (thanks largely to code review by Philipp Gesang).
81 The kernel code has been adjusted to
82 allow for changes in \hologo{LuaTeX} v0.85--v0.88. Most notably, newer
83 \hologo{LuaTeX} releases allow more than $16$ write streams and these are now
84 enabled for use by \verb|\newwrite|, but also the experimental
85 \texttt{newtoken} Lua library has been renamed back to \texttt{token}
86 which required small adjustments in the \hologo{LuaTeX} setup.
88 The biggest change in \hologo{LuaTeX} v0.85--v0.87 compared to previous
89 versions is that all the primitives (originally defined in
90 \hologo{pdfTeX}) dealing with the PDF ``back end''
91 are no longer defined, being replaced by a much smaller set of new primitives.
92 This does not directly affect the core \LaTeX{}
93 files in this release but has required major changes to the
94 \texttt{.ini} files used by \TeX{} Live and similar distributions to
95 set up the format files. These changes in the \hologo{LuaTeX} engine
96 will affect any packages using these back end commands (packages such
97 as \package{graphics}, \package{color}, \package{hyperref}, etc.).
98 Until all contributed packages are updated to the new syntax users may
99 need to add aliases for the old \hologo{pdfTeX} commands. A new
100 \package{luapdftexalias} package has been contributed to CTAN (not part of the
101 core \LaTeX\ release) that may be used for this purpose.
103 See also the sections below for related changes in the
104 \textsf{tools} and \textsf{graphics} bundles.
107 \section{Unicode data}
109 As noted in \LaTeX{} News~22, the 2015/01/01 release of \LaTeX{} introduced
110 built-in support for extended \TeX{} systems. In particular, the kernel now
111 loads appropriate data from the Unicode Consortium to set \verb|\lccode|,
112 \verb|\uccode|, \verb|\catcode| and \verb|\sfcode| values in an automated
113 fashion for the entire Unicode range.
115 The initial approach taken by the team was to incorporate the existing model
116 used by (plain) \hologo{XeTeX} and to pre-process the ``raw'' Unicode data into
117 a ready-to-use form as \verb|unicode-letters.def|. However, the relationship
118 between the Unicode Consortium files and \TeX{} data structures is non-trivial and still
119 being explored. As such, it is preferable to directly parse the original
120 (\verb|.txt|) files at point of use. The team has therefore ``spun-out'' both
121 the data and the loading to a new generic package, \package{unicode-data}. This
122 package makes the original Unicode Consortium data files available in the
123 \verb|texmf| tree (in \verb|tex/generic/unicode-data|) and provides generic
124 loaders suitable for reading this data into the plain, \LaTeXe{}, and other,
125 formats.
127 At present, the following data files are included in this new package:
128 \begin{itemize}\parskip=0pt
129 \item \verb|CaseFolding.txt|
130 \item \verb|EastAsianWidth.txt|
131 \item \verb|LineBreak.txt|
132 \item \verb|MathClass.txt|
133 \item \verb|SpecialCasing.txt|
134 \item \verb|UnicodeData.txt|
135 \end{itemize}
136 These files are used either by \LaTeXe{} or by \package{expl3}
137 (i.e.~they represent the set currently required by the team). The
138 Unicode Consortium provides various other data files and we would be happy to add
139 these to the generic package, as it is intended to provide a single place
140 to collect this material in the \verb|texmf| tree. Such requests can be
141 mailed to the team as~usual or logged at the package home page:
142 \url{https://github.com/latex3/unicode-data}.
144 The new approach extends use of Unicode data in setting \TeX{} information in
145 two ways. First, the \verb|\sfcode| of all end-of-quotation/closing punctuation
146 is now set to $0$ (transparent to \TeX{}). Second, \verb|\Umathcode| values are
147 now set using \verb|MathClass.txt| rather than setting up only letters (which
148 was done using an arbitrary plane~$0$/plane~$1$ separation). There are also
149 minor refinements to the existing code setting, particularly splitting the
150 concepts of case and letter/non-letter category codes.
152 For \hologo{XeTeX}, users should note that \verb|\xtxHanGlue| and
153 \verb|\xtxHanSpace| are \emph{no longer defined}, that no assignments are made
154 to \verb|\XeTeXinterchartoks| and that no \verb|\XeTeXintercharclass| data is
155 loaded into the format. The values which were previously inherited from
156 the plain \hologo{XeTeX} setup files are \emph{not} suitable for properly
157 typesetting East Asian text. There are third-party packages addressing this
158 area well, notably those in the \package{CTeX} bundle. Third-party packages
159 may need adjustment to load the data themselves; see the \textsf{unicode-data}
160 package for one possible loader.
162 \section{More support for east European accents}
164 As noted in \LaTeX{} News~23, comma accent support was added for \texttt{s} and
165 \texttt{t} in the 2015/10/01 release. In this release a matching
166 \verb|\textcommaabove| accent has been added for U+0123 (\verb|\c{g}|,
167 \textcommaabove{g}) which is the lower case of U+0122 (\verb|\c{G}|,
168 \textcommabelow{G}). In the OT1 and T1 encodings the combinations are
169 declared as composites with the \verb|\c| command, which matches the
170 Unicode names ``\textsf{latin (capital|small) letter g with cedilla}'' and
171 also allows \verb|\MakeUppercase{\c{g}}| to produce \verb|\c{G}|, as
172 required. In T1 encoding, the composite of \verb|\c| with \texttt{k}, \texttt{l},
173 \texttt{n} and \texttt{r} are also
174 declared to use the comma below accent rather than cedilla to match the
175 conventional use of these letters.
177 The UTF-8 \texttt{inputenc} option \texttt{utf8} has been extended to
178 support all latin combinations that can be reasonably constructed with a
179 (single) accent command an a base character for the T1 encoding so
180 \textcommaabove{g}, \k{u} and similar characters may be directly input
181 using UTF-8 encoding.
183 \section{Changes in Graphics}
185 The changes in \hologo{LuaTeX}~v0.87 mean that the \package{color} and
186 \package{graphics} packages no longer share the \texttt{pdftex.def} file
187 between \hologo{LuaTeX} and \hologo{pdfTeX}. A separate file
188 \texttt{luatex.def} (distributed separately) has been produced, and
189 distributions are encouraged to modify \texttt{graphics.cfg} and
190 \texttt{color.cfg} configuration files to default to the \texttt{luatex}
191 option if \hologo{LuaTeX}~v0.87 or later is being used. The team has
192 contributed suitable \texttt{.cfg} files to CTAN to be used
193 as models.
195 Normally it is best to let the local \texttt{graphics.cfg}
196 automatically supply the right option depending on the \TeX\ engine
197 being used; however the \package{color} and \package{graphics} (and so
198 \package{graphicx}) packages have been extended to have an explicit
199 \texttt{luatex} option comparable to the existing \texttt{pdftex} and
200 \texttt{xetex} options.
202 The \package{trig} package has been updated so that pre-computed values
203 such as $\sin(90)$ now expand to digits (\texttt{1} rather than the
204 internal token \verb|\@one| in this case). This allows them to be used
205 directly in PDF literal strings.
207 \section{Changes in Tools}
209 \hologo{LuaTeX} from version v0.87 no longer supports the
210 \verb|\write18| syntax to access system commands. A new package
211 \package{shellesc} has been added to \textsf{tools} that defines a new
212 command \verb|\ShellEscape| that may be used in all \TeX\ variants to
213 provide a consistent access to system commands. The package also
214 defines \verb|\write18| in \hologo{LuaTeX} so that it continues to access
215 system commands as before; see the package documentation for details.
217 \section{Improving support for Unicode engines}
219 \looseness=-1
220 Stability concerns are always paramount when considering any change to
221 the \LaTeXe{} kernel. At the same time, it is important that the format
222 remains usable and gives reliable results for users. For the Unicode
223 \TeX{} engines \hologo{XeTeX} and \hologo{LuaTeX} there are important
224 differences in behavior from classical ($8$-bit) \TeX{} engines which
225 mean that identical default behaviors are not appropriate. Over the
226 past 18 months the team has addressed the most pressing of these
227 considerations (as detailed above and in \LaTeX{} News~22 and 23),
228 primarily by integrating existing patches into the kernel. There are,
229 though, important areas which still need consideration, and which
230 \emph{may} result in refinements to kernel support in this area in
231 future releases.
233 The default font setup in \LaTeXe{} at present is to use the \texttt{OT1}
234 encoding. This assumes that hyphenation patterns have been read using
235 appropriate codes: the \texttt{T1} encoding is assumed. The commonly-used
236 hyphenation patterns today, \package{hyph-utf8}, are set up in this
237 way for $8$-bit engines (\hologo{pdfTeX}) but for Unicode engines use
238 Unicode code points. This means that hyphenation will be incorrect
239 with Unicode engines unless a Unicode font is loaded. This requires
240 a concept of a Unicode font encoding, which is currently provided by
241 the \package{fontspec} package in two versions, \texttt{EU1} and
242 \texttt{EU2}. The team is working to fully understand what is meant
243 by a ``Unicode font encoding'', as unlike a classical \TeX{} encoding
244 it is essentially impossible to know what glyphs will be provided
245 (though each slot is always defined with the same meaning). There
246 is also an overlap between this area and ideas of language and writing
247 system, most obviously in documents featuring mixed scripts (for example
248 Latin and Cyrillic).
250 As well as these font considerations, the team is also exploring
251 to what extent it is possible to allow existing ($8$-bit)
252 documents to compile directly with Unicode engines without requiring
253 changes in the sources. Whether this is truly possible remains an open
254 question.
256 It is important to stress that changes will only be made in this area where
257 they do \emph{not} affect documents processed with
258 \hologo{eTeX}/\hologo{pdfTeX} (i.e.~documents which are written for
259 ``classical'' $8$-bit \TeX{} engines). Changes will also be made only where
260 they clearly address deficiencies in the current setup for Unicode engines
261 (i.e.~where current behaviors are wrong).
263 \end{document}